阅读:1613回复:12
我想拦截文件“发送到”这样一个右键操作
我们在文件上点击右键有一个“发送到”的菜单,可以将文件发送的邮件接受者以及“我的文档”等等,请问该操作的文件系统底层动作是怎样的啊?
急等中...... |
|
沙发#
发布于:2004-12-08 16:20
到了文件系统层拦截Open操作就可以了
|
|
板凳#
发布于:2004-12-08 16:44
能不能麻烦你介绍的详细一点,小弟是初学,谢谢了!
|
|
地板#
发布于:2004-12-08 16:51
如果你做的是驱动程序,就看看Filemon程序有源码可以下的(不过只是模板而已,有不少问题)。应付你的要求应该可以。
如果是DLL方法Hook的话看看SetWindowsHookEx函数 |
|
地下室#
发布于:2004-12-08 17:14
谢谢,你说的两种方法我知道,不过我还是很想知道:例如foxmail在安装完成以后如何自动的加入“发送到”的列表中的,以及用户选择了“发送到”->“foxmail邮件收件者”以后系统的基本处理过程,包括调用了哪些主要的API函数、文件系统底层的动作等等。
|
|
5楼#
发布于:2004-12-08 17:41
其实所有修改右键菜单的程序,都会在Explore.exe里注入(HOOK)一个dll程序,你也可以这样把你的东西整进去的,你说的在“发送到”里加入一个新的,应该也不例外,具体怎么做,找一个修改快捷菜单的程序研究一下吧,网上应该可以找到类似的例子。
|
|
|
6楼#
发布于:2004-12-08 18:11
我看了一下,Mail的程序是个DLL启动的。
你首先调查一下foxmail调用的方法(可以用RegMon,FileMon) 我用的是OutlookExpress好像调用了sendmail.dll(具体没跟过~0~) 不管怎样先要找到打开文件的程序,然后在打开时返回错误。 其实Send方式和直接打开方式对于底层都是一样的 简单的方法是添加到SendTo目录就可以了,如E:\Documents and Settings\yxh\SendTo 像Mail这种不太清楚 |
|
7楼#
发布于:2004-12-09 03:48
右键点菜单与文件系统没有关系, 那全是Windows Shell Programming的东西. 具体你可以查Shell Extension, Context Menu, SHGetSpecialFolderLocation().
toad |
|
8楼#
发布于:2004-12-09 08:52
十分感谢各位的支持!!!
我自己试了一下,其实就是在“C:\Documents and Settings\yourusername\SendTo”目录下面添加一个链接,然后所有的右键菜单的“发送到”就会添加上去,甚至包括office中的那个“发送”菜单里面也是一样的。接下来的事情就是调用相应的程序,例如mail程序,将文件发送出去,跟在foxmail里面发送这个文件的方式是相同的。 :) |
|
9楼#
发布于:2004-12-09 09:05
十分感谢各位的支持!!! :) :) 简单的问题想复杂了,长见识了,呵呵。 |
|
|
10楼#
发布于:2004-12-09 10:31
是添加快捷方式,不用编程来实现!
|
|
11楼#
发布于:2004-12-13 22:02
这个不是驱动的问题,需要修改注册表
|
|
|
12楼#
发布于:2004-12-14 08:37
谢谢老大,不过我真的只需要将快捷方式放到send to目录下面就可以在右键菜单的“发送”看到新增加的项了啊?
另外,如果需要修改注册表,你能不能说的详细一点,修改哪些项呢? |
|