我参考网络写一个改IE右键菜单的程序,可是取编码的子菜单,取不出来,估计问题在下面几条,我对VC不熟,请各位高手指点
//获得语言子菜单 hr = spCT->Exec(&CGID_ShellDocView, SHDVID_GETMIMECSETMENU, 0, NULL, &var); mii.cbSize = sizeof(mii); mii.fMask = MIIM_SUBMENU; mii.hSubMenu = (HMENU) var.byref; //加入语言子菜单到编码上下文菜单 SetMenuItemInfo(hMenu, IDM_LANGUAGE, FALSE, &mii);这几个语句转为delphi语句该怎么写呀。
//获得语言子菜单 hr = spCT->Exec(&CGID_ShellDocView, SHDVID_GETMIMECSETMENU, 0, NULL, &var); mii.cbSize = sizeof(mii); mii.fMask = MIIM_SUBMENU; mii.hSubMenu = (HMENU) var.byref; //加入语言子菜单到编码上下文菜单 SetMenuItemInfo(hMenu, IDM_LANGUAGE, FALSE, &mii);这几个语句转为delphi语句该怎么写呀。
if (hinstSHDOCLC == NULL) { // 载入模块错误 -- 尽可能安全地失败 return; } hMenu=LoadMenu(hinstSHDOCLC, MAKEINTRESOURCE(IDR_BROWSE_CONTEXT_MENU)); hMenu=GetSubMenu(hMenu,dwID); //获得语言子菜单 hr = spCT->Exec(&CGID_ShellDocView, SHDVID_GETMIMECSETMENU, 0, NULL, &var); mii.cbSize = sizeof(mii); mii.fMask = MIIM_SUBMENU; mii.hSubMenu = (HMENU) var.byref; //加入语言子菜单到编码上下文菜单 SetMenuItemInfo(hMenu, IDM_LANGUAGE, FALSE, &mii); //插入来自注册表的快捷菜单扩展 V_VT(&var1) = VT_INT_PTR; V_BYREF(&var1) = hMenu; V_VT(&var2) = VT_I4; V_I4(&var2) = dwID; hr = spCT->Exec(&CGID_ShellDocView, SHDVID_ADDMENUEXTENSIONS, 0, &var1, &var2); //删除查看源代码 DeleteMenu(hMenu, IDM_VIEWSOURCE, MF_BYCOMMAND); //显示快捷菜单 int iSelection = ::TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, ppt->x, ppt->y, 0, hwnd, (RECT*)NULL); //发送选定的快捷菜单项目指令到外壳 LRESULT lr = ::SendMessage(hwnd, WM_COMMAND, iSelection, NULL); FreeLibrary(hinstSHDOCLC); return S_OK;}
大概就是这样了,改右键菜单的好像有delphi的代码呀,可以在网上再找找。
我家里电脑上好像有,找到的话贴给你。
我按你说的试了一下:
hr := spCT.Exec(@CGID_ShellDocView, SHDVID_GETMIMECSETMENU, 0, nil, @var);
SetMenuItemInfo(hMenu, IDM_LANGUAGE, FALSE, @mii);
这二句里的@var,@mii编译提示错误
我把@去了,不报错;运行后IE错误,可能是这一句的问题:
mii.hSubMenu := HMENU(var.byref);能给帮忙看看是怎么回事吗?谢谢了.
我在网上没有找到关于DELPHI的文章,如果你有,麻烦你能发一份给我:shwei#21cn.com
记错了,我这里有的是加IE菜单的,能加主菜单和右键菜单,也挺老的版本,delphi5的,不过也发给你参考。是“Delphi深度探索”的例程。