我现在用的otool,nm和Fraise文本编辑器拆解Mach-o二进制文件.此时我的工作流程非常简单:
nm -g
Run Code Online (Sandbox Code Playgroud)
otool -vt
Run Code Online (Sandbox Code Playgroud)
我正在寻找简化使用disasm代码的工具Mac OS X.
我正在尝试修补使用辅助功能API调整窗口大小的应用程序.
我需要维护一个包含以前窗口大小的字典.密钥需要标识当前活动的窗口.此时,通过NSAccessibilityFocusedWindowAttribute按热键检索该活动窗口.
但是,每次调用此方法时AXUIElementRef,标识窗口的返回值都不同!这当然意味着我不能将它用作字典键 - 字典将找不到相应的条目.
以下代码重现了该问题:
-(IBAction)testWindowIdentification:(id)sender{
AXUIElementRef focusedApp;
AXUIElementRef focusedWindow;
AXUIElementCopyAttributeValue(_systemWideElement,
(CFStringRef) kAXFocusedApplicationAttribute,
(CFTypeRef*) &focusedApp);
AXUIElementCopyAttributeValue((AXUIElementRef) focusedApp,
(CFStringRef) NSAccessibilityFocusedWindowAttribute,
(CFTypeRef*) &focusedWindow);
CFShow(focusedWindow);
}
Run Code Online (Sandbox Code Playgroud)
_systemWideElement已init使用调用方法在方法中初始化AXUIElementCreateSystemWide().
CFShow每次调用该方法时,该语句都会清楚地显示不同的ID(即使同一个窗口处于活动状态),这对我来说是无用的:
<AXUIElement 0x47e850> {pid=42463}
<AXUIElement 0x47e890> {pid=42463}
<AXUIElement 0x47e2c0> {pid=42463}
…
Run Code Online (Sandbox Code Playgroud)
在关于文件AXUIElement显示没有检索用于UI元素的独特的属性,而且也不方法,所述的NSAccessibility协议.独特的PID是不是足以让我,因为一个进程可以有多个窗口.
如何在Cocoa中检索活动窗口的一些唯一标识符?
(顺便说一句,真正的代码是检查上述调用中的返回代码;没有错误,调用成功.)