1. วิธีเพิ่มรายการเมนูลงในเมนูคลิกขวาของ IE
เพื่อนที่เคยใช้ Netants อาจจะรู้ว่า NetAnts ได้เพิ่มฟังก์ชั่นเมนูคลิกขวาใน IE ตราบใดที่คุณคลิกขวาที่ลิงค์หรือรูปภาพบนเพจแล้วเลือก Down By Netants ในเมนู คุณสามารถเรียก Netants เพื่อดาวน์โหลดได้ ไฟล์ที่ชี้ไปตามลิงค์ ในบทความนี้ ผู้เขียนจะแนะนำวิธีการใช้ฟังก์ชันดังกล่าวผ่าน VB
หากต้องการใช้ฟังก์ชันการเพิ่มรายการเมนูลงในเมนูคลิกขวาของ IE จะต้องปฏิบัติตามขั้นตอนต่อไปนี้ตามลำดับ:
1. สร้างรายการใหม่ภายใต้รายการ HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt ในรีจิสทรี ชื่อของรายการจะปรากฏเป็นชื่อเรื่องในเมนู ตัวอย่างเช่น ชื่อของรายการเมนูที่คุณต้องการสร้าง เพิ่ม URL แล้วชื่อของรายการใหม่คือ
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExtเพิ่ม URL
2. ตั้งค่าเริ่มต้นของรายการใหม่เป็นที่อยู่ URL เมื่อผู้ใช้คลิกที่รายการเมนู IE จะเรียกสคริปต์ในหน้าที่ชี้ไปที่ URL ในสคริปต์ของหน้าเป้าหมาย ให้เข้าถึงแอตทริบิวต์ menuArguments ของออบเจ็กต์ภายนอกที่ IE จัดเตรียมไว้ คุณสามารถเข้าถึงออบเจ็กต์ต่างๆ ในเพจใน IE ได้ เช่น ลิงก์ รูปภาพ ช่องแบบฟอร์ม ข้อความที่เลือก เป็นต้น สำหรับความช่วยเหลือโดยละเอียด โปรดดูที่ MSDN เกี่ยวกับออบเจ็กต์ InternetExplore
ด้วยความช่วยเหลือ คุณสามารถเข้าใจสคริปต์ต่อไปนี้ได้ดีขึ้นหากคุณคุ้นเคยกับวัตถุ Window
สำหรับปัญหาในการใช้โปรแกรมของเราเองเพื่อเข้าถึง menuArguments เราสามารถทำตามแนวทางของ Netants และสร้าง
วัตถุ OLE Automation และจากนั้น เรียกวัตถุในสคริปต์ และส่งข้อมูลเพจไปยังวัตถุสำหรับการประมวลผล ต่อไปเราต้องสร้างวัตถุผ่าน VB ก่อน:
เปิด VB คลิกเมนู: ไฟล์ | ใหม่ เลือก ActiveX Dll ในหน้าต่างโครงการใหม่และกดปุ่ม OK เพื่อสร้าง ActiveX DLL
โครงการ. จากนั้นเปลี่ยนคุณสมบัติชื่อของ Class1 เป็น NetAPI ในหน้าต่างรายการโครงการ จากนั้นเพิ่มรหัสต่อไปนี้ในหน้าต่างรหัส NetAPI:
AddURL ย่อยสาธารณะ (URL เป็นสตริง, ข้อมูลเป็นสตริง)
ข้อมูล MsgBox, vbOKOnly, URL
จบหมวดย่อย
บันทึกไฟล์และบันทึกไฟล์โครงการเป็น NetSamp.vbp จากนั้นเลือกไฟล์ | สร้าง NetSamp.dll ในเมนูเพื่อสร้างไลบรารีลิงก์แบบไดนามิกของวัตถุ
ถัดไปคือไลบรารีการลงทะเบียน ค้นหา Regsvr32.exe ในไดเร็กทอรี Windows จากนั้นคัดลอกไปยังไดเร็กทอรีที่มี netsamp.dll อยู่
ลากไอคอนของ netsamp.dll ไปยัง Regsvr32.exe แล้วปล่อย ในเวลานี้ Regsvr32.exe จะแสดงกล่องโต้ตอบขึ้นมาเพื่อแจ้งว่าการลงทะเบียนวัตถุสำเร็จ
เปิด UltraEdit (หรือโปรแกรมแก้ไขข้อความอื่น) และป้อนโค้ดสคริปต์ต่อไปนี้ลงในโปรแกรมแก้ไข:
<script language = "VBScript">
ย่อย OnContextMenu ()
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ตั้งค่า srcEvent = external.menuArguments.event
ตั้งค่า EventElement = external.menuArguments.document.elementFromPoint (srcEvent.clientX, srcEvent.clientY)
ตั้ง objNetSamp=CreateObject("NetSamp.NetAPI")
ถ้า srcEvent.type = "MenuExtAnchor" แล้ว
ตั้งค่า srcAnchor = EventElement
ทำจนถึง TypeName(srcAnchor)="HTMLANchorElement"
ตั้งค่า srcAnchor=srcAnchor.parentElement
วนซ้ำ
โทร objNetSamp.AddUrl(srcAnchor.href,srcAnchor.innerText)
elseif srcEvent.type="MenuExtImage" แล้ว
ถ้า TypeName(EventElement)="HTMLAreaElement" แล้ว
โทร objNetSamp.AddUrl (EventElement.href,EventElement.Alt)
อื่น
ตั้งค่า srcImage = EventElement
ตั้งค่า srcAnchor = srcImage.parentElement
ทำจนถึง TypeName(srcAnchor)="HTMLANchorElement"
ตั้งค่า srcAnchor=srcAnchor.parentElement
ถ้า TypeName(srcAnchor)="Nothing" แล้ว
โทร objNetSamp.AddUrl (srcImage.href, srcImage.Alt)
ทางออกย่อย
สิ้นสุดถ้า
วนซ้ำ
โทร objNetSamp.AddUrl (srcAnchor.href, srcImage.Alt)
สิ้นสุดถ้า
elseif srcEvent.type="MenuExtUnknown" แล้ว
ตั้งค่า srcAnchor = EventElement
ทำจนถึง TypeName(srcAnchor)="HTMLANchorElement"
ตั้งค่า srcAnchor=srcAnchor.parentElement
ถ้า TypeName(srcAnchor)="Nothing" แล้ว
โทร objNetSamp.AddUrl (EventElement.href,EventElement.innerText)
ทางออกย่อย
สิ้นสุดถ้า
วนซ้ำ
โทร objNetSamp.AddUrl(srcAnchor.href,srcAnchor.innerText)
สิ้นสุดถ้า
จบย่อย
callOnContextMenu()
</script>
บันทึกไฟล์ลงในไฟล์ c:program ด้วยชื่อไฟล์ geturl.htm
ดังที่คุณเห็นจากสคริปต์ด้านบน ขั้นแรกให้เข้าถึงคุณสมบัติ external.menuArguments เพื่อรับอ็อบเจ็กต์ที่ผู้ใช้คลิกปุ่มเมาส์ขวา จากนั้นรับ URL ตามอ็อบเจ็กต์ จากนั้นสร้างอ็อบเจ็กต์ IEContextMenu.IEMenu1 และเรียก AddURL ของอ็อบเจ็กต์ วิธี.
ขั้นตอนต่อไปคือการสร้างรายการลงทะเบียนสำหรับเมนูคลิกขวา เปิด UltraEdit (หรือโปรแกรมแก้ไขข้อความอื่น) และป้อนข้อมูลการลงทะเบียนต่อไปนี้ลงในโปรแกรมแก้ไข
ตัวแก้ไขรีจิสทรีของ Windows เวอร์ชัน 5.00
[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt&รับ URL]
@="c:\ไฟล์โปรแกรม\geturl.htm"
"บริบท"=dword:00000022
บันทึกไฟล์ที่มี reg เป็นส่วนต่อท้าย จากนั้นดับเบิลคลิกไฟล์ใน Windows Explorer เพื่อเพิ่มคีย์การลงทะเบียนลงในรีจิสทรี จากนั้นเปิดขึ้นมา
IE คลิกขวาที่ลิงก์หรือรูปภาพ จากนั้นรายการรับ URL จะปรากฏในเมนูป๊อปอัป คลิกรายการนี้ และกล่องข้อความจะปรากฏขึ้นเพื่อแสดงที่อยู่ URL ของลิงก์หรือรูปภาพที่ถูกคลิก
ขอแนะนำบทบาทของรายการบริบทในรายการลงทะเบียนข้างต้น คุณสามารถระบุได้ว่ารายการเมนูใดที่จะปรากฏเมื่อคุณคลิกขวาที่วัตถุใน IE ซึ่งอาจเป็นชุดค่าผสม "หรือ" ต่อไปนี้:
ค่าวัตถุ
ค่าเริ่มต้น 0x1
รูปภาพ 0x2
ควบคุม 0x4
ฟิลด์แบบฟอร์ม 0x8
เลือกข้อความ 0x10
จุดยึด 0x20
ตัวอย่างเช่น ด้านบนเราต้องการให้รายการเมนูปรากฏขึ้นเมื่อผู้ใช้คลิกที่รูปภาพหรือไฮเปอร์ลิงก์ จากนั้นเราตั้งค่าเป็น dword:00000022 ซึ่งหมายความว่าเมนูจะปรากฏขึ้นเมื่อผู้ใช้คลิกที่รูปภาพหรือจุดยึด จุดยึดคือวัตถุบนหน้าที่อธิบายไฮเปอร์ลิงก์ หากไม่ได้ตั้งค่ารายการบริบท รายการเมนูจะปรากฏในเมนูคลิกขวาเมื่อคลิกที่วัตถุใดๆ
จากการแนะนำโปรแกรมข้างต้น เราจะเห็นขั้นตอนการทำงานของเมนูคลิกขวาของเมาส์ IE ตามที่กล่าวไว้ข้างต้น Netants ใช้วิธีนี้ในการเรียก NetAnts โดยการสร้างอ็อบเจ็กต์ในสคริปต์ ถ้าเราติดตั้ง NetAnts เราสามารถเรียก NetAnts ในโปรแกรมได้โดยการเรียกอ็อบเจ็กต์ NetAnts
สร้างโปรเจ็กต์ใหม่ คลิกรายการ Projects | การอ้างอิง ในเมนู และเลือกรายการไลบรารีประเภท AntAPI 1.0 หากไม่ได้คลิกปุ่มเบราว์เซอร์ ให้เลือก NetAPI.dll ในไดเร็กทอรี Network Ant ในกล่องรายการไฟล์ แล้วกดปุ่ม Open สำคัญ. เพิ่ม CommandButton ใน Form1
เพิ่มรหัสต่อไปนี้ในเหตุการณ์ Command1_Click:
มดดำเหมือนใหม่ ANTAPILib.AntAPIObj
ant.AddUrl " http://www.downcodes.com/ "
คลิก command1 จากนั้น NetAnts จะทำงาน และ 7. HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions<Your GUID> ในรีจิสทรี
สร้างค่าประเภทสตริงใหม่ชื่อ Clsid และตั้งค่าเป็น {1FBA04EE-3024-11D2-8F1F-0000F87ABD16}
8. ในรีจิสทรี HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions< GUID ของคุณ>
สร้างค่าประเภทสตริงใหม่ชื่อ Exec ค่านี้จะกำหนดชื่อพาธแบบเต็มของไฟล์ที่จะรันหลังจากคลิกปุ่ม เช่น:
c:program filessamplesnet.exe
ตัวอย่างเช่น เนื้อหาของคีย์รีจิสทรีปุ่ม NetAnts เป็นดังนี้:
Windows Registry Editor เวอร์ชัน 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions{57E91B47-F40A-11D1- B792 -444553540000}]
"CLSID"="{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}"
"ค่าเริ่มต้นมองเห็นได้"="ใช่"
"HotIcon"="C:\PROGRA~1\NETANTS\NetAnts.exe,1001"
"ไอคอน"="C:\PROGRA~1\NETANTS\NetAnts.exe,1000"
"Exec"="C:\PROGRA~1\NETANTS\NetAnts.exe"
"ButtonText"="NetAnts"
"MenuText"="&NetAnts"
"MenuStatusBar"="Launch NetAnts"
Netants จะถูกเปิดใช้งานเมื่อมีการคลิกปุ่ม NetAnts สองรายการต่อไปนี้ในคีย์รีจิสทรีด้านบน: ปุ่ม MenuText จะเพิ่มรายการเมนูลงในแถบ "เครื่องมือ" ของเมนู และปุ่ม MenuStatusBar จะกำหนดข้อความพร้อมท์ที่จะแสดงในแถบสถานะเมื่อเคอร์เซอร์ย้ายไปยังเมนูที่เพิ่ม บาร์. นอกจากนี้ในทะเบียน
คุณยังสามารถเพิ่มไฟล์ชื่อ
ค่าประเภทสตริงของ MenuCustomize การตั้งค่านี้เป็น "วิธีใช้" จะทำให้รายการเมนูปรากฏในแถบเมนู "วิธีใช้" มิฉะนั้นจะปรากฏในแถบ "เครื่องมือ"
แน่นอนว่าเราจะไม่พอใจกับการเพิ่มปุ่มและรันโปรแกรม เราหวังว่าจะสามารถควบคุมหน้าปัจจุบันได้เมื่อผู้ใช้คลิกปุ่ม ซึ่งอยู่ใน HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions ของรีจิสทรี <คำแนะนำของคุณ>
สร้างค่าประเภทสตริงใหม่และตั้งชื่อเป็นชื่อเส้นทางแบบเต็มของไฟล์ html เช่นเดียวกับการเพิ่มเมนูคลิกขวาที่แนะนำก่อนหน้านี้ IE จะเรียกไฟล์หลังจากคลิกปุ่ม และเข้าถึงได้โดยการตั้งค่า VBScript ใน ไฟล์ คุณสมบัติ menuArguments ของวัตถุภายนอกสามารถรับหน้าในเบราว์เซอร์ ตัวอย่างเช่น เราจะ HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerExtensions<Your GUID>VBScript
ตั้งค่าเป็น c:program filessamp.htm จากนั้นสร้างไฟล์ชื่อ Samp.htm ใต้ไฟล์ c:program และป้อนเนื้อหาสคริปต์ต่อไปนี้ในไฟล์:
<script language="VBScript">
ตั้งค่า objNetSamp=CreateObject("IEContextMenu.IEMenu1")
userURL=external.menuArguments.location.href
โทร objNetSamp.AddUrl(userURL,"")
</script>
เปิดเบราว์เซอร์ IE คลิกปุ่มใหม่ จากนั้นกล่องโต้ตอบจะปรากฏขึ้นเพื่อแสดง URL ของหน้าปัจจุบัน โปรดทราบว่ารายการนี้ไม่สามารถใช้พร้อมกันกับรายการ Exec ที่ตั้งไว้ก่อนหน้านี้ได้
สุดท้ายนี้ สำหรับไอคอนปุ่ม IE ต้องใช้ไอคอนสองขนาด: 20x20 และ 16x16 ไอคอนแบบแรกใช้สำหรับแสดงผลในสถานะปกติ และแบบหลังใช้สำหรับแสดงผลแบบเต็มหน้าจอ ดังนั้นทรัพยากรของไอคอนที่ชี้โดย HotIcon และไอคอนด้านบนควร เป็นการรวมกันของสามไอคอน
ไอคอน 16x16 16 สี (จำเป็น)
ไอคอน 16 สีขนาด 20x20 (ไม่บังคับ)
ไอคอนขนาด 20x20 256 สี (จำเป็น)
เมื่อออกแบบไอคอน ไอคอน 256 สีควรใช้ชุดสีฮาล์ฟโทนของ Windows ในขณะที่ไอคอน 16 สีควรใช้ชุดสี Windows 16
http://www.cnblogs.com/goody9807/archive/2006/12/04/581359.html