【问题标题】:Bringing another app's window to front on Mac in C用 C 在 Mac 上将另一个应用程序的窗口置于前面
【发布时间】:2014-08-01 02:54:43
【问题描述】:

如何使用 C/C++ 在 Mac 上将另一个应用程序的窗口置于前面? 我有应用程序的 pid。 我找到了 AppleScript 的解决方案,但我不熟悉 AppleScript。 (也不适用于Objective C) 谢谢!

编辑:我不能在这个程序中使用 Carbon,因为它必须是 64 位二进制文​​件。 edit2:我也对 Carbon 和 Cocoa 解决方案感兴趣。我可以把它放到一个外部 32 位应用程序中来使用 Carbon。

【问题讨论】:

    标签: c macos


    【解决方案1】:

    你可以这样做:

    #include <stdlib.h>
    
    system("osascript -e \"tell application \\\"Address Book\\\" to activate\"");
    

    如果应用程序(本示例中为通讯簿)尚未运行,这也会启动它。

    【讨论】:

    • 谢谢!问题是它似乎没有把它带到前面。如果它没有运行,它会启动它,但它仍然在我的窗口后面。 (嗯,Photoshop的窗口,我正在写一个插件。我不认为Photoshop的窗口是最顶层的)
    • @Cornelius:这听起来像是 Photoshop 的一个怪癖——我从终端测试了它,它的行为符合预期——你没有显示某种模式窗口或对话框吗?
    • 它似乎适用于通讯簿。我不知道这个其他应用程序是如何显示它的窗口的,它可能是一个模态对话框。
    • 所以,我运气不好,不得不处理一个对脚本没有响应的应用程序。使用 execve() 启动它会在 Photoshop 窗口后面打开它。解决方案是调用AppleScript(与上述相同) - 告诉应用程序“Finder”打开应用程序......无论如何,感谢您的帮助!这是正确的答案,它让我走上了解决我有些特殊情况的正确轨道。
    • 我也有这个问题,但有时应用程序在第一次运行时前面有一个模态对话框......有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多