Xcode 如何从Cocoa Applescript应用程序启动命令行二进制文件?

Xcode 如何从Cocoa Applescript应用程序启动命令行二进制文件?,xcode,applescript,Xcode,Applescript,我想为名为的命令行二进制文件创建一个简单的GUI Cocoa Applescript应用程序。它可以通过一些参数启动,我想通过GUI指定这些参数。当它启动时,会打开一个X11窗口 在我创建一个复杂的GUI之前,我已经创建了一个带有一个文本字段和一个按钮的简单界面。我希望textfield信息是传递给二进制文件的一个参数,当我单击按钮让二进制文件与该参数一起启动时 我可以通过显示警报来实现这一点,例如,按下按钮时,警报会显示文本字段输入。但是,当我尝试用do shell脚本替换显示警报时,应用程序

我想为名为的命令行二进制文件创建一个简单的GUI Cocoa Applescript应用程序。它可以通过一些参数启动,我想通过GUI指定这些参数。当它启动时,会打开一个X11窗口

在我创建一个复杂的GUI之前,我已经创建了一个带有一个文本字段和一个按钮的简单界面。我希望textfield信息是传递给二进制文件的一个参数,当我单击按钮让二进制文件与该参数一起启动时

我可以通过显示警报来实现这一点,例如,按下按钮时,警报会显示文本字段输入。但是,当我尝试用do shell脚本替换显示警报时,应用程序冻结,什么也没有发生

我不知道在哪里添加gmsh二进制文件是合适的,所以我把它放在了支持文件中

这是我的非工作AppDelegate.applscript

script AppDelegate
property parent : class "NSObject"

property argOne : ""

on buttonClicked_(sender)
    -- display alert "Argument one is " & argOne
    do shell script "gmsh " & argOne
end buttonClicked_

on applicationWillFinishLaunching_(aNotification)
    -- Insert code here to initialize your application before any files are opened 
end applicationWillFinishLaunching_

on applicationShouldTerminate_(sender)
    -- Insert code here to do any housekeeping before your application quits 
    return current application's NSTerminateNow
end applicationShouldTerminate_

end script

X11应用程序启动后,我不需要应用程序保持打开状态,因为Cocoa Applescript只是一个gui启动器。

执行do shell脚本时,只要shell脚本正在运行,gui就会冻结。当程序持续冻结时,表示do shell脚本处于挂起状态。我看到的第一件事是,在命令和您发送给do shell脚本的参数之间缺少一个空格。这可能是你的第一期,应该是

  do shell script "gmsh " & argOne
要保持GUI的响应性,AppleScriptObjC中有三个选项:

  • 在后台运行shell命令
  • 将performSelectorInBackground_与Object_一起使用(“Handler的名称:”,参数)
  • 创建一个NSTask

  • 我纠正了我的打字错误,但那没用。单击按钮后,我不需要应用程序保持打开状态,因为它只是二进制文件的GUI启动器,本身会启动一个X11窗口。使用:'do shell script“gmsh”&argOne的引号形式&“&>/dev/null&”,这会在后台运行shell命令。我在控制台输出中找不到命令。如何引用位于“项目支持文件”文件夹中的二进制文件?如果在应用程序中成功复制了该文件,则该文件应为“指向我的路径”(即指向应用程序包的路径)。要访问该文件,它应该是“posixpath of((作为文本指向我的路径)&“Contents:Resources:gmsh”)”