Sử Dụng AutoIt Window Info Tool Để Xác Định Control ID Chính Xác

Trong tự động hóa ứng dụng Windows, việc gửi phím hoặc nhấp chuột theo tọa độ màn hình rất dễ phát sinh lỗi khi độ phân giải hoặc vị trí cửa sổ thay đổi. AutoIt cung cấp công cụ AutoIt Window Info Tool giúp bạn soi và trích xuất chính xác các thuộc tính của điều khiển (control) như Control ID, ClassnameNN, Handle hay Text. Bài viết này sẽ hướng dẫn bạn cách thao tác với công cụ này và áp dụng vào kịch bản AutoIt một cách đáng tin cậy.

Identify window with Autoit info tool - AutoIt General Help and Support - AutoIt Forums
Ảnh minh họa 1: Identify window with Autoit info tool - AutoIt General Help and Support - AutoIt Forums

Khái niệm

Hầu hết các thành phần hiển thị trên một cửa sổ Windows (nút bấm, ô nhập liệu, danh sách lựa chọn, văn bản cố định) đều được gọi là các Control (phần tử điều khiển). AutoIt làm việc trực tiếp với các điều khiển tiêu chuẩn của Microsoft thông qua các tham số định danh:

  • Control ID: Định danh dạng số nguyên của điều khiển.
  • Class (ClassnameNN): Tên lớp của điều khiển kết hợp với số thứ tự thể hiện (ví dụ: Edit1, Button2).
  • Text: Văn bản hiển thị trên điều khiển.
  • Control Handle (HWND): Mã định danh duy nhất do Windows cấp phát mỗi khi điều khiển được tạo ra.

Công cụ AutoIt Window Info Tool (file Au3Info.exe hoặc Au3Info_x64.exe) cho phép người dùng xem thông tin chi tiết này bằng cách kéo biểu tượng tâm ngắm (Finder Tool) hoặc di chuột đến thành phần cần kiểm tra trên màn hình.

Cú pháp

Để tương tác với điều khiển bằng các hàm như ControlSetText, ControlClick, hoặc ControlGetHandle, tham số controlID có thể được truyền dưới dạng chuỗi mô tả đặc biệt hoặc định danh truyền thống:

; Cú pháp mô tả nâng cao với chuỗi thuộc tính:"[PROPERTY1:Value1; PROPERTY2:Value2]"

Các thuộc tính phổ biến dùng trong chuỗi mô tả bao gồm:

  • [CLASS:Edit; INSTANCE:1] - Chọn phần tử Edit đầu tiên.
  • [ID:254] - Chọn phần tử theo Control ID cụ thể là 254.
  • [NAME:textBoxFolder] - Chọn phần tử theo tên (thường dùng cho .NET Winforms).
  • [CLASS:Button; TEXT:Finish; INSTANCE:2] - Chọn phần tử lớp Button thứ 2 có chứa chữ "Finish".

Ví dụ minh họa

Dưới đây là kịch bản ví dụ sử dụng các thông tin soi được từ AutoIt Window Info Tool để gửi văn bản vào ô nhập liệu và tương tác với nút bấm trong chương trình Notepad:

; Khởi chạy ứng dụng NotepadRun("notepad.exe")   ; Đợi cửa sổ Notepad xuất hiệnWinWaitActive("[CLASS:Notepad]")   ; Cách 1: Gửi văn bản vào ô Edit1 sử dụng ClassnameNNControlSetText("[CLASS:Notepad]", "", "Edit1", "Dữ liệu nhập tự động từ AutoIt")   ; Cách 2: Sử dụng cú pháp mô tả thuộc tính nâng cao [CLASS:Edit; INSTANCE:1]ControlSetText("[CLASS:Notepad]", "", "[CLASS:Edit; INSTANCE:1]", "Nội dung mới được đè lên")   ; Lấy Handle (HWND) của ô nhập liệu $hControl = ControlGetHandle("[CLASS:Notepad]", "", "Edit1")   ; Gửi phím trực tiếp thông qua Handle thu đượcControlSend("[CLASS:Notepad]", "", $hControl, "{ENTER}Thêm một dòng mới.")

