为.lnk文件添加上下文菜单选项

在日常使用电脑的过程中,经常需要找到快捷方式(.lnk文件)指向的目标文件。通常情况下,需要右键点击快捷方式,选择“属性”,然后点击“查找目标”。这个过程虽然简单,但略显繁琐。本文将介绍如何通过编程为.lnk文件添加一个上下文菜单选项,使得用户能够更快捷地找到目标文件。

在阅读了Michael Dunn关于Shell扩展的文章后,根据他的例子编写了这个程序。文章的链接是:。

使用方法

要使用这个扩展,可以通过以下两种方式之一:

  • 使用regsvr32命令注册。
  • 重新编译并注册。

注意事项

在开发过程中,发现了一个奇怪的问题:有时选中的文件不会高亮显示。如果有任何线索或帮助,请不吝赐教。

2003年2月8日:修正了错误的注册表项。

2003年2月4日:首次发布。

实现方法

#include <windows.h> #include <shlobj.h> class CMyContextMenu : public IContextMenu { public: // IUnknown methods HRESULT __stdcall QueryInterface(REFIID riid, void **ppvObject); ULONG __stdcall AddRef(); ULONG __stdcall Release(); // IContextMenu methods HRESULT __stdcall QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags); HRESULT __stdcall InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi); HRESULT __stdcall GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax); }; HRESULT __stdcall CMyContextMenu::QueryInterface(REFIID riid, void **ppvObject) { // 实现IUnknown接口的QueryInterface方法 } ULONG __stdcall CMyContextMenu::AddRef() { // 实现IUnknown接口的AddRef方法 } ULONG __stdcall CMyContextMenu::Release() { // 实现IUnknown接口的Release方法 } HRESULT __stdcall CMyContextMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { // 实现IContextMenu接口的QueryContextMenu方法 } HRESULT __stdcall CMyContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) { // 实现IContextMenu接口的InvokeCommand方法 } HRESULT __stdcall CMyContextMenu::GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax) { // 实现IContextMenu接口的GetCommandString方法 }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485