พบกันอีกครั้ง สำหรับบทความที่เกี่ยวข้องกับ Visual Basic งานนี้ผมมากับคอนโทรลที่ชื่อว่า WebBrowser Control ซึ่งเป็น
คอมโพเนนท์ที่ให้เราสามารถที่จะสร้างส่วนของ WebBrowser เอาไว้ข้างในได้
แถมยังหากได้ศึกษาการเขียนโปรแกรมนี้ แบบลึกๆแล้ว ผมคิดว่าคงเกิดแนวคิดใหม่ๆในการพัฒนาโปรแกรมต่างๆ
ได้อีกมากมาก
สำหรับต้นตอของบทความนี้ เกิดจากการที่ผมได้ข่าวไปอ่านกระทู้ที่
Pantip.com ซึ่งมีผู้ตั้งกระทู้ถาม
เรื่องการ Disable การคลิกเมาส์ขวาบน WebBrowser ที่สร้างในโปรแกรมของตัวเอง
ช่วงแรกที่ผมยังไม่ได้ศึกษาเรื่องเกี่ยวกับ IHTTPDocument ก็เลยตอบไป 1 วิธี(ที่คิดออกในตอนนั้น)
คือใช้วิธี Get ไฟล์ html นั้นๆมา แล้วทำการแก้ไข โดยใส่ code ที่เป็น JavaScript
ที่ใช้การตรวจสอบการคลิกของผู้ใช้ เข้าไป จากนั้นก็ใช้ WebBrowser โหลดไฟล์นั้นขึ้นมา
แต่...ดูเหมือนว่า วิธีดังกล่าวไม่ค่อยเวิร์คเท่าไหร่ เลยหาข้อมูลไปเรื่อยๆ
จนไปพบบทความที่เขียนโดย Mr. Richie Simenetti ก็พบคำตอบ ถึงวิธีการ ที่ทำได้อีกวิธีนึง
พูดกันมาซะยาว งานนี้ก็มาทดลองเขียนโปรแกรมกัน
เลยและกันครับ โดยเริ่มจากเปิดโปรแกรม Microsoft Visual Basic เลือกสร้างโปรเจ็ก
Standard EXE แล้วทำตามขั้นตอนดังนี้
1. ทำการเลือก Internet WebBrowser
Control และ Microsoft HTML Object Library จากเมนู Project->Components
ดังแสดงในรูป
2. จะปรากฏ Control ที่เราเลือกที่ไว้จากขั้นตอนที่แล้วบน
ToolBox ให้ทำการเลือก Control ต่างๆตามตาราง แล้วจัดวางดังรูป
Name |
Property |
Value |
Text1 |
Text |
[ว่าง] |
CommandButton1 |
Caption |
&Go |
WebBrowser1 |
� |
� |
3. ทำการคัดลอกโค้ดนำไปใส่ในส่วน View
Code
Private WithEvents HDoc As HTMLDocument
Private Sub Command1_Click()
If Text1.Text <> "" Then WebBrowser1.Navigate Text1.Text
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "about:blank"
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If (pDisp Is WebBrowser1.Object) Then
Set HDoc = WebBrowser1.Document
End If
End Sub
Private Sub HDoc_onMouseDown()
Dim Elem As IHTMLElement
Set Elem = HDoc.parentWindow.event.srcElement
If HDoc.parentWindow.event.button = 2 Then
Dim msg As String
Select Case UCase$(Elem.tagName)
Case "A": MsgBox "tag : A href= " & Elem.href
Case "BODY": MsgBox "tag : BODY"
Case "IMG": MsgBox "tag : IMG src= " & Elem.src
End Select
End If
End Sub
|
4. เมื่อเสร็จแล้ว ก็ทดลอง Run โปรแกรมกันเลยครับ
ทดลองพิมพ์ URL ที่ต้องการแล้วกดปุ่ม Go , และเมื่อทำการโหลด Web ที่ต้องการเป็นที่เรียบร้อยแล้ว
ให้ทดลองคลิกขวาไปยังส่วนต่างๆ จะปรากฏผลดังรูป
***หมายเหตุ หากคุณทดสอบกับบางเว็บที่ใช้ Frame จะไม่ได้ผลดังรูปนะครับ
(ไม่เชื่อลองกับ www.sourcecode.in.th ดูสิ) เหตุผล อยู่ในช่วงของการอธิบายโปรแกรมครับ
อธิบายโปรแกรม
มาถึงช่วงของการอธิบายโปรแกรมกันแล้วนะครับ จะได้รู้กันซะทีว่าอะไรมันเป็นอะไร
ก่อนอื่นเรามาเริ่มจาก
Private WithEvents HDoc As HTMLDocument
เป็นส่วนของการประกาศตัวแปรแบบ HTMLDocument
เพื่อใช้ในการติดต่อกับไฟล์ HTML พร้อมทั้งสามารถเขียนโปรแกรม ในส่วน Event
ได้ด้วย ดังแสดงอยู่ในส่วนของ Private
Sub HDoc_onMouseDown ซึ่งเป็น Event ที่เกิดขึ้น
เมื่อมีการ คลิกบนเอกสาร HTML
ส่วนสำคัญอีก 1อย่าง ก็คือ Event WebBrowser1_DocumentComplete
ที่จะเกิดขึ้นเมื่อWebBrowser ทำการ โหลด เอกสาร HTML มาเรียบร้อยแล้ว ต่อมาเราจะทำการตรวจสอบว่าเอกสารที่ได้มานั้นเป็นเอกสาร
ที่เป็น HTML อย่างเดียวหรือเปล่า ถ้าใช่ จะทำการกำหนด เอกสารที่ได้ให้กับ
ตัวแปร HDoc ที่เราสร้างขึ้น (ในบางกรณีที่ไม่ใช่
เกิดจาก ไฟล์ HTML ที่เราโหลดนั้นมีการแบ่ง Frame ครับ ทดลองดูได้ครับอันนี้)
และสุดท้ายที่เราจะพูดถึงกันก็คือส่วนของ
Sub HDoc_onMouseDown
ที่จะถูกเรียกใช้มือมีการคลิกที่เอกสาร
เราจะทำการ สร้างตัวแปร แบบ IHTMLElement มารับค่าของ Object ที่ถูก Event
ต่างๆ กระทำ ทำให้เรารู้ถึง
tag และ property ของเอกสาร HTML ครับ
ปิดท้าย
โปรแกรมนี้อธิบายได้ค่อนข้างยากขึ้นมานิดหน่อยนะครับ ก็อยากให้เพื่อนๆลองไล่โค้ดดู
ก็คงพอจะเข้าใจกันนะครับ หากมีข้อสงสัย ก็เมล์มาถามกันได้ที่ webmaster@sourcecode.in.th
แล้วพบกันใหม่ กับ 9'M ครับ:-P |