利用delphi編寫windows外殼擴充

來源:互聯網
上載者:User

對於作業系統原理比較瞭解的朋友都會知道,一個完備的作業系統都會提供了一個外殼(shell),以方便普通的使用者使用作業系統提供的各種功能。windows(在這裡指的是windows 95\windows nt4.0以上版本的作業系統)的外殼不但提供了方便美觀的gui圖形介面,而且還提供了強大的外殼擴充功能,大家可能在很多軟體中看到這些外殼擴充了。例如在你的系統中安裝了winzip的話,當你在windows explore中滑鼠右鍵點擊檔案夾或者檔案後,在快顯功能表中就會出現winzip的壓縮菜單。又或者bullet ftp中在windows資源管理員中出現的ftp網站資料夾。windows支援七種類型的外殼擴充(稱為handler),它們相應的作用簡述如下: 

(1)context menu handlers:向特定類型的檔案對象增添內容相關性功能表;

(2)drag-and-drop handlers用來支援當使用者對某種類型的檔案對象進行拖放操作時的ole資料轉送;

(3)icon handlers用來向某個檔案對象提供一個特有的表徵圖,也可以給某一類檔案對象指定表徵圖;

(4)property sheet handlers給檔案對象增添屬性頁面(就是右鍵點擊檔案對象或檔案夾對象後,在快顯功能表中選屬性項後出現的對話方塊),屬性頁面可以為同一類檔案對象所共有,也可以給一個檔案對象指定特有的屬性頁面;

(5)copy-hook handlers在檔案夾對象或者印表機對象被拷貝、移動、刪除和重新命名時,就會被系統調用,通過為windows增加copy-hook handlers,可以允許或者禁止其中的某些操作;

(6)drop target handlers在一個對象被拖放到另一個對象上時,就會被系統被調用;

(7)data object handlers在檔案被拖放、拷貝或者粘貼時,就會被系統被調用。

windows的所有外殼擴充都是基於com(component object model) 組件模型的,外殼是通過介面(interface)來訪問對象的。外殼擴充被設計成32位的進程中伺服器程式,並且都是以動態連結程式庫的形式為作業系統提供服務的。因此,如果要對windows 的使用者介面進行擴充的話,則具備寫com對象的一些知識是十分必要的。 由於篇幅所限,在這裡就不介紹com,讀者可以參考微軟的msdn庫或者相關的協助文檔,一個介面可以看做是一個特殊的類,它包含一組函數合過程可以用來操作一個對象。寫好外殼擴充程式後,必須將它們註冊才會生效。所有的外殼擴充都必須在windows註冊表的hkey_classes_root\clsid鍵之下進行註冊。在該鍵下面可以找到許多名字像{0000002f-0000-0000-c000-000000000046}的鍵,這類鍵就是全域唯一類別識別項(guid)。每一個外殼擴充都必須有一個全域唯一類別識別項,windows正是通過此唯一類別識別項來找到外殼延伸模組處理常式的。

在類別識別項之下的inprocserver32子鍵下記錄著外殼擴充動態連結程式庫在系統中的位置。與某種檔案類型關聯的外殼延伸註冊在相應類型的shellex主鍵下。如果所處的windows作業系統為windows nt,則外殼擴充還必須在註冊表中的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ShellExtensions\Approved主鍵下登記。編譯完外殼擴充的dll程式後就可以用windows本身提供的regsvr32.exe來註冊該dll伺服器程式了。如果使用delphi,也可以在run菜單中選擇register activex server來註冊。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.