顯示具有 autoit 標籤的文章。 顯示所有文章
顯示具有 autoit 標籤的文章。 顯示所有文章

2.28.2009

autoit_取得電池資訊

有些人在問如何用autoit取得電池資訊方法
如果需要,還可以在這裡上找到其它WMI中關於Win32_Battery
網頁中有提供vbscript的範例,有需要的人可以自行看看囉

實作方式,我直接採用CompuInfo這一個UDF來解決
(這一個UDF它都是用WMI的方法去取得自己所需要的資訊的)
(請參閱autoit - 取得電腦軟硬體資訊一文)
呼叫CompuInfo函式庫中的_ComputerGetBattery($Battery)
即可以取得所需的資訊

程式範例如下:


#include <_CompInfo.au3>

Dim $Battery

_ComputerGetBattery($Battery)
If @error Then
    $error = @error
    $extended = @extended
    Switch $extended
        Case 1
            _ErrorMsg($ERR_NO_INFO)
        Case 2
            _ErrorMsg($ERR_NOT_OBJ)
    EndSwitch
EndIf

For $i = 1 To $Battery[0][0] Step 1
    MsgBox(0, "Test _ComputerGetBattery",             "Name: " & $Battery[$i][0] & @CRLF & _
            "Availability: " & $Battery[$i][1] & @CRLF & _
            "BatteryRechargeTime: " & $Battery[$i][2] & @CRLF & _
            "BatteryStatus: " & $Battery[$i][3] & @CRLF & _
            "Description: " & $Battery[$i][4] & @CRLF & _
            "Chemistry: " & $Battery[$i][5] & @CRLF & _
            "ConfigManagerErrorCode: " & $Battery[$i][6] & @CRLF & _
            "ConfigManagerUserConfig: " & $Battery[$i][7] & @CRLF & _
            "CreationClassName: " & $Battery[$i][8] & @CRLF & _
            "DesignCapacity: " & $Battery[$i][9] & @CRLF & _
            "DesignVoltage: " & $Battery[$i][10] & @CRLF & _
            "DeviceID: " & $Battery[$i][11] & @CRLF & _
            "ErrorCleared: " & $Battery[$i][12] & @CRLF & _
            "ErrorDescription: " & $Battery[$i][13] & @CRLF & _
            "EstimatedChargeRemaining: " & $Battery[$i][14] & @CRLF & _
            "EstimatedRunTime: " & $Battery[$i][15] & @CRLF & _
            "ExpectedBatteryLife: " & $Battery[$i][16] & @CRLF & _
            "ExpectedLife: " & $Battery[$i][17] & @CRLF & _
            "FullChargeCapacity: " & $Battery[$i][18] & @CRLF & _
            "LastErrorCode: " & $Battery[$i][19] & @CRLF & _
            "MaxRechargeTime: " & $Battery[$i][20] & @CRLF & _
            "PNPDeviceID: " & $Battery[$i][21] & @CRLF & _
            "PowerManagementCapabilities: " & $Battery[$i][22] & @CRLF & _
            "PowerManagementSupported: " & $Battery[$i][23] & @CRLF & _
            "SmartBatteryVersion: " & $Battery[$i][24] & @CRLF & _
            "Status: " & $Battery[$i][25] & @CRLF & _
            "StatusInfo: " & $Battery[$i][26] & @CRLF & _
            "SystemCreationClassName: " & $Battery[$i][27] & @CRLF & _
            "SystemName: " & $Battery[$i][28] & @CRLF & _
            "TimeOnBattery: " & $Battery[$i][29] & @CRLF & _
            "TimeToFullCharge: " & $Battery[$i][30])
Next




下圖是在我的電腦執行的畫面,參數如下所示:
EstimatedChargeRemaining:還有幾%的電
EstimatedRunTime:還有幾分鐘的電




2.10.2009

autoit - 讀取密碼再填入文字框

基於有不少人對這項議題的方法似乎很有興趣
因此,針對此寫了一小段程式,並附上解說
在執行程式前,請先看完下面的說明再動作
才不會執行無效(程式下載)

;==================================
;從檔案unit.txt檔中讀出密碼、帳號
;再填入視窗中,某一控制項
;==================================

;讀UNIT.txt中的帳號密碼,如果沒有讀取成功,就離開程式
$file = FileOpen("UNIT.txt", 0)
; Check if file opened for reading OK
If $file = -1 Then
 MsgBox(0, "Error", "Unable to open file.")
 Exit
EndIf

;讀出檔案中的資訊,若出錯,則結束程式.
$user_id = FileReadLine($file) ;讀取帳號
$user_pw = FileReadLine($file) ;讀取密碼
If @error = -1 Then
 FileClose($file)
 Exit
