我一直在玩各种 UNIX 命令,遇到了这个来显示一个对话框:
osascript -e 'tell app "System Events" to display dialog "Hello World"'
我想改变对话框的位置。对于大多数命令,我只能用它man command
来弄清楚如何为该命令执行某些操作。但是,man osascript
并没有告诉我如何更改对话框的位置。如何修改命令以将对话框放在不同的位置?
我一直在玩各种 UNIX 命令,遇到了这个来显示一个对话框:
osascript -e 'tell app "System Events" to display dialog "Hello World"'
我想改变对话框的位置。对于大多数命令,我只能用它man command
来弄清楚如何为该命令执行某些操作。但是,man osascript
并没有告诉我如何更改对话框的位置。如何修改命令以将对话框放在不同的位置?
首先,要获得有关 applescript 的帮助,只需打开 AppleScript Editor 应用程序并查看帮助菜单。applescript 语言指南和其他工具都在那里。文件菜单下还有“打开字典”,它将向您显示应用程序的特定命令。
要查看有关显示对话框的信息,请打开 StandardAdditions 字典并使用搜索字段查找命令。
要回答您的问题,不,您不能指定“显示对话框”窗口的位置。正如您将在字典中看到的那样,该命令中没有用于定位窗口的参数。此外,没有其他命令对您有帮助,因为您无法在对话框窗口打开时发出其他命令,因为代码在窗口打开时暂停,等待来自对话框窗口的响应(例如当您按下 OK 按钮时) .
如果您需要设置窗口的位置以向用户显示信息,那么您需要使用“显示对话框”以外的其他对话框工具。您可以在 cocoa 或 google 中创建自己的窗口以获取一些替代方案,例如 cocoaDialog、SKProgressBar 和 Notification Center。
有一种迂回的方法可以解决这个问题,这在某些情况下可能很有用。尝试以下操作:
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 或者更有可能对其他有类似问题的人有用。