因此,我搜索瞭如何使用C#將應用程序集成到應用程序(將其添加到右鍵單擊菜單)的指南,但我找不到如何做到這一點對於特定的文件類型。我知道這是可能的,因爲WinRar可以做到這一點。那我該怎麼做?Shell在Windows中與C#進行特定文件類型的集成
回答
通常有兩種方式可以實現這一點。
註冊表鍵 - 您可以在HKEY_CLASSES_ROOT下編寫鍵和值。如果你看一下這個配置單元,你會在你的電腦上看到擴展名。有關密鑰和值的詳細信息,請看article。有一些簡單的選項,可以在這裏用你的應用程序打開
.myfile
類型。這裏是一個File Association Example外殼擴展(在COM書面):在這裏,你可以做更復雜的東西一樣Handlers.,他們將獲得由Windows調用,所以你可以做這樣的事情在菜單上的油漆,或添加自定義操作時,文件右鍵點擊。這裏比文件還多,你甚至可以添加屬性表和自定義工具提示。
有關不使用.NET編寫Shell處理程序**的一些talk。這僅適用於較舊的版本的.NET。 Its all ok with .NET4.
這篇文章應該可以幫助您與Context Menu Handler in .NET4
**爲什麼爲它不建議:
當你寫一個shell處理程序,它就會由主機進程調用(一般爲Windows資源管理器) ,但也包括FileOpenDialogs和FolderBrowser對話框。因此,如果你在.NET 2.0中編寫了一個外殼擴展,以及一個稱爲文件打開對話框的.NET 1.1應用程序,然後調用.NET 2.0 shell處理程序,並且您的.NET 1.1應用程序具有較舊的CLR,則會出現問題並會有版本衝突。
所以我很高興地發現了最後,這已經是.NET 4莫名其妙固定=)
Windows資源管理器右鍵菜單由註冊表控制。特別是,HKEY_CLASSES_ROOT配置單元。
一個很好的方式來得到一個好主意如何在那裏的一切工作是檢查出HKCR\.txt
它顯示了右鍵菜單中的文本文件會發生什麼。查看指向「txtfile」的(默認)鍵。然後HKCR\txtfile
將有一個子項HKCR\txtfile\shell\open\comman
d。 (默認)鍵顯示打開notepad.exe的命令,其參數爲「%1」,表示正在打開的文件。用其他名稱替換打開的鍵(請參閱txtfile鍵中的打印和打印鍵)以將其他自定義命令添加到右鍵單擊菜單。
一旦您掌握了需要添加以集成應用程序的內容,您可以查看Microsoft.Win32 namespace的類以幫助通過c#代碼操作註冊表。
- 1. Windows Shell與多個文件集成
- 2. 與Windows Shell集成
- 3. 將C#集成到Windows Shell中
- 4. 在Windows中枚舉特定類型的文件
- 5. shell命令在Python中運行特定的Windows可執行文件
- 6. 按特定類型排序收集c#
- 7. 如何通過vim中的shell命令在某個特定類型的文件中運行該文件
- 8. Windows PowerShell中特定文件類型的遞歸列表
- 9. 如何將類型類型限制爲C#中的特定類型子集
- 10. 比較C#中的zip文件進行集成測試
- 11. 將特定值與文本文件中的值進行比較
- 12. 在shell腳本中對文件名的特定部分進行排序
- 13. 在C中確定文件類型
- 14. 如何使用grep僅在特定文件類型中進行搜索?
- 15. Windows特定類型和本機類型C++
- 16. 定位在特定的文件夾中的特定文件c#
- 17. 僅在VIM中針對特定文件類型運行設置
- 18. 檢查一個文件是否是C中的特定類型
- 19. 在Windows 7的shell新的上下文菜單中添加非文件類型
- 20. Windows 8特定文件類型上下文菜單關聯
- 21. C#更改文件中的特定行
- 22. 在兩個頭文件中進行類型定義交換
- 23. 尋找在C中處理泛型集合的非特定類型的方法#
- 24. 將Visual Studio的Interactive C#與正在運行的進程集成
- 25. C#與泛型集合類
- 26. c#與通用類型的接口類型進行轉換
- 27. 泛型集合與特定數據類型數組的區別
- 28. 將特定文件映射到Cherokee中的特定MIME類型
- 29. 從特定目錄中列出特定類型的文件
- 30. 如何使用bash shell檢查if語句中的特定文件類型
在如此多的進程中加載.net資源仍然存在資源浪費。 – CodesInChaos 2011-03-27 19:01:43
你的意思是當.NET處理程序被注入主機進程?嗯,我猜。但** ** ** .NET的一個+1將是它比C++更容易編寫和維護的代碼。 (至少對我來說):)我記得Michael Dunn或Shell Handlers在C++中的這一系列文章,我在幾年前嘗試閱讀它們,但它很難掌握。 – gideon 2011-03-27 19:04:08
問題是,有幾十個主機進程就像記事本一樣非常便宜,現在已經承擔了整個CLR的負擔。增加了很多。 – CodesInChaos 2011-03-27 19:08:43