ฟอรั่มของบล็อก http://pssix.blogspot.com


สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

Share

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by POS on 17/06/11, 04:30 pm

ลองเปลี่ยนชุดคำสั่งด้านล่างนี้ครับ

ตัวอย่างสำหรับกดปุ่ม 1 2 3 4 โดยใช้คำสั่ง ControlSend

Code:

#include <Constants.au3>
#include <WinAPI.au3>

Global $GameHD, $GameHD2

Func _PSsixLoadH($gtitle)
   $GameHD = WinGetHandle($gtitle)
   $GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
   If @error Then
      MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
   Else
      Return 1
   EndIf
EndFunc

If _PSsixLoadH("ชื่อไตเติลเกมส์") Then WinActivate($GameHD)

Sleep(1000)
ControlSend($GameHD, "", $GameHD2, "1")
Sleep(100)

ControlSend($GameHD, "", $GameHD2, "2")
Sleep(100)

ControlSend($GameHD, "", $GameHD2, "2")
Sleep(100)

ControlSend($GameHD, "", $GameHD2, "3")
Sleep(100)



||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
https://www.facebook.com/groups/AutoItThai/

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

ibana666
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 18
ความนิยม : 0
เข้าร่วมเมื่อ : 29/05/2011

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by ibana666 on 21/06/11, 09:29 pm

ผมลองในเกมส์MUของผมแล้ว เป็นเหมือนเดิมเลยล่ะครับ ตัวเลขมันไปกรองในช่องพิมพ์คำพูดหมดเลยครับ

เกมส์นี้ร้ายกาจจริงๆ em229

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by POS on 21/06/11, 10:08 pm

ตรงบรรทัดคำสั่ง

$GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)

เปลี่ยนค่า $GW_CHILD เป็นค่าอื่นด้านล่างนี้ (ลองเปลี่ยนทีละค่า)

$GW_HWNDFIRST

$GW_HWNDLAST

$GW_HWNDNEXT

$GW_HWNDPREV

$GW_OWNER

ปล. ระหว่างที่หน้าต่างเด้งขึ้นมา ก็คลิกที่หน้าต่าง 1 ครั้งด้วยครับ (อย่าลืมปิดหน้าต่างสำหรับ Chat ด้วย) ปัญหาจริงๆ ก็คือสคริปต์ไม่สามารถหาตำแหน่งที่อยู่ของชั้นหน้าต่างที่จะส่งเข้าไปได้



||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
https://www.facebook.com/groups/AutoItThai/

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

primedius
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 4
ความนิยม : 0
เข้าร่วมเมื่อ : 16/02/2012

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by primedius on 20/02/12, 10:21 am

POS พิมพ์ว่า:ลองเปลี่ยนชุดคำสั่งด้านล่างนี้ครับ

ตัวอย่างสำหรับกดปุ่ม 1 2 3 4 โดยใช้คำสั่ง ControlSend

Code:

#include <Constants.au3>
#include <WinAPI.au3>

Global $GameHD, $GameHD2

Func _PSsixLoadH($gtitle)
   $GameHD = WinGetHandle($gtitle)
   $GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
   If @error Then
      MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
   Else
      Return 1
   EndIf
EndFunc

If _PSsixLoadH("ชื่อไตเติลเกมส์") Then WinActivate($GameHD)

Sleep(1000)
ControlSend($GameHD, "", $GameHD2, "1")
Sleep(100)

ControlSend($GameHD, "", $GameHD2, "2")
Sleep(100)

ControlSend($GameHD, "", $GameHD2, "2")
Sleep(100)

ControlSend($GameHD, "", $GameHD2, "3")
Sleep(100)



ผมลองตามท่านแล้ว มันเหมือนเป็น Send ธรรมดาอะครับ

sticked
PSsix Member
PSsix Member


จำนวนข้อความ : 24
ความนิยม : 1
เข้าร่วมเมื่อ : 30/01/2012
อายุ : 27

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by sticked on 20/02/12, 01:32 pm

twelvesky2 ใช้ได้แต่


$GW_OWNER


เมื่อเปลี่ยนหน้าต่าง ก้ไม่ทำงานอ่ะครับ

witsamui
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 6
ความนิยม : 0
เข้าร่วมเมื่อ : 20/03/2012

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by witsamui on 17/05/12, 04:51 am

ขอบคุณนะครับ

ArkiEz
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 7
ความนิยม : 0
เข้าร่วมเมื่อ : 31/05/2012

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by ArkiEz on 31/08/12, 09:18 pm

