无法将进程的Unix ID转换为文本?

时间:2013-11-20 19:49:01

标签: shell text applescript kill-process

我有一个带有故障数字化板的modbook。直到我可以重新屏蔽导致故障的电缆,我只想关闭数字化仪。我找到了一个教我一些代码的页面,昨晚我成功使用了它。但是,在重新启动时,它不再起作用了:

脚本

tell application "System Events"
    set PTD to (unix id of process "PenTabletDriver") as text
    do shell script "kill -STOP " & quoted form of (PTD)
end tell

错误消息

  

错误“无法制作«class idux»的«class prcs»\”PenTabletDriver \“of   应用程序\“系统事件\”到类型文本。“编号-1700来自   «class idux»«class prcs»“PenTabletDriver”to text

我能以某种方式改变代码来解决这个问题吗?

PS: 我已阅读this post,虽然它很相似,但我不明白它如何应用于我的问题。

3 个答案:

答案 0 :(得分:0)

生命太短暂,不会弄乱AppleScript。尝试在终端提示符下运行以下命令:

pkill -STOP PenTabletDriver

此外,检查您的登录项目以查看每次登录时是否自动启动驱动程序。(但更可能的是,它配置为通过launchd在启动时启动。)

答案 1 :(得分:0)

您可以将以下脚本保存在一个小程序包中:

set shellStr to "pkill -STOP PenTabletDriver"
do shell script shellStr

并在需要时运行它。

答案 2 :(得分:0)

我认为其他答案很重要,shell命令很好而且快速。但是,如果你必须在AppleScript中使用它,这似乎对我有用....

tell application "System Events"
    set PTD to (unix id of process "iTunes")
    do shell script "kill -STOP " & quoted form of (PTD as text)
end tell

导致

tell application "System Events"
    get unix id of process "iTunes"
        --> 37987
    do shell script "kill -STOP '37987'"
        --> error number -10004
end tell
tell current application
    do shell script "kill -STOP '37987'"
        --> ""
end tell

进程ID只是一个数字,因此无需引用它......

tell application "System Events"
    set PTD to (unix id of process "iTunes")
    do shell script "kill -STOP " & PTD
end tell

上面的代码就足够了。