目标C - 如何使用给定的窗口ID以编程方式调整窗口大小?

时间:2009-12-08 20:29:54

标签: objective-c windows cocoa resize

如何使用objective-c / cocoa以编程方式调整任何应用程序窗口的大小?到目前为止,我已经获得了应用名称和窗口号,但不知道如何访问该窗口。

我可以用AppleScript做到,但想用目标c学习它。

AppleScript示例:

tell application "System Events"
    set frontApp to name of first application process whose frontmost is true
end tell


tell application frontApp
    set bounds of window 1 to {(screenWidth / 2), 0, screenWidth, screenHeight}
end tell

感谢您的任何建议。

2 个答案:

答案 0 :(得分:2)

在这种情况下,AppleScript确实是适合这项工作的工具。告诉另一个应用程序来调整窗口大小是一个自动化问题。将该代码写入“Cocoa”只意味着更多的工作从较低级别构建/发送AppleEvents。

我会尝试使用NSAppleScript来加载和执行Cocoa程序中的脚本。如果你学会了如何做到这一点,你就会知道如何在你的Objective-C程序中嵌入AppleScript,这是一个方便的技巧。

祝你好运!

答案 1 :(得分:1)

您将需要以某种方式访问​​辅助功能系统。我不知道你需要什么功能或对象,或者你需要看看如何将消息发送到windows的可访问性。

哦,但是我可以给你一个我知道做同样事情的软件的链接,
https://github.com/fikovnik/ShiftIt

在那里寻找答案。

我敢打赌,如果你在代码中查看accessibilitySetValue函数,你可能会触及黄金 http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSAccessibility_Protocol/Reference/Reference.html#//apple_ref/occ/instm/NSObject/accessibilitySetValue:forAttribute