Jak mogę uzyskać bieżący typ kursora myszy na ekranie? (Nie tylko w oknie mojej aplikacji, na całym świecie.) Czy możliwe jest wykrycie, czy domyślny kursor jest aktualnie wyświetlany? Albo węgiel albo kakao jest w porządku - albo nawet inne działające API, najlepiej oficjalne.Jak uzyskać aktualny typ kursora myszy w systemie Mac OS X?
To co próbowałem:
NSCursor *sysCursor = [NSCursor currentSystemCursor];
if (sysCursor == nil) {
NSLog(@"nil");
}
if ([sysCursor isEqual: [NSCursor arrowCursor]] ||
[sysCursor isEqual: [NSCursor contextualMenuCursor]] ||
[sysCursor isEqual: [NSCursor closedHandCursor]] ||
[sysCursor isEqual: [NSCursor crosshairCursor]] ||
[sysCursor isEqual: [NSCursor disappearingItemCursor]] ||
[sysCursor isEqual: [NSCursor dragCopyCursor]] ||
[sysCursor isEqual: [NSCursor dragLinkCursor]] ||
[sysCursor isEqual: [NSCursor IBeamCursor]] ||
[sysCursor isEqual: [NSCursor openHandCursor]] ||
[sysCursor isEqual: [NSCursor operationNotAllowedCursor]] ||
[sysCursor isEqual: [NSCursor pointingHandCursor]] ||
[sysCursor isEqual: [NSCursor resizeDownCursor]] ||
[sysCursor isEqual: [NSCursor resizeLeftCursor]] ||
[sysCursor isEqual: [NSCursor resizeLeftRightCursor]] ||
[sysCursor isEqual: [NSCursor resizeRightCursor]] ||
[sysCursor isEqual: [NSCursor resizeUpCursor]] ||
[sysCursor isEqual: [NSCursor resizeUpDownCursor]] ||
[sysCursor isEqual: [NSCursor IBeamCursorForVerticalLayout]]
) {
NSLog(@"equal");
} else {
NSLog(@"not");
}
Kursor nie jest nil
, ale jednocześnie nie jest równa żadnej z pozostałych. Nie jest nawet równa sobie:
NSLog(@"%i", [[NSCursor currentSystemCursor]
isEqual:[NSCursor currentSystemCursor]]); // 0
Pomysły? Jest to aplikacja typu LSUIElement
, jeśli to ma znaczenie.
Ten kod działa dla mnie bez względu na to, czy aplikacja jest aplikacją agenta "LSUIElement". –