【问题标题】:Can I manipulate the location of a dialog displayed through osascript?我可以操纵通过 osascript 显示的对话框的位置吗?
【发布时间】:2013-07-04 04:31:52
【问题描述】:

我一直在玩各种 UNIX 命令,偶然发现了这个命令来显示一个对话框:

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

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

【问题讨论】:

  • man osascript 将您指向AppleScript 以获取有关 AppleScript 本身的详细信息。您可以扩展命令以包含位置信息。给你那个 URL,当你追逐它时,你最终会在 Automator...
  • 如果您是注册开发人员,肯定有 Automator 和 AppleScript 的手册可用(大部分日期为 2007 年)。不过,我不确定它们是否公开。
  • @animuson:如果我可以问,为什么positioning 不适合这个问题?标签 wiki 摘录说“定位通常是指放置可视元素的过程。”这个问题显然与在屏幕上定位用户界面元素有关。
  • @icktoofay:由于模棱两可,我正在清理它。标有positioning 的问题中有 85% 涉及 CSS 定位,现在它有自己的标签:css-positioning。不幸的是,在合并之前,这需要我重新标记另外 15%。如果您知道比positioning 更好、更具体的标签,请随时添加。
  • 怎么样。 ui-定位

标签: macos dialog applescript osascript


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    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!")
    

    这个小脚本的功劳归于here 的帖子。

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

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

    【讨论】:

    • 我在我的 (OS X 10.10) Mac 上运行了它,它所做的只是激活 Finder,然后冻结脚本编辑器(大概来自ignoring application responses?)。哦,好吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多