簡體   English   中英

使用C#創建Windows-7庫

[英]Creating windows-7 library using c#

Windows-7引入了虛擬文件夾的概念,稱為“庫”。

我正在通過自定義操作實現圖書館。 約束是,我必須為此堅持使用.NET版本2 :(

環顧四周時,我沒有發現任何可用於此目的的本機(c / C ++)API。 一旦獲得本機API,我計划使用Interop(p-Invoke)創建一個庫。

任何人都可以指向可能會有所幫助的鏈接或文檔。 如果我能以某種方式直接從c#(使用.NET v2)中做到這一點,那就太好了。

謝謝約翰

看起來最相關的MSDN主題是:

庫功能通過COM公開,因此不需要P /調用。

但是,由於庫僅存在於Windows 7中,並且由於Windows 7將.net 3.5作為操作系統的一部分,因此我建議您將應用程序的這一部分放在.net 3.5程序集中。 實際上, API CodePack程序集已經為您完成了此任務。

當然,由於CodePack也作為源代碼提供,因此您可以從那里提取必要的部分,並做一些必要的工作以針對.net 2.0構建它。

Windows 7之前就已經存在“虛擬文件夾”的概念,並且已經對AFAIK進行了“改進” ...您編寫自己的自定義處理程序來執行此操作...

如果要實現這樣的“虛擬文件夾”並將其集成到Windows中,以便其他應用程序可以將其用作“虛擬文件夾”,則:

要實現並安裝“外殼擴展”(基本上是一堆COM接口):

備注:如果運行的系統沒有.NET 4,則Microsoft建議不要使用.NET,因為較舊版本存在固有的限制,即一個進程不能同時運行多個框架版本。 根據操作系統等情況,建議使用C / C ++來實現。
即使使用注釋中指出的.NET 4,代碼注入問題仍然存在-即,如果任何.NET 4之前的.NET應用程序和/或具有與Shell擴展不同的.NET版本,則可以訪問文件打開對話框,例如,它可以/將失敗。
為了避免這種情況,您需要實現一個本機代理DLL,該DLL將被加載到相應的進程中(例如Windows資源管理器),並通過IPC與.NET實現進行通信。

在這種情況下,您需要構建一個實現IShellLibrary的Shell擴展。

除了shell擴展的實現之外,這確實是一項艱巨的工作……與信息/示例/源代碼/庫等相關的一些鏈接:

要與Windows 7庫進行交互,請參見http://support.microsoft.com/kb/976027http://www.codeproject.com/KB/miscctrl/Windows7APICodePack.aspxhttp://archive.msdn.microsoft。 com / WindowsAPICodePackhttp://www.codeproject.com/KB/cs/DDW7LibrariesLite.aspx 有些需要.NET 3.5,但由於3.5僅僅是2.0加上一些其他程序集,因此可能是一個選擇...

在Google中進行簡短搜索后發現: 如何以編程方式操作Windows 7 Shell庫

如果C#示例沒有用,則應該可以導出c ++示例中使用的api方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM