เรื่องการใช้เมาส์ต่อจากตอนก่อนนะครับ เอาการนำไปใช้จริงๆในงานของผมแล้วกัน จะได้เห็นวิธีการนำเอา AutoItมาช่วยในงานของเราทำให้เราสะบายขึ้นครับ ต้องรู้จักใช้เทคโนโลยี ให้เป็นประโยชน์กัน  มาดูปัญหากันก่อนครับคือผมมีข้อมูลชุดหนึ่งซึ่งต้องทำการแก้ไขข้อมูลหรือลบมันทิ้งไปครับซึ่งการลบก็ใช้วิธีการปกติคือเลือกตัวที่ต้องการลบ กดเมาส์ปุ่มขวาแล้วเลื่อนมากดเมนู Delete ครับ หากว่า่มันมีแค่ตัวเดียวก็คงไม่มีปัญหาครับ แต่บางวันมันมีเยอะครับกว่าจะลบเสร็จเล่นเอาปวดข้อมือเลยทีเดียว

        ดูจากรูปนะครับตัวที่ผมต้องการลบเป็นตัวที่มีอักษรสีแดงครับ    เอาละครับคราวนี้มาดูตัวโปรแกรมที่เขียนขึ้นมาเมื่อครู่นี้เอง

#Include

HotKeySet("{ESC}", "_Exit")

 dim $Pos
 
$dll = DllOpen("user32.dll")

While 1     
    Sleep ( 100 )
    If  _IsPressed("20", $dll) Then           
        $MousePos = MouseGetPos()
        _Del($MousePos[0],$MousePos[1])
       
    EndIf
WEnd

 Func _Del($x,$y) 
     MouseClick("Right",$x,$y,1,50)
     
     send("{DOWN}")
     send("{DOWN}")   
     send("{DOWN}")     
     send("{DOWN}")
     send("{DOWN}")   
     send("{DOWN}")   
     send("{DOWN}")
     
     send("{ENTER}")
     sleep(250)
     send("{ENTER}")
     
 EndFunc     
 
 Func _Exit()
     Exit
EndFunc     

มาดูวิธีการทำงานของโปรแกรมกันครับ  

HotKeySet("{ESC}", "_Exit") อันนี้เป็นคำสั่งให้ไปทำงานที่ฟังชั่น _Exit เมื่อเรากดปุ่ม "ESC" ครับ นั่นคือให้ออกจากโปรแกรมไปเลยครับ คิดว่าคงเข้าใจนะครับ

While 1     
    Sleep ( 100 )
    If  _IsPressed("20", $dll) Then           
        $MousePos = MouseGetPos()
       _Del($MousePos[0],$MousePos[1])
       
    EndIf
WEnd

ส่วนโค๊ดชุุดนี้เป็นอย่างนี้ครับ หากว่าเราต้องการจะลบข้อมูลแถวไหนให้เราเคลื่อนเมาส์ไปที่แถวนั้นครับแล้วกดปุ่ม spacebar  จากโค๊ดทำงานอย่างนี้ครับ โปรแกรมจะวนลูปรอการกดปุ่ม Spacebar เมื่อมีการกดเกิดขึ้นจะมีการอ่านตำแหน่งของเมาส์ที่อยู่ในตอนนั้นไว้ในตัวแป$MousePos   ส่งตำแหน่งของเมาส์ไปยังฟังชั่น _Del

  Func _Del($x,$y) 
     MouseClick("Right",$x,$y,1,50)
     
     send("{DOWN}")
     send("{DOWN}")   
     send("{DOWN}")     
     send("{DOWN}")
     send("{DOWN}")   
     send("{DOWN}")   
     send("{DOWN}")
     
     send("{ENTER}")
     sleep(250)
     send("{ENTER}")
     
 EndFunc    

 ฟังชั่นนี้จะรับตำแหน่งเมาส์ แล้วมันจะสังให้มีการกดเมาส์ด้านขวา กดปุ่มลูกศรลง มาด้านล่าง กดปุ่ม "ENTER" ซึ่งเป็นการทำงานแทนเราทั้งหมดครับ อย่างน้อยในตอนนี้ก็สามารถช่วยลดงานเราลงไปได้กว่า 70% เลยทีเดียวครับ นี่ละครับง่ายสุดๆแล้วสำหรับการใช้โปรแกรม AUtoIT หลังจากนี้คงต้องปรับปรุงอีกเล็กน้อยครับให้สามารถลบได้ทีละหลายๆแถว คงต้องเพิ่มคำสั่งอื่นๆเข้าไปอีกนิดหน่อย   เอาไว้ทำวันหลังครั๊าบ....

 

 

  การใช้ เมาส์กับงานคอมพิวเตอร์เป็นสิ่งที่คู่กันที่แยกกันไม่ออก เหมือนปลาท๋องโก๋ ในวันๆหนึ่งเราใช้งานเมาส์ในการคลิกตำแหน่งบนหน้าจอคอมพิวเตอร์วันละหลายๆครั้ง เมื่อมานั่งดูการทำงานของเราำพบว่าเป็นการทำงานซ้ำๆกันเป็นประจำ เช่น เช้ามาเปิดคอมพิวเตอร์ จากนั้นคลิกเมาส์ไปเิปิดโปรแกรมต่างๆบนหน้าจอ สังเกตุดูก็เปิดตรงตำแหน่งเดิมซ้ำๆกันทุกวัน หรือเวลาเล่นเกมส์เราก็ต้องใช้เมาส์ไปคลิกที่ตำแหน่งต่างๆ เช่นกัน  คราวนี้เราจะมาเขียนโปรแกรมให้เมาส์ทำงานแบบauto กันครับ  แต่ปัญหาครับเราจะทราบตำแหน่งของเมาส์ตรงตำแหน่งที่เราจะคลิกได้อย่างไร ฉะนั้นตอนนี้เรามาสร้างเครื่องมือหาค่าพิกัดกัดของเมาส์ก่อนครับ 

        หลักการคือ ให้เมาส์ชี้ตรงไหน ค่าพิกัดก็แสดงออกมาให้เห็นโดยทันทีตรงนั้น    ยังจำคำสั่งหาพิกัดจากตอนที่แล้วได้ไหมครับ ลองกลับไปทบทวนดูนะครับ  นี่เป็นตัวโปรแกรมซอสโค๊ดนะครับ

 

Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)
HotKeySet("!q", "_ExitLoop")

