环境:    我已经实现了文件关联。如:*.xyz 用自己写的程序abc.exe打开。这个时候我想得到这样的效果。比如在文件夹中同时选中多个 *.xyz文件 按下回车。怎么把选中的这么多个*.xyz文件列表传递给abc.exe让他来打开呢?能给个例子,或者是给个代码吗?先谢谢高手了。

解决方案 »

  1.   

    不应该呀,我将WindowsXPSP3系统自带的notepad.exe(就是记事本),关联到一个
    以.abc的扩展名,关联起来,运行就没有问题的,可能是你的那个"程序"有问题
      

  2.   

    启用单例模式,检测到已经有实例打开时,从ParamStr中得到命令行参数,然后发消息给已运行的实例,把文件名发送过去,接收到后,放入本地列表
      

  3.   

    单一模式主要有个问题。程序获取到列表后,是以一个Tstirnglist对像传递给函数处理。
    发消息的这种方式,我就不知道什么时候消息列表发送完了。比如选中了20个文件。那么就要怎么才知道发送了20次消息。
    这个数字是未知的。如果我收到消息后就发给函数,那么就要调用20次函数。而这个函数又带窗口,就会弹出20个窗口文件。显然这样处理不是最佳我想实现的就是一次性传完这个LIST。在函数中处理这个LIST中的成员就行了。
      

  4.   

    我想实现的就是一次性传完这个LIST。在函数中处理这个LIST中的成员就行了。这种思路有问题,不可能实现。你无非就是不想弹出20各窗口文件么。那么就要在窗口那里做些处理了。比如这个窗口文件做成“单实例”的,收到消息的时候,弹出窗口之前,检查窗口是否存在,存在的话,怎么怎么样
      

  5.   

    这个与拖放文件一样吧
    应该能得到一个所选文件的列表吧
    不知道什么api能得到
      

  6.   

    我也想知道这个API。是不是WINDOWS外壳程序可以提供呢?
      

  7.   

    目前是图标关联啊。注册表中 abc.exe %1
    把文件当参数传给程序。
      

  8.   

    刚看了DDE。。下载了一个测试程序。
    发现打开200多个文件的时候,很慢。并且鼠标会闪动很久。
    这不是我想要的。
    我想要的就是选中N个文件,然后打开如敲回车就像迅雷看看一样,很快的得到选中文件的列表。他是怎么做的呢?
      

  9.   

    需要写个服务,比如右键菜单“添加到XX播放器列表”。
    此服务提供两个主要功能:
    1、获取当前的ShellBrowser,依次取得当前浏览的Folder,再遍历取得处于Focus的Item(也就是文件),并添加到列表中;
    2、启动自己的程序:先遍历自己的程序是否打开,若未打开,则运行一个实例;找到实例后,传入1结果关于第一个功能,可以参考 http://blogs.msdn.com/b/oldnewthing/archive/2004/07/20/188696.aspx
      

  10.   

    还有一种方法是,做个ShellHook(JCL有个控件TjvShellHook,可直接放在你的程序中),监听消息。
    具体消息类型参考:http://msdn.microsoft.com/en-us/library/bb774198(v=vs.85).aspx
    其中有关文件操作的相关消息如下:
    FM_GETFILESEL
     Sent by a File Manager extension to retrieve information about a selected file from the active File Manager window (either the directory window or the Search Results window).
     
    FM_GETFILESELLFN
     Sent by a File Manager extension to retrieve information about a selected file from the active File Manager window (either the directory window or the Search Results window). The selected file can have a long file name.
     
    FM_GETFOCUS
     Sent by a File Manager extension to retrieve the type of File Manager window that has the input focus.
     
    FM_GETSELCOUNT
     Sent by a File Manager extension to retrieve a count of the selected files in the active File Manager window (either the directory window or the Search Results window).
     
    FM_GETSELCOUNTLFN
     Sent by a File Manager extension to retrieve the number of selected files in the active File Manager window (either the directory window or the Search Results window). The count includes files that have long file names.