Oct 29, 2010
Friday, October 29, 2010

เริ่มต้นเขียนโปรแกรมด้วย AutoIt : 2

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

ใช้โปรแกรมอะไรเขียนสคริปต์ AutoIt ดี
     เมื่อคุณติดตั้งชุดพัฒนาโปรแกรม AutoIt จะมีโปรแกรม SciTE Script Editor ติดตั้งแถมมาด้วย จนอาจทำให้บางคนเข้าใจผิดคิดว่า SciTE Script Editor คือ AutoIt หรืออะไรทำนองนี้ ซึ่งแท้ที่จริงแล้วตัวโปรแกรม SciTE ก็คือโปรแกรม Text Editor (โปรแกรมพิมพ์แก้ไขข้อความ) ซึ่งมีความสามารถผนึกและเชื่อมโยงไวยากรณ์ของภาษาคอมพิวเตอร์ต่างๆ เอาไว้ได้หลากหลายภาษา เพื่อแสดงไฮไลน์คำสั่ง ค่าตัวแปร เรียกฟังก์ชั่นเสริมอื่นๆ ขึ้นมาใช้งานอย่างง่ายดาย รวมถึงช่วยส่งชุดคำสั่งที่เขียนขึ้นไปยังตัวคอมไพล์ แล้วแต่ว่าใครจะนำเอาโค้ดไปพัฒนาให้ใช้กับภาษาคอมพิวเตอร์ใด (อ้างอิง)

     ตัวอย่างเช่น หากคุณต้องการเปลี่ยน SciTE ไปใช้ไวยากรณ์ของแบตช์ไฟล์ (Batch File) ก็เปลี่ยนได้ตามรูปด้านล่างนี้ (ลองแล้วเปลี่ยนกลับมาเป็น AutoIt3 ด้วยนะครับ) หากต้องการเปลี่ยนไปใช้ของภาษาอื่นๆ ก็ต้องหาไฟล์ตั้งค่ามาติดตั้งกันเอาเอง แต่มีไม่ทุกภาษาหรอกครับ เพราะว่าโปรแกรมภาษาระดับสูงส่วนใหญ่มักจะมีเครื่องมือสำหรับเขียนภาษานั้นๆ เป็นของตัวเองอยู่แล้ว


     ด้วยเหตุนี้การเขียนโค้ดของ AutoIt จึงไม่จำเป็นต้องเขียนผ่านทาง SciTE Script Editor เสมอไป คุณสามารถใช้โปรแกรมแก้ไขข้อความอะไรก็ได้ แม้กระทั่งโน้ดแพด เขียนเสร็จก็บันทึกไฟล์เป็น .au3 แล้วนำมาคอมไพล์ทีหลังได้ แต่แน่นอนในเมื่อเขียนผ่าน SciTE Script Editor ได้สะดวกอยู่แล้ว จะไปสรรหาโปรแกรมอื่นมาเขียนทำไม

เปิดใช้งาน SciTE Script Editor ครั้งแรก
    สำหรับการดาวน์โหลดโปรแกรม SciTE Script Editor และ AutoIt คุณเข้าไปดาวน์โหลดได้ที่เว็บผู้พัฒนา คลิก หรือดาวน์โหลดจากลิงก์นี้ คลิก วิธีการติดตั้งก็เหมือนโปรแกรมทั่วไปคือคลิก Next ไปเรื่อยๆ ซึ่งควรติดตั้งโปรแกรมตามลำดับดังนี้คือ AutoIt ก่อนแล้วค่อยติดตั้ง SciTE4AutoIt3 เพื่อให้ได้เครื่องมือต่างๆ ครบถ้วน เมื่อติดตั้งเสร็จคุณสามารถเรียกเปิดโปรแกรม SciTE Script Editor จากการคลิก Start > All Programs > AutoIt v3 > SciTE Script Editor (ดูรูป)


     วิธีการเขียนสคริปต์ใน SciTE Script Editor ทำได้ดังนี้

