比如现在已经打开了Photoshop程序。
   当再次打开一个.psd 文件时它会调用已经打开的Photoshop程序打开这个文件。
也就是怎么将路径传递给已经打开的程序?

解决方案 »

  1.   

    进程间通讯。
    打开A文件,系统运行P程序的实例y,p程序实例y得到命令行,得到要打开的文件A,p程序实例y发送提示"我是p程序的实例y,我的id是。。我要打开A文件,你们有意见没有?"如果p程序的另外一个实例x已经打开A文件了,收到"我是p程序的实例y,我的id是。。我要打开A文件,你们有意见没有?"这个消息,看了看信息里的id不是自己的,就回复信息"别啊,小子,放开文件A,我已经打开了",然后,然后p程序的实例y只好放开A文件,自己从内存消失了。要是p程序的实例x收到"我是p程序的实例y,我的id是。。我要打开A文件,你们有意见没有?"这个消息,看了看信息里的id是自己的,嘀咕了一句"真神经病了,自己和自己在聊天"VB实现进程间通信,不用API [推荐] [VB 基础类] http://topic.csdn.net/u/20100322/14/6216bc15-27c1-4aea-b915-a3cb14a2011a.html
      

  2.   

    打开文件A的程序,系统默认是P。
    比如有个P程序的实例X已经打开文件A了,1再次要P程序打开文件A,系统运行了程序P,产生了一个P的实例Y,
    2Y从命令行得到文件A,
    3Y使用进程间通讯,发送了消息"我是程序P的实例,我的id是Y,我现在要打开文件A,你们谁有意见"这个时候实例X收到"我是程序P的实例,我的id是Y,我现在要打开文件A,你们谁有意见"这个消息,
    看了看自己的id不是Y,
    C1:看了看自己打开的文件里面有A,就回复信息"小样,我先来的,放开那文件"
    C2:看了看自己打开的文件里面没有A,就回复信息"随便你,管我鸟事"实例Y收到"小样,我先来的,放开那文件"的消息,灰溜溜的从内存走了。
    实例Y收到"随便你,管我鸟事"的消息,美滋滋的带着A文件干活去了4实例Y喊了消息,过了老长时间(估计有0.5秒吧),也没看见有谁回复,嘀咕:就我一个呀,没人和我抢,gogogo,拉着A文件干活去了。VB实现进程间通信,不用API
    http://topic.csdn.net/u/20100322/14/6216bc15-27c1-4aea-b915-a3cb14a2011a.html
      

  3.   

    可以用 DDE 通讯,见 MSDN 的例程。
      

  4.   

    你这个其实是两个问题:
    1.参数传递问题,就是如何双击你自己的xx.lz文件就调用自己的程序打开
    可以通过注册表设置文件类型关联,网上一搜一大堆资料2.如何使用当前的应用程序打开。
    双击那个文件肯定会直接调用关联的exe文件的。这样要做的就是如何检测发现当前已经有一个实例?如果有的话就关闭自身,将参数传递给既存的实例去处理。可以参考DDE、进程间通讯等资料。
    最简单的办法就是你的exe启动后写一个临时文件,可以存放一些信息,比如当前启动的进程的句柄等,以后再有启动就去检测这个文件可以直接使用。