這些範例是自己根據公司的一些要求所寫的,僅供參考
建立日期:2007/10/29
最後更新:2008/11/24
作者:cschen33.tw@yahoo.com.tw
範例1:
#comments-start
修正被病毒或惡意程式所修改的執行檔exe的呼叫程式的正常登錄檔
修正HKEY_CLASSES_ROOT\exefile\shell\open\command的預設值"%1" %*
#comments-end
$default_var='"%1" %*'
$var=regread("HKEY_CLASSES_ROOT\exefile\shell\open\command","")
if $var == $default_var Then
   msgbox(64,"訊息視窗","程式exe的登錄檔是正常的")
Else
  $yes_no=msgbox(20,"警告視窗","程式exe的登錄已經被修改"&@LF&"你是否要修正!")
  if $yes_no==6 then
     regwrite("HKEY_CLASSES_ROOT\exefile\shell\open\command","","REG_SZ",$default_var)
     $var=regread("HKEY_CLASSES_ROOT\exefile\shell\open\command","")
     msgbox(64,"訊息視窗","值已經被改為"&$var)
  EndIf
EndIf

範例2:
#comments-start
修正被病毒或惡意程式修改的TCP/IP一些設定值
修正HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ DataBasePath\值

為%SystemRoot%\System32\drivers\etc
#comments-end
$default_var='%SystemRoot%\System32\drivers\etc'
$var=regread("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters","DataBasePath")
msgbox(64,"訊息視窗",$ var)

if $var == $default_var Then
msgbox(64,"訊息視窗","登錄檔 是正常的")
Else
$yes_no=msgbox(20,"警告 視窗","登錄已經被修改,你是否要修正!")
if $yes_no==6 then
regwrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters","DataBasePath","REG_EXPAND_SZ", $default_var)
$var=regread("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters","DataBasePath")
msgbox(64,"訊息視窗","值已經 被改為"&$var)
EndIf
EndIf

範例3:
#comments-start
USB鎖住或解鎖(可不可以使用)
參考網路上的說明
http://blog.3cbank.com/?p=1004
我們使用autoit來變成執行檔,針對第二個修改register 內容:
#comments-end
$var=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR","Start")
msgbox(4096,"start value",$var)
regwrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR","Start","REG_DWORD",4)
$var=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR","Start")
msgbox(4096,"start value",$var)
#comments-start
我們將Start的值由3改為4就鎖住
其中msgbox只是確定值有被改過,你可以使用下面一行就可以了
regwrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR","Start","REG_DWORD",4)
編譯為執行檔就可以在使用者的電腦執行,就可以鎖住
同樣解鎖使用3的值就可以了
#comments-end
範例4:
#這個程式是仿自linux下的tmpwatch,但只有簡單 的功能
#希望對你有所幫助,這個程式是命令列的程式
#寫於2007/02/21
#tmpwatch 第一個變數是檔案距今超過多少分鐘刪除,第二個變數是檔案所在的路徑,第三個變數是檔名(支援*)
#command $cmdline第一個變數是命令列變數有幾個,第二個以後為命令內容
#例如:
# tmpwatch 100h c:\windows\temp
# 刪除所在目錄c:\windows\temp下所有距今超過100小時的檔案
# tmpwatch 100m c:\windows\temp *.xls
# 刪除所在目錄c:\windows\temp下所有距現在超過100分鐘的檔案,且副檔名為xls

#include <File.au3>
#include <Date.au3>
#Include <Array.au3>

$arg=$cmdline[0]
if $arg<2 then
    msgbox(1,"tmpwatch","所提供的參數不足"&@LF&"1.第一個參數為檔案日期和現在時間的差超 過多少時間要被刪 除(後加m(分鐘)或h(小時))"&@LF&"2.第二個參數目錄所在"&@LF& "3.第三個參數是檔名(支援*) ")
