Jun 10, 2009
Wednesday, June 10, 2009

สร้างโปรแกรม Auto comment Hi5 และโปรแกรมควบคุมเว็บด้วย AutoIt :1



ส่วนนี้เป็นการสอนเขียนโปรแกรม หากคุณต้องการที่ทำเสร็จแล้ว ดาวน์โหลดได้ตามลิงก์นี้ครับPSsix Auto Comment Hi5 โปรแกรมช่วยคอมเมนต์อัตโนมัติ Hi5

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

ในขั้นเริ่มต้น ขอให้คุณดาวน์โหลดโปรแกรมที่เกียวข้องมาติดตั้งคือ
(ถ้ายังไม่มีความรู้พื้นฐาน ย้อนกลับไปอ่านบทต้นๆ ก่อนครับ)

Autoit (สำหรับใช้เขียนสคริปต์คำสั่ง)
คลิกดาวน์โหลด

หนังสือสำหรับผู้หัดเขียนสคริปต์ AutoIt เบื้องต้น


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

     ซึ่งในการเขียนคำสั่งเพื่อส่งข้อมูลในหน้าเว็บทั่วไปเราจะพบสิ่ง 2 สิ่งคือ
1. ฟอร์ม อธิบายง่ายๆ ก็คือเป็นกรอบหรือพื้นที่บรรจุวัตถุต่างๆ เอาไว้ เช่น ช่องสำหรับรับข้อมูลในการพิมพ์, เช็คบ็อกซ์สำหรับเลือก, ปุ่ม submit สำหรับส่งข้อมูลขึ้นไปยังเซิร์ฟเวอร์ ฯลฯ (โดยส่วนใหญ่เราจะมองไม่เห็นเส้นฟอร์มที่ล้อมรอบวัตถุ แต่ไม่เห็นก็ไม่ใช่ว่าไม่มี)
     หมายเหตุ : ในบางเว็บอาจไม่มีฟอร์มในหน้าเว็บ คุณสามารถเขียนคำสั่งระบุชื่อวัตถุในหน้าเว็บโดยไม่ต้องอ้างอิงฟอร์มได้เลยครับ

2. ชื่อของวัตถุที่อยู่ในฟอร์ม วัตถุทุกอย่างที่อยู่ในฟอร์มจะมีชื่อและลำดับ



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

วิธีการหาชื่อของฟอร์มและวัตถุในฟอร์มนั้น เราใช้โปรแกรม IEDevToolBar ช่วยนะครับ ตามวิธีการดังนี้

1. เปิดเข้าเว็บ http://www.google.co.th/ แล้วกดปุ่ม F12 หรือคลิกที่ไปเมนู Tool -> Developer Tools (หาไม่ได้ติดตั้งโปรแกรม IEDevToolBar จะไม่มีอะไรเกิดขึ้น)


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

ชื่อของฟอร์มที่บรรจุช่องสำหรับพิมพ์คำค้นหา ในตัวอย่างนี้ชื่อ "f"
ชื่อของช่องเท็กซ์บ็อกซ์สำหรับใช้พิมพ์คำค้นหา ในตัวอย่างนี้คือ "q"

สรุปอีกครั้ง
     ในเว็บ google นั้น จะมีในฟอร์มชื่อ "f" ซึ่งบรรจุช่องเท็กซ์บ็อกซ์สำหรับพิมพ์ค้นหาชื่อว่า "q"

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

ขั้นตอนต่อไปเป็นการเขียนคำสั่งควบคุมด้วย Autoit

เริ่มต้นต้องใส่คำสั่ง #include < ie.au3 > ลงไปด้านบนสุดด้วยทุกครั้ง เพื่อดึงเอาชุดคำสั่งใน Library ที่ใช้ในการควบคุม IE ของ AutoIt มาใช้

_IECreate เป็นคำสั่งสำหรับเปิดหน้าเว็บ รูปแบบคำสั่ง _IECreate ("ชื่อเว็บที่จะเปิด")