EndIf

WinActivate("本機磁碟 (D:)") ;把title="本機磁碟 (D:)"的視窗叫出來
ControlFocus("本機磁碟 (D:)", "", "Edit1") ;移動游標到Editl的元件上
Send($user_id & $user_pw);送出帳號、密碼

FileClose($file)

----
(1) 在程式要開始執行前要先打開一個"本機磁碟 (D:)"的視窗,如下圖
(2) 用autoit所附的工具Au3Info.exe來抓出想要填入的欄位代號,如下所示,即為圖中的CLASSNN,將其填入第三個欄位,其它欄位的填法查autoit的說明應該就很清楚了

(3)若填好後,就要按Enter鍵,那就把原來的程式改成:Send($user_id & $user_pw & "{ENTER})
(4)但是有時候有的程式是沒辨法用鍵盤的Enter鍵的,這時候就使用ControlClick來按下「確定」按鈕。

至於之前有人問過用


ControlSetText("JIHSUN HTS","[7001]","TStockEdit2","$file" )

為何不行?
這是因為最後面的參數是個變數,所以應該改成

ControlSetText("JIHSUN HTS","[7001]","TStockEdit2",$file )

我想就可以動了吧:)

2.09.2009

autoit - EXCEL的UDF正式被收入囉

前一陣子autoit v3.3.0.0出來囉
這一次的重要更新,我想莫過於EXCEL的UDF終於加入了
之前是國外有人寫這一個UDF
大家也很有興趣使用它
只是一直未被加入正式的UDF名單
直到去年底終於被加入了
另外一個改變就是windows 9x和NT4.0的支援已被移除
不過,我想也沒什麼人在用這麼舊的版本了吧

4.24.2008

AutoIt - 圖片批次裁剪

這隻程式會將script檔所在資料夾中的jpg檔全部裁剪後放到"new_pic"資料夾中


;批次裁剪圖片
#include "_PhotoCom.au3"

; Shows the filenames of all files in the current directory
$search = FileFindFirstFile("*.jpg")

; Check if the search was successful
If $search = -1 Then
MsgBox(0, "Error", "找不到相符的檔名&資料夾")
Exit
EndIf

DirCreate("new_pic")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
;裁剪時需了解:
;(1) 1 點(像素)為 1/72英吋,即 1公分為28像素(此為word列印的標準)
; 參照http://office.microsoft.com/zh-tw/word/HP051896431028.aspx
;(2) 由_Photo_Info()傳回的值
; $pic_info[1] = 寬
; $pic_info[1] = 高
$new_file = StringReplace($file, ".jpg", "-copy"&".jpg")
$pic_info = _Photo_Info($file)
;剪下「左上」的0.5cm,「右下」的1cm
_Photo_Cutting($file,14, 14, $pic_info[1]-28, $pic_info[2]-28,@ScriptDir & "\new_pic\" & $new_file)
WEnd

; Close the search handle
FileClose($search)

4.20.2008

autoit - 圖片處理

這一次要介紹的是圖片檔的教學
最近剛好需要用到對圖片批次裁剪的功能
因此就寫了一支程式,希望對需要的人也能有幫助
但在張貼我的程式碼之前,先以大陸寫的範例程式為引子吧

當然,圖片處理的UDF一定是要有的
其函數請到大陸的autoit交流網站找一個PhotoCom.au3的UDF
當然這邊也附上翻譯後的檔案_PhotoCom.au3
以下是程式碼的部份
對於各個函式的用法,我想自己看PhotoCom.au3應該就可很容易看懂了
在執行程式之前還需要一些預備動作:
1.因為PhotoCom.au3會用到AspJpeg.dll這一個檔案,所以請下載後把他放到System32這一個資料夾中,其用法可以參考這個網站
2.程式預設處理一張名為"7.jpg"的圖片,所以請任意放一張"7.jpg"的檔案到script的所在位置

(程式下載)

;==========================
; PhotoCom_example.au3
;---------------------
;PhotoCom UDF 圖面處理程式範例
;==========================
#include "_PhotoCom.au3" ;原檔名之前有加上一底線"_",表示是 UDF
_Photo_Watermark("7.jpg","新細明體",40,0xff4500,True,4,0xdcdcdc,4,-2,True,300,100,"這是浮水印功能","浮水印.jpg")
_Photo_Thumbs("7.jpg",64,64,"Thumbs.jpg")
_Photo_Merger("7.jpg","Thumbs.jpg",600,400,0.6,"Merger.jpg")
_Photo_Cutting("7.jpg",0,0,280,280,"Cutting.jpg")
_Photo_Frame("7.jpg",0xFF83FA,10,2,2,"Frame.jpg")
_Photo_Safety(100,25,0xffffff,"123這是編碼文字",20,0xFF0000,1,1,1,9,"Safety.jpg")
_Photo_Sharpen("7.jpg",1,350,"Sharpen.jpg") ;銳利化
_Photo_Grayscale("7.jpg",0,"GrayScale.jpg")
_Photo_ColorSet("7.jpg",0.01,2,0.01,"ColorSet.jpg")
_Photo_Sepia("7.jpg",50,1.4,"Sepia.jpg")
_Photo_DrawBar("7.jpg",0xFFFFFF,2,50,50,100,100,"DrawBar.jpg")
_Photo_Ellipse("7.jpg",0xFFFFFF,5,0,0xFFFFF0,50,50,100,100,"Ellipse.jpg")
_Photo_Line("7.jpg",0xFFFFFF,2,30,30,900,30,"Line.jpg")
_Photo_Flip("7.jpg",1,"Flip.jpg")
_Photo_Flip("7.jpg",0,"Flip2.jpg")
_Photo_Rotate("7.jpg",1,"Rotate1.jpg")
_Photo_Rotate("7.jpg",0,"Rotate2.jpg")
$test=_Photo_Info("7.jpg")
;$test[0]=圖片格式 $test[1]= 寬 $test[2]= 高
MsgBox (0,"","圖片格式:" & $test[0] & @CRLF & "寬:" & $test[1] & @CRLF & "高:" & $test[2])
Exit

4.06.2008

autoit-更改檔名中的時間

這次的起因是因為,公司的工時表是用excel
每天、每人會有一個當天的呈報表,檔名有時間
若是一個人要管的時候,每天要花不少時間去改
所以就寫了這一個範本
當然,後來還要加上加班內容的更改
(總不能每天都一樣嘛!~ 老闆要看樣子就做做樣子給他看:))
內容我想就自由發揮吧!
本篇做個拋磚引玉囉

