【问题标题】:GuiControl works with one variable but not anotherGuiControl 可与一个变量一起工作,但不能与另一个变量一起工作
【发布时间】:2015-02-07 03:22:06
【问题描述】:

我束手无策,试图找出我的程序出了什么问题。

这是一个 AutoHotkey v1.1.19.02 脚本,旨在执行以下操作:当您按下 Win+V 时,将文件从磁盘读取到剪贴板,然后粘贴它进入一个文本字段。它有一个简单的 GUI,带有一个下拉列表来选择应该读取的文件。它还有一个复选框,选中后,每次按下热键时都会前进到下一个文件。

所以你应该能够一遍又一遍地按Win+V,脚本将一次粘贴到一个文件中。下拉列表会通知您下一个文件,并让您根据需要选择其他文件。

我具有读取文件并将其粘贴的功能,但我无法根据所选文件更新下拉列表。这是我的脚本:

SendMode Play
SetWorkingDir, C:\files

global FileIndex
global AutoAdvance = 1
global File1 := "folder 1\file1.html"
global File2 := "folder 1\file2.html"
global File3 := "folder 1\file3.html"
global File4 := "folder 2\file1.html"
global File5 := "folder 2\file2.html"
global File6 := "folder 2\file3.html"
; etc

Gui, New
Gui, Add, DropDownList, vFileDropdown gGuiSubmit w250 AltSubmit HwndFileDropdownHwnd
Gui, Add, Checkbox, vAutoAdvance gGuiSubmit checked, Auto-advance
Loop, 6
{
    GuiControl, , FileDropdown, % File%A_Index%
    ;TrayTip, PortalPaste, %A_LoopFileName%
}
GuiControl, Choose, FileDropdown, %File1%
Gui, Show,, PortalPaste

GuiSubmit:
    Gui, Submit, NoHide
    FileIndex := FileDropdown
    Gosub, GuiUpdate
    ;TrayTip, PortalPaste, Auto-advance: %AutoAdvance%. FileIndex: %FileIndex%. File name: %FileName%
return

#q::
GuiUpdate:
    FileN := File%FileIndex%
    TrayTip, PortalPaste, File5: %File5%`nFileN: %FileN%
    GuiControl, ChooseString, ComboBox1, %FileN%
return

TrayTip, PortalPaste, Assistant ready. File dir: %A_WorkingDir%

>!r::Reload
>!e::Edit

#v::
    Send, ^a ; select all
    FileName := File%FileIndex%
    FileRead, Clipboard, %FileName%
    Send, ^v
    if (AutoAdvance) {
        FileIndex++
    }
    Gosub, GuiUpdate
return

我已将问题隔离到 GuiUpdate 子例程:

GuiUpdate:
    FileN := File%FileIndex%
    TrayTip, PortalPaste, File5: %File5%`nFileN: %FileN%
    GuiControl, ChooseString, ComboBox1, %FileN% ; this line is the problem
return

我已经使用TrayTip 来验证我的变量是否具有我当时想要的值。如果我编辑该行以引用 %File5% 而不是 %FileN%GuiControl 会将 ComboBox 设置为条目 #5。但只要我在那一行有%FileN%GuiControl 就什么也不做——即使变量FileNFile5 具有相同的内容!

我什至将这些行放入GuiUpdate: 以验证变量是否相等。

truth := FileN == File5
TrayTip, PortalPaste, File5: %File5%`nFileN: %FileN%`nThe two are equal: %truth%

FileIndex 为 5 时,truth 在工具提示中的计算结果为 1。当File5 == FileN 时,GuiControl, ChooseString, ComboBox1, %File5% 怎么能工作而GuiControl, ChooseString, ComboBox1, %FileN% 不能工作?

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    AHKscript.org 论坛的 MJ answered my questionGuiControl 没有针对正确的控件,因为我使用 Gui, New 创建了窗口。删除 Gui, New 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2021-10-21
      • 2012-01-30
      相关资源
      最近更新 更多