2014-12-20 10 views
5

Gram z Cocoa/Objective-C i chciałbym zapytać, czy możliwe jest uzyskanie informacji o oknie, takich jak pid, nazwa okna z nieaktywnego okna. Chodzi mi o to, że w przypadku są dwa pełne okna (ani zmaksymalizowane) okien A i B różnych zadań, powiedzmy Chrome (A) i Firefox (B), z aktywnym oknem A i kursorem myszy nad oknem B, czy mogę uzyskać takie informacje bez konieczności klikania w okno B i wprowadzania go na pierwszy plan?Uzyskaj wartości okna pod myszą

Zauważyłem, że na przykład przewijanie w nieaktywnym oknie przewija kontekst tak, jakby był na pierwszym planie, więc domyślam się, że jest to wykonalne.

Wszelkie wskazówki byłyby naprawdę mile widziane.

Dziękuję

Odpowiedz

6

będę odpowiedzieć na moje własne pytanie: możliwe z dostępnością api & węgla a) zarejestrować szeroki zdarzenie:

AXUIElementRef _systemWideElement = AXUIElementCreateSystemWide(); 

b) konwersji węgla-ekran punkt

c) proces pobierania pod mysz

NSPoint cocoaPoint = [NSEvent mouseLocation]; 
if (!NSEqualPoints(cocoaPoint, _lastMousePoint)) { 
    CGPoint pointAsCGPoint = [self carbonScreenPointFromCocoaScreenPoint:cocoaPoint]; 

    AXUIElementRef newElement = NULL; 
    if (AXUIElementCopyElementAtPosition(_systemWideElement, pointAsCGPoint.x, pointAsCGPoint.y, &newElement) == kAXErrorSuccess) { 

     NSLog(@"%@",newElement); 

    } 
    _lastMousePoint = cocoaPoint; 
} 

kuponów do https://developer.apple.com/library/mac/samplecode/UIElementInspector/Introduction/Intro.html

NSLog daje coś takiego < AXUIElement 0x6000000583c0 > {pid = 39429}

ps aux | grep 39429 

:39429 0.2 5.5 5109480 916500 ?? U  1:57PM 3:34.67 /Applications/Xcode.app/Contents/MacOS/Xcode 
+0

Niesamowite i doskonałe. Często zapominam odnieść się do tej przykładowej aplikacji i zapomnieć, jak tępy jest młotek AX. – uchuugaka

Powiązane problemy