2015-02-03 1 views
0

내 프로그램의 문제점을 파악하기 위해 노력하고 있습니다.GuiControl은 하나의 변수를 사용하지만 다른 변수는 사용하지 않습니다.

그것은 다음을 수행하도록 설계된 AutoHotkey에의 v1.1.19.02 스크립트 : 당신은 텍스트 필드에 붙여 넣습니다 다음 클립 보드에 디스크에서 파일을 읽고, + V승리을 누르면. 그것은 읽을 파일을 선택하는 드롭 다운 목록을 가진 간단한 GUI를 가지고 있습니다. 단축키를 누를 때마다이 파일을 선택하면 다음 파일로 넘어갑니다.

그래서 당신은 승리 + V 또 다시을 누르면 할 수 있어야하고 스크립트가 한 번에 하나 개의 파일에 붙여 넣습니다. 드롭 다운 목록은 어떤 파일이 다음에 있는지 알려주고 원하는 경우 다른 파일을 선택할 수있게합니다.

파일을 읽고 붙여 넣을 수있는 기능이 있지만 파일을 선택하면 업데이트 할 드롭 다운 목록을 가져올 수 없습니다. 나는 GuiUpdate 서브 루틴에 문제를 격리 한

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 

: 내 변수 내가 그 시점에서하고자하는 값이 있는지 확인 TrayTip을 사용했습니다

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

여기 내 스크립트입니다. %FileN% 대신 %File5%을 참조하도록 해당 행을 편집하면 GuiControl은 ComboBox를 항목 5로 설정합니다. 그러나 그 라인에 %FileN%을 가지고있는 한, GuiControl은 아무것도하지 않습니다. 심지어 변수 FileNFile5이 동일한 내용을 가지고 있더라도!

변수가 동일한 지 확인하기 위해이 줄을 GuiUpdate:에 넣기까지했습니다. FileIndex 5 때

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

truth 툴팁 1로 평가한다. GuiControl, ChooseString, ComboBox1, %File5%은 어떻게 작동하며 GuiControl, ChooseString, ComboBox1, %FileN%이 아닌 경우 File5 == FileN 일 때?

답변

0

AHKscript.org 포럼의 MJ answered my question. Gui, New으로 창을 만들었 기 때문에 GuiControl이 올바른 컨트롤을 타겟팅하지 않았습니다. Gui, New을 제거하면 문제가 해결되었습니다.

관련 문제