สอน AutoIT ตอน 7 ----> ตัวอย่างที่ใช้จริง
posted on 02 Aug 2010 17:04 by firstprogram in AutoITเรื่องการใช้เมาส์ต่อจากตอนก่อนนะครับ เอาการนำไปใช้จริงๆในงานของผมแล้วกัน จะได้เห็นวิธีการนำเอา 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 หลังจากนี้คงต้องปรับปรุงอีกเล็กน้อยครับให้สามารถลบได้ทีละหลายๆแถว คงต้องเพิ่มคำสั่งอื่นๆเข้าไปอีกนิดหน่อย เอาไว้ทำวันหลังครั๊าบ....