1.  พิมพ์คำสั่งสคริปต์ลงในหน้าต่าง SciTE Script Editor ตัวอย่างเช่น ต้องการสร้างกล่องข้อความที่มีคำว่า สวัสดี (ที่แถบไตเติลบาร์) และ มีข้อความภายในว่า ทดสอบ123 ก็พิมพ์คำสั่งด้านล่างนี้ลงไป
MsgBox(0,"สวัสดี","ทดสอบ123")

2. คลิกปุ่ม Save เพื่อบันทึกสคริปต์ (สำคัญ :ถ้าไม่บันทึกจะทดสอบหรือเรียกใช้เครื่องมืออื่นไม่ได้เลย)

3. กดปุ่ม F5 เพื่อทดสอบการทำงานของสคริปต์

     การหยุดสคริปต์ระหว่างที่รันอยู่ ทำได้ด้วยการคลิกไปที่เมนู Tools > Stop Executing หรือกดปุ่ม Ctlr + Break (ปุ่ม Break อยู่ข้างปุ่ม Scroll Lock)

    บางท่านเมื่อทดลองพิมพ์แล้ว ไม่สามารถพิมพ์ภาษาไทยได้ ก็ต้องดูวิธีการตั้งค่าภาษไทยใหักับ SciTE Script Editor ตามลิงก์นี้ คลิก


    นอกจากนั้นระหว่างที่พิมพ์คำสั่งอยู่นั้น หากคำสั่งดังกล่าวบรรจุอยู่ภายในตัวโปรแกรมก็จะมีตัวเลือกออกมาดังภาพด้านล่างนี้ คุณสามารถกดปุ่มลูกศรขึ้นและลง เพื่อเลือกคำสั่งทีต้องการแล้วกดปุ่ม Enter โปรแกรมก็จะวางคำสั่งนั้นให้ทันที (ถ้าต้องการปิดตัวเลือกคำสั่งที่เด้งขึ้นมาก็กดปุ่ม ESC)


     สำหรับคำสั่งสคริปต์ของ AutoIt และวิธีศึกษาเพื่อนำมาใช้ คุณสามารถหาได้จาก AutoIt Help ในหัวข้อถัดไปครับ


 เรียน AutoIt จาก SciTE Script Editor
     ประโยชน์อีกอย่างหนึ่ง นอกจากใช้ SciTE Script Editor เขียนสคริปต์ คือตัวโปรแกรมจะเชื่อมโยงคำสั่งต่างๆ ไปยังไฟล์ Help ทำให้คุณสามารถเรียกดูรายละเอียดของคำสั่ง AutoIt และตัวอย่างการใช้งานได้อย่างง่ายดาย วิธีดูรายละเอียดของคำสั่งคือ คลิกที่ตัวคำสั่ง แล้วกดปุ่ม F1 หน้าต่าง AutoIt Help จะเปิดขึ้นมาพร้อมแสดงรายละเอียดคำสั่ง

     โดยทั่วไปคำสั่งจะใน AutoIt จะแบ่งออกเป็นสองส่วนคือ

A คำสั่งและพารามิเตอร์ (parameter) เบื้องต้นที่ต้องพิมพ์ลงไป 
B พารามิเตอร์เสริมที่จะกำหนดหรือไม่กำหนดก็ได้ (ดูรูป) 

     
    นอกจากนั้นหากเลื่อนลงไปด้านล่างสุดคุณจะเห็นตัวอย่างของการใช้คำสั่งด้วย มาดูรายละเอียดของหน้าต่าง AutoIt Help กันสักหน่อยครับ