ลองกับเกม Legend ออฟ เอดต้า

แล้วไม่ได้เลยอะครับ พวกคำสั่ง Send / ControlSend ลองแล้วไม่ทำงาน

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by POS on 01/09/12, 07:00 am

หากโปรแกรมที่การป้องกันเช่น x trap หรือ game guard จะใช้งานไม่ได้ครับ (นอกจากคอมไพล์สคริปต์เป็นแบบ 64 บิต ซึ่งต้องใช้ในวินโดวส์ 64 บิตด้วย)


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
https://www.facebook.com/groups/AutoItThai/

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

ArkiEz
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 7
ความนิยม : 0
เข้าร่วมเมื่อ : 31/05/2012

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by ArkiEz on 01/09/12, 08:36 am

POS พิมพ์ว่า:หากโปรแกรมที่การป้องกันเช่น x trap หรือ game guard จะใช้งานไม่ได้ครับ (นอกจากคอมไพล์สคริปต์เป็นแบบ 64 บิต ซึ่งต้องใช้ในวินโดวส์ 64 บิตด้วย)

ตอนนี้ผมใช้ win7 64bit อยู่นะครับ เวลาจะรันตัว au3 ผมก็คลิกขวาเลือก run script (x64)

ลองมาหลายคำสั่ง ไม่มีอะไรเกิดขึ้น จนเจอ

ControlSend($GameHD, "", "", "{A DOWN}")
Sleep(2000)
ControlSend($GameHD, "", "", "{A UP}")
Sleep(2000)

ได้มาจากโปรแกรม Autokeyboard ที่มีการกดแบบ DOWN-UP

จากที่ test กับเกมแล้ว มันกดปุ่ม A ตามต้องการจิงๆ คือมันพิมพ์ลงไปในช่องสนทนา แต่มันไม่มีผลกับตัวละคร เช่น ใช้สกิว/เดิน/เก็บของ (ลองเปิดปิดช่องสนทนาให้เหลือแต่ตัวละครแล้ว ก็ไม่ได้)

- อยากทราบว่าจำเป็นต้อง compile เป็น (x64) ก่อนรึปล่าว เพราะยังไงก็ run script เป็น (x64) อยู่แล้ว
- ต้องเพิ่มเติมอะไรเพื่อแก้ไขมั้ย
- พอจะมีคำสั่งอื่นให้ลองอีกมั้ย
- หรือจำเป็นต้องทำพวก Bypass เท่านั้น

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by POS on 02/09/12, 06:29 am

การ controlsend จะส่งค่าคีย์ที่กดไปยังชั้นของวัตถุในเกมส์ที่มีคุณสมบัติรับข้อความแรกสุด บางเกมส์ชั้นดังกล่าวจะเป็น ช่องแชท ในกรณีนี้ต้องแก้ไขด้วยใช้วิธีที่ผมโฟสด้านบน แต่ถ้าแก้ไขแล้วยังไม่ได้ ก็จะไม่สามารถส่งค่าคีย์ไปถึงตัวเกมส์ได้ ไม่ว่าจะคอมไพล์โปรแกรมเป็น 32 หรือ 64 บิตก็ตาม จึงต้องใช้คำสั่ง send แทน (นอกจากไปค้นพบวิธีอื่นที่ดีกว่านี้)


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
https://www.facebook.com/groups/AutoItThai/

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

Pochi
PSsix Member Class III
PSsix Member Class III


จำนวนข้อความ : 66
ความนิยม : 1
เข้าร่วมเมื่อ : 22/10/2010

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by Pochi on 22/09/12, 10:09 pm

em230

mukwan
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 7
ความนิยม : 0
เข้าร่วมเมื่อ : 02/11/2011

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by mukwan on 05/01/13, 01:07 pm

ลองแล้วมันเหมือน send ธรรมดาเลยครับ win7 64 bit

พอออกนอกหน้าต่างเกมส์ก็ ไม่ทำอะไรเลย

pakhoiz
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 7
ความนิยม : 0
เข้าร่วมเมื่อ : 17/08/2014
อายุ : 26

Re: สำหรับผู้ที่ใช้คำสั่ง ControlSend แล้วไม่สามารถสั่งกดคีย์ได้

ตั้งหัวข้อ by pakhoiz on 17/08/14, 01:02 pm

ทดลองแล้ว มันพับจอไม่ได้อะคับ เหมอืน Send เลย

    เวลาขณะนี้ 03/12/16, 02:52 am