脚本自动纠正错误,当我编译和键入键不起作用

时间:2014-08-18 14:41:48

标签: applescript

好吧,我目前在使用AppleScript编辑器时遇到很多问题。目前,当我按键向下键序列时,它总是键入字母A.例如。

告诉应用程序"系统事件"

key down "u"

key up "u"

    delay 1

end tell

这将击键A,我不知道为什么。

^这只是一个小问题,虽然我的大问题是我想在三个不同的视频游戏应用程序之间交换。它们都是同一游戏的副本。继承人我的基本脚本如何。

告诉应用程序"视频游戏"激活

tell application "System Events"
keystroke a bunch of stuff
end tell

告诉应用程序"视频游戏副本"激活

tell application "System Events"
keystroke a bunch of stuff
end tell

告诉应用程序"视频游戏副本2"激活

tell application "System Events"
keystroke a bunch of stuff
end tell

问题是,当我尝试编译脚本时,应用程序名称始终更正为"视频游戏"。

有关如何防止其正确编译的任何想法?

我试过输入一个虚假的名字然后当applescript要求我找到应用程序时,我在浏览搜索框下点击了正确的一个。它仍然会编译错误。

感谢一帮:)

3 个答案:

答案 0 :(得分:1)

你描述的内容似乎是AppleScript中的一个错误。这是一个小的解决方法。我为jxa(ui自动化的javascript)写了它,所以你必须把它移植到我认为的AppleScript:

ObjC.import("Cocoa");

function key(aiKeyCode, aiDelay)
{
    var source = $.CGEventSourceCreate($.kCGEventSourceStateCombinedSessionState),
    keyDown = $.CGEventCreateKeyboardEvent(source, aiKeyCode, true),
    keyUp = $.CGEventCreateKeyboardEvent(source, aiKeyCode, false);
    $.CGEventPost($.kCGAnnotatedSessionEventTap, keyDown);
    delay(aiDelay);
    $.CGEventPost($.kCGAnnotatedSessionEventTap, keyUp);
}

答案 1 :(得分:0)

keystroke将获得一次按下的键。告诉您正在告诉系统事件的进程应用程序有助于做某事,即

tell application "System Events" to tell process "App Name" to keystroke "u"

如果你想用命令,选项,班次等来做,请使用:

tell application "System Events" to tell process "App Name" to keystroke "u" using {command down, shift down, option down}

答案 2 :(得分:0)

AppleScript编辑器正在做的不是“自动更正” - 它正在“编译”。它没有做错。您可以在Mac上更改应用程序的名称,但不会破坏应用程序。即使您将其名称更改为“视频游戏副本1”,AppleScript编辑器仍然可以找到应用程序“视频游戏”。这是一个功能,而不是错误。