[A] แท็บสำหรับช่วยศึกษาคำสั่ง AutoIt โดยแบ่งออกเป็น 4 แท็บ คือ
- Contents จัดแบ่งเนื้อหาคำสั่งเป็นหมวดหมู
- Index จัดแบ่งเนื้อหาคำสั่งเป็นแบบเรียงตัวอักษร
- Search สำหรับพิมพ์คำค้นหาคำสั่ง หรือคำที่เกี่ยวข้อง
- Favorites สำหรับบันทึกคำสั่งที่ปรากฏอยู่ในเฟรมขวา เพื่อที่เราจะได้มาดูวันหลัง (เมื่อคลิกแท็บนี้แล้ว คลิกปุ่ม Add ด้านล่าง)

[B] ท้ายคำอธิบายคำสั่ง จะมีคำสั่งอื่นๆ ที่เกี่ยวข้อง คุณคลิกสามารถคลิกไปดูได้

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


เรียนรู้ภาษาคอมพิวเตอร์ อังกฤษสำคัญและไม่สำคัญ
     เมื่อคุณดูตัวอย่างและคำอธิบายคำสั่งใน AutoIt Help จะเห็นว่าเป็นภาษาอังกฤษทั้งหมด อาจจะทำให้รู้สึกยาก ตรงจุดนี้ส่วนใหญ่ก็เป็นกันแทบทุกคนที่ไม่ชินกับภาษาอังกฤษ แต่ในความจริงคำอธิบายวิธีใช้งานพวกนี้ก็ไม่ได้ยากอะไรหรอกครับ เป็นภาษาอังกฤษพื้นๆ บางคำอธิบายอาจมีศัพท์คอมพิวเตอร์ปนอยู่บ้าง คุณพยายามสักนิดติดคำไหนก็หาดิกชั่นนารีหรือโปรแกรมที่แปลคำศัพท์เป็นคำๆ จะช่วยให้ทำความเข้าใจได้มาก (อย่าใช้ Google ช่วยแปลทั้งประโยค เพราะคุณอาจได้คำอธิบายการสร้างระเบิด แทนที่จะเป็นการสร้างกรอบหน้าต่างง่ายๆ)
    อย่างไรก็ตามความสำคัญของภาษาอังกฤษแทบจะไม่มีประโยชน์เลย เมื่อคุณเริ่มต้นคิดสร้างโปรแกรมซึ่งมีความซับซ้อนเกินกว่าตัวอย่างใน AutoIt Help มันมี 2 ทางในการสร้างโปรแกรมอะไรสักอย่างหนึ่ง คือ…

    1. แบบง่าย คือตัดแปะสคริปต์ไปเรื่อยๆ ทำแบบนี้ตอนแรกอาจจะได้ผลดี ช่วยในการเขียนโปรแกรมออกมาเร็วขึ้น แต่พอทำไปบ่อยเข้าก็จะกลายเป็นติดกับดักความมักง่าย โปรแกรมที่ทำออกมาก็จะไม่มีอะไรที่สร้างสรรค์ และยิ่งทำเป็นเวลานานเข้า คุณก็จะเบื่อตัวเอง เบื่อที่ไม่รู้ไม่เข้าใจ สุดท้ายก็เลิกลาไปในลักษณะนี้ 
     ผมไม่ได้หมายถึงการตัดแปะสคริปต์ไม่ดี แต่หมายถึงการตัดแปะโดยไม่ได้ศึกษาคำสั่งภายในสคริปต์อะไรเลยไม่ควรทำ ยิ่งที่เป็นผู้ศึกษาใหม่ๆ แล้ว โอกาสที่จะหลงภาพมายาแบบนี้ยิ่งง่าย มันเหมือนการขีดเส้นบนพื้นทราย เพียงแค่ลมพัดเบาๆ เส้นก็จางหาย เส้นซึ่งแบ่งระหว่างความเก่งกับความหลงผิดจึงใกล้กัน บางครั้งมองไม่ดีก็อาจนึกว่าเป็นสิ่งเดียวกัน  การหลงคิดว่าตัวเองเก่งกาจจนสามารถสร้างโปรแกรมสุดยอดได้ง่ายๆ สุดท้ายก็ลงเอยเป็นแค่ความฝันอันเลือนลางประการหนึ่ง ซึ่งไม่มีวันเป็นจริงได้

    2. อีกทางหนึ่งที่ยากกว่า แต่เป็นทางที่ถูกต้องคือ อ่านตัวอย่างใน AutoIt Help ให้เข้าใจคำสั่ง เริ่มแรกอาจลองดัดแปลงคำสั่งเพื่อดูผลที่เปลี่ยนไป จนถึงจุดหนึ่งเมื่อพื้นฐานแน่นพอแล้ว ก็เริ่มเขียนจากความเข้าใจ เขียนคำสั่งแรกไปจนคำสั่งสุดท้าย เพื่อให้ได้โปรแกรมที่ต้องการ มันไม่สำเร็จทุกครั้งหรอกครับ ผลพลอยได้ต่างหากที่สำคัญ เพราะคุณจะเพิ่มความชำนาญอย่างไม่รู้ตัวทุกครั้งที่เริ่มคิดเริ่มเขียน

     ก็ต้องยอมรับกันว่า AutoIt ไม่ใช่ภาษาคอมพิวเตอร์ที่ใช้กันแพร่หลายในไทย ดังนั้นข้อมูลภาษาไทยส่วนใหญ่ก็มักเป็นข้อมูลทั่วไป หรือสคริปต์ตัวอย่างง่ายๆ ใช้ในการติดตั้งโปรแกรมหรือทำเป็นโปรแกรมสำหรับกดคีย์คลิกเม้าส์ไปตามเรื่อง หากคุณต้องการจะศึกษา AutoIt ให้ใช้ได้เสมือนมือเท้าก็ลำบากกันหน่อย ดังนั้นถ้าต้องการความสำเร็จในภาษานี้คุณจำเป็นต้องมีสิ่งที่เรียกว่า “ความเชื่อ”  บางท่านอ่านมาถึงตรงนี้ก็อุทานในใจ บ้าหรือเปล่า ไม่ใช่ศาสนานะเฮ้ย  ในความจริงแล้วอย่าได้ดูถูกความเชื่ออย่างเด็ดขาด ลองถ้าใครหรือคุณมีความเชื่ออะไรสักอย่างที่แรงกล้ามากๆ มันจะกลายเป็นความมุ่งมั่นจนไม่มีสิ่งใดจะมาทลายความเชื่อนั้น ถึงที่สุดแล้ว แม้ตรรกะความสมเหตุสมผลแห่งโลกจริงก็สามารถบิดเบือนได้  แต่อย่าเชื่ออย่างเดียวแล้วไม่ทำ เชื่อว่าทำได้ แต่ไม่พยายามทำอะไร นั่นจะกลายเป็นความงมงายไปแล้ว


