【问题标题】:Paste into custom GUI with AHK使用 AHK 粘贴到自定义 GUI
【发布时间】:2018-03-29 14:52:22
【问题描述】:

我一直在研究这个问题,但我不知道如何解决这个问题。我想在 AutoHotKey (AHK) 中创建一个自定义 GUI,我会在 AHK 论坛上发布,但我无法让我的帐户正常工作,所以我在这里发帖(抱歉,如果这是错误的地方)。理想状态是我可以从一个列表中粘贴一个不分长度的列表,它几乎总是返回分隔,见下图。我很乐意粘贴 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

【问题讨论】:

    标签: user-input autohotkey paste


    【解决方案1】:

    如果您可以在与您的 ahk 脚本相同的文件夹中保存一个每行一个名称的 txt 文件,称为“names.txt”,请尝试以下操作:

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

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

    开始编辑(每 cmets):

    或者,如果您已经将电子表格或网站表格或其他列表中的几个名称复制到剪贴板,那么这样写:

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

    不管怎样,

    结束编辑

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

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

    其余的和你一样。 让我们知道,玩得开心,

    【讨论】:

    • 这是个好建议。如果我只是为了我的使用而开发它,它会为我工作。我正在尝试开发一种工具供我的团队使用,但我的团队中的大多数人都无法很好地使用它,因为它会对他们造成破坏,然后就不好了。我的团队中的大多数人都是计算机文盲。需要更简单。粘贴是最理想的状态,因为它会变得非常强大。
    • 不知道你想要什么。您要突出显示并复制这 10 个名称,然后使用单个 ctrl+v 将它们粘贴到十个位置吗?所以,不要读入文件。只需在剪贴板中阅读,查找换行回车并以这种方式获取名称的伪数组(“x1”)。然后,我的其余代码仍然可以将其放入文本框中。
    • 好吧,那么。请参阅我为剪贴板替代方案编辑的答案(这可能取决于您使用的操作系统——我在 Win 操作系统中工作)。此外,请记住为 Ctrl+v 添加特定于应用程序的热键,以便在用户尝试粘贴时将其定向到此脚本。
    • 非常感谢您的编辑工作完美。我会尽快发布我的代码
    • 如果可能的话,我想在我正在循环中处理的框的一侧添加一个三角形,或者可能将刚刚处理的那个变成蓝色。它将有助于直观地跟踪位置。我在网上找不到简单的解决方案,所以我认为@PGilm 可能对您的专业知识有所帮助。如果它是图片,则它必须移动,并且也是可以访问的默认 Windows 图像,因为此工具是独立的。
    【解决方案2】:

    非常感谢@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
    

    【讨论】:

    • 酷。让我尝试在下一个问题上提供帮助:显示正在处理的名称。 . .
    猜你喜欢
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 2015-10-06
    • 2013-12-19
    相关资源
    最近更新 更多