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

AutoHotKey Một số skill cơ bản về không chiếm chuột,màn hình !

Thảo luận trong 'AutoHotkey' bắt đầu bởi Em_Cu, 12/1/21.

  1. Em_Cu

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

    Tham gia ngày:
    2/10/20
    Bài viết:
    13
    Đã được thích:
    3
    Với các thao tác không chiếm chuột hay màn hình bước thứ nhất là phải lấy được handle của cửa sổ cần điều khiển, lấy qua một số cách sau:
    Mã (Text):
    Handle := winexist(“Tiêu đề của cửa sổ”)
    Hoặc:
    MouseGetPos,x,y,handle ;-lấy theo vị trí chuột hiện tại, thường dùng thêm hotkey hoặc cho vào vòng lặp kết hợp với getkeystate để lấy.
    Cũng có thể:
    Winget,handle, id, Tiêu đề cửa sổ !
    Trên là một số cách cơ bản lấy handle. Có handle như có chìa khoá để mở cửa, sau khi mở cửa thì làm gì phụ thuộc bạn muốn !
    Các bạn hỏi vấn để ko chiếm chuột với màn hình toàn là để auto là chính nên mình cũng nói luôn việc ẩn cửa sổ , code 1 dòng :
    Mã (Text):
    Winhide, Tiêu đề cửa sổ
    Ngoài việc dùng “Tiêu đề cửa sổ” có thế dùng :
    Mã (Text):
    Ahk_id %handle%
    Ahk_class %class%
    Ahk_pid %pid% ...
    Và cần thì show lại nó :
    Mã (Text):
    Winshow, Tiêu đề cửa sổ
    Khi click không chiếm chuột hay màn hình phải có thêm :
    Mã (Text):
    DetecHiddenWindows,on
    Viết vào chỗ nào trong thân ctrinh cũng được.
    Đơn giản để click dùng :
    Mã (Text):
    ControlClick,x%X% y%Y%,ahk_id %handle%,,%mousestyle%,, NA
    X,Y là các biến chứa tọa độ điểm cần click, có thể xác định bằng WindowSpy hoặc dùng MouseGetPos như ở trên.Còn việc gửi ký tự thì sử dụng :
    Mã (Text):
    ControlSend,ahk_parent,{%key%},ahk_id %handle%
    Key là biến chứa ký tự cần gửi. Nếu gửi phím là các ký tự chữ hay số thì viết trực tiếp ko cần { }và %%, sử dụng {} cho trường hợp gửi các phím đặc biệt : Ctrl, Alt, ... Ngoài ra kết hợp gửi phím có thể thực hiện như sau.
    Ví dụ: {AltDown a AltUp} tương đương với Alt+a.
    Để gửi chuỗi dùng ControlSendRaw cũng tương tự.Tiện đây mình cũng nói luôn là không phải bất cứ chương trình nào cũng chấp nhận việc click và send key. Thường thì click ít bị chặn hơn, send key hay bị chặn nhiều khi cửa sổ cần send ko phải là cửa sổ active. Để giải quyết biện pháp đơn giản nhất là dùng
    Mã (Text):
    WinActivate,ahk_id %handle%
    Trước lệnh send. Hoặc :
    Mã (Text):
    ControlFocus,ahk_id %handle%
    Tuy nhiên cách 1 sẽ chiếm dụng màn hình active, dùng cho vòng lặp liên tục với thời gian ngắn < ko tốt do nháy nháy khó chịu. Nên dùng cho gửi lệnh >1 phút. Để khắc phục bớt sử dụng cấu trúc lệnh:
    Mã (Text):
    Currenthandle := winexist()
    WinActivate,ahk_id %handle%
    Lệnh click hoặc send bla bla...
    WinActivate,ahk_id %currenthandle%
    Còn sử dụng ControlFocus thì dùng trong vòng lặp gửi key hay click cũng ok nhưng bạn phải cẩn thận vì nó làm cho cửa sổ mục tiêu luôn ở trạng thái hoạt động —-> ngốn cpu tuỳ chương trình bạn chạy.
    Ngoài ra một số chương trình dùng hết thuốc mà vẫn không được thì phải chuyển hướng dùng biện pháp khác. Gợi ý dùng Posmessage hoặc Sendmessage hoặc các hàm Api.
    Còn việc search thì có thể dùng imagesearch hoặc pixelsearch pixelgetcolor. Các lệnh này chỉ thực hiện khi cửa sổ active hoặc có focus. Các bạn nên hỏi con bé gg dùng Gdip imagesearch. Dùng cho các cửa sổ bị che. Lúc đầu tính viết một chút mà càng viết càng ra, giờ dài quá. Trên đây là một số skill cơ bản về không chiếm chuột, màn hình cần cho việc viết auto, bài viết có gì thiếu sót các bro bổ xung giùm.
     
  2. Em_Cu

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

    Tham gia ngày:
    2/10/20
    Bài viết:
    13
    Đã được thích:
    3
    Bổ xung thêm MouseStyle là biến chứa nút chuột cần click : left , right, middle.
    Bổ xung thêm là ba lệnh imagesearch picxelsearch và pixelgetcolor có thể dùng trong trường hợp cửa sổ cần search ko ontop hay active nhưng phần cần search ko bị che khuất.
    Ps: Định thêm từ hôm trc mà 4r cho viết có 1 bài/ ngày,chắc tránh spam.
     
  3. ndquang95

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

    Tham gia ngày:
    10/12/20
    Bài viết:
    2
    Đã được thích:
    0
    Bạn cho mình hỏi chút làm sao để truyền 1 number vào cái ControlSend vậy. Mình đã thử như thế này nhưng không được:
    ControlSend, ,%Pass%, ahk_id %Data_5%
     
  4. Em_Cu

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

    Tham gia ngày:
    2/10/20
    Bài viết:
    13
    Đã được thích:
    3
    Pass:=1
    Để hiểu sâu hơn về lệnh này bạn tham khảo thêm ở đây :
    https://www.autohotkey.com/docs/commands/ControlSend.htm
     
    Chỉnh sửa cuối: 21/3/21

Chia sẻ trang này

Đang tải...