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.
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ạiCtrl + 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
- Mở ứng dụng Calculator (Máy tính) hoặc Notepad trên Windows.
- Chạy công cụ AutoIt Window Info Tool.
- 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.
- Viết một đoạn mã AutoIt đơn giản sử dụng hàm
ControlClickvới thông tincontrolIDvừ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
- Identify window with Autoit info tool - AutoIt General Help and Support - AutoIt Forums
- Controls
- Autoit Info Tool - AutoIt General Help and Support
- AutoIT v3 Window Info - No control Info - what are my options?
- Autoit Tutorials Part 3 Autoit Window Info tool - YouTube
Nhận xét
Đăng nhận xét