iT邦幫忙

0

AUTOIT 如何持續檢測軟體完全開啟?

  • 分享至 

  • xImage

請問一下,我想用AUTOIT在軟體A 啟動後,自動執行一些操作,
然後送出MsgBox告知軟體A 的部份內容,
我使用了
WinActivate ("標題", "文字")
WinWaitActive ("標題", "文字")
來補捉視窗是否已啟動且在可活動狀態。

不過有個問題,就是軟體的啟動時間需要數秒,若此時我點了桌面還是其它地方,
後續的功能就不會執行,直到我去點那軟體A,才會動作,如果不使用鎖住滑鼠的方式,
還有什麼方法可以解決?
有想說用ProcessExists檢測軟體是否已啟動,
然後持續檢測其文字
WinActivate ("標題", "文字")
WinWaitActive ("標題", "文字")
不過試不出來怎麼寫

mathewkl iT邦高手 1 級 ‧ 2021-11-08 09:13:22 檢舉
直接把啟動軟體A寫進AUTOIT,一起執行就不用煩惱檢測了
galaxy_zo iT邦新手 5 級 ‧ 2021-11-09 00:15:27 檢舉
是沒錯,不過我想用分開的方式
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
ahfuyeuem
iT邦研究生 4 級 ‧ 2021-11-08 09:11:12
#include <MsgBoxConstants.au3>

Example()

Func Example()

    Local $hWnd = WinWait("[CLASS:Notepad]", "", 30) ;等待30秒讓程式執行

    Local $sText = ControlGetText($hWnd, "", "Edit1")

    MsgBox($MB_SYSTEMMODAL, "", "A的執行結果是: " & $sText)

EndFunc

結果:
https://upload.cc/i1/2021/11/08/QLD7CU.png

galaxy_zo iT邦新手 5 級 ‧ 2021-11-09 00:21:58 檢舉

忘了說,不能用等待的方式,因為開啟的時間不固定,
總不能設定太長

ahfuyeuem iT邦研究生 4 級 ‧ 2021-11-09 08:45:27 檢舉

軟體執行成功後會有甚麼條件可以拿來判斷嗎?
路徑下會產生檔案?
還是軟體裡會秀甚麼文字?

galaxy_zo iT邦新手 5 級 ‧ 2021-11-09 23:24:06 檢舉

軟體裡會有count的文字,其它兩點我就不知了。

原本是這樣寫
WinActivate ("軟體A視窗標題", "count")
WinWaitActive ("軟體A視窗標題", "count")

軟體A完整開啟→AUTOIT:可以送出MsgBox(反之亦然)
軟體A未完整開啟→滑鼠游標點擊其它地方→AUTOIT:無法送出MsgBox,需再點擊軟體A才行(反之亦然)

我要發表回答

立即登入回答