使用 AHK 粘贴到自定义 GUI

Paste into custom GUI with AHK

我已经为此工作了一段时间,但我不知道如何解决这个问题。我想在 AutoHotKey (AHK) 中创建自定义 GUI,我会 post 在 AHK 论坛上,但我无法让我的帐户正常工作,所以我 post 在这里(抱歉,如果这是错误的地方)。理想状态是我可以从列表中粘贴任意长度的列表,它几乎总是 return 分隔,见下图。我很乐意粘贴 10 个项目。我已经构建了 GUI,但我无法使用快捷方式 Ctrl+v 粘贴值。所发生的只是第一个值进入第一个单元格,我无法弄清楚如何将其余值粘贴进去。

当我单击“继续”时,我需要能够将值读入 AHK 中的数组。提前感谢您的帮助。下面是我创建 GUI 的代码。

Gui, Add, Text,, Please add the List that you want (10 Max at once)

Gui Add, Edit, vButton1,
Gui Add, Edit, vButton2,
Gui Add, Edit, vButton3,
Gui Add, Edit, vButton4,
Gui Add, Edit, vButton5,
Gui Add, Edit, vButton6,
Gui Add, Edit, vButton7,
Gui Add, Edit, vButton8,
Gui Add, Edit, vButton9,
Gui Add, Edit, vButton0,


Gui Add, Button, x200 y270 w88 h26 vButton02 gGoCont, Continue
Gui Add, Button,  x290 y270 w88 h26 vButton03 gGoQuit, Cancel   
Gui Show
return
GoCont:
{

MsgBox %Button1%
MsgBox %Button2%

}
return

GoQuit: 
    Gui Destroy 
return

如果您可以在与您的 ahk 脚本相同的文件夹中放置一个每行一个名称的 txt 文件,名为 "names.txt",请尝试这样的操作:

将此添加到顶部(它在您的 names.txt 文件中一次读取一行):

Loop, Read, names.txt
    x%A_Index% := A_LoopReadLine

开始编辑(根据评论):

或者,如果您已经将电子表格或网站 table 或其他列表中的几个姓名复制到剪贴板,则可以这样放置:

Loop, parse, Clipboard, `n, `r
    x%A_Index% := A_LoopField

无论如何,

编辑结束

然后,用这两行替换所有 10 行编辑框:

Loop, 10  ;  or more?
    Gui Add, Edit, vButton%A_Index%, % x%A_Index%

剩下的就和你一样了。 让我们知道,玩得开心,

非常感谢@PGilm

Gui, PasteGUI:Add, Text,, Please add the Names that you want to Process.
Counter := 0
Loop, parse, Clipboard, `n, `r
{
    x%A_Index% := A_LoopField
    Counter++
}
Counter--    
Loop, %Counter%  ;  Dynamic List length
Gui PasteGUI:Add, Edit, vButton%A_Index%, % x%A_Index%
Gui PasteGUI:Add, Button, x200 y270 w88 h26 vButton02 gGoCont Default, Continue
Gui PasteGUI:Add, Button,  x290 y270 w88 h26 vButton03 gGoQuit, Cancel  
Gui, PasteGUI:Show
}
Return
GoCont:
{
    Loop, %Counter%
    {
        CODE TO PROCESS MY EACH NAME
    }
    MsgBox Done!
    Gui Destroy
}
Return
GoQuit:  
    Gui Destroy 
Return

最后,如果我想添加一个键盘快捷键来工作,那么我映射到一个我将下面一行放在代码顶部的地方

PasteIn:
{

然后关闭代码末尾的括号,然后添加快捷方式。 (下面可以添加到代码的底部来工作)这使用 Ctrl+v 键盘快捷键。

}

^v:: GoTo, PasteIn