Lỗi thường gặp

  • Phần tử không phải điều khiển tiêu chuẩn: Một số ứng dụng sử dụng bộ giao diện tùy chỉnh (như ứng dụng viết bằng QWidget) hoặc ứng dụng .NET đặc thù có thể không trả về thông tin Control ID hoặc Class khi soi bằng Window Info Tool.
  • Giao diện biến mất quá nhanh: Khi cần soi các cửa sổ popup hoặc menu ngữ cảnh xuất hiện trong thời gian ngắn, việc kéo tâm ngắm có thể làm menu bị đóng. Cách xử lý là nhấn tổ hợp phím Ctrl + Alt + F để mở đóng băng (unfreeze) công cụ, di chuyển chuột đến vị trí mong muốn, sau đó nhấn lại Ctrl + Alt + F để đóng băng (freeze) và giữ nguyên thông tin đã bắt được trên bảng làm việc.
  • Sử dụng sai cú pháp thuộc tính: Khi giá trị trong chuỗi mô tả chứa dấu chấm phẩy (;), bạn cần phải nhân đôi nó (;;) để AutoIt không hiểu lầm là dấu phân cách thuộc tính.

Bài tập/thực hành

  1. Mở ứng dụng Calculator (Máy tính) hoặc Notepad trên Windows.
  2. Chạy công cụ AutoIt Window Info Tool.
  3. Kéo biểu tượng Finder Tool vào các nút bấm hoặc ô hiển thị số để xác định các thông tin: Title của cửa sổ, ClassnameNN, và Control ID của từng nút.
  4. Viết một đoạn mã AutoIt đơn giản sử dụng hàm ControlClick với thông tin controlID vừa lấy được để tự động thực hiện một thao tác nhấp chuột lên điều khiển đó.

Tổng kết

Sử dụng AutoIt Window Info Tool là bước quan trọng giúp xác định chính xác các thành phần giao diện trên hệ điều hành Windows. Bằng cách tương tác trực tiếp qua Control ID, Class hoặc Handle thay vì dùng tọa độ chuột cố định, kịch bản tự động hóa của bạn sẽ hoạt động ổn định, chính xác và không bị ảnh hưởng bởi sự thay đổi về độ phân giải hay vị trí cửa sổ.


Nguồn tham khảo


📚 Chuỗi bài: AutoIt - Làm Việc Thông Minh Hơn Với Tự Động Hóa Windows

Chuỗi bài viết hướng dẫn toàn diện từ cơ bản đến ứng dụng thực tế của AutoIt, giúp tối ưu hóa hiệu suất làm việc, tiết kiệm thời gian cho giáo viên, nhân viên văn phòng và kỹ thuật viên trên hệ điều hành Windows.

  1. 1. Giới thiệu về AutoIt và Lý do nên bắt đầu tự động hóa công việc ngay hôm nay
  2. 2. Hướng dẫn cài đặt AutoIt và SciTE Script Editor chi tiết cho người mới
  3. 3. Cấu trúc một chương trình AutoIt cơ bản và các cú pháp cần nhớ
  4. 4. Tự động hóa thao tác Chuột và Bàn phím với các hàm Send và MouseClick trong AutoIt
  5. 5. Quản Lý Và Tương Tác Với Cửa Sổ Ứng Dụng Windows Bằng AutoIt
  6. 6. Sử Dụng AutoIt Window Info Tool Để Xác Định Control ID Chính Xác ← Bạn đang đọc
  7. 7. Tự Động Hóa Thao Tác Với File Và Thư Mục Trong AutoIt
  8. 8. Hướng Dẫn Đọc Và Ghi Dữ Liệu Từ File Text, INI Trong AutoIt
  9. 9. Tạo giao diện người dùng GUI cơ bản với AutoIt
  10. 10. Kịch Bản Tự Động Khởi Động Nhóm Phần Mềm Làm Việc Mỗi Sáng Bằng AutoIt
  11. 11. Tự Động Đổi Tên Hàng Loạt Tập Tin Theo Định Dạng Chuẩn Bằng AutoIt
  12. 12. Tự Động Hóa Nhập Điểm Và Dữ Liệu Vào Hệ Thống Quản Lý Nhà Trường Với AutoIt
  13. 13. Tương tác và xử lý dữ liệu File Excel bằng thư viện Excel UDF trong AutoIt
  14. 14. Bắt Lỗi Và Tối Ưu Hóa Hiệu Năng Kịch Bản AutoIt
  15. 15. Đóng Gói Kịch Bản AutoIt Thành File Executable (.exe) Độc Lập Với Aut2Exe
  16. 16. Tự Động Hóa Tác Vụ Định Kỳ Bằng Cách Kết Hợp AutoIt Với Windows Task Scheduler
  17. 17. Tổng kết chuỗi bài và Định hướng nâng cao kỹ năng tự động hóa với AutoIt

← Bài trước: Quản Lý Và Tương Tác Với Cửa Sổ Ứng Dụng Windows Bằng AutoItBài tiếp theo: Tự Động Hóa Thao Tác Với File Và Thư Mục Trong AutoIt →

Nhận xét