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ỏi đáp Controlsend thỉnh thoảng bị thêm chữ "c" trong Noxplayer?

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi kvanquang, 13/12/18.

  1. kvanquang

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

    Tham gia ngày:
    18/9/18
    Bài viết:
    15
    Đã được thích:
    2
    Không hiểu lý do vì sao, mình controlsend 1 text vào Noxplayer ok, nhưng có đôi khi tự bị chèn thêm chữ "c" vào 1 vị trí bất kỳ trong đoạn text đó. Mình tìm hiêu mãi ko hiểu nguyên nhân là gì, khi thỉnh thoảng bị, lúc lại không. Ai biết giải đáp giùm mình với nhé.
     
  2. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    110
    Đã được thích:
    61
    Mình đoán là có thể con mèo đã đè lên phím "C" hoặc lỗi đâu đó tầm dòng thứ 106 trong code của bạn.
    Nếu không đúng vậy thì bạn có thể thêm mấy dòng này thử xem sao:
    Mã (AutoIt):
    Opt("SendKeyDelay", 250)

    BlockInput($BI_DISABLE)
    ;...
    ControlSend()
    ;...
    BlockInput($BI_ENABLE)
    Thân! Hi vọng là giúp được
     
    kvanquang thích bài này.
  3. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
  4. kvanquang

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

    Tham gia ngày:
    18/9/18
    Bài viết:
    15
    Đã được thích:
    2
    Thank b để mình thử thì thấy báo lỗi dòng số 2, kiểu $BI chưa khai báo, mình gettext từ 1 textbox khác rồi dùng controlsend text đó vào Noxplayer.
    Mã (AutoIt):

    Opt("SendKeyDelay", 250)
    BlockInput($BI_DISABLE)
    $hWnd = WinGetHandle("P8")

    ControlClick($hWnd,"","","left",1,144,145)
    sleep(500)
    $abc = ControlGetText("Liveme Full","","WindowsForms10.EDIT.app.0.141b42a_r9_ad17")
    ControlSend($hWnd,"","",$abc)
    BlockInput($BI_ENABLE)
     
     
    Chỉnh sửa cuối: 14/12/18
  5. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    110
    Đã được thích:
    61
    Xin chào,
    Mình chỉ gợi ý cho bạn mà quên giải thích,
    Hằng $BI_DISABLE và $BI_ENABLE được định nghĩa trong AutoItConstants.au3, bạn có thể include nó vào script hoặc thay giá trị thành
    Mã (AutoIt):
    Mục đích là chặn tất cả giá trị nhập vào từ chuột và bàn phím thực, để loại trừ khả năng phím "C" của bạn bị nhậy phím.

    Còn option Opt("SendKeyDelay",250) thì cho tốc độ send key giảm lại xem sao, mặc định tốc độ 5 miliseconds, tăng lên cho nó giảm tốc độ send key lại. Hoặc dừng (sleep) một chút trước khi send cũng được.

    Bạn nên chắc chắn rằng giá trị trả về từ hàm ControlGetText là chính xác như ý bạn, bằng cách kiểm tra cho xuất ra màn hình console thử. Vậy thì có thể loại trừ thêm khả năng giá trị bạn muốn send không thừa ký tự "C" nào cả.

    Một chút trao đổi với bạn, bạn test thử và cho phản hồi lên đây nhé :)
    Thân!
     

Chia sẻ trang này

Đang tải...