Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 脚本Xcode:在AppleScript中单击菜单项而不激活窗口?_Ios_Xcode_Applescript - Fatal编程技术网

Ios 脚本Xcode:在AppleScript中单击菜单项而不激活窗口?

Ios 脚本Xcode:在AppleScript中单击菜单项而不激活窗口?,ios,xcode,applescript,Ios,Xcode,Applescript,我有一个通过XCode以编程方式启动iOS项目的简单脚本: on run project_loc tell application "Xcode" open project_loc activate end tell tell application "System Events" tell application process "Xcode" click menu item "Run" of menu 1 of menu bar item "

我有一个通过XCode以编程方式启动iOS项目的简单脚本:

on run project_loc
  tell application "Xcode"
    open project_loc
    activate
  end tell

  tell application "System Events"
    tell application process "Xcode"
      click menu item "Run" of menu 1 of menu bar item "Product" of menu bar 1
    end tell
  end tell
end run 

这工作得很好,只是它将焦点切换到Xcode,这并不理想,因为我试图将其作为方案的一部分,该方案会自动重新编译并重新启动,以响应相关文件中的任何更改。有没有办法在不关注Xcode窗口的情况下实现这一点

您不能使用GUI脚本单击菜单项而不切换到应用程序,就像您自己不切换到应用程序而单击它一样–应用程序的菜单栏只有在具有焦点时才可用(或者,至少是最后一个具有焦点的应用程序–它不一定需要焦点窗口)。但是,您可以通过切换回脚本中以前关注的应用程序来减轻切换的干扰:

on run
    tell application "System Events" to set focusedAppID to bundle identifier of first application process whose frontmost is true
    <your code here>
    tell application id focusedAppID to activate
end run
运行时

告诉应用程序“系统事件”将focusedAppID设置为最前端为true的第一个应用程序进程的绑定标识符
告诉应用程序id focusedAppID激活
终点
但是…Xcode本身是一个可编写脚本的应用程序。如果您只需要构建项目,为什么不使用

tell application "Xcode" to build <target / project>
告诉应用程序“Xcode”生成

这将为您节省大量的GUI脚本编写工作—请查看Xcode AppleScript字典(默认情况下未添加—只需将Xcode.app拖动到AppleScript编辑器中的库窗口即可)。

将focusedAppID设置为绑定最前端为true的第一个应用程序进程的标识符。
我不明白这意味着什么