ส่วนนี้เป็นการสอนเขียนโปรแกรม หากคุณต้องการที่ทำเสร็จแล้ว ดาวน์โหลดได้ตามลิงก์นี้ครับPSsix Auto Comment Hi5 โปรแกรมช่วยคอมเมนต์อัตโนมัติ Hi5 |
ก่อนอื่นขอบอกกล่าวกันสักนิด บางท่านบ่นๆ บอกจะยืดเนื้อหาไปถึงไหน ไม่เข้าเรื่องสร้างโปรแกรม Auto Comment สักที ก็ต้องขออภัยมา ณ ที่นี้ด้วย เนื่องจากผมยังไม่ได้สมัคร Hi5 แต่ถ้าอ่านเนื้อหามาตั้งแต่ต้นก็คงพอคลำทางสร้างโปรแกรมได้บ้างแล้ว มีข้อสงสัยถามได้ที่บอร์ดเลยครับ
และหลังจากบทความตอนนี้แล้ว ผมขอหยุดเขียนบทความเรื่อง Auto Comment เอาไว้สักพักก่อน(รอสมัคร Hi5 แล้วจะมาเขียนต่อ) ขอเสริมบทความด้านอื่นๆ เข้ามาบ้าง ไม่อย่างนั้นบล็อคจะมีแต่บทความ Autoit เต็มหน้าเว็บ
สำหรับวันนี้ จะศึกษาคำสั่งในการค้นหาลิงก์ที่ต้องการในเว็บ แล้วสั่งให้คลิก หรือทำงานอย่างอื่นตามเงื่อนไขที่กำหนด ขออธิบายตัวโปรแกรมที่จะสร้างกันก่อนนะครับ ตัวอย่างโปรแกรมนี้จะทำงานตามลำดับขั้นตอนนี้คือ
1. เปิดหน้าเว็บบอร์ด (1)
2. ค้นหาลิงก์กระทู้ต่างๆ ที่อยู่ในหน้าเว็บบอร์ด แล้วเข้าไปพิมพ์ข้อความลงไป(2)
3 พิมพ์เสร็จก็ปิดหน้ากระทู้นั้น แล้วเปิดกระทู้ใหม่ เข้าไปพิมพ์อีก จนครบทุกกระทู้ในหน้าเว็บ(3)
โดยคำสั่งที่เราจะศึกษาเพิ่มเติมในตอนนี้คือ
_IELinkGetCollection เป็นคำสั่งสำหรับดึงเอาลิงก์ที่อยู่ในหน้าเว็บเพจขณะนั้นทั้งหมดออกมา รูปแบบคำสั่งคือ _IELinkGetCollection(ชื่อตัวแปรของหน้าเว็บเพจที่จะให้ดึงเอาลิงก์ออกมา) ตัวอย่างการใช้คำสั่ง เช่น
$oLinks = _IELinkGetCollection($oIE)
StringInStr เป็นคำสั่งสำหรับเช็คข้อความที่อยู่ภายในตัวแปรที่กำหนด คำสั่งนี้เราจะนำมาใช้ในการเช็คชื่อลิงก์ เพื่อตรวจสอบว่าลิงก์ที่ดึงเอามานั้นเป็นลิงก์ของกระทู้ต่างๆ หรือไม่ เพราะในหนึ่งหน้าเว็บจะประกอบด้วยลิงก์มากมาย รูปแบบคำสั่งคือ StringInStr(ตัวแปรที่จะตรวจสอบข้อความภายในตัวแปร,"ข้อความที่จะใช้ในการตรวจสอบ") ตัวอย่างการใช้งานคำสั่ง
StringInStr($oLink.href,"test")
_IEQuit เป็นคำสั่งสำหรับใช้ในการปิดหน้าต่าง IE ที่อยู่ในตัวแปร เอาไว้ใช้สำหรับปิดหน้าต่างกระทู้ที่เราเข้าไปพิมพ์ข้อความ เพราะถ้าไม่ใช้คำสั่งหน้าโปรแกรมที่เราทำขึ้นมาจะเปิดหน้าต่างขึ้นมามากมายตามจำนวนลิงก์กระทู้ในหน้าเว็บบอร์ด รูปแบบคำสั่งคือ_IEQuit (ชื่อตัวแปรของหน้าเว็บ) ตัวอย่างการใช้งานคำสั่ง
_IEQuit ($oIE2)
For...In...Next เป็นคำสั่งสำหรับการนับอาเรย์(Array) ที่บรรจุอยู่ในค่าตัวแปร คำสั่งนี้เราจะนำมาใช้คู่กับคำสั่ง _IELinkGetCollection เนื่องจากตัวแปรดึงข้อมูลมาจากคำสั่ง _IELinkGetCollection จะเป็นตัวแปรแบบอาเรย์ที่บรรจุลิงก์เอาไว้จำนวนมาก รูปแบบคำสั่งมีดังนี้
For (ชื่อตัวแปรที่จะเก็บค่าที่ดึงจากอาเรย์มาตรวจสอบ) In (ชื่อตัวแปรที่เก็บข้อมูลแบบอาเรย์เอาไว้ ซึ่งมาจากคำสั่ง _IELinkGetCollection)
Next เป็นคำสั่งปิดท้ายหลังจากตรวจสอบค่าที่อยู่ในอาเรย์จนหมดแล้ว ก็จะทำตามคำสั่งที่อยู่ถัดจากคำสั่ง Next นี้
ตัวอย่างการใช้งานคำสั่งทั้งหมดเมื่อเขียนออกมาแล้วจะได้ดังนี้
#include <IE.au3>
$oIE = _IECreate ("http://bbznet.pukpik.com/scripts2/board.php?p=6&board=1&user=psix&view_type=&order=numtopic&c=1")
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
If StringInStr($oLink.href,"board=1&id=") Then
$oIE2 = _IECreate ($oLink)
$Form = _IEFormGetObjByName ($oIE2, "form1")
$Query = _IEFormElementGetObjByName ($Form, "message")
_IEFormElementSetValue ($Query, "สวัสดี")
_IEFormSubmit ($Form)
_IELoadWait($oIE2)
_IEQuit ($oIE2)
EndIf
Next
อธิบายคำสั่ง
#include <IE.au3>
;ดึงเอา Library เพื่อควบคุม IE เข้ามาในสคริปต์
$oIE = _IECreate ("http://bbznet.pukpik.com/scripts2/board.php?p=6&board=1&user=psix&view_type=&order=numtopic&c=1")
;เปิดเว็บบอร์ดในหน้าที่ 6
$oLinks = _IELinkGetCollection($oIE)
;ดึงเอาลิงก์ทั้งหมดในหน้าเว็บบอร์ดเข้ามาอยู่ในตัวแปร $oLinks
For $oLink in $oLinks
;ดึงเอาค่าที่เก็บไว้ในอาเรย์ที่อยู่ในตัวแปรมาแยกประมวลผลทีละค่า
If StringInStr($oLink.href,"board=1&id=") Then ;ใส่คำสั่งตรวจสอบข้อความที่อยู่ในค่านั้น(คือตรวจสอบลิงก์แต่ละอันนั่นเอง) ถ้าหากเจอก็ค่าที่ต้องการก็ทำตามเงื่อนไขที่กำหนดดังนี้
$oIE2 = _IECreate ($oLink)
;เปิดลิงก์นั้นในหน้าต่างใหม่ แล้วดึงเอาหน้าต่างนั้นมาเก็บไว้ในตัวแปร $oIE2
$Form = _IEFormGetObjByName ($oIE2, "form1") ;สั่งโฟกัสไปที่ฟอร์มชื่อ form1
$Query = _IEFormElementGetObjByName ($Form, "message") ;สั่งโฟกัสไปที่ช่องกรอกข้อความในกระทู้ ที่ชื่อ message (การหาชื่อฟอร์มพวกนี้อยู่ในตอนที่ 1)
_IEFormElementSetValue ($Query, "สวัสดี")
;สั่งให้ส่งข้อความว่า สวัสดี ไปยังช่องกรอกข้อความที่โฟกัสเอาไว้
_IEFormSubmit ($Form)
;สั่งคลิกปุ่มส่งข้อความในหน้าเว็บ
_IELoadWait($oIE2)
;สั่งให้รอให้เว็บโหลดจนเสร็จ
_IEQuit ($oIE2)
;เมื่อโหลดเสร็จก็สั่งปิดหน้าเว็บนั้น
EndIf
;จบเงื่อนไขการตรวจสอบข้อความในลิงก์ กลับไปวนซ้ำเพื่อประมวลผลค่าลิงก์ต่อไปจนครบ
Next
;เมื่อประมวลผลจนครบหมดทุกลิงก์แล้ว ก็ทำตามคำสั่งที่อยู่หลังคำสั่ง Next (ตามตัวอย่างนี้ไม่มีคำสั่งอะไรอีกแล้ว)
หลังจากเขียคำสั่งเสร็จ แล้วทดลองทำ เราก็จะได้หน้าเว็บที่มีการโฟสกระทู้ทุกลิงก์ ดังรูปด้านล่างนี้
###จบแล้วครับ###
ติดตามๆ น่าสนใจมากๆคับ
ReplyDelete