1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hướng dẫn Macro trong AutoIT

Thảo luận trong 'Hướng dẫn - Bài tập căn bản' bắt đầu bởi Tungtata, 7/9/15.

  1. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    __Nói đến macro nếu những ai đã biết thì có thể thấy rõ tính tiện dụng của nó .Những ai chưa biết thì mình xin giới thiệu Macro là gì và cách sử dụng macro ở đây
    (Bài này chủ yếu dành cho những bạn mới làm quen với autoit .Mình cũng mới làm quen với autoit nên kiến thức còn hạn hẹp chỉ viết theo những gì mình hiểu,có gì sai sót mong các pro chỉnh sửa giúp)
    Macro là những biến đặc biệt của autoit và mang kí tự @ đầu tiên (ví dụ: @error , @CRLF ...).Mỗi 1 macro mang 1 giá trị lưu trữ riêng .Đặc điểm của nó là ngắn gọn + dễ nhớ + dễ sử dụng .Trong autoit Macro được chia ra làm 4 loại:
    1.Related Marco
    **@error: Trả lại lỗi của chương trình
    -Ví dụ: Trong inputbox
    Mã (AutoIt):

    #cs
    @error=1: Nút cancel đã được ấn
    @error=2: Hết thời gian đợi để bấm
    @error=3: Hộp thoại k xuất hiện
    @error=4: Hộp thoại inputbox k đc phép hiện thị
    @error=5: Thông số truyền k hợp lệ
    @error=0: Tình trạng bình thường k có gì xảy ra
    #ce

    InputBox(0,"","")
    If @error=1 Then
        MsgBox(0,'Thông báo',"Nút cancel đã đc ấn",3)
    EndIf
     
    **@ScriptName: Trả về tên chương trình hiện tại
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"Tên file là: ",@ScriptName)
    **@ScriptDir: Đường dẫn tới thư mục chương trình hiện tại
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"Đường dẫn: ",@ScriptDir)
    **@ScriptFullPath: Đường dẫn đầy đủ tới chương trình hiện tại (=@ScriptDir + @ScriptName )
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"Đường dẫn đầy đủ: ",@ScriptFullPath)
    **@ScriptLineNumber Dòng hiện tại mang marco này
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"LineNumber: ",@ScriptLineNumber)
    **@WorkingDir: Thư mục hiện tại đang làm việc
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"Đường dẫn thư mục: ",@WorkingDir)
    **@AutoItExe: Lấy đường dẫn đầy đủ của file autoit
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"full path : ",@AutoItExe)
    **@AutoItPID: PID của các tiến trình đang chạy của autoit
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"PID : ",@AutoItPID)
    **@AutoItVersion: Phiên bản của autoit đang cài đặt
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"Version : ",@AutoItVersion)
    **@AutoItX64: Trả về giá trị nếu đang chạy theo phiên bản x64
    -Về 1 nếu đúng ,ngược lại là 0

    **@HotKeyPressed: Phím nóng cuối cùng đc ấn
    -Ví dụ:
    Mã (AutoIt):
    HotKeySet("{F3}","exitt") ;tạo phím nóng gọi tắt 1 hàm
    Do                           ;tạo vòng lặp vô tận để chương trình k out
    ToolTip("Test",0,0)
    Until 0

    Func exitt()                      ;tạo hàm
        $hotkey=@HotKeyPressed
        MsgBox(0,"",$hotkey)
        Exit
    EndFunc
     
    **@compiled: Trả lại khả năng biên dịch thành công hay k của chương trình
    -Trả về 0 nếu chưa biên dịch
    -Trả về 1 nếu đã biên dịch thành công
    aKiD: Bổ xung thêm rằng @compiled trả về 1 khi cript đang chạy là 1 trình đã biên dịch (exe), trả về 0 khi trình chưa biên dịch (au3). Marco này thường được dùng để xét điều kiện chạy các debug code.
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"",@compiled)
    if @Compiled=1 Then
        MsgBox(0,"Thông Báo","Đã dịch thành công")
    EndIf
    ;Biên dịch ra là đc ^^
    **@exitCode: Lấy mã đc trả lại bởi hàm exit(thoát)
    @exitCode =0: hàm Exit chạy bình thường(mặc định)
    @exitCode = 1: Chương trình bị thoát mà do 1 nguyên nhân nào đó

    **@EXITMETHOD: Nhận hình thức đi theo của hàm OnAutoItExitRegister (hàm giúp gọi 1 hàm khác khi thoát chương trình)
    @EXITMETHOD =0: Tự nhiên thoát hàm
    @EXITMETHOD =1: Thoát do chương trình chỉ định
    @EXITMETHOD =2: Thoát bằng nút icon trên khay hệ thống
    @EXITMETHOD =3: Thoát vì người dùng logoff hệ thống
    @EXITMETHOD =4: Thoát vì người dùng tắt máy
    (mã trả lại có thể dùng hàm @exitcode)

    **@extended: Mở rộng sự hoạt động của các hàm
    Ví dụ:
    Mã (AutoIt):
    $text = StringReplace("autoit viet net", " ", "-") ;thay thế kí tự "" trong text bằng "-"
    $textreplace = @extended
    MsgBox(0, "Văn bản đã thay thế", $text)
    MsgBox(0, "Số kí tự đã thay thế", $textreplace)
    **@NumParams: Số tham số được truyền khi gọi hàm
    Ví dụ:
    test("autoit",".net")
    Mã (AutoIt):

    Func test($a,$b)
        $numparam=@NumParams
        MsgBox(0,$a,$b)
        MsgBox(0,"Số tham số được truyền",$numparam)
    EndFunc
    **@COM_EventObj: Đối tượng COM sự kiện đang được truyền vào

    **@GUI_CtrlId: ControlID của GUI cuối cùng được click (chỉ có tác dụng trong chức năng GUICtrlSetOnEvent.

    **@GUI_CtrlHandle: Handle của GUI cuối cùng đc click(chỉ có tác dụng trong chức năng GUICtrlSetOnEvent.

    **@GUI_WinHandle: GUI handle cuối cùng đc click, chỉ áp dụng cho chế độ Event trên GUI

    Những marco dưới đây đc sử dụng cho các hàm WinSetState, Run, RunWait, FileCreateShortcut và FileGetShortcut:

    **@SW_DISABLE: Vô hiệu hóa window
    **@SW_ENABLE: Hủy window đã vô hiệu hóa
    -Ví dụ:
    Mã (AutoIt):
    Run ("Notepad") ;chạy notepad trong máy
    WinWaitActive("Untitled - Notepad") ;chờ đến khi notepad đc gọi
    Sleep(1000)        ;dừng 1s
    WinSetState("Untitled - Notepad","",@SW_DISABLE ) ;vô hiệu hóa notepad
    Sleep(7000)                      ;dừng 7s
    WinSetState("Untitled - Notepad","",@SW_ENABLE ) ;hủy vô hiệu hóa
    ;Ngoài ra còn có thể dùng để vô hiệu hóa các nút ấn ,check box ,edit ...trong GUI
    **@SW_HIDE: Ẩn cửa sổ
    **@SW_Show: Hiện của sổ đang ẩn
    -Ví dụ:
    Mã (AutoIt):
    HotKeySet("{F1}","hidewin") ;ấn F1 chạy hàm ẩn window
    HotKeySet("{F2}","showwin") ;F2 để hiện
    HotKeySet("{F3}","thoat") ;F3 để thoát

    Run ("Notepad")      ;chạy notepad
    WinWaitActive("Untitled - Notepad")
    WinMinimizeAll()         ;thu nhỏ tất cả cửa sổ

    Do
        ToolTip("test",0,0)                  ;tạo vòng lặp giữ chương trình k thoát
    Until 0

    Func thoat()
        Exit
    EndFunc

    Func Hidewin()
    WinSetState("Untitled - Notepad","",@SW_HIDE )
    EndFunc

    Func showwin()
        WinSetState("Untitled - Notepad","",@SW_SHOW )
    EndFunc
    **@SW_LOCK: Khóa của sổ
    **@SW_UNLOCK: Mở khóa cửa sổ đã khóa
    (Tương tự ^^)

    **@SW_MINIMIZE: Thu nhỏ của sổ
    **@SW_MAXIMIZE: Phóng to hết cỡ cửa sổ
    -Ví dụ:
    Mã (AutoIt):
    Run ("Notepad")
    WinWaitActive("Untitled - Notepad")
    Sleep(1000)
    WinSetState("Untitled - Notepad","",@SW_MINIMIZE )
    Sleep(4000)
    WinSetState("Untitled - Notepad","",@SW_MAXIMIZE )
     
    **@SW_RESTORE: Phục hồi tình trạng trước đó của cửa sổ

    **@SW_SHOWDEFAULT: Hiện cửa sổ ở chế độ mặc định
    **@SW_SHOWMAXIMIZED: Hiện cửa sổ ở chế độ phóng to
    **@SW_SHOWMINIMIZED: Hiện cửa sổ ở chế độ thu nhỏ
    **@TrayIconFlashing: trả lại 1 nếu "tray icon" đang "flash", nếu ko trả lại 0
    **@TRAY_ID: địa chỉ của "tray item" cuối cùng đc sử dụng
    **@TrayIconVisible: Trả về 1 nếu icon đc nhìn thấy ,về 0 nếu icon ẩn

    **@CRLF: Dùng để xuống dòng(=@cr + @lf)
    -Ví dụ:
    Mã (AutoIt):
    $a="Autoit"
    $b="Việt"
    MsgBox(0,"",$a & @CRLF & $b)
     
    **@TAB: Kí tự Tab
    -Ví dụ:
    Mã (AutoIt):
    MsgBox(0,"","Autoit" & @TAB &  "Việt")
    Nguồn bài viết: QuiT - Forum hocautoit.com
     
    Chỉnh sửa cuối: 8/9/15
  2. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    2.Directory Macro

    A.Macro chứa dữ liệu của "All Users" trên máy

    **@AppDataCommonDir: Đường dẫn tới Application Data
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathApp: " ,@AppDataCommonDir)
    **@DesktopCommonDir: Đường dẫn tới desktop
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathdesktop: " ,@DesktopCommonDir)
    **@DocumentsCommonDir: Đường dẫn tới document
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathdoc: " ,@DocumentsCommonDir)
    **@FavoritesCommonDir: Đường dẫn tới Favorite
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathfa: " ,@FavoritesCommonDir)
    **@ProgramsCommonDir: Đường dẫn tới folder Start Menu trong folder Programs
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathpg: " ,@ProgramsCommonDir)
    **@StartMenuCommonDir: Đường dẫn tới Start Menu
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathsm: " ,@StartMenuCommonDir)
    **@StartupCommonDir: Đường dẫn tới starup
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"pathsu: " ,@StartUpCommonDir)
    B.Macro chứa dữ liệu của Current User trong máy

    **@AppDataDir: Đường dẫn tới Application
    **@DesktopDir: đường dẫn tới Desktop
    **@MyDocumentsDir: đường dẫn tới Documents
    **@FavoritesDir: đường dẫn tới Favorites
    **@ProgramsDir: đường dẫn tới folder Start Menu trong folder Programs
    **@StartMenuDir: đường dẫn tới Start Menu
    **@StartupDir: đường dẫn tới Startup
    **@UserProfileDir: đường dẫn tới Profile

    C. Macro cho hệ thống máy tính

    **@HomeDrive: ổ đĩa chứa hệ điều hành máy tính
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"homedrive: " ,@HomeDrive)
    **@HomePath: Trả về 1 phần thư mục của người dùng (để có đường dẫn đầy đủ kết hợp với @HomeDrive)
    -Ví dụ:
    Mã (AutoIt):
     MsgBox (0 ,"part: " ,@HomePath)
    MsgBox (0 ,"full path: " ,@HomeDrive & @HomePath)
     
    **@HomeShare: Trả về tên máy chủ và thư mục hiện tại của người dùng
    **@LogonDNSDomain: Đăng nhập Domain DNS
    **@LogonDomain: Đăng nhập Domain
    **@LogonServer: Đăng nhập server
    **@ProgramFilesDir: Đường dẫn tới Programfile
    **@CommonFilesDir: Đường dẫn tới commonfile
    **@WindowsDir: Đường dẫn tới window
    **@SystemDir: Đường dẫn tới hệ thống
    **@TempDir: đường dẫn tới temporary
    **@ComSpec: Đường dẫn tới file cmd.exe
    -Ví dụ:
    Mã (AutoIt):
     Run (@ComSpec & " /k help | more")
    MsgBox (0 ,"cmd" ,@ComSpec)
    Nguồn bài viết: QuiT - Forum hocautoit.com
     
    Chỉnh sửa cuối: 8/9/15
    Phan Dong and hoangdangtrungvn like this.
  3. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    3.System Info Macro
    Thông tin về hệ thống​

    **@CPUArch: thông tin của CPU
    -Trả về "X86" nếu CPU 32-bit hoặc "X64" nếu CPU 64-bit.
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"CPU" ,@CPUArch)
    **@KBLayout: Trả về mã biểu thị Keyboard Layout (xem các giá trị có thể trả về trong thư mục Appendix/@OSlang Values của file help)
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"KB" ,@KBLayout)
    **@MUILang: Trả về mã biểu thị nhiều ngôn ngữ nếu có (Xem thêm Appendix)

    **@OSArch: Trả về cấu trúc của hệ điều hành
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"OSArch" ,@OSArch)
    **@OSLang: Trả về ngôn ngữ đang đc sử dụng trong hệ thống(xem giá trị tương ứng trong thư mục Appendix/@OSlang Values của file help)
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"OSlang" ,@OSLang)
    **@OSType: Trả lại "WIN32_NT" cho NT/2000/XP/2003/Vista/2008
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"OStype" ,@OSType)
    **@OSVersion: Trả lại tên hệ điều hành đang sử dụng
    -Những giá trị có thể trả về: "WIN_2008R2", "WIN_7", "WIN_2008", "WIN_VISTA", "WIN_2003", "WIN_XP", "WIN_XPe", "WIN_2000".
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"OSversion" ,@OSVersion)
    **@OSbuild: Trả về hệ điều hành được xây dựng
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"OSBuild" ,@OSBuild)
    **@OSServicePack: Trả về gói dịch vụ thông tin theo hình thức
    **@ComputerName: Tên của máy tính trên network
    **@UserName: ID của người sử dụng hiện đang đăng nhập

    **@IPAddress1: Địa chỉ IP thứ 1
    -Ví dụ:
    Mã (AutoIt):
    MsgBox (0 ,"IP1" ,@IPAddress1)
    **@IPAddress2: Địa chỉ IP thứ 2
    **@IPAddress3: Địa chỉ IP thứ 3
    **@IPAddress4: Địa chỉ IP thứ 4
    (Nếu k có Macro sẽ trả về giá trị 0.0.0.0)

    **@DesktopHeight: Chiều cao của desktop (Tính theo pixel)
    **@DesktopWidth: Chiều rộng của desktop (pixel)
    **@DesktopDepth: Chiều sâu của desktop (pixel)
    **@DesktopRefresh: Tốc độ làm mát máy tính để bàn(hz)
    -Ví dụ:
    Mã (AutoIt):
    $height=@DesktopHeight
    $width=@DesktopWidth
    $depth=@DesktopDepth
    $refresh=@DesktopRefresh
    MsgBox (0 ,"Thông tin desktop" ,"Cao: " &$height &@crlf & "Rộng: " &$width &@CRLF &"Sâu: " &$depth &@CRLF &"Tốc độ: " &$refresh)
     
    4.Time And Date Macro
    Thông tin về thời gian ,ngày tháng của hệ thống hiện tại​

    **@MSEC: Trả về mili giây của hệ thống
    **@SEC: Giây
    **@MIN: Phút
    **@HOUR: Giờ
    **@MDAY: Ngày
    **@MON: Tháng
    **@YEAR: Năm
    **@WDAY: Thứ của hệ thống (Chủ nhật là 1)
    **@YDAY: trả về ngày số bao nhiêu trong năm
    -Ví dụ:
    Mã (AutoIt):
    $msec=@MSEC
    $sec=@SEC
    $Min=@MIN
    $Hour=@HOUR
    $Mday=@MDAY
    $Mon=@MON
    $year=@YEAR
    $wday=@WDAY
    $yday=@YDAY
    MsgBox (0 ,"Thông tin" ,$msec &@crlf & $sec &@crlf & $Min &@crlf & $Hour &@crlf &$Mday &@crlf &$Mon &@crlf &$year &@crlf &$wday &@crlf &$yday)
     
    Nguồn bài viết: QuiT - Forum hocautoit.com
     
    Chỉnh sửa cuối: 8/9/15

Chia sẻ trang này

Đang tải...