2013-12-23 61 views
4

我的問題類似於this,但是這並沒有提供我需要的所有信息,或者我沒有很好地理解。Windows資源管理器右鍵單擊文件和文件夾的上下文菜單

我希望在文件上下文菜單中會有選項通知我的應用程序。

我加鍵:

HKLM/SOFTWARE/Classes/*/shell/MyApp/command::"C:\\path\\test.exe" "%1" 
HKLM/SOFTWARE/Classes/Folder/shell/MyApp/command::"C:\\path\\test.exe" "%1" 

代碼測試:

#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    for (int i = 1; i < argc; ++i) 
     std::cout << argv[i] << "\r\n"; 
    system("pause"); 
    return 0; 
} 

這工作得很好,但是......如果我標出了幾個文件/文件夾,點擊右鍵並選擇我的添加選項,許多測試應用程序啓動。

這不是我想要的行爲,我希望所有路徑都會被傳遞到我的應用程序的單個實例中,作爲argv的列表,是否有人知道如何做到這一點?

順便說一句。我使用C++進行編碼,但我認爲這不是問題,因爲它與Windows外殼有關。

謝謝。

+0

您可以使用DDE我相信。但不建議。最好是一個shell擴展。 –

回答

3

我認爲正確的方法是編寫ContextMenuHandler並將其註冊爲外殼擴展。

你可以找到很多像hereherehere

上下文菜單處理的樣品都在指定的關鍵

HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers 

上有SO已經類似的問題:

How to pass in multiple file/folder paths via a right-click event (verb) to an executable?

How to Pass MULTIPLE filenames to a Context Menu Shell Command?

Windows context menu for multiple files [C++]

Taking multiple files (arguments) from Windows shell context menu on C#

+0

您所鏈接的答案都不能提供解決方案。 – Jake

相關問題