如何創建出現在特定文件夾內的文件/文件夾的上下文菜單。
說有一個目錄「D:\ RandomCodes」
如何創建一個自定義上下文菜單項「在MyApp中打開」任何文件/文件夾在裏面?這個菜單項不應該出現在任何其他目錄中。我知道如果我在HKCR/Directory/Shell中添加條目,它會起作用,但是它隨時會出現在所有文件和文件夾中。請通過這個指導我。爲特定文件夾創建窗口右鍵單擊上下文菜單
4
A
回答
3
可能對矯正你的代碼IShellExtInit:
STDMETHODIMP CShellExt::Initialize(LPCITEMIDLIST pidl,LPDATAOBJECT pDataObj,HKEY hk)
{
// Initialize can be called more than once
// If Initialize has already been called, release the old
// IDataObject pointer.
if (m_pDataObj)
{
m_pDataObj->Release();
}
// If a data object pointer was passed in, save it and
// extract the file name.
if (pDataObj == NULL)
return E_INVALIDARG;
m_pDataObj = pDataObj;
pDataObj->AddRef();
STGMEDIUM medium;
FORMATETC fe = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
UINT uCount;
HRESULT hr = pDataObj->GetData(&fe, &medium);
if (FAILED(hr))
return E_INVALIDARG;
// save the file name
if (DragQueryFile((HDROP) medium.hGlobal, 0xFFFFFFFF, NULL, 0)==1)
{
DragQueryFile((HDROP) medium.hGlobal, 0, m_szFile,
sizeof(m_szFile));
if (lstrcmpi(m_szFile, "D:\\RandomCodes") == 0)
{
hr = NOERROR;
}
else
hr = E_INVALIDARG;
}
else
hr = E_INVALIDARG;
ReleaseStgMedium(&medium);
return hr;
}
5
例如:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\NetBeans]
"AppliesTo"="System.ItemPathDisplay:\"NetBeansProjects\""
@="Open with NetBeans"
[HKEY_CLASSES_ROOT\Folder\shell\NetBeans\command]
@="\"C:\\Program Files\\NetBeans 7.2.1\\bin\\netbeans64.exe\" --open \"%1\""
更多的信息在這裏:
http://msdn.microsoft.com/en-us/library/cc144171%28VS.85%29.aspx
3
我知道這是一個很老的問題,但對於未來遇到此問題的任何人,我發現最簡單的方法是將字符串值添加到名爲「AppliesTo」的鍵並將其值設置爲「under:{path}」
在我的示例中,我希望它只能在T驅動器中查找,所以我的字符串值是「適用於」:「下:T:」。
RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");
RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();
newkey.Close();
_key.Close();
相關問題
- 1. Chrome右鍵單擊上下文菜單
- 2. 右鍵單擊上下文菜單jquery
- 3. Xpages右鍵單擊上下文菜單
- 4. 右鍵單擊上下文菜單
- 5. JQuery右鍵單擊上下文菜單
- 6. 如何爲WPF中的按鈕創建右鍵單擊上下文菜單
- 7. 創建菜單項的彈出窗口(或上下文)菜單
- 8. 單擊創建上下文菜單
- 9. Excel 2010形狀自定義右鍵單擊上下文菜單
- 10. 如何在列表框上右鍵單擊創建上下文菜單?
- 11. jQuery右鍵單擊上下文菜單插件
- 12. VSTO(文檔級):Excel中的單個上下文菜單(右鍵單擊菜單)
- 13. 如何在窗口的上下文菜單中恢復「創建新文件夾...」
- 14. 覆蓋站點特定的JavaScript右鍵單擊上下文菜單
- 15. 僅在特定GridViewColumn中右鍵單擊時顯示上下文菜單
- 16. 如何在消息右鍵單擊中創建Outlook 2007上下文菜單?
- 17. 禁止在畫布上右鍵單擊上下文菜單
- 18. 在按鈕上的Extjs上下文菜單(右鍵單擊)
- 19. 如何在DataGridView上使用右鍵單擊上下文菜單?
- 20. Opera,自定義上下文菜單,選擇右鍵點擊
- 21. wpf上下文菜單左鍵單擊
- 22. 上下文菜單左鍵單擊Qt
- 23. 上下文菜單左鍵單擊
- 24. 上下文菜單與每個右鍵單擊vb.net
- 25. 如何在WPF中右鍵單擊按鈕上下文菜單?
- 26. 添加右鍵單擊上下文菜單僅在臺式機
- 27. 如何在Silverlight中設置右鍵單擊上下文菜單?
- 28. Intellij右鍵單擊Ubuntu中的上下文菜單問題
- 29. 禁用Firefox的傻右鍵單擊上下文菜單
- 30. Windows 7 - 右鍵單擊Python的上下文級聯菜單
類似的問題::http://stackoverflow.com/questions/9064272/contextual-menu-to-a-specific-folder – Xearinox
嘿感謝
在C#中,這是很容易用下面的完成!我實際上只是在做類似的事情!基本上我不想寫一個shell擴展。我想通過僅管理註冊表值來實現這一點。例如在Directory/Shellex下設置鍵可以爲所有目錄提供菜單項。我想爲特定的目錄做同樣的事情,但這似乎不可能。只會這樣做!謝謝! –