有一点可以肯定,在 Windows 9x/NT 下,PrevInstance 总是为 False;PrevInstance 是 16 位 Windows 的遗物,在 WIN32 世界里早已被抛弃。你可以把你现在的工程改为 ActiveX EXE,在 YourClass 中创建一个方法:
Public Sub OpenFile(strPath As String)
    frmYourMDIMain.Show
    frmYourMDIMain.OpenFile strPath
End Sub在你的 frmYourMDIMain 的 OpenFile 中作带开文件的工作,相信你已经做到。但是,ActiveX EXE 不能直接运行,要靠另外的程序来启动,方法是在程序中创建类对象。
信件一个 Standard EXE 工程,作用只是传递命令行参数,所以,你可以把 Form1 去掉,增加一个模块(Module);新建一个:Sub Main()
    Dim test As AxEXE.MyClass
    
    On Error GoTo errHandler
    Set test = New AxEXE.MyClass
    test.OpenFile Command$
    Exit Sub
    
errHandler:
    MsgBox "YourActiveXEXE not registered yet. Run YourActiveXEXE .EXE at least once to properly register it."
End Sub当然,如果要支持同时代开多个文件的话,自己分析 Command$ 字符串吧!
最后,在注册表里进行适当的设定,我想这方面你应该都解决了。如果需要源程序,可以 email 我。

解决方案 »

  1.   

    呵呵,忘了一点:
    在注册表里关联文件类型,要用你的 Standard EXE 来打开;从上面的说明中可以看得出来。
      

  2.   

    具体过程不太简单,所以我这里给你提个示,windows有个WM_COPYDATA的消息,你可以在启动你的程序时找找看有没有已经有一个你的程序在运行了,如果有,向它发这个消息,你的程序在接收到这个消息时就去执行相应的命令。想接收到这个消息你需要对你的程序SetWindowLong,具体过程你就自己找msdn一边学一边试吧。如果全对你说,你可能能学会自己做,但可能就学不会自己学了。
      

  3.   

    WM_COPYDATA的消息是传递参数的消息。
      

  4.   

    word2000好象不支持多文档编辑吧,即使是新建窗口也会打开新的word。