关于右键菜单?(200分)

  • 主题发起人 主题发起人 lopu
  • 开始时间 开始时间
L

lopu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi光盘中提供的demo中的contmenu实现了右键菜单功能,但它只适
用于单个文件,如何使右键单击文件夹或选取了多个文件时也能出现该菜单,
还有如何使它具有子菜单?
 
呵呵, 以前有很多回答呀. 要改注册表.
看这里.
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=130609
 
关于多种环境注册右键弹出事件的方法,请按照以下对应关系:/HKEY_CLASSES_ROOT/Folder/Shell 任意文件夹
/HKEY_CLASSES_ROOT/Directory/Shell 任意目录
/HKEY_CLASSES_ROOT/Drive/Shell 任意驱动器
/HKEY_CLASSES_ROOT/*/Shell 任意文件
新建一个主键,并在主键下添加一个特定主键(command),修改command的键值指到你的应用程序。例如:
建立/HKEY_CLASSES_ROOT/Folder/Shell/AimTest,将在Folder上按下右键时出现"AimTest"菜单
建立/HKEY_CLASSES_ROOT/Folder/Shell/AimTest,并设定该主键的缺省值为"我的测试菜单",则将在Folder上按下右键时出现"我的测试菜单"菜单钮。
建立/HKEY_CLASSES_ROOT/Folder/Shell/AimTest/command,并设定command"缺省"键值为"c:/tools/pse.exe" "%1",则将以Folder名为第一参数启动pse.exe。
* 注意command键值的双引号不可缺省另外:/HKEY_CLASSES_ROOT/Folder/Shellex
/HKEY_CLASSES_ROOT/Directory/Shellex/HKEY_CLASSES_ROOT/Drive/Shellex
/HKEY_CLASSES_ROOT/*/Shellex可以按应用程序在Registroy中的注册ID调用。这样可以调用.DLL和钩子函数。
但建议按第一种方法调用应用程序,因为注册一个ID实在麻烦。如果你的应用程序支持DDE,你可以参考
/HKEY_CLASSES_ROOT/Directory/Shell/Find键的设定来进行DDE设置。=============
这是以前别人答的
 
第一个问题:
在TContextMenu.SEIInitialize中将DragQueryFile那段改为:
filecount :=DragQueryFile(StgMedium.hGlobal, $FFFFFFFF, nil, 0);
if filecount>=1 then
begin
for i:=0 to filecount-1do
begin
DragQueryFile(StgMedium.hGlobal, i, FFileName, SizeOf(FFileName));
//你必须要用Tstringlist或string数组来保存所有的FFileName
end;
Result := NOERROR;
end
else
begin
FFileName[0] := #0;
Result := E_FAIL;
end;

第二个问题:
直接用Windows Api追加二级菜单应该可以吧。--我没有具体去试。
 
接受答案了.
 
后退
顶部