Xin chào các bạn, mình là [Tên Giáo sư Biết Tuốt – Nhà Chiêm tinh học], hôm nay mình muốn chia sẻ với các bạn về cách tạo một auto click đơn giản không chiếm chuột bằng AutoHotkey. Mình biết là có rất nhiều bạn đang tìm kiếm cách làm này, và mình hy vọng bài viết này sẽ giúp ích cho các bạn.
Mình mới chỉ tìm hiểu về AutoHotkey được một thời gian (khoảng 1 năm), và mình cũng không phải là lập trình viên chuyên nghiệp, chỉ là một người yêu thích công nghệ và thích tự mày mò code. Nên sẽ có một số chỗ trong bài viết chưa chính xác hoặc chưa được tối ưu lắm, mong các bạn thông cảm!
Mình thấy AutoHotkey là một ngôn ngữ khá dễ học mà cộng đồng sử dụng lại chưa nhiều lắm nên muốn viết bài này để chia sẻ cho mọi người cùng biết đến.
Chuẩn Bị
Trước khi bắt đầu, các bạn cần có kiến thức cơ bản về AutoHotkey. Các bạn có thể tham khảo bài viết của bạn [@kakanet](link bài viết của kakanet) để nắm được những kiến thức cơ bản.
Trong bài viết này, mình sẽ sử dụng một số lệnh chính như sau:
- ControlClick: Dùng để click chuột vào một control (nút, ô input,…) trong cửa sổ.
- Gui: Dùng để tạo giao diện người dùng đơn giản.
- ListView: Dùng để hiển thị danh sách các thao tác click.
Ưu điểm của việc sử dụng ControlClick là nó cho phép bạn click chuột vào cửa sổ ngay cả khi cửa sổ đó đang bị che bởi cửa sổ khác hoặc bị thay đổi vị trí.
Tiến Hành Code
Phần 1: Tạo Giao Diện
Đầu tiên, chúng ta sẽ tạo một giao diện người dùng đơn giản (GUI) gồm các thành phần sau:
- Combobox: Cho phép người dùng lựa chọn kiểu click (Left, Middle, Right).
- Editbox: Cho phép người dùng nhập thời gian delay giữa các lần click (ms).
- ListView: Hiển thị danh sách các thao tác click đã được ghi lại.
- 3 Button: Dùng để điều khiển chương trình (Chạy, Dừng, Xóa).
Sau khi thêm các control vào GUI, chúng ta cần gắn label và biến cho chúng để dễ dàng thao tác sau này.
#NoEnv
#SingleInstance Force
CoordMode Mouse,Window
SetControlDelay -1
playing:=0
Gui,+Alwaysontop
Gui Add, Text, x16 y8 w52 h23 +0x200 , Kiểu click:
Gui Add, DropDownList, x80 y16 w120 vModeClick, Left||Middle|Right
Gui Add, Text, x224 y16 w34 h23 +0x200, Delay:
Gui Add, Edit, x264 y16 w120 h21 vDelayTime number,100
Gui Add, ListView, x16 y56 w391 h150, X|Y|Kiểu Click|Delay|Window
Gui Add, Button, x152 y224 w80 h23 gRunAuto , Chạy (F3)
Gui Add, Button, x240 y224 w80 h23 gStopAuto , Dừng (F4)
Gui Add, Button, x328 y224 w80 h23 gClearList, Xóa (Ctrl+Del)
Gui Show, , Auto Clicker
Return
F3::goto,RunAuto
F4::goto,StopAuto
^Delete::goto,ClearList
RunAuto:
return
StopAuto:
return
ClearList:
return
GuiEscape:
GuiClose:
ExitApp
Phần 2: Thêm Dữ Liệu vào ListView
Tiếp theo, chúng ta sẽ viết code cho phần thêm dữ liệu vào ListView. Để làm được điều này, chúng ta sẽ sử dụng lệnh MouseGetPos để lấy tọa độ chuột và hàm LV_Add() để thêm dữ liệu vào ListView.
F2::
if playing ; nếu đang chạy auto thì không lưu vào listview
return
Gui,Submit,Nohide ; lưu dữ liệu của các control vào biến
MouseGetPos,,,WinHWND ; Lấy HWND của cửa sổ
WinActivate,ahk_id %WinHWND%
MouseGetPos,X,Y ; Lấy vị trí x, y
LV_Add("",X,Y,ModeClick,DelayTime,WinHWND)
LV_ModifyCol(1)
LV_ModifyCol(2) ;2 dòng trên là chỉnh cho cột 1,2 cho ngay
return
Phần 3: Xóa Dữ Liệu khỏi ListView
Để xóa dữ liệu khỏi ListView, chúng ta sử dụng hàm LV_Delete().
ClearList:
if playing ; đang chạy thì không được xóa
return
LV_Delete() ; xóa toàn bộ nội dung trong listview
return
Phần 4: Chạy Auto Click
Bây giờ chúng ta sẽ viết code cho phần chạy auto click. Đầu tiên, chúng ta sẽ sử dụng hàm LV_GetCount() để kiểm tra xem ListView có dữ liệu hay không. Nếu có, chúng ta sẽ dùng vòng lặp để lấy thông tin từ ListView và thực hiện click chuột tuần tự.
RunAuto:
if (LV_GetCount()=0) ;nếu không có gì trong listview thì không chạy code bên dưới
return
playing:=1 ; đang chạy auto
; Dùng vòng lặp để lấy thông tin từ listview rồi thực hiện click tuần tự
Loop % LV_GetCount() ; lấy tất cả cột của listview
{
;tạo vòng lặp lấy dữ liệu của listview X|Y|Kiểu click|Delay|Window sau đó thực hiện click
if Stop ; dòng này để dừng auto
break
Index:=A_Index
Loop % LV_GetCount("Col") ; lấy dữ liệu của từng hàng
LV_GetText(Data_%A_Index%,Index,A_Index)
Sleep,% Data_4
ControlClick,xta_1% yta_2%,ahk_id ta_5%,,ta_3%,,NA Pos ;thực hiện click
}
;chạy xong thì dừng thôi
stop:=0
playing:=0
return
Phần 5: Dừng Auto Click
Để dừng auto click, chúng ta chỉ cần gán biến stop là 1.
StopAuto:
if not playing ; dừng rồi dừng chi nữa :)
return
Stop:=1
playing:=0
return
Phần 6: Chạy với Quyền Admin
Để chương trình có thể chạy được với hầu hết các cửa sổ, bạn cần phải chạy nó với quyền admin. Để làm được điều này, bạn cần thêm đoạn code sau vào đầu file script:
RequireAdmin() {
CommandLine := DllCall("GetCommandLine", "Str")
If !(A_IsAdmin || RegExMatch(CommandLine, " /restart(?!S)")) {
Try {
If (A_IsCompiled) {
Run *RunAs "%A_ScriptFullPath%" /restart
} Else {
Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
}
}
ExitApp
}
}
Phần 7: Code Hoàn Chỉnh
Để xem code hoàn chỉnh của chương trình, các bạn có thể nhấn like bài viết này. Mình đã upload file code lên host, các bạn có thể download về để sử dụng.
CLICK VÀO ĐÂY ĐỂ XEM PHẦN TIẾP THEO
Lời Kết
Trên đây là bài hướng dẫn cơ bản về cách tạo auto click không chiếm chuột bằng AutoHotkey. Hy vọng bài viết này sẽ hữu ích với các bạn. Hẹn gặp lại các bạn ở những bài viết tiếp theo!
Nguồn: https://truongxaydunghcm.edu.vn/
Có thể bạn quan tâm
- Hướng dẫn quấn biến áp
- Hướng Dẫn Kết Hôn Trong Mu Online: Tìm Hiểu Hệ Thống Cưới Hỏi
- Những Chữ Ký Tên Đạt Phong Thủy – 38+ Mẫu Chữ Ký Đẹp Tên Đạt
- Hướng Dẫn Dragon Ball Xenoverse 2: Trở Thành Chiến Binh Bảo Vệ Thời Gian
- Hướng dẫn sử dụng Edraw Max chi tiết từ A đến Z
- Cách phối giống ngựa tự nhiên, ngựa phối giống như thế nào mới nhất 2021
- Hướng dẫn chơi The Witcher 3: Wild Hunt chi tiết cho người mới
- Công Thức Hóa Học Của Khí Gas Và Những Điều Cần Biết
- Giải Mã Giấc Mơ Thấy Máu: Điềm Báo Hay Lời Cảnh Tỉnh?
- Luyện Tập Viết Lại Câu Thì Hiện Tại Hoàn Thành – Nấc Thang Vững Chắc Cho Kỳ Thi THPT Quốc Gia