梁肇新编程日记(2)

Author: Date: 2001年 47期

?牐?2001年2月25日 星期日
  #2?牐牸苹?
  ?牐?1.完成“发送到”“移动到”两个右键菜单
  ?牐?2.可生成及删除自定义文件夹
  #2?牐犑凳?:
  ?牐牰杂谏蒘endTo菜单,我们考虑加入“发送到软盘”、“我的文档”、“我的公文包”、“自定义文件夹”等项目。关于SendTo的工作方法一直不大明白,在这方面花了不少时间,最后发现它的处理机制与粘贴差不多。这样,自定义文件夹可以在SendTo中存放,这种右键菜单就会有这一个名目,不用自己管理。
  ?牐犖送昝朗迪諷endTo的功能,先要想办法区分捷径的类型。解析捷径是以前没有接触过的,在实施的时候我们首先要了解系统是如何区分SendTo目标的。经过使用SoftICE分析,发现需要用到GetDefaultMenuItem和ContextMenu,利用ShellExecuteEx来执行。解析出执行的文件名用做ShellExecuteEx的参数。而且,我们也发现在帮助(MSDN)中有一个与创建捷径对应的解决捷径的例子程序。
  ?牐犛辛私饩鼋菥兜姆椒ǎ涂梢匀〉浇菥抖韵蟮拿钚械腎DList,用命令行可以通过SHGetFileInfo取到是否是EXE类型,用IDList来确定是否是一个文件夹。只要不是可执行的类型都用粘贴的方法,而可执行的类型用“Open”方法。从而可以与系统的“发送到”相同的动作。缺省动作菜单用GetMenuDefaultItem来取得。
  ?牐犠远ㄒ逦募锌梢灾苯佑媒菥斗绞健T创蛩阌妹占浞绞浇?立索引;现在发现自定义文件夹是最方便的方式。可以使用列表的方式列出可以移动的文件夹。可以添加和删除文件夹名称的命名。并且需要建立一个删除的文件列表,只要比较一下即可知道。新添加的就没有参数指针。
  ?牐牫恕胺⑺偷健保⊿endTo)之外还可以添加一个“转移到”(MoveTo)菜单,由于发送到文件夹中有一些不是文件夹,所以在“转移到”(MoveTo)文件夹之中可以只有文件夹。