Come posso ottenere il tipo corrente di cursore del mouse sullo schermo? (Non solo sulla mia finestra dell'app, a livello globale.) O è almeno possibile rilevare se il cursore predefinito è attualmente visualizzato? O Carbon o Cocoa è OK - o anche altre API di lavoro, preferibilmente quelle ufficiali.Come ottenere il tipo corrente di cursore del mouse in Mac OS X?
Questo è quello che ho provato:
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");
}
il cursore non è nil
, ma allo stesso tempo non è uguale a tutti gli altri. Non è nemmeno uguale a se stesso:
NSLog(@"%i", [[NSCursor currentSystemCursor]
isEqual:[NSCursor currentSystemCursor]]); // 0
Idee? Questa è un'app di tipo LSUIElement
, se questo è importante.
Questo codice funziona per me indipendentemente dal fatto che l'app sia un'app dell'agente 'LSUIElement'. –