2010-01-11 69 views
1

我將製作一個桌面應用程序,它將在後臺運行,意味着沒有可見的窗口,並且我希望有一個選項可以在用戶右鍵單擊文件時顯示:「上傳文本」。如何將項目添加到Windows Shell(右鍵單擊)?

有人能指出我正確的方向嗎?我也必須確保如果有人想在任何時候卸載程序,那麼shell的修改也是乾淨淘汰。

該應用程序將運行Windows XP,Windows Vista和Windows 7.這些操作系統在處理我的shell困境方面有什麼不同?

回答

4

這是一個shell擴展。你用C#標籤標記了這個問題;你應該知道,writing shell extensions in a managed language is strongly discouraged

不幸的是託管C++是真的 去這裏的唯一途徑。

寫作過程中的外殼擴展 在託管代碼實際上是這樣做,因爲它有 非常 危險的事情注射託管 代碼(和.NET Framework)到 的機器上的每個應用的效果 有一個文件打開對話框。發生

中存在的問題,因爲只有一個 版本的.NET Framework的可以是 在任何給定時間 (其他共享組件如Java 和MSXML具有相同的屬性和 因而相同的限制)在一個進程中加載。

如果你寫使用.NET Framework 2.0的和與.NET 1.1框架 內置的 應用的外殼擴展 使用打開文件對話框,您 外殼擴展將失敗,因爲 它不能在更早的運行版。 事情可能在另一個之前 應用程序得到,如果你 外殼擴展管理的過程中得到加載 更糟糕的託管代碼所做的:你 延長可能迫使現有 應用到不同的運行時 版本比它期待 並導致它失敗。

由於這些問題,我們強烈 針對在一個進程內殼 擴展使用任何 單實例-每個進程的運行時或 庫(諸如.NET框架中, Java或MSXML)建議更換。

這就是說,人們已經做到了。

這是a guide to creating shell extensions, using C++

1

您可以將您的應用程序添加到SendTo文件夾。

0

使用SendTo的獨立程序如何?

將該exe文件安裝到「Program Files \ mycompany \ myprogram」,並將該exe文件的快捷方式安裝到SendTo文件夾中。然後,當用戶右鍵單擊一個文件,選擇SendTo,然後選擇您的程序,您的exe將由Windows執行,文件名的完整路徑將通過argv [1]傳入。如果他們選擇n個文件,他們將在argv [1] .. argv [n]中。

如果您希望程序不可見,則不要使默認窗體可見。您可以選擇在托盤中放置一個圖標,以便用戶可以雙擊該圖標查看上傳進度。當argv [1]的上傳完成時,處理argv [2] ... argv [n](如果它們存在並退出)。要徹底卸載,請從SendTo文件夾中刪除程序和快捷方式。

相關問題