_IEFormGetObjByName เป็นคำสั่งสำหรับโฟกัสไปยังฟอร์มที่ระบุชื่อเอาไว้ รูปแบบคำสั่ง _IEFormGetObjByName("ชื่อตัวแปรของเว็บที่ต้องการอ้างอิง","ชื่อฟอร์มที่ต้องการโฟกัส")

_IEFormElementGetObjByName เป็นคำสั่งสำหรับโฟกัสไปยังวัตถุที่ระบุชื่อในฟอร์ม รูปแบบคำสั่ง _IEFormElementGetObjByName("ชื่อตัวแปรของฟอร์มที่ต้องการอ้างอิง","ชื่อวัตถุที่อยู่ในฟอร์ม")

_IEFormElementSetValue เป็นคำสั่งสำหรับตั้งค่าวัตถุที่อยู่ในฟอร์ม โดยเราสามารถส่งค่าเข้าไปได้ รูปแบบคำสั่ง _IEFormElementSetValue ("ชื่อตัวแปรของวัตถุที่ต้องการอ้างอิง","ค่าที่เราต้องการส่งเข้าไป")

_IEFormSubmit เป็นคำสั่งสำหรับคลิกปุ่มชนิด Submit ปุ่มแรกที่อยู่ในฟอร์ม ซึ่งตามปกติแล้วในหนึ่งฟอร์มจะมีปุ่มชนิดนี้อยู่ 1 ปุ่ม เพื่อทำหน้าที่ส่งข้อมูลที่เรากรอกเสร็จไปยังเซิร์ฟเวอร์ รูปแบบคำสั่ง _IEFormSubmit (ชื่อตัวแปรของฟอร์มที่ต้องการให้กดปุ่มชนิด Submit)

     สำหรับการสร้างตัวแปรเพื่อเก็บค่าต่างๆ ทำได้ด้วยการพิมพ์ $ แล้วตามด้วยชื่อตัวแปร เช่น $IE และใช้เครื่องหมาย = ต่อท้ายเพื่อดึงเอาค่าที่ได้จากการใช้คำสั่งมาเก็บไว้ในตัวแปรนั้นๆ เช่น $IE = _IECreate ("http://www.google.co.th/")

     ต่อไปตัวอย่างคำสั่งที่ใช้เขียนการส่งข้อมูลในเว็บ google โดยผมจะส่งคำว่า pssix.blogspot.com ลงไปในช่องพิมพ์ค้นหา แล้วสั่งให้คลิกปุ่ม "ค้นหาด้วย google" ขอให้ดูรูปประกอบคำสั่งนะครับจะได้เข้าใจยิ่งขึ้น

#include << ie.au3 >>
$IE = _IECreate ("http://www.google.co.th/")
; เปิดเว็บ google แล้วดึงเอาเว็บเข้ามาสู่ตัวแปร $IE (ดูลูกศร A)

$Form = _IEFormGetObjByName ($IE, "f")
;สั่งโฟกัสไปที่ฟอร์ม f (ดูลูกศร B)

$Query = _IEFormElementGetObjByName ($Form, "q")
;สั่งโฟกัสไปยังช่องพิมพ์คำค้นหาที่ชื่อ q (ซึ่งอยู่ในฟอร์ม f ที่เราโฟกัสไปก่อนหน้านี้)(ดูลูกศร C)

_IEFormElementSetValue ($Query, "pssix.blogspot.com")
;สั่งให้ตั้งค่าช่องพิมพ์คำค้นหาด้วยคำว่า pssix.blogspot.com (ดูลูกศร D)

_IEFormSubmit ($Form)
;คลิกปุ่ม Submit "ค้นหาด้วย google" ซึ่งอยู่ในฟอร์ม f (ดูลูกศร E)



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


1 comments:

  1. เป็นบทความที่มีประโยชน์มากๆครับ

    ReplyDelete

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


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