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 Tutorial AutoIt basic for beginer

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

  1. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Em thấy diễn đàn mình vắng quá mà các hướng dẫn cơ bản với bài tập thì chưa có nhiều vậy nên em muốn viết Series hướng dẫn cơ bản này để vừa học tập mà vừa có thêm tài nguyên phát triển diễn đàn. Em cũng chỉ là mới học nên mong các pro giúp đỡ, chỗ nào chưa được thì góp ý giúp em.

    Tutorial được tổng hợp dựa trên:
    - AutoIt Help (v3.3.14.2)
    - Learning to Script with AutoIt V3 - Alex Peters (LxP), Brett Francis (BrettF)

    Link các bài sẽ được tổng hợp ở #1 dưới đây:
    1 - AutoIt v3: Giới thiệu, Dowload và cài đặt
    2 - Làm quen với AutoIt v3, Chương trình đầu tiên
    3 - Tự động hóa Notepad
    4 - Các kiểu dữ liệu trong AutoIt
    5 - Biến, hằng, mảng trong AutoIt
    6 - Toán tử trong AutoIt
    7 - Cấu trúc rẽ nhánh trong AutoIt
    8 - Các vòng lặp trong AutoIt
    9 - Thao tác với chuỗi trong AutoIt (...Updating...)

    Nếu bạn có câu hỏi thắc mắc hay chưa hiểu chỗ nào hãy comment ở dưới mình có thể giải đáp và bổ sung thêm vào bài viết.

    aKiD: Cảm ơn bạn vì bài viết chất lượng
    [​IMG]
     
    Chỉnh sửa cuối: 13/10/17
  2. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Giới thiệu

    • AutoIt là gi?
    AutoIt v3 là một phần mềm miễn phí, cơ bản giống như ngôn ngữ kịch bản được thiết kế để tự động hoá Windows GUI (Graphical User Interfaces) và kịch bản chung. Nó được sử dụng như môt sự kết hợp của việc mô phỏng các tổ hợp phím và chuột để thao tác điều khiển tự động hoá các nhiệm vụ. AutoIt có kích thước rất nhỏ, khép kín và chạy được trên tất cả các phiên bản của Windows.

    => Tóm lại hiểu một cách đơn giản thì AutoIt dùng để tự động hóa thực thi các công việc trên máy tính.

    • Các tính năng của AutoIt
    + Dễ học, cú pháp cơ bản
    + Mô phỏng mô phỏng các nút bấm và sự di chuyển của chuột
    + Thao tác với windows và các tiến trình
    + Tương tác với các standard windows controls
    + Kịch bản có thể biên soạn thành tệp thực thi độc lập '.exe'
    + Tạo đồ họa giao diện người dùng (GUIs)
    + Trực tiếp gọi các functions DLL và Windows API từ bên ngoài
    + Có thể viết được kịch bản RunAs functions
    + Tệp tin hướng dẫn chi tiết với cộng đồng hỗ trợ lớn thông qua diễn đàn
    + Tương thích với Windows 95/ 98/ ME/ NT4/ 2000/ XP/ 2003/ Vista/ 2008
    + Hỗ trợ Unicode và x64

    => Với AutoIt bạn có thể làm được gì: Tự động hóa các công việc đơn giản trên máy tính, auto game, các chương trình cá nhân như tắt máy tính/ khóa màn hình/ khóa file/ autoclick, tools getlink, hệ thống spam Facebook...etc. Còn nhiều thứ nữa, có thể mình chưa biết hết.

    Xem video dưới đây để thấy cách chơi game của một pro với AutoIt
    - https://goo.gl/VCpkDJ

    Dowload và cài đặt

    • Hướng dẫn cài đặt:
    - https://autoitvn.com/threads/co-ban-ve-autoit-gioi-thieu-cai-dat-va-huong-dan-su-dung-autoit.20/ (by Vĩ Kha AutoIT)

    • File cài đặt: Latest version: v3.3.14.2, Updated: 18 September, 2015
    - https://www.autoitscript.com/site/autoit/downloads/

    • File mở rộng: ScriTE4AutoIt3 (5262kb), Updated 24/2/2017
    - https://www.autoitscript.com/site/autoit-script-editor/downloads/
     
    Chỉnh sửa cuối: 28/9/17
  3. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Làm quen với AutoIt v3

    • SciTE là gì?
    ScriTE là một trình biên tập dòng lệnh của AutoIt được phát triển để trở nên hữu ích với việc xây dựng và vận hành các chương trình, với rất nhiều tiện ích hỗ trợ đi kèm ScriTE sẽ giúp công việc viết các kịch bản sẽ trở nên dễ dàng và nhanh chóng.

    [​IMG]

    • Cách tạo file Script mới để bắt đầu làm việc
    1. Điều hướng đến thư mục bạn muốn lưu trữ (của mình là: C:\Users\sonmmo\Desktop\ait)
    2. Click chuột phải chọn New > AutoIt v3 Script
    3. Đặt tên cho file của bạn. Giữ nguyên phần mở rộng ".au3" nếu bạn có thể nhìn thấy

    [​IMG]
    Hoặc bạn cũng có thể tạo file Script mới bằng cách này:
    1. Mở ScriTE từ Start > All Programs > AutoIT v3 > ScriTE > ScriTE
    2. Chọn File > New hoặc ấn tổ hợp phím CTRL + N để tạo file Script mới
    3. Lưu file của bạn bằng cách chọn File > Save As hoặc ấn tổ hợp phím CTRL + SHIFT + S

    * Lưu ý: Chắc chắn rằng file của bạn được lưu với phần mở rộng ".au3"

    • File Help là gì, sử dụng như thế nào?
    File Help là tệp tin trợ giúp cho người dùng bao gồm hướng dẫn sử dụng các chức năng và các vấn đề liên quan đến AutoIt, mỗi hướng dẫn sử dụng functions đều đi kèm với ví dụ cụ thể. Đây là nguồn tham khảo chính giúp bạn giải quyết các khó khăn gặp phải trong quá trình sử dụng AutoIt.

    Để truy cập vào vào file Help bạn thao tác như sau:
    Từ của sổ làm việc ScriTE ấn phím F1
    hoặc chọn Start > All Programs > AutoIt v3 > AutoIt Help File

    * Lưu ý: Nếu mở bằng cách sử dụng phím F1, file Help sẽ tự động chuyển đến tra cứu keyword nơi mà con trỏ chuột đang chọn

    Chương trình đầu tiên

    Hello World Example - Ví dụ này sẽ hướng dẫn bạn làm thế nào để hiển thị một hộp thông báo bằng cách sử dụng các function, giải thích các tham số, sử dụng ghi chú, chuỗi cơ bản và cách tra cứu file Help.

    • Các bước thực hiện: Hello World Example
    1. Tạo một file Script và mở nó để chỉnh sửa
    2. Đoạn mã mặc định màu xanh bạn nhìn thấy là các ghi chú, các ghi chú này được đặt đằng sau dấu (;) hoặc đặt trong cặp lệnh #cs ... #ce. Các ghi chú có thể đặt ở đầu, cuối hay sau các dòng lệnh và sẽ được trình biên dịch bỏ qua khi chương trình thực hiện
    3. Bây giờ chúng ta muốn nói với AutoIt để hiển thị một hộp thông báo, để làm điều đó sử dụng function MsgBox
    Mã (AutoIt):
    MsgBox(0, "Tutorial", "Hello World!")
    4. Lưu Script
    5. Chạy thử bằng cách chọn Tools > Test Run hoặc sử dụng phím tắt F5
    6. Xin chúc mừng vậy là bạn đã tạo ra chương trình đầu tiên

    * Giải thích: Hầu hết các function trong AutoIt đều bao gồm các tham số, các tham số sẽ quyết định xem điều gì được thực hiện trong function. Trong ví dụ này function MsgBox có 3 tham số: Title (tiêu đề), message (lời nhắn), flag (cờ quyết định phong cách của hộp thông báo).

    Các chuỗi trong AutoIt được bao trong dấu ngoặc đơn 'như này' hoặc ngoặc kép "như này", chúng ta sẽ tìm hiểu kĩ hơn ở phần sau.

    • Mở rộng
    Chúng ta có thể làm được nhiều hơn với function MsgBox như là thay đổi các biểu tượng, nút bấm, thời gian chờ... bằng các thay đổi các flag, để làm được việc này hãy mở file Help để tra cứu.

    [​IMG]

    Như bạn thấy, có các phần như là tham số, giá trị trả về, nhận xét, các chức năng liên quan và ví dụ. Bạn hãy thử thay đổi flag theo các hướng dẫn trong phần nhận xét (remarks) để thấy được sự thay đổi.

    * Lưu ý: Bạn cũng có thể sử dụng kết hợp nhiều flag theo cách sau: Sử dụng dấu + để kết hợp ví dụ như 4+48 hoặc thay 4+48 bằng 52, cần phải chú ý đến điều này nếu kết hợp sai hộp thông báo sẽ không hiển thị.
    Mã (AutoIt):
    ; Một số ví dụ về phần mở rộng
    MsgBox(18, "Tutorial", "Hello World!") ; Hộp thông báo với nút Abort, Retry, Ignore và biểu tượng stop
    MsgBox(32, "Tutorial", "Hello World!") ; Hộp thồng báo bình thường với biểu tượng dấu hỏi
    MsgBox(12345, "Tutorial", "Hello World!") ; Hộp thông báo với flag kết hợp sai, nó không hiển thị
    MsgBox(0, "Tutorial", "Hello World!", 3) ; Hộp thông báo bình thường tự động tắt sau 3 giây
    • Bài tập
    - Hiển thị hộp thông báo bao gồm Title, Text tùy chọn. Stop-sign icon với các nút bấm Yes, No, and Cancel
    - Hiển thị hộp thông báo bao gồm Title, Text tùy chọn. Các nút bấm Cancel, Try Again, Continue và mặc định follow vào nút Try Again
    - Hiển thị hộp thông báo bao gồm Title, Text tùy chọn. Sau 5 giây hộp thông báo tự động tắt
     
    Chỉnh sửa cuối: 1/10/17
  4. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Tự động hóa Notepad

    Simple Notepad Automation - Hướng dẫn này sẽ chỉ cho bạn biết cách sử dụng AutoIt v3 Window Info Tool, giới thiệu một chút về function Send, Run, Win * (* là phần nối thêm, ví dụ WinWait) và một chút về Macro cơ bản.
    • Các bước thực hiện
    1. Tạo một file Script và mở nó để chỉnh sửa
    2. Điều đầu tiên chúng ta cần làm là khởi chạy một cửa sổ Notepad với file thực thi (notepad.exe), bạn có thể tìm kiếm tên file thực thi của nó thông qua short cut trên màn hình hoặc tìm kiếm trong menu. Bây giờ để tự động mở notepad ta sử dụng function Run
    Mã (AutoIt):
    Run("notepad.exe")
    3. Lưu lại kịch bản và chạy thử. Nếu thành công ta sẽ có một cửa sổ notepad mới, đừng tắt nó đi vội vì ta vẫn cần phải làm việc với nó ở bước tiếp theo
    4. Khi muốn tự động hóa các chương trình ta cần phải kiểm tra tiêu đề của nó để AutoIt biết rằng sẽ làm việc với chương trình nào. Với Notepad tiêu đề là "Untitled - Notepad", AutoIt phân biệt chữ hoa thường khi sử dụng tiêu đề vì vậy bạn cần chắc chắn lấy được chính xác 100%. Để làm tốt được việc này ta sử dụng AutoIt Window Information Tool. Chọn Start > AutoIt v3 > AutoIt Window Info hoặc tại của sổ làm việc ScriTE ấn tổ hợp phím Ctrl + F6 để mở công cụ

    [​IMG]

    5. Với AutoIt Window Info Tool chỉ cần chọn mục tiêu bằng cách di tầm ngắm vào chúng là ta có thể lấy được thông tin. Thông tin ta cần quan tâm là tiêu đề
    6. Chọn vùng tiêu đề rồi coppy lại, sau đó ta có thể dán vào kịch bản mà không sợ gặp sai sót
    7. Sau khi chạy một cửa sổ notepad ta cần phải chờ cho nó xuất hiện trước khi hành động bất cứ điều gì tiếp theo. Để làm việc này sử dụng function WinWaitActive với tham số là tiêu đề cửa sổ chúng ta vừa lấy được bằng AutoIt Window Info Tool
    Mã (AutoIt):
    WinWaitActive("Untitled - Notepad")
    8. Sau khi chắc chắn rằng cửa sổ notepad đã xuất hiện ta gửi một dòng văn bản với function Send
    Mã (AutoIt):
    Send("This is some text")
    9. Tiếp theo ta sẽ đóng cửa sổ notepad với function WinClose, tham số chính là tiêu đề của notepad mà trước đó ta đã lấy được
    Mã (AutoIt):
    WinClose("Untitled - Notepad")
    10. Khi notepad cố gắng đóng sẽ có một cửa sổ hiện lên hỏi có lưu hay không, sử dụng AutoIt Window Info Tool để lấy tiêu đề của cửa sổ đó và thêm WinWaitActive function để chờ cửa sổ đó xuất hiện trước khi gửi lệnh không lưu
    Mã (AutoIt):
    WinWaitActive("Notepad")
    11. Để gửi lệnh không lưu ta sử dụng Send function với tham số là !n (Alt + N), bạn hãy tra cứu Send function trong file help để biết thêm chi tiết
    Mã (Text):
    Send("!N")
    12. Chạy thử và tận hưởng thành quả
    Mã (AutoIt):
    ;~ Full code cơ bản
    Run("notepad.exe")
    WinWaitActive("Untitled - Notepad")
    Send("This is some text")
    WinClose("Untitled - Notepad")
    WinWaitActive("Notepad")
    Send("!n")
    • Mở rộng
    Vậy nếu bạn muốn gửi đến notepad nhiều hơn một dòng văn bản, hãy thay thế bằng dòng lệnh dưới đây
    Mã (AutoIt):
    Send("This is some text" & @CRLF & "Thêm dòng văn bản tiếp theo!")
    * Giải thích: Kí tự & dùng để kết hợp hai giá trị với nhau, ví dụ nếu viết $var = "One" & "Two" thì giá trị của biến $var = "OneTwo" bạn có thể tìm hiểu thêm trong file help về Operators. Còn kí tự @CRLF là một Macro dùng để xuống dòng
    Mã (AutoIt):
    ;~ Full code mở rộng
    Run("notepad.exe")
    WinWaitActive("Untitled - Notepad")
    Send("This is some text" & @CRLF & "Thêm dòng văn bản tiếp theo!")
    WinClose("Untitled - Notepad")
    WinWaitActive("Notepad")
    Send("!n")
    • Câu hỏi
    - Làm thế nào để tạo ghi chú trên một dòng và trên nhiều dòng
    - Những flag nào được sử dụng để hiển thị hộp thông báo với Stop icon và các nút Yes, No, Cancel
    - Công cụ nào giúp tôi lấy được tiêu đề của notepad
    - Làm thế nào để mở AutoIt Window Info
    - Làm thế nào để gửi một đoạn văn bản tới notepad
    - Làm thế nào để gửi một đoạn văn bản mới tới notepad ở dòng tiếp theo
    - Sử dụng gì để kết nối các giá trị với nhau
     
    Chỉnh sửa cuối: 1/10/17
  5. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Các kiểu dữ liệu trong AutoIt

    Chúng ta có thể thấy rằng các kiểu dữ liệu trong AutoIt có nhiều dạng như: Số, kí tự, chuỗi kí tự, nhị phân hoặc thậm chí là một số sự kết hợp giữa các kiểu trên.

    123
    Abc
    0.5
    ZMZ
    .-=_?+'
    This is a string!
    Nhưng tóm lại có 3 kiểu dữ liệu chúng ta cần quan tâm đó là: String (chuỗi), Numeric values (giá trị số), Booleans
    • Numeric values
    Kiểu dữ liệu này chứa các giá trị số thường được sử dụng trong các phép tính toán hay chương trình bảng tính
    Mã (AutoIt):
    -1 ; số âm
    10 ; số nguyên
    1.5 ; số thập phân
    • String
    Kiểu dữ liệu này bao gồm hầu hết các kí tự vì vậy khi sử dụng cần phải cho AutoIt biết đâu là nơi bắt đầu, kết thúc một chuỗi đồng thời ta cũng phải ngăn cách các chuỗi này với các tham số khác để tránh nhầm lẫn. Để làm được điều này ta thường khai báo chuỗi nằm trong các cặp dấu nháy đơn ('') hoặc nháy kép (""). Bạn có thể sử dụng một trong hai loại dấu nháy này.
    Mã (AutoIt):
    'Đây là một chuỗi sử dụng cặp dấu nháy đơn'
    "Đây là một chuổi sử dụng cặp dấu nháy kép"
    Tuy nhiên nếu bạn muốn hiển thị một chuỗi bao gồm cả các dấu nháy đơn và kép phía bên trong thì làm thế nào, hãy xem ví dưới đây.
    Mã (AutoIt):
    ; Hiển thị chuỗi với dấu nháy đơn bên trong
    "I'm wiordi"
    ; Hiển thị chuỗi với dấu nháy kép bên trong
    'I"m 18 year old'
    ; Hiển thị chuỗi với cả dấu nháy đơn và kép bên trong
    "I'm ""18"" year old"
    • Boolears
    Kiểu dữ liệu boolears là kiểu mặc định chỉ có hai giá trị trả về là True or False và thường được dùng trong các biểu thức logic như ví dụ dưới đây:
    Mã (AutoIt):
    $a = false
    If NOT $a = True Then Msgbox(0, 0, "Hello World")
    ; Có thể hiều rằng NOT $a là phủ định của $a, tức là $a không sai bằng đúng thì hiển thị MsgBox
     
    Chỉnh sửa cuối: 6/10/17
  6. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Biến, hằng, mảng trong AutoIt
    • Biến (variables)
    Biến là các vùng được tạo ra trong bộ nhớ máy tính dùng để lưu trữ giá trị và được xác định bởi tên do người sử dụng đặt ra. Giá trị của một biến được tạo ra từ việc khai báo, từ một hàm thông qua giá trị trả về của nó, từ các phép tính toán hay được tạo ra từ bất kì sự phát sinh nào trong suốt thời gian chạy của kịch bản. Giá trị của biến có thể được sử dụng nhiều lần và có thể ghi đè giá trị mới mong muốn.

    Tên biến bắt đầu với kí tự $ và các kí tự chuỗi, số, _ sau nó. kí tự $ cho AutoIt biết được đó là một biến, xem các ví dụ về biến hợp lệ dưới đây:
    Mã (AutoIt):
    $MyVar
    $Msg
    $WAIT_TIME
    $Answer
    $_ABC_123
    $MsgBox
    $a234
    Tên biến trong AutoIt không phân biệt chữ hoa hay chữ thường, có nghĩa là các tên biến dưới đây sẽ chỉ ra cùng một biến trong bộ nhớ
    Mã (AutoIt):
    $ABC
    $ABc
    $AbC
    $Abc
    $aBC
    $aBc
    $abC
    $abc
    Khi khai báo các biến bạn có thể đặt nó trong 3 phạm vi:
    - Local: Phạm vi biến nhỏ chỉ sử dụng trong một khu vực, kịch bản như trong một Function
    - Global: Phạm vi biến rộng sử dụng trong toàn bộ kịch bản cả ở trong và ngoài Functions
    - Dim: Là sự kết hợp của Local và Global, có sự linh hoạt cao. Dim nếu được chỉ được sử dụng trong phạm vi nhỏ như trong trong một function thì nó chính là Local, nhưng nếu được sử dụng đồng thời ở một nơi nào khác trong kịch bản thì lúc này nó lại trở thành Global

    Cách thức khai báo như sau:
    Mã (AutoIt):
    Dim $x, $y, $z ; Có thể khai báo nhiều biến trên cùng một dòng lệnh
    Global $RADIUS ; Global Variable
    Local $_daysWorking ; Local Variable
    Gắn giá trị vào biến: Một biến nên được gắn một giá trị trước khi chúng được gọi để sử dụng, để làm điều này chúng ta sử dụng dấu (=) xem ví dụ dưới đây:
    Mã (AutoIt):
    $number = 123 ; Một số
    $string = “Some String with “”double”” and ‘single’ quotes” ; Một chuỗi
    $Return = SomeFunction (); Giá trị trả về của một hàm
    Ngoài ra bạn cũng có thể gắn giá trị của một biến bằng một biến khác
    Mã (AutoIt):
    $x = 50
    $abc = $x
    Bạn thấy biến x mang giá trị 50, biến abc = x nên cũng mang giá trị 50. Khi giá trị của biến x thay đổi thì abc cũng thay đổi theo.

    Để sử dụng biến bạn cần truyền nó vào như một tham số trong các function, hãy chạy thử ví dụ dưới đây
    Mã (AutoIt):
    $string = "Giá trị gắn cho một biến"
    MsgBox(0, 0, $string) ; Truyền tham số là biến string vào để hiển thị
    • Hằng (constants)
    Hằng là các giá trị chỉ khai báo một lần duy nhất và có giá trị không đổi trong toàn bộ thời gian thực thi kịch bản. Để khai báo hằng sử dụng khóa Const $tên_hằng, giống như khai báo biến hằng chỉ thêm khóa Const ở đầu.

    Vậy hằng được sử dụng khi nào: Hằng được sử dụng cho các giá trị không thay đổi và phải sử dụng nhiều lần, xem ví dụ dưới đây:

    Mã (AutoIt):
    MsgBox(0, 'Đây là một tiêu đề rất rất dài', 'Đây là box thứ 1')
    MsgBox(0, 'Đây là một tiêu đề rất rất dài', 'Đây là box thứ 2')
    MsgBox(0, 'Đây là một tiêu đề rất rất dài', 'Đây là box thứ 3')

    ; Bây giờ sử dụng hằng
    Const $title = "Đây là một tiêu đề rất dài"
    MsgBox(0, $title, 'Đây là box thứ 1')
    MsgBox(0, $title, 'Đây là box thứ 2')
    MsgBox(0, $title, 'Đây là box thứ 3')
    Bạn thấy đó nếu phải hiển thị 100 MsgBox bạn sẽ phải tự viết 100 lần cái tiêu đề rất dài nhưng giống nhau, nếu sử dụng hằng thì chỉ cần khai báo một lần rồi gọi nó ra sử dụng sẽ tiện lợi hơn rất nhiều.

    • Mảng (arrays)
    Mảng là một biến có khả năng lưu trữ nhiều giá trị trong các ô dữ liệu giống nhau, mỗi phần tử bên trong mảng có thể được truy cập bởi một số đã được đánh dấu sẵn. Ví dụ bây giờ chúng ta muốn lưu trữ tên của những người bạn, thay vì sử một biến cho mỗi người bạn ta chỉ cần sử dụng một mảng cho tất cả những người bạn.

    Cách khai báo
    Mã (AutoIt):
    Dim names[6] ; Khai báo mảng, cần phải khai báo phạm vị ở trước để phân biệt với các phần tử trong mảng

    ; Khai báo các phần tử trong mảng
    $names[0] = “Alex”
    $names[1] = “Brett”
    $names[2] = “Nicholas”
    $names[3] = “Jos”
    $names[4] = “Michael”
    $names[5] = “George”

    ; Hoặc cũng có thể khai báo theo cách này
    Dim $names[6] = ["Alex", "Brett", "Nicholas", "Jos", "Michael", "George"]
    Để truy cập mảng ta gọi như sau:
    Mã (AutoIt):
    MsgBox (0, “Name”, $names[2]) ; Thay đổi giá trị số 1 - 6 trong $names để gọi các phần tử mong muốn
    • Câu hỏi
    - Biến là gì?
    - Tên biến có phân biệt chữ hoa thường hay không?
    - Có thể sử dụng những kí tự nào để đặt tên cho biến
    - Những phạm vi tôi có thể sử dụng trong biến?
    - Làm thế nào để gắn giá trị cho các biến
    - Hãy hiển hiển thị biến $a = "This is some text!" trên hộp thông báo
    - Hằng là gì, sử dụng trong những trường hợp nào, có thể thay đổi giá trị của hằng không?
    - Mảng là gì, có những cách khai báo nào
    - Làm sao để truy cập vào phần tử trong một mảng
     
    Chỉnh sửa cuối: 7/10/17
    MsIvy1203, hoang3927 and Huân Hoàng like this.
  7. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Toán tử trong AutoIt

    Toán tử trong AutoIt dùng trong các tính toán, so sánh, biểu thức logic... Phần này tương đối đơn giản nên các bạn tự tìm hiểu, thực hành và cố gắng để hiểu hết các ví dụ dưới đây.​

    [​IMG]
    Ví dụ:
    Mã (AutoIt):
    ; Khai các báo biến
    $number_one = 20
    $number_two = 10
    $number_three = 5
    $string1 = "String"
    $string2 = "String Two"

    ; thực hiện các phép tính toán và hiển thị ra MsgBox
    ; * Lưu ý: += , -=, *=, /=, &= chỉ là một cách viết khác xem ví dụ dưới đây
    ; ví dụ thay vì viết là $a = $a + 1 có thể viết là $a += 1 sẽ ngắn gọn hơn rất nhiều
    $number_three += $number_one
    MsgBox (0, "Assignment", $number_three)
    $number_three -= $number_one
    MsgBox (0, "Assignment", $number_three)
    $number_three *= $number_one
    MsgBox (0, "Assignment", $number_three)
    $number_three /= $number_one
    MsgBox (0, "Assignment", $number_three)
    $number_three &= $number_one
    MsgBox (0, "Assignment", $number_three)

    ; thực hiện các phép tính toán và hiển thị ra MsgBox
    $number_three = $number_one + $number_two
    MsgBox (0, "Maths", $number_three)
    $number_three = $number_one - $number_two
    MsgBox (0, "Maths", $number_three)
    $number_three = $number_one * $number_two
    MsgBox (0, "Maths", $number_three)
    $number_three = $number_one / $number_two
    MsgBox (0, "Maths", $number_three)
    $number_three = $number_one & $number_two
    MsgBox (0, "Maths", $number_three)
    $number_three = $number_one ^ 2
    MsgBox (0, "Maths", $number_three)

    ; Thực hiện các phép so sánh và hiển thị ra MsgBox
    ; Chúng ta chưa tìm hiểu đến If...Then nhưng có thể tạm hiểu nó là "Nếu...Thì"
    If $number_one = 20 Then MsgBox (0, "Comparison", "Number 1 is 20!")
    If $string1 == $string2 Then MsgBox (0, "Comparison", "Both strings are the same!")
    If $number_two <> 20 Then MsgBox (0, "Comparison", "Number 2 is not 20!")
    If $number_two > 5 Then MsgBox (0, "Comparison", "Number 2 is greater than 5!")
    If $number_two >= 10 Then MsgBox (0, "Comparison", "Number 2 is greater or equal to 10!")
    If $number_one < 25 Then MsgBox (0, "Comparison", "Number 1 is less than 25!")
    If $number_one <= 20 Then MsgBox (0, "Comparison", "Number 1 is less or equal to 20!")
    • Câu hỏi
    - Viết một kịch bản cho biến a = 4, sử dụng toán tử tính toán sao cho biến a = 10 rồi hiển thị ra MsgBox
    - Viết một kịch bản để hiển thị phép tính 369 - 235 và hiển thị kết quả ra MsgBox
     
    MsIvy1203, hoang3927 and minhbinhdinh like this.
  8. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Cấu trúc rẽ nhánh trong AutoIt

    Phần cấu trúc rẽ nhánh này anh aKID đã có bài viết hướng dẫn cực kì chi tiết bao gồm các ví dụ, hình ảnh giải thích thuật toán và cả video hướng dẫn nữa, vì thế mình sẽ không viết lại vì cơ bản trong quá trình học basic thì như thế là rất đầy đủ rồi. Các bạn qua lịn dưới đây để tìm hiểu chi tiết.

    - https://autoitvn.com/threads/cau-truc-re-nhanh-trong-autoit.14/

    • Bài tập If...Else có lời giải
    Bài 1. Viết chương trình để nhập tuổi và in ra kết quả nếu tuổi học sinh đó không đủ điều kiện vào học lớp 10
    - Dưới 16 tuổi không đủ điều kiện
    - Từ 16 - 30 đủ điều kiện
    Mã (AutoIt):

    While 1
        $tuoi = InputBox("Kiểm tra tuổi vào lớp 10", "Bạn hãy nhập vào tuổi của mình", Default, " M2")

        If @error = 1 Then
            ExitLoop
        ElseIf $tuoi >= 16 And $tuoi < 30 Then
            MsgBox(0, "Chúc mừng", "Bạn đã đủ tuổi vào lớp 10")
        ElseIf $tuoi > 0 And $tuoi < 16 Then
            MsgBox(0, "Rất tiếc", "Bạn chưa đủ tuổi vào lớp 10")
        Else
            MsgBox(0, "Lỗi", "Tuổi bạn nhập không chính xác hoặc bạn đã hết tuổi để học cấp 3")
        EndIf
    WEnd
     

    Bài 2. Viết chương trình nhập vào một số nguyên sau đó so sánh với 100 rồi in kết quả ra màn hình
    Mã (AutoIt):
    While 1
        $int = InputBox("So sánh với 100", "Bạn hãy nhập vào một số nguyên", Default, " M4")
        $so2sanh = 100

        If @error = 1 Then
            ExitLoop
        ElseIf $int = 0 Then
            MsgBox(0, "Lỗi", "Số bạn nhập không chính xác, bị bỏ trống hoặc bạn vừa nhập số 0")
        ElseIf $int > $so2sanh Then
            MsgBox(0, "Kết quả so sánh", "Số " & $int & " bạn nhập lớn hơn 100")
        ElseIf $int < $so2sanh Then
            MsgBox(0, "Kết quả so sánh", "Số " & $int & " bạn nhập nhỏ hơn 100")
        ElseIf $int = $so2sanh Then
            MsgBox(0, "Kết quả so sánh", "Số " & $int & " = 100")
        EndIf
    WEnd

    Bài 3. Viết chương trình nhập vào 3 số nguyên và in ra số lớn nhất
    Mã (AutoIt):
    While 1
        $number_1 = InputBox("In ra số lớn nhất", "Nhập vào số nguyên thứ nhất", Default, " M2")
        $number_2 = InputBox("In ra số lớn nhất", "Nhập vào số nguyên thứ hai", Default, " M2")
        $number_3 = InputBox("In ra số lớn nhất", "Nhập vào số nguyên thứ ba", Default, " M2")

        If @error = 1 Then
            ExitLoop
        EndIf

        $number_max = Number($number_1)
        If $number_max < Number($number_2) Then
            $number_max = Number($number_2)
        EndIf
        If $number_max < Number($number_3) Then
            $number_max = Number($number_3)
        EndIf

        $display = "Các số đã nhập vào:" & @CRLF
        $display &= "Số thứ nhất: " & $number_1 & @CRLF
        $display &= "Số thứ hai: " & $number_2 & @CRLF
        $display &= "Số thứ ba: " & $number_3 & @CRLF & @CRLF
        MsgBox(0, "Kết quả", $display & "Số lớn nhất là: " & $number_max)
    WEnd

    Bài 4. Viết chương trình xếp hạng học lực của học sinh dựa trên 3 bài kiểm tra
    - Điểm trung bình >= 9.0 là hạng A
    - Điểm trung bình >= 7.0 và < 9.0 là hạng B
    - Điểm trung bình >= 5.0 và < 7.0 là hạng C
    - Điểm trung bình < 5.0 là hạng F
    Trong đó điểm trung bình = (điểm kiểm tra + điểm giữa kỳ + điểm cuối kỳ) / 3
    Mã (AutoIt):
    While 1
        $diem_kiemtra = InputBox("Xếp loại học lực", "Nhập vào điểm kiểm tra của bạn", Default, " M2")
        $diem_giuaky = InputBox("Xếp loại học lực", "Nhập vào điểm giữa kỳ của bạn", Default, " M2")
        $diem_cuoiky = InputBox("Xếp loại học lực", "Nhập vào điểm cuối kỳ của bạn", Default, " M2")
        $diem_trungbinh = ($diem_kiemtra + $diem_giuaky + $diem_cuoiky) / 3

        If @error = 1 Then
            ExitLoop
        ElseIf $diem_trungbinh >= 9 And $diem_trungbinh <= 10 Then
            MsgBox(0, "Kết quả phân loại", "Bạn đạt hạng A")
        ElseIf $diem_trungbinh >= 7 And $diem_trungbinh <= 9 Then
            MsgBox(0, "Kết quả phân loại", "Bạn đạt hạng B")
        ElseIf $diem_trungbinh >= 5 And $diem_trungbinh <= 7 Then
            MsgBox(0, "Kết quả phân loại", "Bạn đang ở hạng C")
        ElseIf $diem_trungbinh < 5 And $diem_trungbinh > 0 Then
            MsgBox(0, "Kết quả phân loại", "Bạn đang ở hạng F")
        Else
            MsgBox(0, "Lỗi", "Bạn nhập sai điểm hoặc đã không nhập gì")
        EndIf
    WEnd

    Bài 5. Viết chương trình tính tiền hoa hồng nhận được theo doanh thu bán hàng
    - 5% nếu tổng doanh số nhỏ hơn hoặc bằng 100 triệu
    - 10% nếu tổng doanh số nhỏ hơn hoặc bằng 300 triệu
    - 20 % nếu tổng doanh số là lớn hơn 300 triệu
    Mã (AutoIt):
    While 1
        $doanhso = InputBox("Tính tiền hoa hồng", "Nhập vào doanh thu của công ty (Đơn vị: Triệu đồng)", Default, " M4")

        If @error = 1 Then
            ExitLoop
        ElseIf $doanhso > 0 And $doanhso <= 100 Then
            $hoahong = $doanhso * 5 / 100
        ElseIf $doanhso > 100 And $doanhso <= 300 Then
            $hoahong = $doanhso * 10 / 100
        ElseIf $doanhso > 300 Then
            $hoahong = $doanhso * 20 / 100
        Else
            MsgBox(0, "Lỗi", "Bạn nhập không đúng")
            ExitLoop
        EndIf
        MsgBox(0, "Kết quả", "Số tiền hoa hồng nhận được là: " & $hoahong & " Triệu đồng")
    WEnd

    Bài 6: Viết chương trình tính cước điện thoại bàn cho gia đình
    - Phí thuê bao bắt buộc là 25 nghìn
    - 600 đồng cho mỗi gọi của 50 phút đầu tiên
    - 400 đồng cho mỗi phút gọi của 150 phút tiếp theo
    - 200 đồng cho bất kỳ mỗi phút nào sau 200 phút đầu tiên
    Mã (AutoIt):
    While 1
        $sophut = InputBox("Tính cước điện thoại", "Nhập vào số phút đã sử dụng", Default, " M3")
        $phicodinh = 25

        If @error = 1 Then
            ExitLoop
        ElseIf $sophut > 0 And $sophut <= 50 Then
            $chiphi = $sophut * 600
        ElseIf $sophut > 50 And $sophut <= 150 Then
            $chiphi = ($sophut - 50) * 400 + (50 * 600)
        ElseIf $sophut > 200 Then
            $chiphi = ($sophut - 200) * 200 + (150 * 400) + (50 * 600)
        Else
            MsgBox(0, "Lỗi", "Bạn đã nhập không đúng số phút sử dụng")
            ExitLoop
        EndIf

        $tongchiphi = $chiphi + $phicodinh

        MsgBox(0, "Kết quả", "Tổng chi phí cước điện thoại phải trả là: " & $tongchiphi & " Đồng")
    WEnd
    • Bài tập Select...Case
    Slect...Case tương tự như If...Else, nó rất đơn giản chỉ cần thay đổi lại cú pháp một chút nên mình sẽ không để code ở đây, các bạn hãy tự cố gắng mày mò chuyển hết bài tập trên phần If...Else sang dạng sử dụng Select...Case
    • Bài tập Swich...Case có lời giải
    Viết chương trình xuất ra các ngày trong tháng tùy chọn
    - Các tháng 1, 3, 5, 7, 8, 10, 12 có 30 ngày
    - Các tháng 4, 6, 9, 11 Có 31 ngày
    - Tháng 2 năm nhuận có 29 ngày, không nhuận 28 ngày (năm nhuận là năm chia hết cho 4)
    Mã (AutoIt):
    While 1
        $thang = InputBox("Số ngày trong tháng", "Nhập vào tháng mà bạn muốn kiểm tra", Default, " M2")

        If @error = 1 Then
            ExitLoop
        Else
            Switch $thang
                Case 1, 3, 5, 7, 8, 10, 12
                    MsgBox(0, "Kết quả", "Tháng có 30 ngày")
                Case 4, 6, 9, 11
                    MsgBox(0, "Kết quả", "Tháng có 31 ngày")
                Case 2
                    $nam = InputBox("Số ngày trong tháng", "Nhập vào năm", Default, " M4")

                    If Mod(Number($nam), 4) == 0 Then
                        MsgBox(0, "Kết quả", "Năm nhuận tháng có 2 có 29 ngày")
                    Else
                        MsgBox(0, "Kết quả", "Năm không nhuận tháng có 2 có 28 ngày")
                    EndIf
                Case Else
                    MsgBox(0, "Lỗi", "Không tồn tại tháng, năm này")
            EndSwitch
        EndIf
    WEnd
     
    Chỉnh sửa cuối: 9/10/17
  9. WiorDi

    WiorDi Thành viên mới
    • 3/6

    Tham gia ngày:
    8/9/17
    Bài viết:
    11
    Đã được thích:
    47
    Các kiểu vòng lặp trong AutoIt

    Vòng lặp là một kiểu cấu trúc giúp kịch bản của chúng ta chạy từ đầu đến cuối và lặp đi lặp lại nhiều lần. Giả sử chúng ta phải hiển thị 10000 lần hộp thông báo với nội dung "Tôi biết rồi" thì ta không thể ngồi viết từng dòng lệnh được, nếu làm như vậy sẽ phải viết đến 10000 lần cái MsgBox, điều này là bất khả thi. Thay vào đó chúng ta chỉ cần sử dụng vòng lặp kết hợp với một dòng lệnh MsgBox là giải quyết xong.
    • For...Next
    Mã (AutoIt):
    ; Viết chương trình hiển thị ra hộp thông báo đếm từ 1 - 5
    For $i = 1 To 5 Step 1
        MsgBox(0, "Đếm số", "Đang ở số: " & $i)
    Next
    * Giải thích: $i là biến đếm. $i = 1 To 5 tức là $i sẽ đếm từ một đến năm. Step là bước nhảy tức là mỗi lần đếm thêm mấy đơn vị, ví dụ nếu Step là 1 thì các số sẽ được đếm là 1, 2, 3, 4, 5, 6.. nếu Step là 3 thì các số sẽ được đếm là: 1, 3, 6, 9, 12... Vòng lặp kiểm tra $i nếu $i < 5 thì thực hiện các function phía trong như MsgBox, sau đó lại quay lại kiểm tra $i cho đến khi $i > 5 vòng lặp kết thúc.
    Mã (AutoIt):
    ; Viết chương trình hiển thị ra hộp thông báo đếm từ 5 - 1
    For $i = 5 To 1 Step -1
        MsgBox(0, "Đếm ngược", "Đang ở số: " & $i)
    Next
    • While...Wend
    Mã (AutoIt):
    ; Viết chương trình hiển thị ra hộp thông báo đếm từ 5 - 0
    $i = 5
    While $i >= 0
        MsgBox(0, "Đếm ngược", "Thời gian đếm ngược: " & $i)
        $i -= 1
    WEnd
    * Giải thích: $i là biến đếm. $i >= 0 là điều kiện. Trong vòng lặp While việc đầu tiên sẽ là kiểm tra điều kiện nếu điều kiện đúng thì thực hiện các function bên trong, sau đó lại quay lại kiểm tra điều kiện, đến khi $i < 0 điều kiện sai thì thoát ra và kết thúc vòng lặp.

    Vòng lặp vô hạn là vòng lặp giúp kịch bản của chúng ta chạy đi chạy lại vô hạn lần, tức là điều kiện của vòng lặp này luôn luôn đúng vì thế kịch bản sẽ chạy mãi. Vòng lặp chỉ kết thúc đến khi bắt được sự kiện thoát ra từ GUI hoặc tác động thoát ra từ bên ngoài
    Mã (AutoIt):
    $i = 1
    While 1 ; Điều kiện 1 tương đương với True tức là luôn luôn đúng
        MsgBox(0, "Vòng lặp vô hạn", $i)
        $i += 1
    WEnd
    Vòng lặp này sẽ không thể tự thoát ra và nếu bạn chưa học về GUI thì hãy sử dụng cách này

    [​IMG]
    • Do...Until
    Mã (AutoIt):
    ; Viết chương trình hiển thị ra hộp thông báo đếm từ 5 - 0
    $i = 5
    Do
        MsgBox(0, "Đếm ngược", "Thời gian đếm ngược: " & $i)
        $i -= 1
    Until $i < 0
    * Giải thích: Do...Until tương tự như While chỉ khác một điều là ở Do...Until điều kiện sẽ được kiểm tra sau khi thực hiện các dòng lệnh, tức là dù điều kiện có sai thì vẫn thực hiện các function được một lần trước khi kết thúc và thoát ra khỏi vòng lặp.

    - Để có thể sử dụng thông thạo, biết trong trường hợp nào thì nên dùng vòng lặp nào chỉ có một cách là các bạn hãy thực hành thật nhiều. Bài tập mình đã lồng sẵn vào phần Cấu trúc rẽ nhánh với vòng lặp While bạn có thể thực hành bằng các thay thế While bằng các vòng lặp khác.
     
  10. Dung8heo

    Dung8heo Thành viên mới
    • 1/6

    Tham gia ngày:
    31/8/18
    Bài viết:
    1
    Đã được thích:
    1
    Ad ơi... sorry vì đào mộ. Nhưng cho mình hỏi làm sao để chạy 2 vòng lặp While ... Wend đồng thời đc trên cùng 1 script. Hay phải trên trên 2 script.?? Mình mới tập tành học autoit đang viết auto game.
     
    HungQuynh84 thích bài này.

Chia sẻ trang này

Đang tải...