【问题标题】:Accessing native windows in a Java application from AppleScript?从 AppleScript 访问 Java 应用程序中的本机窗口?
【发布时间】:2012-09-16 06:16:37
【问题描述】:

我有一些基于 Java 的应用程序似乎在使用(在某种程度上)本机窗口,包括熟悉的窗口管理按钮甚至全屏模式按钮。但是,我似乎无法使用传统方式从 AppleScript 访问这些窗口。有没有办法做到这一点?

目前我有一个在本地可可应用程序上运行良好的现有脚本,但是当它尝试访问 Java 应用程序的窗口时,它没有找到任何(计算窗口数将返回 0)。

以 IntelliJ IDEA 为例。我如何访问各个窗口以便对它们执行操作(比如单击最小化或全屏按钮)?

更新: 这是一个适用于可可应用程序的快速示例,但不适用于 Java 应用程序。在这种情况下,我会收到消息“每个窗口都不理解计数消息”

tell application "Safari"
    activate
    set wins to count of windows
    display dialog wins
end tell

【问题讨论】:

  • 您没有显示任何代码。通常有两种获取窗口的方法,1) 从应用程序或 2) 从使用系统事件的进程。如果您无法以任何一种方式获得它们,那么 applescript 就不会这样做,而且它们可能不是原生可可窗口。

标签: java macos applescript osx-mountain-lion


【解决方案1】:

您可以告诉应用程序执行您正在尝试的操作的唯一情况是应用程序是否可编写 Apple 脚本,例如它有一个applescript字典吗?那个字典有你需要的命令吗?我怀疑您的 java 应用程序是可编写脚本的,因此这种方法行不通。

你很幸运你需要一个窗口命令,因为系统事件理解窗口命令并且通常可以给你进程的窗口。尝试这个。只需将进程名称更改为您想要的进程,看看它是否有效。如果没有,AppleScript 就没有什么可以帮助您的了。

tell application "System Events"
    tell process "Safari"
        set wins to count of windows
    end tell
end tell
display dialog (wins as text)

仅供参考:如果您需要查找您的申请流程的名称,您可以使用此...

tell application "System Events" to return name of application processes

【讨论】:

  • 嗯,这似乎总是返回为 0(至少对于所写的示例)。
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多