這一次要用到一個UDF的函式
在autoit中寫在Date.au3中
所以要引用其中的函式需要加上
#include 以使用時間相關的函式
對於程式的解說這次就直接穿插在程式中


;批次改檔
#include ;引入UDF函式

; 找出同資料夾內的所有excel檔案
$search = FileFindFirstFile("*.xls")

; 確認search是否成功
If $search = -1 Then
MsgBox(0, "Error", "找不到相符的檔名&資料夾")
Exit
EndIf

While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop

;取時間
$today = _NowCalcDate() ;取得的日期格式為 YYYY/MM/DD
$yestoday = _DateAdd( 'd', -1, $today)
$today = StringMid(StringReplace($today, "/", ""), 3)
$yestoday = StringMid(StringReplace($yestoday, "/", ""), 3)
;字串取代
$new_Name = StringReplace($file, $yestoday, $today)

;更名
FileMove($file, $new_name)

MsgBox(4096, "File:", $file & "-->" & $new_name)
WEnd

; Close the search handle
FileClose($search)

3.23.2008

AutoIt入門小程式

以下是個從AutoIt改寫為中文的範例
從中可以了解
MsgBox()、run()、WinWaitActive、Send的用法
其中Send的用法要好好的看AutoIt的解說
因為有很多事情都需要它來完成
如何讓鍵盤按出各種快捷鍵是我最常用的方式


;=================================
;由AutoIt的範例改寫
;=================================

$answer = MsgBox(4, "AutoIt Example (中文)", "此程式會打開小算盤並鍵入 2 x 4 x 8 x 16 後離開,要執行嗎?")

; 若在 MsgBox 中選「NO」會傳回 7
If $answer = 7 Then
MsgBox(0, "AutoIt", "OK. Bye!")
Exit
EndIf

; Run the calculator
Run("calc.exe")

;等待有「小算盤」字串為標題的視窗出現
WinWaitActive("小算盤")

;設定按鍵的間隔時間
AutoItSetOption("SendKeyDelay", 400)
;送出「2*4*8*16=」,並停住2秒
Send("2*4*8*16=")
Sleep(2000)

;將「小算盤」關掉
WinClose("小算盤")

3.16.2008

autoit, 一個很好用的script語言

最近因為工作的原因,開始學習一個名為autoit的程式語言
這東西比一般的程式語言好在於
一些機械式的滑鼠、鍵盤動作可以寫程自動化的方式動作
比起我常用的c++,java來說
這種語言對於自動作而言,可以用很簡易的寫法就達到所要的需求

發展到後來
連圖片(jpg)檔、word、Excel也都可以很輕易的控制、處理
所以最近Java程式就暫時停止
先改寫點autoit的心得,還有方便的使用方式