众所周知,程序中可用ParamCount获得参数数目并可用ParamStr()函数获得参数,但我遇到一个问题用此办法无法解决,现象如下:
首先建立文件类型关联,然后在文件浏览器中选中一批文件双击,结果每个文件都调用一次被关联的程序,所以说程序中获得的参数总是一个,而不是这一批文件,但我要求选中这一批文件只调用程序一次,也就是说要把这一批文件名做为参数传递给被调用的程序,如何才能做到这样呢?求各位高人指点!

解决方案 »

  1.   

    这个在早年的DelphiBBS收集资料当中就有提到。前提是你的程序是单实例的。如果允许运行多个实例的话,那就让让它打开多个程序就好了。程序先检查是否先前已经有实例在运行(一般使用互斥对象),如果发现有实例运行,则打开先前实例预先创建的FileMapping,并反文件名写进该FileMapping,先前的实例使用一个线程不断检查FileMapping的内容,然后读取出来。
      

  2.   

    补充说明:
        我的程序是单实例的。如多次运行主程序,始终只有一个实例;多次双击所关联的文件类型中的任一文件也只有一个实例在运行;但是如果双击所关联的文件类型中的已经选中的多个文件,将会同时打开多个实例。至于是单实例还是多实例并不重要,重要的是不管用什么手段,在程序中要获取被关联的文件(有可能是一个或者多个)的名字。微软处理这种情况似乎是用DLL。也就是当同时选中多个文件,这时调用的不是主程序,而是一个DLL。由这个DLLL来处理这批参数并最后调用主程序向主程序传递这批参数来完成。我不想加DLL,想用一个主程序搞定,所以期待高手帮我解决此问题
      

  3.   

    楼主问问题的态度不太好啊。
    给你一个思路:
      打开多个文件,把打开的多个文件名保存成一个临时的txt文件。参数就传这个临时文件名,剩下的你自已知道如何处理吧。