ก่อนเริ่มเขียนสคริปต์ คุณต้องสร้างหน้าต่าง และวางคอนโทรล เช่น เช็กบ็อกซ์, คอมโบบ็อกซ์ หรือลิสวิวมาก่อน เพื่อกำหนดจุดเริ่มต้นในการสร้างขึ้นมาหนี่งอันดังรูปด้านล่างนี้ (หากคุณเป็นมือใหม่อ่าน หนังสือ สำหรับผู้ที่ต้องการหัดเขียนสคริปต์ AutoIt และการหน้าต่าง GUI เบื้องต้น ) ตัวอย่างแรก ผมจะทำกับ เช็กบ็อกซ์ เมื่อได้โค้ดมาเรียบร้อยแล้วก็จะได้ดังนี้
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PSsix", 290, 257, 694, 358) GUISetBkColor(0x99B4D1) $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 16, 16, 97, 17) $Button1 = GUICtrlCreateButton("Button1", 168, 16, 75, 25) GUICtrlSetBkColor(-1, 0x008000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Form1 Case $Checkbox1 Case $Button1 EndSwitch WEnd |
จากนั้นเขียนสคริปต์เพิ่มเติม หลักการทำก็คือ จะใช้คำสั่ง DriveGetDrive ดึงเอารายชื่อไดรฟ์ในเครื่องออกมาทั้งหมด(ชื่อไดร์ฟจะถูกเก็บในอาร์เรย์) จากนั้นจะใช้ลูปเพื่อดึงเอาชื่อไดร์ฟมาสร้างเป็นเช็กบ็อกซ์ตามจำนวนไดร์ฟที่มี โดยจะอาศัยตัวแปรอาร์เรย์ $PssixCB[26] เก็บค่าเช็กบ็อกซ์ที่สร้างขึ้น เพื่อสั่งควบคุม หรือตรวจสอบสถานะภายหลัง สคริปต์ที่เขียนเพิ่มเติมเข้าไป คือ (อธิบายเฉพาะส่วนที่เขียนเพิ่ม)
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $PssixCB[26] ;สร้างตัวแปรเพื่อเก็บค่าไดร์ฟในเครื่อง $d = DriveGetDrive("all") ;ดึงรายชื่อไดรฟ์ในเครื่องออกมาทั้งหมด #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PSsix", 290, 257, 694, 358) GUISetBkColor(0x99B4D1) For $i = 1 To $d[0] ;วนลูปเพื่อสร้างเช็คบ็อกซ์แนวตั้ง $PssixCB[$i] = GUICtrlCreateCheckbox($d[$i], 16, ($i * 25), 30) ;สร้างเช็คบ็อกซ์ตามจำนวนไดร์ฟที่มีอยู่ในเครื่อง Next ;จบลูป $Button1 = GUICtrlCreateButton("Button1", 168, 16, 75, 25) GUICtrlSetBkColor(-1, 0x008000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Form1 Case $Button1 For $i = 1 To $d[0] ;วนลูป เพื่อตรวจสอบไดร์ฟที่ถูกเช็กเลือก If BitAND(GUICtrlRead($PssixCB[$i]), $GUI_CHECKED) Then MsgBox(0, "เลือกไดรฟ์", $d[$i]) Next EndSwitch WEnd |
ถ้าเปลี่ยนมาเป็นคอมโบบ็อกซ์ จะได้สคริปต์ดังนี้
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ComboConstants.au3> #include <Array.au3> $d = DriveGetDrive("all") ;ดึงรายชื่อไดรฟ์ในเครื่องออกมาทั้งหมด #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PSsix", 290, 257, 694, 358) GUISetBkColor(0x99B4D1) $Combo1 = GUICtrlCreateCombo("", 16, 16, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1,_ArrayToString($d, "|", 1));ใส่เข้าไปในดร็อปดาวน์ลิส $Button1 = GUICtrlCreateButton("Button1", 168, 16, 75, 25) GUICtrlSetBkColor(-1, 0x008000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Form1 Case $Button1 MsgBox(0,"เลือกไดรฟ์",GUICtrlRead($Combo1)) EndSwitch WEnd |
ถ้าเปลี่ยนมาเป็นใช้เรดิโอ เพื่อบังคับให้เลือกได้ทีละไดร์ฟ จะได้สคริปต์ดังนี้
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $PssixCB[26] ;สร้างตัวแปรเพื่อเก็บค่าไดร์ฟในเครื่อง $d = DriveGetDrive("all") ;ดึงรายชื่อไดรฟ์ในเครื่องออกมาทั้งหมด #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PSsix", 290, 257, 694, 358) GUISetBkColor(0x99B4D1) For $i = 1 To $d[0] ;วนลูปเพื่อสร้าง ตัวเลือกแบบเรดิโอ แนวตั้ง $PssixCB[$i] = GUICtrlCreateRadio($d[$i], 16, ($i * 25), 30) Next $Button1 = GUICtrlCreateButton("Button1", 168, 16, 75, 25) GUICtrlSetBkColor(-1, 0x008000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Form1 Case $Button1 For $i = 1 To $d[0] ; วนลูปตรวจสอบการคลิกเลือก If BitAND(GUICtrlRead($PssixCB[$i]), $GUI_CHECKED) Then MsgBox(0, "เลือกไดรฟ์", $d[$i]) Next EndSwitch WEnd |
ถ้าเปลี่ยนมาเป็นใช้ลิสวิว จะได้สคริปต์ดังนี้
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> Global $PssixCB[26] ;สร้างตัวแปรเพื่อเก็บค่าไดร์ฟในเครื่อง $d = DriveGetDrive("all") ;ดึงรายชื่อไดรฟ์ในเครื่องออกมาทั้งหมด #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PSsix", 290, 257, 694, 358) GUISetBkColor(0x99B4D1) $ListView1 = GUICtrlCreateListView("ไดรฟ์ที่มีอยู่ในเครื่อง", 16, 8, 124, 233) For $i = 1 To $d[0] ;วนลูปเพื่อสร้าง ตัวเลือกในลิสวิว $PssixCB[$i] =GUICtrlCreateListViewItem($d[$i],$ListView1) Next $Button1 = GUICtrlCreateButton("Button1", 168, 16, 75, 25) GUICtrlSetBkColor(-1, 0x008000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Form1 Case $Button1 $select = _GUICtrlListView_GetSelectedIndices($ListView1) ;ดึงสถานะการคลิกเลือกจากลิสวิว MsgBox(0, "เลือกไดรฟ์", $d[$select+1]) ; ตัวแปรบวกหนึ่ง เนื่องจากลำดับในลิสวิวเริ่มที่ 0 จะไม่ตรงกับชื่อไดร์ฟที่เก็บในอาร์เรย์ ที่เริ่มต้นจาก 1 EndSwitch WEnd |
หมายเหตุ
ตัวอย่างสคริปต์ในหัวข้อนี้ เป็นเพียงสคริปต์เริ่มต้นสำหรับสั่งทำงานของสคริปต์ AutoIt เท่านั้น หากคุณต้องการเขียนคำสั่งต่อไปจะให้ทำอะไร เช่น เลือกไดร์ฟ แล้วค้นหาไฟล์, เลือกไดร์ฟแล้วสั่งสร้างไฟล์หรือติดตั้งโปรแกรมในไดร์ฟนั้น หรือทำงานอย่างใดอย่างหนึ่ง คุณต้องเขียนสคริปต์เพิ่มเติมเข้าไป หากสงสัยว่าสคริปต์ AutoIt ที่ต้องเขียนเพิ่มเข้าไปต้องเขียนอย่างไร สอบถามได้ที่ฟอรั่ม AutoIt ครับ (คลิกที่เมนูด้านบนบล็อกนี้)
###จบแล้วครับ###
0 comments:
Post a Comment
ส่วนนี้สำหรับแสดงความคิดเห็นทั่วไป สอบถามปัญหาตั้งถามได้ที่ฟอรั่ม
>>> [โปรดอ่าน] เนื่องจาก บทความการใช้งานบางโปรแกรมได้โฟสไปนานแล้ว
โปรแกรมอาจมีการอัปเดท วิธีการใช้งาน อาจใช้ไม่ได้ หรือมีวิธีที่ง่ายกว่าในเวอร์ชั่นใหม่
หากคุณพบว่าวิธีการใช้งานไม่ตรงกับบทความในบล็อกนี้ สามารถแนะนำเพิ่มเติมได้ครับ