อย่างที่ทราบกันดี (อ้างอิง >> [You must be registered and logged in to see this link.] ) ช่วงนี้กำลังวุ่นกับงานหลายๆ อย่างที่จะมีในเดือนหน้า
วันนี้นึกขึ้นได้ว่ามีเรื่องเกี่ยว AutoIt ที่จะเขียนนานแล้วแต่ไม่ได้เขียน คือการสร้าง GUI แบบมีปุ่มหยุดการทำงานชั่วคราว (รายละเอียดทั่วไปในหนังสือไม่ขอเอ่ยครับ) จะเห็นว่าสคริปต์หลายๆ ตัว ที่มีการทำงานสคริปต์อย่างต่อเนื่อง คุณจะไม่สามารถคลิกสั่งหยุดสคริปต์ชั่วคราวได้ทันที เนื่องมาจากการระบบการทำงานของ AutoIt ซึ่งทางแก้ไขสามารถทำได้ด้วยการเขียนสคริปต์ดักการทำงานของปุ่มต่างๆ ตามวิธีการดังนี้ (วิธีที่หยุดสคริปต์ทันทีนี้ เป็นวิธีการที่ผมใช้ในการโปรแกรมประเภท autokey ที่แจกในหน้าบล็อก)
ขั้นแรกเมื่อสร้าง GUI แล้ว จะสร้างโค้ดออกมาต้องตั้งค่าดังนี้
[You must be registered and logged in to see this image.]
โค้ดที่ได้จะเป็นลักษณะนี้
[You must be registered and logged in to see this image.]
ตัวโค้ดที่แก้ไขเพิ่มเติม เพื่อให้สคริปต์ทำงานจะเป็นดังนี้
###จบ###
วันนี้นึกขึ้นได้ว่ามีเรื่องเกี่ยว AutoIt ที่จะเขียนนานแล้วแต่ไม่ได้เขียน คือการสร้าง GUI แบบมีปุ่มหยุดการทำงานชั่วคราว (รายละเอียดทั่วไปในหนังสือไม่ขอเอ่ยครับ) จะเห็นว่าสคริปต์หลายๆ ตัว ที่มีการทำงานสคริปต์อย่างต่อเนื่อง คุณจะไม่สามารถคลิกสั่งหยุดสคริปต์ชั่วคราวได้ทันที เนื่องมาจากการระบบการทำงานของ AutoIt ซึ่งทางแก้ไขสามารถทำได้ด้วยการเขียนสคริปต์ดักการทำงานของปุ่มต่างๆ ตามวิธีการดังนี้ (วิธีที่หยุดสคริปต์ทันทีนี้ เป็นวิธีการที่ผมใช้ในการโปรแกรมประเภท autokey ที่แจกในหน้าบล็อก)
ขั้นแรกเมื่อสร้าง GUI แล้ว จะสร้างโค้ดออกมาต้องตั้งค่าดังนี้
[You must be registered and logged in to see this image.]
โค้ดที่ได้จะเป็นลักษณะนี้
[You must be registered and logged in to see this image.]
ตัวโค้ดที่แก้ไขเพิ่มเติม เพื่อให้สคริปต์ทำงานจะเป็นดังนี้
- Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $PSsix = 0 ;ใส่เพิ่ม
Global $pPause = False ; ใส่เพิ่ม
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("PSsix", 418, 177, 494, 266)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
$Button1 = GUICtrlCreateButton("ทำงาน", 296, 16, 75, 25)
GUICtrlSetOnEvent(-1, "Button1Click")
$Button2 = GUICtrlCreateButton("หยุดชั่วคราว", 296, 72, 75, 25)
GUICtrlSetOnEvent(-1, "Button2Click")
$Label1 = GUICtrlCreateLabel("Label1", 40, 24, 35, 17)
GUICtrlSetOnEvent(-1, "Label1Click")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
Select ;ตรวจสอบค่าตัวแปร PSsix ที่เปลี่ยนไปตามการกดปุ่มใน GUI
Case $PSsix = 1
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
A1()
Case $PSsix = 2
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
Case $PSsix = 3
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
Case $PSsix = 4
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
Case $PSsix = 5
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
Case $PSsix = 6
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
Case $PSsix = 7
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
Case $PSsix = 8
$PSsix = 0
;ใส่เพิ่มตามปุ่มหรือตัวเลือกที่ต้องการให้ทำงานทันทีเมื่อรับคำสั่ง
EndSelect
Sleep(100)
WEnd
Func A1()
$i =0
While Sleep(100)
If $pPause Then ContinueLoop ;ตรวจการคลิกหยุดชั่วคราวแบบที่ 1
;~ If ($pPause = False) Then ;ตรวจการคลิกหยุดชั่วคราวแบบที่ 2 ใส่เงื่อนไขตรวจดูการกดหยุดชั่วคราวในสคริปต์
GUICtrlSetData($Label1,$i)
$i += 1
;~ EndIf
WEnd
EndFunc
Func TogglePause()
$pPause = Not $pPause
If $pPause Then
ControlSetText($Form1, "", $Button2 , "ทำงานต่อ")
Else
ControlSetText($Form1, "", $Button2 , "หยุดชั่วคราว")
EndIf
EndFunc
Func Button1Click()
$PSsix = 1
;ใส่คำสั่งเปลี่ยนค่าตัวแปร PSsix
EndFunc ;==>Button1Click
Func Button2Click()
$PSsix = 2
TogglePause()
;ใส่คำสั่งเปลี่ยนค่าตัวแปร PSsix
EndFunc ;==>Button2Click
;;;;ส่วนควบคุมฟอร์ม และส่วนประกอบอื่นในฟอร์มที่ไม่จำเป็นต้องตั้งค่า
Func Form1Close()
exit
EndFunc ;==>Form1Close
Func Form1Maximize()
EndFunc ;==>Form1Maximize
Func Form1Minimize()
EndFunc ;==>Form1Minimize
Func Form1Restore()
EndFunc ;==>Form1Restore
Func Label1Click()
EndFunc ;==>Label1Click
###จบ###