英文:
How to make down arrow and enter key working in AutoHotkey?
问题
- 如何让这部分工作或如何进行调试?
 - 如何切换到“Graph”选项卡?此选项卡的 ClassNN 以及其他信息为 TPageControl1。如何进行选择?
 - 更一般的情况下,如何让一个 ClassNN 唯一且我知道其名称的按钮工作?
 
英文:
I have just started with writing scripts in AutoHotkey. I got the following working smoothly: I opened my program, performed Ctrl+I, then bottom option from dropdown menu. Here is my script:
Run, path\name_of_my_program.exe
; Wait for the name_of_my_program app window to become active (optional, but recommended)
WinWaitActive, ahk_exe name_of_my_program.exe, , 10 ; Wait for the app window to become active within 10 seconds (adjust the timeout as needed)
if ErrorLevel
{
    MsgBox, name_of_my_program did not open successfully.
	}
else
{
    ; Simulate the shortcut Ctrl+I
    SendInput, ^i
    ; Wait for the "Choose File" window to appear
    ; WinWaitActive, Open
    ; Simulate pressing the Tab key (choose the Import option)
    SendInput, S ^{Tab}
    ; Simulate clicking on the "I" key
    SendInput, I
	; Send Tab key six times
    SendInput, {Tab 6}
	; Send Arrow Down key twice
	SendInput, {Down}
	; Send Enter key once
	SendInput, {Enter}
	
}
My expectation: After this step
; Send Tab key six times
    SendInput, {Tab 6}
I would like to go down twice with Down keyboard and click on Enter key. Hence, I wrote this
	; Send Arrow Down key twice
	SendInput, {Down}
	; Send Enter key once
	SendInput, {Enter}
However, this part does not work. My questions are
- How can I get this part working or how to debug it?
 - How can I change to Graph tab? ClassNN for thistab and other are TPageControl1. How can I make this choice?
 - More general version of 2. How to get a button working whose ClassNN is unique and I know the name of it?
 
答案1
得分: 0
我刚刚弄清楚了!原来我应该在else后面添加KeyWait LWin。然后,我添加了暂停时间,以便程序花时间打开屏幕来执行命令。
这是更新后的解决方案:
Run, path\name_of_my_program.exe
; 等待name_of_my_program应用程序窗口变为活动状态(可选,但建议)
WinWaitActive, ahk_exe name_of_my_program.exe, , 10 ; 在10秒内等待应用程序窗口变为活动状态(根据需要调整超时时间)
if ErrorLevel
{
    MsgBox, name_of_my_program未成功打开。
}
else
{
    KeyWait LWin
    ; 模拟快捷键Ctrl+I
    SendInput, ^i
    ; 等待“选择文件”窗口出现
    ; WinWaitActive, 打开
    ; 模拟按Tab键(选择导入选项)
    SendInput, S ^{Tab}
    ; 模拟点击“I”键
    Sleep 100
    SendInput, I
    ; 发送Tab键六次
    Sleep 100
    SendInput, {Tab 6}
    ; ClipWait, 2
    ; 发送向下箭头键两次
    Sleep 100
    SendInput, {Down}
    ; 发送向下箭头键两次
    Sleep 100
    SendInput, {Down}
    ; 发送Enter键一次
    Sleep 100
    SendInput, {Enter}
    ; 发送Right键一次
    Sleep 100
    SendInput, {Right 4}
    ; 发送Enter键一次
    Sleep 100
    SendInput, {Tab 3}
    ; 发送Enter键两次
    Sleep 100
    SendInput, {Enter 2}
    ; 发送Left键一次
    Sleep 100
    SendInput, {Home}
    ; 模拟点击“G”键
    Sleep 100
    SendInput, G_
    ; 发送Enter键两次
    Sleep 100
    SendInput, {Enter}
}
英文:
I just figured it out! It turns out that I should add KeyWait LWin after else. Then, I added pause time so that the program takes its time to open screen to execute the command.
Here is the updated solution:
Run, path\name_of_my_program.exe
; Wait for the name_of_my_program app window to become active (optional, but recommended)
WinWaitActive, ahk_exe name_of_my_program.exe, , 10 ; Wait for the app window to become active within 10 seconds (adjust the timeout as needed)
if ErrorLevel
{
    MsgBox, name_of_my_program did not open successfully.
}
else
{
	KeyWait LWin
    ; Simulate the shortcut Ctrl+I
    SendInput, ^i
    ; Wait for the "Choose File" window to appear
    ; WinWaitActive, Open
    ; Simulate pressing the Tab key (choose the Import option)
    SendInput, S ^{Tab}
    ; Simulate clicking on the "I" key
	Sleep 100
    SendInput, I
    ; Send Tab key six times
	Sleep 100
    SendInput, {Tab 6}
	; ClipWait, 2
    ; Send Arrow Down key twice
    Sleep 100
	SendInput, {Down}
	    ; Send Arrow Down key twice
    Sleep 100
	SendInput, {Down}
    ; Send Enter key once 
    Sleep 100
    SendInput, {Enter}
	; Send Right key once 
    Sleep 100
    SendInput, {Right 4}
	; Send Enter key once 
    Sleep 100
    SendInput, {Tab 3}
	; Send Enter key twice 
    Sleep 100
    SendInput, {Enter 2}
	; Send Left key once 
    Sleep 100
    SendInput, {Home}
	; Simulate clicking on the "G" key
	Sleep 100
    SendInput, G_
	; Send Enter key twice 
    Sleep 100
    SendInput, {Enter}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论