$about  = ''
$about  &= "   โปรแกรมอ่านตำแหน่ง Mouse และ อ่านค่าสี" & @LF
$about  &= ''& @LF
$about  &= "วิธีใช้ วางเมาส์ตรงตำแหน่งที่ต้องการ" & @LF
$about  &= "ออกจากโปรแกรมให้กด Ctrl - Q" & @LF


TrayCreateMenu("โปรแกรมหาตำแหน่งMouse")
TrayCreateItem("")
TrayCreateItem("เกี่ยวกับ")
TrayItemSetOnEvent(-1, "DoAbout")
TrayCreateItem("")
TrayCreateItem("ออกจากโปรแกรม (กด ALT-q)")
TrayItemSetOnEvent(-1, "DoExit")
TraySetState()
TraySetIcon("shell32.dll",226)

While 1
     $avMouse = MouseGetPos()
    $iPixel = PixelGetColor($avMouse[0], $avMouse[1])
    ToolTip(" X=" & $avMouse[0] & "  Y=" & $avMouse[1] & "  Color=0x" & Hex($iPixel, 6))

WEnd

Func _ExitLoop()
Exit
EndFunc

Func DoAbout()
Msgbox(64,"เกี่ยวกับ:",$about & @lf & " Design by . Http://FirstProgram.exteen.com")
EndFunc

Func DoExit()
Exit
EndFunc

 

ลองทำความเข้าใจดูนครับหากคำสั่งไหนไม่เข้าใจให้ดู help นะครับไม่ยากเพราะ Auto IT ออกแบบมาให้ง่ายอยู่แล้วหากไม่เข้าใจจริงๆ โพสถามมาำได้นะ ครับ

นอกจากนี้ยังแถมอ่านค่าสีที่เมาส์ชี้อยู่มาให้อีกด้วยนะครับ อนาคตจะได้นำไปใช้กัน  เวลาโปรแกรมทำงานจะเกิดไอคอนเล็กๅที่ด้านล่างขวาของหน้าจอ ให้ใช้ mouse คลิกดูนะครับ ส่วนการออกจากโปรแกรมให้กด Alt -q หรือจะกดออกจากใน TrayMenu ก็ได้ครับ

ใครไม่อยากไปเขียนโปรแกรมเองไปโหลดที่แปลงเป็น exe  แล้ว ได้ที่นี่ครับ DownLoadNow!

และเมื่อเราทราบตำแหน่งเมาส์แล้ว เราสามารถไปเขียนโปรแกรมให้เมาส์ไปคลิกที่ตำแหน่งนั้นๆแบบโอโต้ เราไม่ต้องเหนื่อยคลิกเอง เราแค่นั่งดูเฉยๆ......

สอน AutoIT ตอน 5 ----> ควบคุม Mouse

posted on 29 Jul 2010 21:53 by firstprogram

    เรามาเรียนกันถึงเรื่อง การควบคุม Mouse เผื่อเอาไว้ไปเขียนโปรแกรมให้ mouse ไปคลิ๊กโปรแกรมได้เอง

MouseClick("left")   คำสั่งนี้ให้ ปุ่มเมาส์ด้านซ้ายคลิ๊ก

 

MouseClick("left")
MouseClick("left")
  

  อันนี้เป็นการ ดับเบิ้ลคลิ๊ก   หรือ ว่ายังเขียนได้อีกแบบ

MouseClick("left", 0, 500, 2)     ;  หมายถึง ให้คลิ๊กเมาส์ข้างซ้าย 2 ครั้ง ที่ตำแหน่ง x = 0 และ y   = 500

MouseMove(10, 100)             ;     หมายถึง ให้เคลื่อนเมาส์ไปที่ตำแหน่ง x = 10 และ y   = 100

MouseGetPos  คำสั่งนี้เป็นคำสั่งใช้อ่านค่าตำแหน่งของเมาส์ที่อยู่ในขณะนั้น มาดูตัวอย่างการใช้กันครับ

   

$pos = MouseGetPos()
MsgBox(0, "Mouse x,y:", $pos[0] & "," & $pos[1])

 

 คำสั่ง MouseGetPos จะเก็บค่าตำแหน่งของเมาส์ที่กำลังชี้อยู่เอาไปเก็บไว้ในตัวแปร $pos

ตำแหน่ง ของเมาส์ ในแนวนอน(X) จะเก็บอยู่ในตัวแปร  $pos[0]

ตำแหน่ง ของเมาส์ ในแนวตั้ง(Y) จะเก็บอยู่ในตัวแปร  $pos[1]

 ทั้งหมดนี้เป็นคำสั่งที่ควบคุมเมาส์แบบง่ายๆ ในตอนหน้าเราจะนำมาใช้เขียนโปรแกรมแบบง่ายๆกันนะครับ รอติดตามกันนะครับ...วันนี้ไปนอนแล้ว