2011-09-05 95 views
1

我尝试为Windows文件/文件夹创建上下文菜单扩展。我已经非常努力,但没有为我工作。我已经有了32位系统的扩展,但已经过时了。我想用C++为64位系统重新创建它。C++ Shell上下文菜单扩展

这一个是最接近我想要做的:Klick 但这是为32位系统。阅读完评论后,我可以修改&为x64构建它。

在我的64位系统上使用system32/regsvr32.exe注册它,表明它已成功注册。所有注册表项都正确创建。但是菜单项没有出现。我不知道为什么...

有人可以帮助我吗?如果你愿意,我可以上传这个项目给你。

UPDATE

我使用从上面的链接的原始项目,改变了以下事情:

1)设定的目标为 “64”

2)因为我couln't编译它,我改变了以下几件事:

2.1)之前Stdafx.h中的包括我说:

#define _ATL_NO_UUIDOF 

2.2)我改变UINT这里UINT_PTR:

HRESULT CFSBankShellExtension::GetCommandString (
UINT_PTR idCmd, 
UINT uFlags, 
UINT* pwReserved, 
LPSTR pszName, 
UINT cchMax) 

3)我txtfile更改为*在.RGS文件,因此它应该对所有文件类型的冲击片雷管。

4)我是能够编译并注册

如果你不容帮助我,这将是冷静,如果你可以上传模板,将x64系统上运行。

+0

第一步是找出如果您的DLL实际上已经加载到浏览器处理。尝试使用SysInternals procexp工具并打开底部窗格DLL视图。 –

+0

它在那里!我搜索了SimpleExt.dll,并在procexp中找到了它。那么......接下来呢? –

+0

您是否使用Visual Studio?加载你的项目,将VS调试器附加到explorer.exe并在你的扩展的方法中设置断点。然后右键点击某个东西,看看你的函数是否真的被调用。如果他们被调用,请通过他们并尝试找出他们出错的地方。 –

回答

1

这篇文章可以帮助你为它的工作为我的项目..

Simple shell context menu

上下文菜单中的所有文件,文件夹和驱动器

您还可以转播上下文菜单所有文件,文件夹和驱动器由 添加条目到文件类型的*,目录和驱动器注册表 键。例如,XP PowerToys的增加了此处打开命令窗口菜单 与下面的注册表脚本中的所有文件夹:

REGEDIT4

[HKEY_CLASSES_ROOT \目录\壳\ CMD] @ = “此处打开命令窗口”

[HKEY_CLASSES_ROOT \目录\壳\ CMD \命令] @ = “cmd.exe的/ K \” CD %L \ “”

+0

谢谢,但这对我来说不够灵活。我想,菜单项甚至出现,当我选择多个文件/文件夹,然后右键单击它们。我想检测所有选定的文件,然后(根据条件)决定菜单项是否应该显示。所以我需要为它创建一个DLL。 –