我的软件作为外壳扩展工作,并注册自己在Background/Directory和Desktop右键菜单上显示。我在Win XP上开发,它运行良好,但是现在当我在Windows 7上测试它时,不想工作的很好。上下文项仅在桌面右键菜单中存在,但不在背景/目录上。需要帮忙!ContextMenu项目扩展在Windows 7中不起作用
这里是德尔福的reg函数,但接受任何语言的示例,如果需要,我可以显示扩展DLL src!
const
CLSID_ContextMenu = '{AB69D961-B907-11D0-B8FA-A85800C10000}';
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey('\CLSID\' + CLSID_ContextMenu, True);
WriteString('', 'Context Menu Shell Extension');
OpenKey('\CLSID\' + CLSID_ContextMenu + '\InProcServer32', True);
WriteString('', ExtractFilePath(Application.ExeName) + '\Project1.dll');
WriteString('ThreadingModel', 'Apartment');
CreateKey('\Directory\Background\ShellEx\ContextMenuHandlers\' + CLSID_ContextMenu);
end;
finally
Reg.Free;
end;
end;
Windows 7改变了很多,我记得打印机上下文菜单的位置也改变了... – dreamlax 2012-01-14 05:56:21
确定Windows 7系统没有运行64位Explorer?如果你在XP上开发,你几乎肯定在32位。 Windows 7最常见于64位变体,而针对32位资源管理器编写的许多外壳扩展将无法注册到64位资源管理器。 – 2012-01-14 07:45:40
它的32位肯定!问题是,它已成功注册,但只能在桌面上使用,而不是在xp – teMkaa 2012-01-14 07:54:30