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


รบกวนผู้รู้ตอบหน่อย เรื่อง Windows/Class

Share

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


จำนวนข้อความ : 9
ความนิยม : 0
เข้าร่วมเมื่อ : 01/09/2012

รบกวนผู้รู้ตอบหน่อย เรื่อง Windows/Class

ตั้งหัวข้อ by kongkoi on 11/09/12, 01:43 pm

ผมเป็นคนชอบเขียนโปรแกรมอ่ะครับ (หลากหลายครับ)
พอดีเรื่องการทำ Bot เพิ่งจะลองมาศึกษา ก็ได้ความรู้เก่า+กับแนวทางการสร้างบอท
ก็เลยเข้าใจอะไรได้ไม่ยากเย็นนัก
แต่บางอย่างก็มาถึงทางตันบ้าง หาทางออกเอาเองบ้าง แต่บางอย่างก็ไม่เข้าใจจริงๆ
เลยเป็นคำถามสำหรับมือใหม่อย่างผมนะครับ
ผมก็พอเข้าใจเรื่อง Windows/Class อะไรอยู่บ้าง ก็สามารถล้วงลึกลงไปถึงข้างในได้
แต่พอมาทำ Bot ไม่ว่าจะเป็นใช้ Dll User32.dll เอง, AutoIt Script ก็ใช้บ้าง
แต่ พอใช้คำสั่งอย่าง Send Key นี่มาตรฐานใช้ได้ทั้ง User32, AutoIt ด้วย
แต่ พอใช้คำสั่ง Click Mouse หรือ AutoIt ControlClick กลับใช้ไม่ได้ แต่ Result
แสดงผลตอบกลับ เป็น 1 (Succes) นะครับ แต่มันไม่ยอมทำงานเหมือนเรา click เอง
นี่คือปัญหาที่ไม่เข้าใจของผม จะว่าไปว่า ผมเรียกคลาสไม่ถูกก็ไม่รู้นะ แต่ผมลองสั่งไปที่คลาสหลัก/คลาสย่อย
หรือว่าทุก Child Window อ่ะมันตอบกลับเป็น 1 บ้าง 0 บ้าง ก็เข้าใจว่า ได้ หรือ ไม่ได้ (แต่ถ้าได้ (1) ทำไมมันไม่ยอมทำตามให้ครับ
เลยใช้ AutoIt info ข้อมูลมาให้ผู้รู้ดู และช่วยไขข้องใจให้ผมด้วยครับ
>>>> Window <<<<
Title: *ละเว้นไว้ครับ รู้กัน Title หลัก*
Class: *ละเว้นไว้ครับ รู้กัน Class หลัก*
Position: 109, 55
Size: 806, 628
Style: 0x14CF0000
ExStyle: 0x00000100
Handle: 0x00010474

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Name:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:

>>>> Mouse <<<<
Position: 452, 265
Cursor ID: 0
Color: 0x5C687B

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<


>>>> Hidden Text <<<<

ข้อมูลเป็นเช่นนี้ครับ
อยากใช้ ControlClick ได้ครับ รบกวนผู้รู้แนะนำหน่อย

POS
PSsix
PSsix


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

Re: รบกวนผู้รู้ตอบหน่อย เรื่อง Windows/Class

ตั้งหัวข้อ by POS on 12/09/12, 04:49 pm

คำสั่ง ControlClick ไม่ได้ทำงานได้ด้วยตัวของมันเองแต่ทำงานโดยเรียก api ของวินโดวส์ ซึ่งคำสั่งและตัวอย่างการใช้ที่ถูกเรียกใช้ผมก็บอกไปแล้วจากลิงก์ [You must be registered and logged in to see this link.] (เหมือนจะคุณจะอ่านแล้วไม่สนใจ หรือกระทั่งไปค้นหาเพิ่มเติม )

แน่นอนว่าในโลกนี้ไม่ใช่แค่คุณคนเดียวที่พบปัญหานี้ มีทั้งคนถามและคำตอบอยู่มากมายก่อนหน้านี้แล้ว

[You must be registered and logged in to see this link.]

[You must be registered and logged in to see this link.]

อ่านให้ได้มากที่สุดเท่าที่จะมากได้ ค้นหาให้มาก ถ้าเป็นภาษาอื่นก็ทดลองทำแปลงคำสั่งมาใช้ใน AutoIt อย่าอ่านแค่สองสามลิงก์ แล้วด่วนสรุปว่าทำไม่ได้

*** AutoIt info ไม่ได้ดึงทุกอย่างในหน้าต่างออกมาทั้งหมด เพราะมันเป็นเครื่องมือที่ใช้งานเบื้องต้นเท่านั้น


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

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

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

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


จำนวนข้อความ : 9
ความนิยม : 0
เข้าร่วมเมื่อ : 01/09/2012

Re: รบกวนผู้รู้ตอบหน่อย เรื่อง Windows/Class

ตั้งหัวข้อ by kongkoi on 13/09/12, 12:12 am

ขอบคุณครับ

ก็ไปค้นหาข้อมูลเรื่อยๆครับ จนได้รู้พอประมาณแล้วครับ
ก็คือ autoit --> api , user32 --> Postmessage/Sendmessage ก็เรียกมาจากที่เดียวกัน ก็เลยไม่ต่างกันในฟังก์ชั่นเบ้องต้น เพียงแต่ autoit เป็นฟังก์ชั่นสำเร็จแล้วไม่ต้องมานั่งเขียนเองเหมือน import user32.dll
และตามที่ผมเข้าใจนะ ที่มันไม่ Click เพราะว่า โปรแกรมนั้น Child มันไม่ได้ใช้ api ในการสร้าง ออบเจ็คต่างๆของมัน จึงไม่สามารถ คลิกตรงจุดได้ ซึ่งเห็นเขาเรียก Non-ForgroundWindow มั้งครับ (ส่วนใหญ่เป็นเกมส์)
ก็เลยศึกษา หาความรู้เพิ่มเติมอยู่ครับ ได้ ไม่ได้ ไม่รู้ครับ แต่ที่รู้ๆ ได้ความรู้จากการค้นหานี่ล่ะ ที่ว่ามันทำได้แบบนี้ แค่นี้ ได้เห็นมุมมองแปลกๆของคอมพิวเตอร์เยอะเลยอ่ะ

เมื่อก่อนบ้าเกมส์ PS2 ก็นั่งทำแผ่น วินนิ่ง แต่ไม่มีคัยเล่นกันล่ะ เลยเลิกทำ หันมาเรียนรู้สิ่งนี้ดูบ้าง เห็นเขาบอกทำได้ ก็เก่ง เลยจะลองๆ ดู อิอิ

ยังไงก็ขอบคุณเว็บบอร์ดนี้ที่ได้ให้ความรู้มากมายครับ

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