I. QUÁ TRÌNH THIẾT KẾ HỆ THỐNG SỐ.
Internet Explorer
rất nhiều chức năng thú vị, tiện dụng. Một vấn đề khác cũng quan trọng không kém là các phần mềm của hãng thứ ba. Chính vì thế nên Microsoft cũng cung cấp rất nhiều cách để các lập trình viên có thể tiếp cận được với Internet Explorer. Một trong những “thứ thú vị” đó là tùy biến Context Menu của IE (Menu hiện ra khi bạn click chuột phải vào trang Web).
Nếu như bạn đã dùng IE, hẳn bản phải biết mỗi khi chúng ta nhấp chuột phải vào một Picture thì sẽ có một Menu xuất hiện cho phép sử dụng Picture đó làm Wallpaper, làm sao chương trình biết được chính xác bạn đã chọn hình nào? Hay như các chương trình hỗ trợ việc Download (NetAnts ...), mỗi khi bạn nhấp chuột phải vào một link, thì sẽ xuất hiện một menu con của chương trình giúp bạn Download link đã chọn, làm sao chương trình đó nhúng menu của nó vào menu của IE và làm sao chương trình đó biết được bạn đã chọn Link nào?
1.Nhúng Menu của bạn vào Menu của Internet Explorer
Để thêm một MenuItem vào Menu của IE rất đơn giản, bạn chỉ cần tạo một khóa (subkey) trong Registry ở khóa HKEY_CURRENT_USER \Software\
Microsoft\Internet Explorer\MenuExt\
. Nếu bạn không biết sử dụng Registry thì hãy tìm hiểu một chút về Registry rồi tiếp tục.
Tên của khóa chính là Caption của Menu mà bạn muốn thêm vào. Bạn có thể sử dụng kí tự “&” để xác định kí tự sẽ được gạch chân. Kí tự đứng ngay sau “&” sẽ được gạch chân (phím tắt). Đặt giá trị Default của nó là đường dẫn của tập tin mà bạn muốn nó chạy mỗi khi người dùng click vào menu mà bạn mới tạo ra. Ví dụ bạn muốn tạo một Menu có tên là My Cool Menu, mỗi khi click vào Menu này thì sẽ chạy chương trình Notepad (Nói trước để bạn khỏi phải bực mình, nó sẽ không hoạt động như ta mong muốn), thì bạn sẽ tạo một khóa như trong hình minh họa. Và bạn hãy mở
Tùy biến Menu ngữ cảnh của
Internet Explorer
Huỳnh Phúc Hưng (Nicky)
IE ngay để xem kết quả. Thật tuyệt là Menu của bạn đã xuất hiện nhưng nếu bạn click vào đó thì sẽ chẳng có chương trình Notepad nào được gọi cả. Tại sao lại như vậy? Bạn cứ bình tĩnh đọc tiếp rồi sẽ rõ, hãy cứ tạm “ấm ức” như vậy cái đã.
Bạn sẽ nhận thấy một điều là Menu của bạn sẽ luôn xuất hiện khi người dùng nhấp chuột phải, nhưng bạn lại muốn Menu của bạn chỉ xuất hiện khi người dùng nhấp chuột phải vào một link hay một Picture thì sao ?. Bạn chỉ cần tạo một Value (kiểu REG_DWORD) mới tên là Contexts và đặt giá trị cho nó là 22 như hình minh họa ở trên. Tại sao nó phải là 22 (ở hệ Hex). Đây là kết quả khi bạn sử dụng kĩ thuật bit mask, dùng phép toán OR để tổng hợp từ các giá trị sau đây. CONTEXT_MENU_DEFAULT : 0x1 CONTEXT_MENU_IMAGE : 0x2 CONTEXT_MENU_CONTROL : 0x4 CONTEXT_MENU_TABLE : 0x8 CONTEXT_MENU_TEXTSELECT : 0x10 CONTEXT_MENU_ANCHOR : 0x20 CONTEXT_MENU_UNKNOWN : 0x40
Ví dụ ở đây bạn cần hiển thị Menu khi click chuột phải vào Link và Picture, bạn sẽ phải chuyển 20 và 2 (ở hệ thập lục phân) sang hệ nhị phân, sau đó tổng hợp bằng phép toán OR và cuối cùng là chuyển giá trị nhị phân trở lại thập lục phân (Hex). Bạn hoàn toàn có thể kiểm tra lại bằng tay. Nếu bạn không rõ lắm về kĩ thuật này thì cũng đừng lo lắng.
Bây giờ ta hãy xem vì sao khi click vào menu bạn vừa chọn lại không có chuyện gì xảy ra nhé. Đó là vì chúng ta đã làm không đúng với những gì mà IE mong đợi, giá trị default phải là đường dẫn mộ
trường và bạn sẽ không thấy nó chạy nhưng kết quả của nó thì có thể thấy được. Bây giờ bạn hãy tạo một
ở thư mục C:\ (hay ở chỗ khác tùy bạn) có nội dung như sau:
<html> <head> </head> <body>
<SCRIPT LANGUAGE=”JavaScript”> var parentwin = external.menuArguments; var doc = parentwin.document;
alert(“My parent window is: “ + doc.title); </SCRIPT>
</body> </html>
Sau đó sửa giá trị default thành đường dẫn củ bạn vừa mới tạo (của tôi sẽ là C:\test.htm). Bây giờ hãy khởi động lại IE và chọn Menu bạn vừa mới tạo. Nếu bạn thấy có “một cái gì đó” hiện lên thì có nghĩa là bạn đang đi đúng hướng và có thể tiếp tục và cũng nên vui vẻ lên một chút được rồi đó.