好吧,我目前在使用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要求我找到应用程序时,我在浏览搜索框下点击了正确的一个。它仍然会编译错误。
感谢一帮:)
答案 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编辑器仍然可以找到应用程序“视频游戏”。这是一个功能,而不是错误。