hur.cn - 华软网

 热门搜索

shell获取指定文件的右键菜单时遇到的诡异情况

  作者:未知    来源:网络    更新时间:2011/9/6
只能显示devenv.exe文件部分右键菜单的(如svn,winrar右键菜单栏无法获取到),但是改了项目->属性->配置属性->常规->公共语言运行时支持设置为公共语言运行时支持(/clr)后可以显示全部菜单,但是svn部分的菜单图标和字体显示为空白,但是可以点击。换其他的电脑后svn部分的菜单只有文字,没有图标。这什么情况?
C++">
void CRightKeyMenuDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//CDialogEx::OnOK();
IShellFolder *pIShellFolder = NULL;
HRESULT hr = SHGetDesktopFolder(&pIShellFolder);
if(NOERROR != hr)
{
return;
}
WCHAR* FilePath = TEXT("D:\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\IDE\\devenv.exe");
LPITEMIDLIST pidl;
ULONG cbEaten;
DWORD dwAttribs = SFGAO_COMPRESSED;

hr = pIShellFolder->ParseDisplayName(NULL, NULL, FilePath, &cbEaten, &pidl, &dwAttribs);
if(S_OK  != hr)
{
return;
}
IShellFolder *psfParent;
LPCITEMIDLIST pidlRelative = NULL;
hr = SHBindToParent(pidl, IID_IShellFolder, (void**)&psfParent, &pidlRelative); 
if(S_OK != hr)
{
return;
}

CMenu mu;
mu.CreatePopupMenu();
LPCONTEXTMENU ppv = NULL;
pIShellFolder->GetUIObjectOf(NULL, 1, &pidlRelative, IID_IContextMenu, NULL, (void**)&ppv);
ppv->QueryContextMenu(mu.m_hMenu, mu.GetMenuItemCount(), 0, 10000, CMF_NORMAL | CMF_EXPLORE);
int i= mu.GetMenuItemCount();
POINT pt;
GetCursorPos(&pt);
mu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x,pt.y,AfxGetApp()-> GetMainWnd());
}

---华软 网友回答---
Mark。。。
---华软网友回复---
换成mfc的单文档后完美显示指定文件的右键菜单......我擦....这什么情况?
---华软网友回复---
工程类型估计有问题,应该是MFC,非CLR等工程
---华软网友回复---
  class="deleted_message"> 该回复于2011-09-06 13:41:27被版主删除
---华软网友回复---
同在xp系统上,有些电脑可以完美显示有些却只显示一部分。
---华软网友回复---
压力山大啊,谁做过指定文件的右键菜单?
---华软网友回复---
无人知啊?10点结贴....
---华软网友回复---
文件及文件夹的右键SHELL每个文件的类型都是不一样的。好象是注册表的哪个值。而且当你加右键时别忘了别人的。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。