忽然发现一个问题:在资源管理器中,用右键单击选择一个WinZip文件,拖拽到另一个目录上,弹出的右键菜单上会出现“Extract to folder目标路径”,

  • 主题发起人 主题发起人 xdzhan
  • 开始时间 开始时间
X

xdzhan

Unregistered / Unconfirmed
GUEST, unregistred user!
忽然发现一个问题:在资源管理器中,用右键单击选择一个WinZip文件,拖拽到另一个目录上,弹出的右键菜单上会出现“Extract to folder目标路径”,问题是:WinZip是如何得知目标路径的? (200分)<br />请各位大侠出手....[:)]
 
这没什么吧我觉得,当你找到了拖动一个东西的右键菜单注册表里的位置,也就好办了,
不过我还没找到.[:(] 哈哈,这不是说了半天白说么。
随便拖一个文件它都会提示你在当前位置****,当前位置当然就是那个了。
看看这个copy aiming的也许有帮助。

关于多种环境注册右键弹出事件的方法,请
按照以下对应关系:
/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设置。
 
to bubble
呵呵!我的意思是用右键单击选择一个Zip文件,拖拽到另一个目录上进行解压缩时,弹出的右键菜单上
会出现“Extract to folder目标路径”,不是直接在文件上单击右键弹出的那个右键菜单 [:)]
 
当然不是那么简单。可以看一看注册表,WINZIP注册的键是
HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/WinZip
键值“最终”指向的是DLL动态链接库。

可以这样理解:当菜单弹出前,Windows回调Winzip所指定DLL中的函数,传递相应的信息,Winzip得到此信息后做出相应判断,然后在系统菜单中添加相应的命令项。
 
我来听听课的。
 
在资源管理器里的目标目录应该有个ONENTER事件吧,或者WINDOWS里有个什么消息的吧.
 
C:/Program Files/Borland/Delphi6/Demos/ActiveX/ShellExt/contmenu.dpr
自己看看
 
看shell编程资料
 
winzip是写成DropHandler的,他支持 IDropTarget 接口,
shell调用他,他知道了
 
这是微软的Drag And Drop功能,用VC写的基于单文档或多文档的任意一个程序都可以自动支持这种功能
 
简单,轻松[:)]
 
我也是来听课的
 
我也是来听课的之二
 
咱也来学学。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部