Else
    $diff=$cmdline[1]
    if stringright($diff,1)="h" or STRINGRIGHT($diff,1)="H" or stringright($diff,1)="m" or stringright($diff,1)="M"  Then
        if stringright($diff,1)="h"or stringright($diff,1)="H" Then
            $diff=stringleft($diff,stringlen($diff)-1)*60
        Else
            $diff=stringleft($diff,stringlen($diff)-1)
        EndIf
    Else
        msgbox(0,"tmpwatch","請在時間後加m(分),h(小時)")
        Exit
    EndIf
    $path=$cmdline[2]
    if $arg=3 Then
        $filefilter=$cmdline[3]
    EndIf
    if FileExists($path) Then
        if $arg=2 Then
            $FileList=_FileListToArray($path)
        Else
            $FileList=_filelisttoarray($path,$filefilter)

        EndIf
        _ArrayDelete( $FileList,0)
        $i=0
        If (Not IsArray($FileList))  Then
            MsgBox (0,"訊息視窗","目錄"&$PATH&"檔案不存在 .",10)
            Exit
        Else
            FOR $element IN $FileList
                $element = $path &"\"& $element

                $t=FileGetTime($element)
                $y = $t[0] &"/"& $t[1] &"/"& $t[2] &" "&$t[3]&":"&$t[4]&":00"
                if  compare_date($y,$diff)Then
                    $I=$I+1
                    FileDelete ( $element )
                Else


                EndIf
            NEXT
            msgbox(0,"","共計:" &$i &" 被刪除",5)
        EndIf

    Else
        msgbox(1,"訊息視窗","指定的路徑不存在"&$path)
    endif

endif
func compare_date ($v1,$v2)
    $retvar=0
    if _DateDiff ( 'n', $V1,_NowCalc() )>$v2 Then
        $retvar=1
    EndIf
    return $retvar
EndFunc

範例5:
同上但是重複執行,但刪除的目錄及時間寫在程式中,並指定預設印表機
#comments-start
 這個程式是仿自linux下的tmpwatch,但只有簡單的功能
 希望對你有所幫助,這個程式是命令列的程式
 $diff 為超過目前時間多少分鐘的要刪除
 $path 為要定時清除檔案路徑
 $wait 間隔
#comments-end
#include <File.au3>
#include <Date.au3>
#Include <Array.au3>
#include <Process.au3>
$diff=3
$path="c:\tmp"
$wait=180000
func compare_date ($v1,$v2)
    $retvar=0
    if _DateDiff ( 'n', $V1,_NowCalc() )>$v2 Then
        $retvar=1
    EndIf
    return $retvar
EndFunc
while 1
    if FileExists($path) Then
        $FileList=_FileListToArray($path)
        _ArrayDelete( $FileList,0)
        $i=0
        If (Not IsArray($FileList))  Then
#            MsgBox (0,"訊息視窗","目錄"&$PATH&"檔案不存在 .",10)
        Else
            FOR $element IN $FileList
                $element = $path &"\"& $element

                $t=FileGetTime($element)
                $y = $t[0] &"/"& $t[1] &"/"& $t[2] &" "&$t[3]&":"&$t[4]&":00"
                if  compare_date($y,$diff)Then
                    $I=$I+1
                    FileDelete ( $element )
                Else


                EndIf
            NEXT
#            msgbox(0,"","共計:" &$i &" 被刪除",5)
        EndIf

    Else
#        msgbox(1,"訊息視窗","指定的路徑不存在"&$path)
    endif
$min=@min+3
TraySetToolTip($min&"分"&@SEC&"秒執行")    
_RunDos("rundll32  printui.dll,PrintUIEntry /y /n \\mis-server-8\acc-2")
sleep($wait)
WEnd   
範例5:
#comments-start
修正被病毒或惡意程式,造成無法設定顯示隱藏檔
修正HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\ Advanced\Folder\Hidden\SHOWALL","CheckedValue"預設1
#comments-end
$default_var='1'
$var=regread("HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL","CheckedValue")
if $var == $default_var Then
    msgbox(64,"訊息視窗","隱藏檔登錄檔是正常的")
Else
    $yes_no=msgbox(20,"警告視窗","隱藏檔登錄已經被修改,你是否要修正!")
    if $yes_no==6 then
        regwrite("HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL","CheckedValue",
                       "REG_DWORD",$default_var)
        $var=regread("HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL","CheckedValue")
        msgbox(64,"訊息視窗","值已經被改為"&$var)
    EndIf