ธรรมชาติข้อจำกัดของ AutoIt
     ภาษาคอมพิวเตอร์ที่เกิดบนโลกนี้มีจำนวนมากมายหลายภาษา ที่คุ้นชินกันก็ VB, C, JAVA, Delphi, ASP, PHP ภาษาเหล่านี้สร้างขึ้นมาเพื่อสนองตอบจุดประสงค์การใช้งานที่แตกต่างกันไป บางภาษาก็ใช้งานคล้ายกัน เพื่อให้ผู้ใช้ได้เลือก (เหมือนร้านอาหารแล้วแต่ว่าคุณชอบร้านไหน) สำหรับ AutoIt ถือว่าเป็นภาษาสคริปต์ ซึ่งสร้างขึ้นมาเพื่ออำนวยความสะดวกในการควบคุมการทำงานต่างๆ บนวินโดวส์ ลักษณะเฉพาะอย่างหนึ่งของ AutoIt ก็คือจะมีการทำงานแบบ single threaded ซึ่งตรงข้ามกับคำว่า multithreading (ทำงานหลายๆ อย่างในเวลาเดียวกัน)

    สรุปสั้นๆ เกี่ยวกับ single threaded ไปเลยก็แล้วกัน คือสคริปต์ที่เขียนจาก AutoIt เมื่อทำงานแล้วจะทำงานแบบเวลาเดียวงานเดียว ตัวอย่างเช่น สคริปต์ด้านล่างนี้ เมื่อคุณคลิกปุ่ม เริ่ม ตัวแปลภาษา (interpreter) ก็จะวิ่งเข้าไปตกในลูปการนับตัวเลข คุณจะไม่สามารถคลิกปิดโปรแกรมได้จากปุ่มปิดได้เลย ทางแก้ไขปัญหานี้มี 2 ทางคือ

