0

我一直在玩各种 UNIX 命令,遇到了这个来显示一个对话框:

osascript -e 'tell app "System Events" to display dialog "Hello World"'

我想改变对话框的位置。对于大多数命令,我只能用它man command来弄清楚如何为该命令执行某些操作。但是,man osascript并没有告诉我如何更改对话框的位置。如何修改命令以将对话框放在不同的位置?

4

2 回答 2

3

首先,要获得有关 applescript 的帮助,只需打开 AppleScript Editor 应用程序并查看帮助菜单。applescript 语言指南和其他工具都在那里。文件菜单下还有“打开字典”,它将向您显示应用程序的特定命令。

要查看有关显示对话框的信息,请打开 StandardAdditions 字典并使用搜索字段查找命令。

要回答您的问题,不,您不能指定“显示对话框”窗口的位置。正如您将在字典中看到的那样,该命令中没有用于定位窗口的参数。此外,没有其他命令对您有帮助,因为您无法在对话框窗口打开时发出其他命令,因为代码在窗口打开时暂停,等待来自对话框窗口的响应(例如当您按下 OK 按钮时) .

如果您需要设置窗口的位置以向用户显示信息,那么您需要使用“显示对话框”以外的其他对话框工具。您可以在 cocoa 或 google 中创建自己的窗口以获取一些替代方案,例如 cocoaDialog、SKProgressBar 和 Notification Center。

于 2013-07-06T06:32:29.037 回答
1

有一种迂回的方法可以解决这个问题,这在某些情况下可能很有用。尝试以下操作:

on displayMessage(msg)
tell application "Finder"
   activate
   set c to (count windows)
   ignoring application responses
       display dialog msg with icon note
   end ignoring
end tell

tell application "System Events"
   tell application process "Finder"
       repeat until ((count windows) > c)
           delay 0.2
       end repeat
       set position of window 1 to {0, 22}
   end tell
end tell
end displayMessage

displayMessage("I'm over here!")

这个小脚本的功劳归于这里的一篇文章。

在我自己实现这一点时,我发现它仅限于被调用的应用程序(Finder在示例中为 )是否支持该count window命令(或者它是否具有 API 支持)。

我意识到我从 2013 年提出了一个问题。我在这里发布这个答案,以防它对 OP 或者更有可能对其他有类似问题的人有用。

于 2015-03-08T00:23:04.537 回答