EndIf

範例6:
這個範例是開啟一個EXCEL檔("C:\Program Files\BM7ASampleProgram\BM-7ASample.xls"),建立一個gui視窗,
使用者可以輸入兩個值,按執行後程式會按下一個按鈕(直接執行其巨集,並不是使用滑鼠的控制),
當執行完畢後程式會讀取excel 某一個儲存格的值(它存原輸出檔案的路徑名稱(CSV)檔)
在其後加入目前的"日期"和"時間"兩欄
#include <GuiConstants.au3>
;讀取excel檔
;預設:桌面的BM-7ASample.xls
$xls_path="C:\Program Files\BM7ASampleProgram\BM-7ASample.xls"
if WinExists("Microsoft Excel - BM-7ASample") Then
    WinActivate("Microsoft Excel - BM-7ASample")
    $oexcel=ObjGet ( $xls_path )

Else
    $oexcel=ObjCreate("Excel.application")
    with $oExcel
        .Visible = 1
        .Workbooks.open($xls_path,Default)
    EndWith
   
   
EndIf   

;建立對話框
GuiCreate("BM-7A", 381, 177,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
$Input_2 = GuiCtrlCreateInput("3", 80, 20, 90, 30)
$Input_3 = GuiCtrlCreateInput("60", 250, 20, 80, 20)
$Button_4 = GuiCtrlCreateButton("確定", 150, 90, 90, 30)
$Label_5 = GuiCtrlCreateLabel("測量次數:", 20, 20, 60, 20)
$Label_6 = GuiCtrlCreateLabel("間隔時間", 190, 20, 60, 30)
$Label_7 = GuiCtrlCreateLabel("秒", 340, 20, 20, 20)
$Prog1 = GuiCtrlCreateProgress(80, 130, 220, 30)

GUISETSTATE(@SW_SHOW)

;迴圈
While 1
    $msg = GuiGetMsg()
    $COUNT1=GUICtrlRead($INPUT_2) ;讀取測量次數
    $wait=GUICtrlRead($input_3)*1000 ;讀取測量間隔
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    case $msg=$Button_4
        GUICtrlSetState($input_2,$GUI_DISABLE)
        GUICtrlSetState($INPUT_3,$GUI_DISABLE)
        ;由excel檔取得儲存的檔案名稱儲存格E4
        $save_file=$oexcel.sheets("BM7ASample").range("E4").text   
        FOR $I=1 TO $COUNT1  STEP 1
            GUICtrlSetData($INPUT_2,$COUNT1-$I)
            GUICtrlSetData($prog1,100*$I/$count1)
            WinActivate("Microsoft Excel - BM-7ASample")
            $oExcel.sheets("BM7ASample").btnMeasure_click()
            WinActivate("Microsoft Excel - BM-7ASample")
            sleep($wait-5000)
            ;讀取檔案並清除未檔的空白           
            $data=StringStripWS (fileread($save_file),2)
            ;取出資料並去掉檔尾的換行
            $data=stringleft($data,stringlen($data))
            ;回寫模式為覆寫
            $csv= fileopen($save_file,2)
            $date1=@YEAR & "/" & @MON & "/" & @MDAY
            $time1=@HOUR & ":" & @MIN & ":" & @SEC
            filewrite($csv,$data & $time1 & "," & $date1 & @CRLF)
            fileclose($csv)   
            sleep(5000)   
        Next
        WinActivate("BM-7A")   
        GUICtrlSetData($prog1,0)
        GUICTRLSETSTATE($INPUT_2,$GUI_ENABLE)
        GUICTRLSETSTATE($INPUT_3,$GUI_ENABLE)
    
    EndSelect
WEnd
Exit
#endregion --- GuiBuilder generated code End ---

範例7:
有一個ERP的程式是在不同網路主機的分享資料夾,分別為
192.168.0.1,192.168.0.2下的prog,如果要用到時必須載入為I磁碟
1.先檢查.是否已存在該行程
2.切換I
3.執行該程式
#region --- GuiBuilder code Start ---
; Script generated by AutoBuilder 0.6 Prototype
#include <Process.au3>
#include <GuiConstants.au3>
IF (ProcessExists("prowin32.exe")) Then
    msgbox(0,"訊息視窗","已經有一個實盛系統正在執行!"&@LF&"請關閉後,再執行本式")
Else   
GuiCreate("切換I:", 254, 118,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
$Label_2 = GuiCtrlCreateLabel("請選擇要使用的系統", 80, 20, 120, 20)
$Button_1 = GuiCtrlCreateButton("系統1", 50, 60, 70, 30)
$Button_2 = GuiCtrlCreateButton("系統2",140,60,70,30)

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Button_1
        _RunDOS("net use i: /delete /yes")
        _RunDOS("net use I: \\192.168.0.1\prog")
        run("C:\dlc91d\bin\prowin32.exe -p login.p -basekey ini -pf temp.pf -param systemtw.cnt -ininame prog800.ini","I:\LC")
        ExitLoop 
    Case $msg = $Button_2
        _RunDOS("net use i: /delete /yes")
        _RunDOS("net use i: \\192.168.0.2\prog")
        run("C:\dlc91d\bin\prowin32.exe -p login.p -basekey ini -pf temp.pf -param systemcn.cnt -ininame prog800.ini","I:\LC")
        ExitLoop
    EndSelect
WEnd
Exit
EndIf
#endregion --- GuiBuilder generated code End ---


範例8:
將一個檔案轉為utf8格式使用免費軟體concmd
再將這個檔案,根據另一個對照表轉換其內容
#這堶威I是引進一個新的檔案=>陣列  ,陣列=>檔案
 
#include <Process.au3>
#Include <File.au3>
$filename = $cmdline[2]
$file = fileopen($filename,0)
if $file = -1 then
   msgbox(0,"錯誤","無法開啟檔案")
   Exit
EndIf
$string1 = fileread($file)
$text = StringReplace($string1, '"', '')
$text=stringleft($text,stringlen($text))
fileclose($file)
$csv= fileopen($filename,2)
filewrite($csv,$text)
fileclose($csv)
$command_line="I:\lc\utl\concmd.exe /i:big5 /o:utf8 " &$filename
$returnvar=_RunDos($command_line)
IF $RETURNVAR == 0 THEN
   MSGBOX(0,"訊息","檔案轉換成功",2)
Else
   MSGBOX(0,"訊息","檔案轉換有誤")   
EndIf   

;根據I:\lc\fin\inc\glsd071.txt
;寫入c:\ipayment1.txt
; 原因資料庫內無法處理utf-8的中文字,(有一些中文字是使用utf-8編碼,如果儲存是以ansi來儲存時會變成問號
; 因此我們使用一個utf-8的文字檔來儲存glsd071.txt其編碼為utf-8格式如下
; # 廠商代碼,廠商名稱,變更後廠商名稱(正確的)
;先一行一行由glsd071.txt讀出
;檢查是否ipayment.txt存在上逑的廠商代碼
;如果有則找尋廠商名稱,以變更後的廠商名稱(正確的),來取代寫入
;ipayment1.txt
$file_co_trans = FileOpen("I:\LC\FIN\INC\GLSD071.TXT",0)
Dim $alines
IF $file_co_trans = -1 THEN
   MSGBOX(0,'錯誤','無法開啟檔案')   
ENDIF
_FileReadToArray("c:\ipayment.txt",$alines)
while 1
    $read_line1 = FileReadLine($file_co_trans)
    if @error = -1 Then ExitLoop
    if stringmid($read_line1,1,1) <> '#' Then  
       $line_array = StringSplit($read_line1,',')
       if stringlen($line_array[1]) > 0 Then           
            For $x = 1 to $alines[0]
                $read_line2=$alines[$x]
                 if stringmid($read_line2,1,1) = 'P' Then
                   $line2_array=StringSplit($read_line2,',')
                   if $line2_array[11]=$line_array[1] Then
                       msgbox(0,$line_array[1],$line_array[2]& "->" & $line_array[3],2)
                      $alines[$x]=StringReplace($read_line2,$line_array[2],$line_array[3])
                      ;msgbox(0,'明細',$alines[$x])
                 
                   EndIf
                EndIf           
            Next
       
        EndIf
    EndIf   
WEnd
fileclose($file_co_trans)
;FileDelete("c:\ipayment.txt")
$target_file = FileOpen("C:\IPAYMENT.TXT",130)
_FileWriteFromArray($target_file, $alines, 1)
fileclose($target_file)
最新範例(2008/11/24)
#include <Process.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("請輸入匯入的年月(YYYYMM)", 270, 109, 193, 125)
$YYYYMM = @YEAR&@MON
$input1 = GUICtrlCreateInput($YYYYMM, 48, 24, 153, 21)
$Button1 = GUICtrlCreateButton("確定", 104, 72, 49, 17, 0)
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Button1
            $result=process_data()               
            ExitLoop
    EndSwitch
WEnd
Func process_data()
GUIDelete($Form1)  ;刪除對話框
;匯出資料,這堿O錄製的由ricoh 4500,3500,3000取得統計資料匯出
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
Run('"C:\Program Files\RMAdmin\PmAdmin.exe"')
WinWait("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
If Not WinActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>") Then WinActivate("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
WinWaitActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
Send("{DOWN}{ALTDOWN}t{ALTUP}{DOWN}{DOWN}{ENTER}")
WinWait("輸入認證資訊","輸入登入裝置的登入使")
If Not WinActive("輸入認證資訊","輸入登入裝置的登入使") Then WinActivate("輸入認證資訊","輸入登入裝置的登入使")
WinWaitActive("輸入認證資訊","輸入登入裝置的登入使")
Send("{ENTER}")
WinWait("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數")
If Not WinActive("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數") Then WinActivate("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數")
WinWaitActive("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數")
Send("{ALTDOWN}f{ALTUP}{ENTER}")
WinWait("另存為","檔案名稱(&N):")
If Not WinActive("另存為","檔案名稱(&N):") Then WinActivate("另存為","檔案名稱(&N):")
WinWaitActive("另存為","檔案名稱(&N):")
Send("{ENTER}")
WinWait("另存為","C:\PRINT_LOG\RICOH_A")
If Not WinActive("另存為","C:\PRINT_LOG\RICOH_A") Then WinActivate("另存為","C:\PRINT_LOG\RICOH_A")
WinWaitActive("另存為","C:\PRINT_LOG\RICOH_A")
Send("y")
WinWait("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數")
If Not WinActive("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數") Then WinActivate("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數")
WinWaitActive("使用者管理工具 - RICOH Aficio MP C3000 : 10.10.1.225","使用者頁計數")
Send("{ALTDOWN}{F4}{ALTUP}")
WinWait("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
If Not WinActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>") Then WinActivate("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
WinWaitActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
Send("{DOWN}{ALTDOWN}t{ALTUP}{DOWN}{DOWN}{ENTER}")
WinWait("輸入認證資訊","輸入登入裝置的登入使")
If Not WinActive("輸入認證資訊","輸入登入裝置的登入使") Then WinActivate("輸入認證資訊","輸入登入裝置的登入使")
WinWaitActive("輸入認證資訊","輸入登入裝置的登入使")
Send("{ENTER}")
WinWait("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數")
If Not WinActive("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數") Then WinActivate("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數")
WinWaitActive("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數")
Send("{ALTDOWN}f{ALTUP}{ENTER}")
WinWait("另存為","檔案名稱(&N):")
If Not WinActive("另存為","檔案名稱(&N):") Then WinActivate("另存為","檔案名稱(&N):")
WinWaitActive("另存為","檔案名稱(&N):")
Send("{ENTER}")
WinWait("另存為","C:\PRINT_LOG\RICOH_A")
If Not WinActive("另存為","C:\PRINT_LOG\RICOH_A") Then WinActivate("另存為","C:\PRINT_LOG\RICOH_A")
WinWaitActive("另存為","C:\PRINT_LOG\RICOH_A")
Send("y")
WinWait("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數")
If Not WinActive("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數") Then WinActivate("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數")
WinWaitActive("使用者管理工具 - RICOH Aficio MP C3500 : 10.10.1.227","使用者頁計數")
Send("{ALTDOWN}{F4}{ALTUP}")
WinWait("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
If Not WinActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>") Then WinActivate("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
WinWaitActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
Send("{DOWN}{ALTDOWN}t{ALTUP}{DOWN}{DOWN}{ENTER}")
WinWait("輸入認證資訊","輸入登入裝置的登入使")
If Not WinActive("輸入認證資訊","輸入登入裝置的登入使") Then WinActivate("輸入認證資訊","輸入登入裝置的登入使")
WinWaitActive("輸入認證資訊","輸入登入裝置的登入使")
Send("{ENTER}")
WinWait("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數")
If Not WinActive("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數") Then WinActivate("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數")
WinWaitActive("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數")
Send("{ALTDOWN}f{ALTUP}{ENTER}")
WinWait("另存為","檔案名稱(&N):")
If Not WinActive("另存為","檔案名稱(&N):") Then WinActivate("另存為","檔案名稱(&N):")
WinWaitActive("另存為","檔案名稱(&N):")
Send("{ENTER}")
WinWait("另存為","C:\PRINT_LOG\RICOH_A")
If Not WinActive("另存為","C:\PRINT_LOG\RICOH_A") Then WinActivate("另存為","C:\PRINT_LOG\RICOH_A")
WinWaitActive("另存為","C:\PRINT_LOG\RICOH_A")
Send("y")
WinWait("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數")
If Not WinActive("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數") Then WinActivate("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數")
WinWaitActive("使用者管理工具 - RICOH Aficio MP C4500 : 10.10.1.226","使用者頁計數")
Send("{ALTDOWN}{F4}{ALTUP}")
WinWait("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
If Not WinActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>") Then WinActivate("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
WinWaitActive("SmartDeviceMonitor for Admin - [搜尋裝置<IPv4>]","搜尋裝置<IPv4>")
Send("{ALTDOWN}{F4}{ALTUP}")
#endregion --- ScriptWriter generated code End ---
;匯出資料

;修改資料
$oexcel=ObjCreate("Excel.application")
$oexcel.Application.DisplayAlerts=False
If @error Then
   MsgBox(0, "Excel Error:", "Error creating Excel object!")
   Exit
EndIf
;清除舊月份資料,解決重複匯入
 $SQLITE_STRING = 'sqlite3.exe print.db "delete from  print_log where ym =' &$YYYYMM&'"'
 $result=_RunDOS($SQLITE_STRING)
For $j = 1 To 3
    Switch $j
        Case 1       
             ;rd
             $oexcel.Workbooks.open(@ScriptDir&"\RICOH_Aficio_MP_C3000_print.CSV",default)
        case 2
             ;5f
             $oexcel.workbooks.open(@ScriptDir&"\RICOH_Aficio_MP_C3500_print.CSV",default)
         case 3
             ;sales
             $oexcel.Workbooks.open(@ScriptDir&"\RICOH_Aficio_MP_C4500_print.CSV",default)
    EndSwitch                
;$oexcel.Visible = 1
   $oexcel.Sheets(1).Select
   with $oexcel.sheets(1)
       .Rows("1:7").Select
       $oexcel.Selection.Delete
       .Columns("A:A").Select
       $oexcel.selection.delete
       .Columns("B:B").Select
       $oexcel.selection.delete
       .columns("D:N").select   
       $oexcel.selection.delete
       .columns("a:a").select   
       ;$oexcel.selection.replace("[]","'999999")
    switch $j
        case 1
             ;rd
             $oexcel.selection.replace("[]","'900002")
        Case 2
             ;5f
             $oexcel.selection.replace("[]","'900001")
         Case 3
             ;sales
             $oexcel.selection.replace("[]","'900003")
    EndSwitch         
    $oexcel.Selection.Replace("[","'")
    $oexcel.selection.replace("]"," ")

   EndWith
$i=1
$count = 0
while 1
    if $oexcel.cells($i,1).value <> '' Then
       $i = $i +1
       $count = $count + 1     
       switch $j
        case 1
            ;rd  介於0-20都是華能
            if int($oexcel.cells($count,1).value ) > 0 and int($oexcel.cells($count,1).value) < 30 Then
                  $oexcel.cells($count,1).value = "E" & $oexcel.cells($count,1).value     
            EndIf
        case 2
            ;5f   蔡嘉哲 ,會計師(888888)
            If int($oexcel.cells($count,1).value) =  7   Then
                $oexcel.cells($count,1).value = "E" & $oexcel.cells($count,1).value       
            EndIf                           
        case 3
            ;sales 張浩祥 劉信誼
            If int($oexcel.cells($count,1).value) =  8 or int($oexcel.cells($count,1).value) =  22 Then
                $oexcel.cells($count,1).value = "E" & $oexcel.cells($count,1).value       
            EndIf               
        EndSwitch         
       ;msgbox(1,'test',$oexcel.cells($count,1).value)      
       $oexcel.cells($count,4).value = "'" & $YYYYMM
      
    Else
          Exitloop  
    EndIf   
WEnd   
$oexcel.ActiveWorkbook.Save
$oexcel.quit
switch $j
    case 1
         
        $SQLITE_STRING = 'sqlite3.exe -separator "," print.db ".import RICOH_Aficio_MP_C3000_print.CSV print_log"'
    case 2
        $SQLITE_STRING = 'sqlite3.exe -separator "," print.db ".import RICOH_Aficio_MP_C3500_print.CSV print_log"'
    case 3
        $SQLITE_STRING = 'sqlite3.exe -separator "," print.db ".import RICOH_Aficio_MP_C4500_print.CSV print_log"'
EndSwitch      
;匯入資料到sqlite資料庫
$result=_RunDOS($SQLITE_STRING)
Next
;匯入csv的指令
;sqlite3.exe -separator "," print.db ".import ricoh_aficio_mp_c3000_print.csv print_log;"
MSGBOX(0,"訊息","匯入資料完畢")
 exit
EndFunc   

使用函式說明:
  1. 讀取登錄檔
  2. 寫入登錄檔
  3. 訊息對話框如何換行
  4. 取得命令列參數
  5. 取得使用者桌面的路徑
  6. 取得目前時間日期
  7. 開啟EXCEL檔
  8. 執行EXCEL巨集
  9. 取得 EXCEL儲存格的值'
  10. GUI畫面設定
  11. 設定印表機
  12. 檢查行程存在不存在及啟動服務
  13. 常駐程式的提示功能,autoit3只要使用loop其行為就可以像常駐程式
  14. 在檔案最後一行加入資料 (autoit只有單行寫入功能,行尾會加入換行符號,因此無法在原本的行尾加入資料)
  15. 模 擬輸入

autoit 3 的新功能control
以前在模擬輸入會有一個大的問題,無法很精確的輸入,現在加入的 control可以直接輸入到某個class內
你可以使用autoit windows  info 來查看其classes
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",1)
Opt("WinDetectHiddenText",1)
$title1="標準系統 ADMIN "  & @YEAR & '/' & @MON & '/' & @MDAY  & ' (華興)'
$title2="ADMIN  SYSA850  《※  定時批次作業  ※》  C  " & @YEAR & '/' & @MON & '/' & @MDAY  & ' (華興)'

run("c:\dlc91d\bin\prowin32.exe -p login.p -basekey ini -pf temp.pf -param systemtw.cnt ","i:\lc")
If Not WinActive("標準系統","Cancel") Then WinActivate("標準系統","Cancel")
WinWaitActive("標準系統","Cancel")
Send("admin{TAB}passwd{ENTER}")
WinWaitActive($title1)
sleep(2000)
ControlSend($title1,'',"[CLASS:Edit; INSTANCE:2]","sysa850")
Send('{enter}')
sleep(1000)
Send("y")
sleep(1000)
ControlSend($title2,'',"[CLASS:Edit; INSTANCE:18]","002")
sleep(1000)
ControlSend($title2,'',"[CLASS:Edit; INSTANCE:10]","20081231")
sleep(1000)
ControlSetText($title2,'',"[CLASS:Edit; INSTANCE:8]","2000")
sleep(1000)
send("{F2}")


說明:
controlsend()  在原有的文字上附加(可能之前可能之後)
controlsetText()   取代原有文字