发送(“!N”)不起作用

时间:2014-06-25 10:04:12

标签: autoit

我想自动化安装程序。我用shellexecute启动了安装程序。问题是send命令不起作用。安装程序实际上是一个自解压存档,可以提取三个文件:

  1. SETUP.EXE
  2. 64位MSI
  3. 32位MSI
  4. 提取后,启动setup.exe,检测操作系统是32位还是64位,然后根据检测到的操作系统启动msi。 现在我需要发送一个键,按下MSI上的下一个按钮,但它不起作用。 如果我直接运行MSI文件,它可以工作,但是当我以这种方式运行时,安装程​​序会失败。

    基本上,我需要运行一个EXE文件并将密钥发送到MSI文件。怎么办呢?

2 个答案:

答案 0 :(得分:1)

听起来你正在向网络空间发送密钥! ;-P

不,但实际上,这听起来像是一个窗口焦点问题,你发送密钥但它们没有登陆你期望的窗口。您需要使用WinActivate("you_window_title")抓住正确的窗口。

手动运行安装程序并记下安装时弹出的所有窗口标题。然后在您的脚本中,您可以确保您期望聚焦的窗口是焦点。

使用以下内容:

Run(your_installer.exe)                       ; execute your installer
Sleep(2500)                                   ; sleep for 2.5 seconds waiting for the exe to do it's thing and eventually open the msi

;;;;~~ This is how you would now grab onto the new msi installer's window ~~;;;; 
WinActivate("Your Installer Window's Title")  ; make sure the installer window is in focus
;;;;~~                                                                    ~~;;;;

Send("{TAB}")                                 ; tab around the window that's in focus
Send("{ENTER}")                               ; press <ENTER> on the "NEXT" button
Sleep(100);                                   ; sleep for 100ms while the next page loads
Send("{TAB}")                                 ; tab again to select a checkbox for the "I agree" on the EULA
Send("{SPACE}")                               ; space will toggle the checkbox to checked (I agree)
Send("+{TAB}")                                ; tab back to the NEXT button
Send("+{TAB}")                                ; still tabbing to the next button
Send("{ENTER}")                               ; now hit enter on the next button

; etc... ;

答案 1 :(得分:0)

您是否检查过窗口是否聚焦以及按钮&#34;下一步&#34;重点也是? 只需使用ShellExecute运行可执行文件,然后按Enter键查看该按钮是否已被聚焦。