GuiControl 使用一个变量而不是另一个变量
GuiControl works with one variable but not another
我已经无计可施了,想弄清楚我的程序出了什么问题。
这是一个 AutoHotkey v1.1.19.02 脚本,旨在执行以下操作:当您按 Win+V 时,读取文件从磁盘到剪贴板,然后将其粘贴到文本字段中。它有一个简单的 GUI,带有一个下拉列表 select 应该读取哪个文件。它还有一个复选框,当 selected 时,每次按下热键时都会前进到下一个文件。
所以你应该可以反复按Win+V,然后脚本会粘贴到一个文件中时间。下拉列表会通知您下一个文件,您可以根据需要选择不同的文件。
我有读取文件并将其粘贴进去的功能,但我无法根据 selected 的文件更新下拉列表。这是我的脚本:
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
什么都不做——即使变量 FileN
和 File5
具有相同的内容!
我什至将这些行放入 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%
不工作?
AHKscript.org 论坛的 MJ answered my question。 GuiControl
没有针对正确的控件,因为我用 Gui, New
创建了 window。删除 Gui, New
解决了问题。
我已经无计可施了,想弄清楚我的程序出了什么问题。
这是一个 AutoHotkey v1.1.19.02 脚本,旨在执行以下操作:当您按 Win+V 时,读取文件从磁盘到剪贴板,然后将其粘贴到文本字段中。它有一个简单的 GUI,带有一个下拉列表 select 应该读取哪个文件。它还有一个复选框,当 selected 时,每次按下热键时都会前进到下一个文件。
所以你应该可以反复按Win+V,然后脚本会粘贴到一个文件中时间。下拉列表会通知您下一个文件,您可以根据需要选择不同的文件。
我有读取文件并将其粘贴进去的功能,但我无法根据 selected 的文件更新下拉列表。这是我的脚本:
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
什么都不做——即使变量 FileN
和 File5
具有相同的内容!
我什至将这些行放入 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%
不工作?
AHKscript.org 论坛的 MJ answered my question。 GuiControl
没有针对正确的控件,因为我用 Gui, New
创建了 window。删除 Gui, New
解决了问题。