2014-12-20 14 views
5

Kakao/Objective-C ile oynuyorum ve pid, pencere adı, etkin olmayan bir pencereden pencere bilgisi almak mümkün olup olmadığını size sormak isterim. Tam olarak ne demek istediğim, iki farklı ekranı olmayan (ve maksimum) pencere A ve B farklı görevlerin mevcut olması durumunda, B (A) ve Firefox (B) pencerelerinin, B penceresi üzerinde etkin pencere A ve fare imleciyle söyleyebilmelerini sağlar. B penceresine tıklayıp ön plana getirmek zorunda kalmadan bu bilgiyi alabilir miyim?Fare altında pencere değerlerini alın

Örneğin, inaktif bir pencerede gezinmenin bağlamı ön planda olduğu gibi kaydırdığını fark ettim, bu yüzden benim tahminim bu yapılabilir.

Herhangi bir ipucu gerçekten memnuniyetle karşılanacaktır.

teşekkür ederiz

cevap

6

Benim kendi soruya cevap verecektir:

AXUIElementRef _systemWideElement = AXUIElementCreateSystemWide(); 

b) dönüştürmek karbon noktası

ekrana: erişilebilirlik API & karbon ile Mümkün a) geniş bir olayı kaydetmek

c) fare altında işlemi gerçekleştirme

NSLog için 10

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; 
} 

Kredi < gibi bir şey 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

müthiş ve mükemmel verir. Bu örnek uygulamasına başvurmayı ve AX çekicisinin ne kadar kör olduğunu unutmayı sık sık unutuyorum. – uchuugaka

İlgili konular