被解雇.
我的应用程序如何检测另一个应用程序何时将窗口置于前面而不使其成为关键?
我希望找到适用于OS X 10.4和10.5的解决方案
更多信息:
我现在正在使用这些陈述.当用户手动选择窗口将其置于前面时,它们可以正常工作.但是,当应用程序本身将窗口移到前面时,它确实无法工作.
AXObserverAddNotification(observer,element,kAXMainWindowChangednotification,0);AXObserverAddNotification(observer,kAXFocuseDWindowChangednotification,0);解决方法 我一直无法订阅当前的窗口更改,但您可以询问当前应用程序的可访问性API以及当前应用程序的最前景窗口.
想象一下,您有一个名为CurrentAppData的类,其中包含以下数据:
@interface CurrentAppData : NSObject { Nsstring* _@R_419_5979@; AXUIElementRef _systemWIDe; AXUIElementRef _app; AXUIElementRef _window;}
查找当前应用程序的代码如下所示:
-(voID) updateCurrentApplication { // get the currently active application _app = (AXUIElementRef)[CurrentAppData valueOfExistingAttribute:kAXFocusedApplicationAttribute ofUIElement:_systemWIDe]; // Get the window that has focus for this application _window = (AXUIElementRef)[CurrentAppData valueOfExistingAttribute:kAXFocuseDWindowAttribute ofUIElement:_app]; Nsstring* appname = [CurrentAppData descriptionOfValue:_window beingVerbose:TRUE]; [self set@R_419_5979@:appname];}
在此示例中,_systemWIDe变量在类init函数中初始化为:
_system = AXUIElementCreateSystemWIDe();
类函数valueOfExistingAttribute如下所示:
// -------------------------------------------------------------------------------// valueOfExistingAttribute:attribute:element//// Given a uIElement and its attribute,return the value of an accessibility// object's attribute.// -------------------------------------------------------------------------------+ (ID)valueOfExistingAttribute:(CFStringRef)attribute ofUIElement:(AXUIElementRef)element{ ID result = nil; NSArray *attrnames; if (AXUIElementcopyAttributenames(element,(CFArrayRef *)&attrnames) == kAXErrorSuccess) { if ( [attrnames indexOfObject:(Nsstring *)attribute] != NSNotFound && AXUIElementcopyAttributeValue(element,attribute,(CFTypeRef *)&result) == kAXErrorSuccess ) { [result autorelease]; } [attrnames release]; } return result;}
之前的功能取自Apple UIElementInspector示例,该示例也是了解Accessibility API的绝佳资源.
总结以上是内存溢出为你收集整理的我如何使用Cocoa的Accessibility API来检测窗口是否被带到前面?全部内容,希望文章能够帮你解决我如何使用Cocoa的Accessibility API来检测窗口是否被带到前面?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)