用GitHub Actions的Windows虛擬機器來編譯AutoIT / Compile AutoIT on the Windows Runer in GitHub Actions
用GitHub Actions的Windows虛擬機器來編譯AutoIT / Compile AutoIT on the Windows Runer in GitHub Actions
GitHub Actions能跑Ubuntu,那能用它來跑其他的作業系統嗎?答案是肯定的。
(more...)4月 07, 2023 0 Comments AutoIt GitHubActions Windows
GitHub Actions能跑Ubuntu,那能用它來跑其他的作業系統嗎?答案是肯定的。
(more...)3月 10, 2023 0 Comments AutoIt bat Windows
如果要寫Windows上可以執行的exe檔案,你會用什麼程式語言呢?
(more...)9月 26, 2019 0 Comments AutoIt Programming/AutoIt
哈嚕~~我是非常喜歡為各個網站加入特製腳本跟樣式表、讓網站用起來更順手的布丁。今天要來介紹的是如何為AutoIt編譯的exe檔案指定特定圖示的做法。做法很簡單,只要在開頭加上「#pragma compile(Icon, 'icon.ico')」語法即可。讓我們以archive-util-7z.au3為例子,看看怎麽在AutoIt程式裡面加上指定圖示的語法吧。
(more...)12月 16, 2018 0 Comments AutoIt Programming/AutoIt
AutoIt一般常作為自動操作Windows應用程式的圖形化應用程式(GUI Windows application),例如自動安裝檔。但如果要讓其他程式取得AutoIt的執行結果,那就要把AutoIt編譯為命令列應用程式(console application)。讓我們來看看怎麼做吧。
(more...)2月 11, 2018 0 Comments AutoIt Programming/AutoIt Programming/Python
繼前一篇的RScript Caller之後,這次要來介紹的是直接執行Python的Python Caller。這隻程式的主要目的是提供讓Python腳本檔案(副檔名為.py)直接關聯到Python-Caller.exe,這樣就能在檔案總管中點兩下直接執行,然後在執行完畢後暫停,讓開發者可以看看執行結果。以下就是Python Caller的下載、設定與使用介紹。因為做法跟RScript Caller蠻像的,所以兩篇內容會看起來很像就是了。
(more...)繼前一篇使用指令列來操作Weka進行預測之後,這一篇就要用AutoIT來操作Weka進行預測,並以AutoIT將預測結果傳送給其他程式,例如傳送到Google表單中記錄預測結果。
(more...)6月 24, 2017 11 Comments AutoIt Programming/AutoIt Software/Windows
最近常常要在Windows桌面環境中設計數位學習教學活動。有時候我們會需要使用全螢幕播放影片、聲音或圖片,甚至需要一張全螢幕的黑幕或白幕當背景。這種時候開放原始碼高度可自訂化的MPV全能播放器就能夠順利派上用場。搭配AutoIT高度自訂腳本,我們就能整合多個不同的Windows應用程式來完成一個豐富的教學活動。
(more...)4月 10, 2017 0 Comments AutoIt OS/Windows Programming/AutoIt
一般來說,要檢查一個壓縮檔中的檔案時,必須先經過壓縮檔的程式、解壓縮、然後才能看到檔案內容,這樣才能真的打開檔案。可是這樣的過程實在是太煩人了。我用AutoIt跟7-Zip做了Archive File Opener,它可以讓我們直接開啟壓縮檔中所有檔案。我們不是要看壓縮檔,而是要看裡面的內容,不囉嗦直接用吧!
(more...)3月 17, 2017 4 Comments AutoIt OS/Windows Programming/AutoIt
作業系統中可以設定捷徑開啟網頁(請參考「自製網頁應用程式!使用Chrome的命令列選項app來製作網頁應用程式捷徑」這篇),那麼網頁能不能反過來開啟作業系統裡面的檔案呢?答案就是Registering an Application to a URI Scheme,在Windows裡面將應用程式登錄為指定通訊協定(Protocol)。我參考從網頁呼叫使用者電腦應用程式的寫法,製作了System Protocol程式。它可以讓我們的電腦用「sp://"c:\file.doc"」來開啟本機檔案的連結方式,甚至還可以傳遞參數。但是這個方法會為作業系統大開後門,使用的時候必須先瞭解它的安全性風險。
(more...)1月 19, 2017 0 Comments AutoIt Programming/AutoIt Software/Windows
為了使用Acrobat Pro能夠正確地將PDF轉換成HTML網頁的功能,我用AutoIt寫了一個自動操作腳本的exe執行檔,可以將指定的PDF轉換成HTML檔案。
(more...)11月 25, 2016 0 Comments 作品 AutoIt Programming/AutoIt
我很喜歡Q-Dir的「複製路徑」功能,它可以讓我快速取得檔案的路徑。後來想想,其實我也能用AutoIt做一個類似的功能出來,還能加在Windows的「傳送到」選單裡面,這樣可以讓每個程式都能用「複製路徑」了。以下就是介紹我做的filepath-to-clipboard.exe。
(more...)5月 11, 2011 0 Comments 程式寫作 電腦軟體 網路管理 AutoIt Programming/AutoIt
使用AutoIt撰寫的機器人可以幫Windows環境下的使用者省下很多手動操作的工作。但是有時候我們不在電腦前,也想要利用AutoIt來在特定時間排程進行工作,這時候就不能用常見的Send、MouseClick的函數(function)指令,而應該要用ControlSend、ControlClick等Control系列的函數,直接對要被控制的對話視窗送出指令。
Windows除了「關機」、「登出」之外,還可以在不關閉現在執行中的程式的情況下,切換成其他使用者,讓其他使用者使用。
上圖是以Windows 7為例,Windows XP也有這個選項,在「開始 > 登出 > 切換使用者」裡面。
另一種情況是遠端桌面連線中,不進行登出或關機,而是直接將遠端桌面連線關閉。這樣子執行中的程式依舊會繼續執行。
以前我使用AutoIt來做自動安裝VirtualBox機器人的時候,是在桌面連線的前提下,讓AutoIt模仿使用者的動作,進行Send(模擬鍵盤指令輸入)跟MouseClick(模擬滑鼠按鍵輸入)的動作。
但是在桌面離線的情況下,AutoIt的Send跟MouseClick就會失效,這時候必須改用另外更精確的指定Control系列函數才行。
AutoIt中以Control開頭的函數有十幾種,對製作自動操作機器人的我來說,主要使用ControlSend跟ControlClick這兩種。這兩種的使用方法都很類似,以下進一步說明:
對指定視窗中的指定元件輸出鍵盤的指令。
ControlSend ( "title", "text", controlID, "string" [, flag] )
對指定視窗中的指定元件輸出滑鼠點擊的指令。
ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )
"title"、"text"、controlID跟ControlSend是一樣的。其實Control系列函數幾乎都會有這些參數。
以下是其他選擇性的參數。
剛剛提到了Control系列函數中都需要有controlID參數。controlID並不像是title或text可直接從表面觀察判斷,它是軟體設計時的內部代號,對於初次使用Control系列函數的人來說,常常不知道該如何取得controlID。對於這個無法直接觀察的controlID,可以使用AutoIt v3 Window Info工具來擷取。
AutoIt v3 Window Info會隨著AutoIt一同安裝,位於安裝目錄底下。預設安裝位置為:
C:\Program Files\AutoIt3\Au3Info.exe
C:\Program Files\AutoIt3\Au3Info_x64.exe
其中Au3Info_x64.exe是給64位元的作業系統使用的。
開啟AutoIt v3 Window Info(以下簡稱Au3Info)的主視窗之後如上圖。Au3Info會自動維持最上層的狀態。
接著請打開你要指定的視窗,在此我以Windows的「我的文件」對話視窗為例。請把Au3Info中的「Finder Tool」準心拖曳到你要觀察的對話視窗元件,如上圖,我把Finder Tool拖曳到了「我的文件」中的網址輸入元件上,而原本沒有任何資料的Au3Info,這時也顯示出了元件的詳細資料。
在Au3Info眾多資料中,我們需要注意的是Control分頁中的Advanced Mode的值,這就是controlID參數。在此例中,「我的文件」的網址輸入元件,其controlID為"[CLASS:Edit; INSTANCE:1]"(請注意大小寫跟空白喔)。
為了讓大家更好理解Send跟ControlSend的差異,在這邊舉兩個例子來說明。
以下是利用Send來開啟「我的文件」,並將網址切換到「桌面」的例子:
Run("explorer.exe") WinWait("我的文件") If Not WinActive("我的文件") Then WinActivate("我的文件") Send("{ALTDOWN}d{ALTUP}") Send("{SHIFTDOWN}{END}{SHIFTUP}桌面{Enter}")
這支程式第一行是開啟"explorer.exe",預設啟動時會打開「我的文件」。第二行跟第三行則是等待「我的文件」啟動,並且將它置於焦點。第四行則是跳到網址輸入元件,第五行輸入桌面,最後就能跳到桌面的畫面。
這個例子在桌面連線的情況下可以順利執行,但在桌面離線的情況下,第四行開始將會無法順利執行。
以下是利用ControlSend來開啟「我的文件」,並將網址切換到「桌面」的例子:
Run("explorer.exe") WinWait("我的文件") If Not WinActive("我的文件") Then WinActivate("我的文件") ControlSend("我的文件", "", "[CLASS:Edit;INSTANCE:1]", "{SHIFTDOWN}{END}{SHIFTUP}桌面{Enter}")
這個例子的功能跟前面的例子大致上相同。只有第四行之後改用ControlSend來輸入指令,因此它不僅能夠在桌面連線時執行,也能在桌面離線下執行。
AutoIt的網站不知不覺地更改了網頁設計,害我以為我找錯網站orz
總之,未來有機會再繼續挖掘AutoIt的價值吧。
(more...)
Comments