1. สร้าง Hotkey สำหรับปิด เช่น กำหนดให้กดปุ่ม ESC แล้วปิดโปรแกรม

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


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 208, 89, 192, 124)
$Button1 = GUICtrlCreateButton("เริ่ม", 128, 8, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("ออก", 128, 48, 75, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("", 8, 8, 107, 33)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $Button2
            Exit
        Case $Button1
            $i = 0
            While 1
                GUICtrlSetData($Label1, $i)
                Sleep(10)
                $i = $i + 1
            WEnd
    EndSwitch
WEnd



สิ่งที่ต้องระวังในเขียนสคริปต์ AutoIt
     เนื่องจากการทำงานแบบ single threaded ของสคริปต์จะทำงานแบบเรียงลำดับก่อนหลัง บางครั้งการใช้คำสั่งบางอย่างเช่น While, Do, For ก็อาจจะทำให้การทำงานวนอยู่ไม่สิ้นสุด เนื่องจากหาทางออกจากลูป (Loop) ไม่ได้ (Loop : การทำงานวนซ้ำของชุดคำสั่งตามเงื่อนไขที่กำหนด) ตัวอย่างเช่นสคริปต์ด้านล่างนี้ เมื่อนำไปทดสอบรันจะไม่มีทางแสดงกล่องข้อความ สวัสดี ออกมาได้เลย เพราะตัวสคริปต์จะติดลูป While 1 ไม่มีทางออก     


$i =0
While 1
    Sleep(100)
    $i=$i+1
    ToolTip($i)
WEnd

MsgBox(0,"สวัสดี","aaaaa")

     บางท่านอาจจะสงสัยว่าทำไม While แล้วตามด้วยเลข 1 ถึงกลายเป็นลูปวนไม่สิ้นสุด นั่นก็เพราะว่าเลข 1 ในการเขียนสคริปต์นอกจากเป็นตัวเลขบอกจำนวนแล้ว ยังเป็นตัวแทนของตรรกะจริงด้วยเช่นกัน ผมเคยอธิบายคำสั่ง While (ในบทความสร้าง Hotkey ตอน 3) ว่าเป็นคำสั่งสำหรับตรวจสอบค่าที่อยู่ถัดไป หากเป็นจริงก็ยังจะทำงานต่อไป และจะสลายก็ต่อเมื่อค่าเป็นเท็จ การใส่เลข 1 ต่อท้ายคำสั่ง While ก็เสมือนการบอกให้วนลูปไปเรื่อยๆ ไม่สิ้นสุดนั่นเอง
    
หมายเหตุ
    การใช้ตัวเลขจำนวนเต็มทางตรรกะ เมื่อนำมาใช้หลังคำสั่ง While เลข 0 คือเท็จ ส่วนเลขอื่นๆ จะเป็นจริงทั้งหมด เช่น 1 คือจริง 2 คือจริง 60 คือจริง ดังนั้นการเขียนคำสั่งโดยอาศัยตัวแปรหลัง While เพื่อตรวจสอบจริงและเท็จ ต้องแน่ใจเสมอว่าถูกต้องตามหลักนี้



ระหว่าง AutoIt และภาษอื่น (VB, C ฯลฯ) ควรศึกษาอะไร
     คำถามหนึ่งที่มักเกิดขึ้นเมื่อคุณรู้ว่า AutoIt ทำได้หลายอย่างและต้องใช้เวลาศึกษา มันคุ้มที่จะศึกษาหรือไม่? หรือศึกษาการเขียนโปรแกรมจากภาษา VB หรือ C ไปเลยดีกว่าไหม      

     คำตอบจริงๆ ก็คือ หากจะศึกษา AutoIt ควรศึกษามีพื้นฐานการเขียนโปรแกรมอย่างน้อยก็ VB มาก่อน เพราะหนึ่งนั้นรูปแบบการเขียนโปรแกรมเกือบทุกภาษาจะมีลักษณะคล้ายกันอยู่แล้ว (แตกต่างกันตรงไวยากรณ์) การที่อยู่ๆ จะมาศึกษาการเขียนโปรแกรมจาก AutoIt โดยไม่ได้ศึกษาการเขียนโปรแกรมภาษาอื่นมาก่อนเลย จะทำให้การเรียนรู้เป็นไปอย่างยากลำบาก เนื่องจากตัวภาษาสคริปต์ AutoIt ไม่มีที่สอนพื้นฐานเบื้องต้นเหมือนภาษาอื่นๆ ที่คุณสามารถหาได้ตามเว็บทั่วไป ตรงนี้สำคัญมาก เพราะการเขียนโปรแกรมจำเป็นต้องเข้าใจหลักแนวคิดพื้นฐานของคำสั่ง เช่น If Then Else, While, For, Do, Select, Switch ฯลฯ จุดนี้คุณจะต้องศึกษาตัวอย่างจากการเขียนโปรแกรมภาษาอื่น ให้เข้าใจเสียก่อนแล้วจึงมาประยุกต์ใช้ใน AutoIt

   บางท่านอาจจะสงสัยว่าจำเป็นจริงหรือไม่ เพราะในบทความตอนก่อนๆ ของบล็อกนี้ก็ทำตามได้โดยไม่ต้องศึกษาภาษาอื่นมาก่อนเลย ตรงนั้นบอกได้เลยครับมันง่ายผมจึงนำมาอธิบายให้เข้าใจได้โดยไม่ต้องอาศัยพื้นฐานการเขียนโปรแกรมเบื้องต้นมาก่อน แต่กลับกันลองดูโค้ดด้านล่างนี้ ซึ่งเป็นแกนหลักในโค้ดสำหรับแก้ไขสระลอยของโปรแกรม PSvowel (อ้างอิง) เขียนมาจาก AutoIt หากคุณเรียนภาษาอื่นมาแล้ว แค่นำเอาคำสั่งมาเทียบก็จะอธิบายได้แล้ว แต่ถ้าไม่เคยเรียนรู้ภาษใดมาก่อน ไล่คลิกที่คำสั่งแล้วกดปุ่ม F1 เพื่อดูคำอธิบายใน SciTE Script Editor รับรองได้ว่าต้องเสียเวลาเป็นวันกว่าจะเข้าใจแนวคิดได้


$len = StringLen($filename)
     For $i = 1 To $len
            $lenword = StringMid($filename, $i, 1)
            Select
                Case $lenword = $tone1
                    $lenword2 = StringMid($filename, $i - 1, 1)
                    If _ArraySearch($avArray, $lenword2) = -1 Then
                        $lenword3 = StringMid($filename, $i + 1, 1)
                        If _ArraySearch($avArray2, $lenword3) = -1 Then
                            $filename = StringReplace($filename, $i, ChrW(0xF70A))
                        EndIf
                    EndIf
                Case $lenword = $tone2
                    $lenword2 = StringMid($filename, $i - 1, 1)
                    If _ArraySearch($avArray, $lenword2) = -1 Then
                        $lenword3 = StringMid($filename, $i + 1, 1)
                        If _ArraySearch($avArray2, $lenword3) = -1 Then
                            $filename = StringReplace($filename, $i, ChrW(0xF70b))
                        EndIf
                    EndIf
                Case $lenword = $tone3
                    $lenword2 = StringMid($filename, $i - 1, 1)
                    If _ArraySearch($avArray, $lenword2) = -1 Then
                        $lenword3 = StringMid($filename, $i + 1, 1)
                        If _ArraySearch($avArray2, $lenword3) = -1 Then
                            $filename = StringReplace($filename, $i, ChrW(0xF70c))
                        EndIf
                    EndIf
                Case $lenword = $tone4
                    $lenword2 = StringMid($filename, $i - 1, 1)
                    If _ArraySearch($avArray, $lenword2) = -1 Then
                        $lenword3 = StringMid($filename, $i + 1, 1)
                        If _ArraySearch($avArray2, $lenword3) = -1 Then
                            $filename = StringReplace($filename, $i, ChrW(0xF70d))
                        EndIf
                    EndIf
                Case $lenword = $tone5
                    $lenword2 = StringMid($filename, $i - 1, 1)
                    If _ArraySearch($avArray, $lenword2) = -1 Then
                        $lenword3 = StringMid($filename, $i + 1, 1)
                        If _ArraySearch($avArray2, $lenword3) = -1 Then
                            $filename = StringReplace($filename, $i, ChrW(0xF70e))
                        EndIf
                    EndIf
            EndSelect
        Next


    สรุปให้ชัด หากต้องการจะศึกษาการเขียนโปรแกรมด้วย AutoIt  ควรมีพื้นฐานการเขียนภาษาคอมพิวเตอร์หรือศึกษาพื้นฐานการใช้คำสั่ง เช่น If Then Else, While, For, Do, Select, Switch มาก่อน ตัวอย่างและคำอธิบายคำสั่งพวกนี้ไม่จำเป็นต้องซื้อหนังสือมาอ่าน คุณหาได้ตามอินเตอร์เน็ตทั่วไป รวมถึงความรู้พื้นฐานการใช้ Operator (การใช้เครื่องหมาย < > <= >= = <> == * / + – & ^ และ AND OR NOT)  เพื่อนำมาสร้างเงื่อนไขสมการในการเขียนสคริปต์โปรแกรม

    การศึกษาพื้นฐานเหล่านี้จนเข้าใจ ไม่ได้เป็นประโยชน์เฉพาะแต่การเขียนสคริปต์ AutoIt เท่านั้น เพราะพื้นฐานที่กล่าวมานี้ เป็นหลักสากลในการเขียนภาษาคอมพิวเตอร์ คุณรู้แล้วสามารถนำเอาไปประยุกต์กับภาษาอื่นได้


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

###จบแล้วครับ###

3 comments:

  1. น่าติดตามาอย่างยิ่งครับ รอตอนต่อไปครับ

    ReplyDelete
  2. ถ้าต้องการเขียนคำสั่งการปิดFromหน้าต่างที่ไม่ต้องการเวลามันเด้งขึ้นมาต้องทำไงค่ะ

    ReplyDelete
  3. Thank you so much.

    ReplyDelete

    ส่วนนี้สำหรับแสดงความคิดเห็นทั่วไป สอบถามปัญหาตั้งถามได้ที่ฟอรั่ม


>>> [โปรดอ่าน] เนื่องจาก บทความการใช้งานบางโปรแกรมได้โฟสไปนานแล้ว
โปรแกรมอาจมีการอัปเดท วิธีการใช้งาน อาจใช้ไม่ได้ หรือมีวิธีที่ง่ายกว่าในเวอร์ชั่นใหม่
หากคุณพบว่าวิธีการใช้งานไม่ตรงกับบทความในบล็อกนี้ สามารถแนะนำเพิ่มเติมได้ครับ