热情软件屋

 

当程序已有一个实例时,如何调用原先的实例打开文件


编号:QA002404
建立日期: 2000年1月8日 最后修改日期:2000年1月8日
所属类别:

Rick:
    OS: Windows 98
    SoftWare: VB6
    在Word97等软件中有一项功能:在程序已有一个实例,即已经打开了一份文档时,再在资源管理器中点击其关联的的文件(比如:.Doc文件),系统并不是再打开一个Word程序,而是在原来的实例的MDI窗口中增加了一个子窗口。在UltraEdit Text Editor、WinZip等软件中也有此功能。
    我想,程序应作如下处理:
     1.判断当前是否已运行。
     2.激活已运行的实例窗口。
     3.将文档名称参数传递给程序,并由已运行的实例进行处理。
    请问各位高手如何用VB6实现该功能,特别是第三条,如何向已运行的程序传递参数。谢谢。

回答:

    前两个问题可以参考QA001297 "如何避免程序被再次启动"
    第三个问题可以利用FindWindow查找已有实例的句柄(参考QA000251 "如何利用FindWindow()函数查找程序"),然后利用SendMessage将文件名作为某个消息的参数发送给窗口(QA002241 "SendMessage() API 函数如何使用")。而已有实例收到消息后打开文件。
    也可以利用DDE传递文件名,参考微软的Knowledge Base的文章:“Q74861“ ample of Client-Server DDE Between Visual Basic Applications”

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio