kagn02 发表于 2012-11-18 18:54:36

關於處理開機時出現新增硬體精靈視窗

請問各位,要怎麼去鎖定開機時出現的新增硬體精靈視窗,
將寫好的AU3在開機時自動啟動,但都無法去鎖定這個視窗,就直接跑完了


adlibenable ("drive")



func drive()
      if WinWait("尋找新增硬體精靈","",60) then
      WinActivate("尋找新增硬體精靈","",60)

      send ("ESC")
             run ("1024.exe")
   EndIf
EndFunc

AdlibDisable()
      
寫得很簡陋,目的是想說開機時讓他去判斷說是否要執行驅動安裝,但這個會造成萬用助理卡住
所以想寫一個如果開機有出現此視窗的話自動關閉

新手求救......

afan 发表于 2012-11-18 19:08:33

AdlibEnable('_drive')

While 1
        Sleep(1)
WEnd

Func _drive()
        If WinExists('尋找新增硬體精靈') Then
                WinActivate('尋找新增硬體精靈')
                Sleep(200)
                Send('ESC')
                Run('1024.exe')
                Exit
        EndIf
EndFunc   ;==>_drivep.s, 还在用老版本呢,现在是 AdlibRegister()、AdlibUnRegister()

kagn02 发表于 2012-11-18 21:05:00

感謝afan大幫助,剛去試了一下可以運行
不過不能把這個"尋找新增硬體精靈"關閉..我再去嘗試一下
這樣也可以看得出來是老版本!!!!!!!
另提問一個問題,版本之間的差異性是????,剛接觸,尚在研究中....

afan 发表于 2012-11-18 21:34:56

感謝afan大幫助,剛去試了一下可以運行
不過不能把這個"尋找新增硬體精靈"關閉..我再去嘗試一下
這樣也可 ...
kagn02 发表于 2012-11-18 21:05 http://www.autoitx.com/images/common/back.gif


    因为你还在用 AdlibEnable(),这个函数在3.3.x.x以上就已经改名了。
没有关闭窗口是因为那段是照搬你的代码,估计是Send错了,应该是 Send('{ESC}')

kagn02 发表于 2012-11-18 21:49:38

感謝指導,真的是send錯了...沒注意到
後來改成controlsend("尋找新增硬體精靈","","","{ESC}")就都正常了

延續一下部分的問題,假設說這個是窗沒有出現,那while 1 是否會一直執行,我還能做其他自動執行動作嗎??

因為要寫一個開機偵測顯卡是否有驅動---無的話他會出現這個視窗,然後關閉,執行萬用驅動助理,安裝完成重新開機,那重開後完成驅動安裝就執行測試程式。

這樣的話是不會是變成說現在寫的這一個會一直無限循環

afan 发表于 2012-11-18 22:41:39

回复 5# kagn02


    以下可以仅监测1分钟,之后退出Local $Ts = TimerInit(), $iWait = 60 * 1000 ;监测1分钟
AdlibEnable('_drive')

While 1
      Sleep(1)
WEnd

Func _drive()
      If WinExists('尋找新增硬體精靈') Then
                WinActivate('尋找新增硬體精靈')
                Sleep(200)
                Controlsend('尋找新增硬體精靈', '', '', '{ESC}')
                Run('1024.exe')
                Exit
        ElseIf TimerDiff($Ts) > $iWait Then
                Exit
      EndIf
EndFunc   ;==>_drive

kagn02 发表于 2012-11-18 22:56:27

感謝...我會再嘗試,在這之前有一點想問(抱歉..問題很多@@)
針對afan大 第一次的回復中為何要將 WinWait 替換成 WinExists
然我實際操作,用winwait會出現不能執行狀況,原因出在哪裡呢????

afan 发表于 2012-11-18 23:33:57

回复 7# kagn02


    你的代码中要说 WinWait 其实也没错,只是因为缺少一个保持进程的主循环,所以并没有执行drive(),甚至一次都没来得及执行,因为进程无法保持。

为何我加了保持进程的主循环,却改用 WinExists?是因为 WinWait 会有延迟,而 WinExists 没有,这样才能充分发挥多次调用drive()。

按你的描述,其实这段代码似乎可以不用循环调用 drive(),以下即可:If WinWait('尋找新增硬體精靈', '', 60) then
        WinActivate('尋找新增硬體精靈')
        Sleep(200)
        Controlsend('尋找新增硬體精靈', '', '', '{ESC}')
        Run('1024.exe')
EndIf

netegg 发表于 2012-11-18 23:36:56

回复 8# afan
sleep(1)没试过,是不是会造成内存占用增大,不太清楚了

afan 发表于 2012-11-18 23:40:11

回复 9# netegg


    Sleep() 多少似乎没啥区别,也想不到如何检验

netegg 发表于 2012-11-18 23:58:44

回复 10# afan
反正可能差别不大,不纠结了

kagn02 发表于 2012-11-19 22:01:22

回复 8# afan

感謝...受益良多....再去嘗試看看.....

原來可以不用一直循環....看來用判斷式似乎就可以了....再去嘗試....
页: [1]
查看完整版本: 關於處理開機時出現新增硬體精靈視窗