Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
User interface 从两个不同的菜单访问Applescript会产生不同的结果。为什么?_User Interface_Scripting_Applescript_Osx Yosemite - Fatal编程技术网

User interface 从两个不同的菜单访问Applescript会产生不同的结果。为什么?

User interface 从两个不同的菜单访问Applescript会产生不同的结果。为什么?,user-interface,scripting,applescript,osx-yosemite,User Interface,Scripting,Applescript,Osx Yosemite,我有一个应用程序,它有一个嵌入式脚本菜单来运行Applescripts。但是,如果您尝试运行某些功能(主要与UI相关)的脚本,除非您从菜单栏中的“系统脚本”菜单运行它们,否则这些脚本将无法工作 例如,如果在应用程序中您说: tell application "System Events" to tell application process "theApp" to get all windows 如果从程序的脚本菜单运行,它将返回一个空列表,但如果从系统脚本菜单运行,它将返回2。我也试过:

我有一个应用程序,它有一个嵌入式脚本菜单来运行Applescripts。但是,如果您尝试运行某些功能(主要与UI相关)的脚本,除非您从菜单栏中的“系统脚本”菜单运行它们,否则这些脚本将无法工作

例如,如果在应用程序中您说:

tell application "System Events" to tell application process "theApp" to get all windows
如果从程序的脚本菜单运行,它将返回一个空列表,但如果从系统脚本菜单运行,它将返回2。我也试过:

tell application "System Events"
    tell application process "theApp" 
        set allElements to UI elements
        display dialog (count of allElements)
    end tell
end tell
-- returns 2 when run from System script menu but 0 when run from within theApp.
另外,如果从脚本编辑器运行,它也可以正常工作。GUI脚本是在系统首选项中为应用程序启用的,因此我想知道为什么会发生这种情况,以及除了从系统脚本菜单运行脚本之外的其他解决方法?字典显示标准套件,因此它应该可以访问windows


有什么想法吗?

我相信您还没有将有问题的应用程序配置为使用辅助设备

你应该真正打开系统首选项,然后单击安全按钮,然后解锁,然后单击辅助设备的按钮,蓝色图标上有一个白人,然后将你的应用拖到上面,从其Dock菜单中显示你的应用,并允许它控制你的机器,记住以后锁定窗格


我不能保证它能正常工作,但它确实值得一试。

这就是我所说的启用Gui脚本的意思。。。我只是没有澄清。事实上,我已经关闭了它,然后再次打开应用程序只是为了重置它。。。仍然不起作用。我宁愿用这个来称呼应用程序的供应商,因为如果你添加或删除脚本菜单的元素,那么这不应该被视为对应用程序所做的任何更改,至少我是这样理解的。因为如果您启用gui脚本,那么在您更改应用程序之前,这应该是可行的。一个问题可能是应用程序的脚本菜单实现。既然你没有透露应用程序是什么,我猜是你写的?当您从每个不同的位置启动时,该域是不同的,因此UI信息将与生俱来地不同。尝试添加:告诉应用程序应用程序激活行。