AutoHotKey - 具有多个Alt-Tab的脚本


2

我正在尝试创建一个脚本,将一个窗口中的表单中的字段复制到另一个窗口上的表单,使用Alt-Tab在窗口之间移动。

第一个alt-tab用于从窗口1移动到窗口2,但是从窗口2移动到窗口1的下一个alt-tab不起作用。

我的脚本如下:

#z ::发送^ c!{tab} ^ v!{tab} {tab} ^ c!{tab} {tab} ^ v!{tab} {tab} ^ c!{tab} {tab} ^ v! {标签}

在按下Window z时,我希望它复制窗口1中的当前字段,移动到窗口2并粘贴它,然后移回窗口1并复制下一个字段,移动到窗口2并粘贴到下一个字段,依此类推。

谁能帮忙。

谢谢

Answers:


2

我没有发现在这种情况下发送一串击键非常有效。有太多不同的方法可能出错。我试着使用内置的剪贴板变量,只在Windows之间交换一次。

您可以使用热键在脚本中使用此格式执行一组指令:

z::
; do a bunch of stuff here
return

我会一次从第一个表单中获取数据并存储它:

clipboard =  ; Start off empty to allow ClipWait to detect 
Send ^c
ClipWait 
Field1:=ClipboardAll

Send {Tab} ; move to next field

从第一个窗口获取数据后,可以转到下一个窗口:

Send AltTab 

(虽然更好的方法是WinActivate。)

在第二个窗口中,您可以向下移动表单,从第一个窗口插入数据:

clipboard = %Field1%
Send ^v
Wait 100

Send {Tab} ; move to field 2...

有关剪贴板变量的信息,请参阅AutoHotKey的页面以供参考。


1

这里有2个非常简单的方法来完成你想要的alt-multiple-tabs序列。最重要的是,您可以在花括号内指定您想要按下键的次数!:

1)以下使用熟悉的对于alt,让你在alt-tab 2个窗口之外。当然,您可以将'2'更改为您需要的任何数字:

Send !{TAB 2}

所以你的脚本可以修改为:

#z::Send ^c!{tab}^v!{tab 2}^c!{tab 2}^v!{tab 2}^c!{tab 2}^v!{tab}

2)下一个让你明确说出何时按下alt以及何时释放它。同样,{tab} {tab}缩写为{tab 2}

Send {alt down}{tab 2}{alt up}

所以你的脚本可以修改为:

#z::Send ^c!{tab}^v{alt down}{tab 2}{alt up}^c{alt down}{tab 2}{alt up}^v{alt down}{tab 2}{alt up}^c{alt down}{tab 2}{alt up}^v!{tab}

在我寻找解决方案之前,我也试过了!{tab} {tab}你试过了; 只是第二个{tab}不被认为是伴随着alt。

我在AutoHotKey帮助 >> 键盘控制 >> 发送/ SendRaw / SendInput / SendPlay / SendEvent中找到答案:发送键和点击


0

如果窗口标题总是至少具有相同的部分名称(Untitled - Notepad,Document1 - Notepad等),则使用WinWaitActive函数是非常简单的方法。如果您知道它们永远不会更改,请打开AU3Record.exe程序(位于C:\ Program Files \ AutoIt3 \ SciTE \ ScriptWriter \ AU3Record.exe)。开始录制,并在窗口之间来回点击几次。停止录制,并在参数中取出以WinWaitActive开头的行和窗口的标题,删除可能发生变化的任何内容,并使用这些行在窗口之间来回切换。

以这种方式执行它会更有效率,因为您不必担心键盘命令的巨大字符串(执行此操作,alt-tab,执行此操作,alt-tab,再次执行此操作,alt-tab等)编辑脚本时保持。

另外,作为旁注,我会将关键序列分解为较小的序列。当每行一个序列中只有2或3个键时,管理它们会更容易。如果你仍然需要它同时运行,那么将它变成一个函数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.