高手请进,请问如何把自己的菜单加入到桌面右键菜单中? ( 积分: 100 )

H

hljde

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何把自己的菜单加入到桌面右键菜单中?
 
请问如何把自己的菜单加入到桌面右键菜单中?
 
这个应该可以做到,象winrar软件等就是修改了右键菜单,<br>研究一下Windows优化大师、超级兔子等软件,看他们是怎么修改右键菜单的,<br>应该是修改注册表的某个键值吧。
 
要搞清楚,我是指桌面右键菜单,不是什么文件、文件夹右键菜单。
 
先加入注册表单元<br>uses registry<br>添加:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var reg:tregistry;<br> &nbsp; Filename:String;<br>begin<br> &nbsp;//Project1是我的EXE文件名,你的你要改<br> &nbsp; Filename:=Trim(ExtractFileDir(Application.Exename)+'/Project1.exe');<br> &nbsp; reg:=tregistry.create ;<br> &nbsp; reg.rootkey:=hkey_classes_root;<br> &nbsp; &nbsp; &nbsp; if &nbsp; reg.OpenKey('/folder/shell',true) then<br> &nbsp; &nbsp; &nbsp; &nbsp; if not Reg.KeyExists('Project1') then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reg.createkey ('Project1');<br><br> &nbsp; &nbsp; &nbsp; &nbsp;if &nbsp; reg.OpenKey('/folder/shell/Project1',true) then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not Reg.KeyExists('command') then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reg.createkey ('command');<br><br> &nbsp; &nbsp; &nbsp; &nbsp;if reg.openkey ('/folder/shell/Project1/command',true) then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reg.writestring('',Filename); //''连一起,不要按空格,默认值<br> &nbsp; &nbsp; &nbsp; &nbsp; SHOWMESSAGE('已加入WINDOWS右键快捷方式');<br> &nbsp; &nbsp;reg.CloseKey;<br> &nbsp; &nbsp;reg.free<br>end;<br>删除:<br>procedure TForm1.Button2Click(Sender: TObject);<br>var reg:tregistry;<br>begin<br> &nbsp; reg:=tregistry.create ;<br> &nbsp; reg.rootkey:=hkey_classes_root;<br> &nbsp; &nbsp; &nbsp; &nbsp;if &nbsp; reg.OpenKey('/folder/shell',true) then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if Reg.KeyExists('Project1') then<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reg.DeleteKey('Project1');<br> &nbsp; &nbsp;reg.CloseKey;<br> &nbsp; &nbsp;reg.free ;<br> &nbsp; &nbsp; SHOWMESSAGE('已从WINDOWS右键快捷方式中删除');<br>end;
 
我装的江民杀毒软件就可以,应该只是做个外壳扩展吧
 
对,上面的回答也是我转贴的。
 
[red]LovingTse[/red][black]说得对,江民杀毒软件是可以,还有英特尔的815/845G/GV等等主板自带的显卡驱动程序及一些NVIDIA的显卡驱动程序安装以后也可以,不知大家理解了没有,如果有哪位高手懂得这方面的编程请告诉我,必有重谢, &nbsp; &nbsp;hzxhzx123还是没有理解是什么意思,我要说的是[/black] [red]“桌面右键菜单”[/red] [black]也就是能调出“显示 属性”的菜单,不是什么文件、文件夹右键菜单。[/black][:(]
 
对不起,我没实验这个代码,是在网上找到的,据说可以……。可以肯定就是一个外壳扩展而已。
 
关注中.... &nbsp; [:D][:D]
 
这段代码我已经测试过了,他只是在文件夹等右键菜单上显示,不是我想要的效果,请知道你高手赐教。
 
直接改注册表,
 
关于多种环境注册右键弹出事件的方法,请<br>按照以下对应关系:<br>/HKEY_CLASSES_ROOT/Folder/Shell &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;任意文件夹<br>/HKEY_CLASSES_ROOT/Directory/Shell &nbsp; &nbsp; &nbsp; 任意目录<br>/HKEY_CLASSES_ROOT/Drive/Shell &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 任意驱动器<br>/HKEY_CLASSES_ROOT/*/Shell &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 任意文件<br>新建一个主键,并在主键下添加一个特定主键(command),修改command的键值指到你的应用程序。<br><br>例如:<br>建立/HKEY_CLASSES_ROOT/Folder/Shell/AimTest,将在Folder上按下右键时出现&quot;AimTest&quot;菜单<br>建立/HKEY_CLASSES_ROOT/Folder/Shell/AimTest,并设定该主键的缺省值为&quot;我的测试菜单&quot;,则将在Folder上按下右键时出现&quot;我的测试菜单&quot;菜单钮。<br>建立/HKEY_CLASSES_ROOT/Folder/Shell/AimTest/command,并设定command&quot;缺省&quot;键值为&quot;c:/tools/pse.exe&quot; &quot;%1&quot;,则将以Folder名为第一参数启动pse.exe。<br> &nbsp; &nbsp;* 注意command键值的双引号不可缺省<br><br>另外:<br>/HKEY_CLASSES_ROOT/Folder/Shellex<br>/HKEY_CLASSES_ROOT/Directory/Shellex<br>/HKEY_CLASSES_ROOT/Drive/Shellex<br>/HKEY_CLASSES_ROOT/*/Shellex<br>可以按应用程序在Registroy中的注册ID调用。这样可以调用.DLL和钩子函数。<br>但建议按第一种方法调用应用程序,因为注册一个ID实在麻烦。<br><br>如果你的应用程序支持DDE,你可以参考<br>/HKEY_CLASSES_ROOT/Directory/Shell/Find键的设定来进行DDE设置。<br><br>///<br>Windows Registry Editor Version 5.00<br><br>[HKEY_CLASSES_ROOT/Folder/shell/Test]<br>@=&quot;测试&quot;<br><br>[HKEY_CLASSES_ROOT/Folder/shell/Test/command]<br>@=&quot;Calc.exe %1&quot;
 
你可去网上搜一下一篇叫“Windows外壳扩展编程入门实例”的文章。说得很详细的,用DELPHI来开发右键菜单的一个详细的示例和说明
 
下载看过了,那是对“资源管理器”编程的介绍,不是对“桌面右键菜单”的介绍,问题解决不了,不知还有没有人知道?????????????????????????????
 
其实我知道桌面的句柄是&quot;SysListView32&quot;,不知有没有办法通过句柄加上右键菜单?
 
http://hubdog.csdn.net/UpdateList/ulIndex.htm<br>这个高手对这方面有很深的研究,你找找他呗<br>另外,我认为你可以在程序里面判断的,桌面也无非是资源管理器中的一个目录,你可先判断是否你要生成右键菜单的地点,是就生成,不是就不干,不就行了吗?
 
跟我碰到的问题一样,正在想办法,估计和注册表无关
 
是吗?如果想到了办法或者找到了解决方法请告诉我一下,先在这里谢谢了。不知道江民公司的人有没有会上大富翁的,希望有上来或者有人认识,帮帮忙解决一下这个问题。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
820
DelphiTeacher的专栏
D
D
回复
0
查看
791
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
顶部