有一点可以肯定,在 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 我。
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 我。
在注册表里关联文件类型,要用你的 Standard EXE 来打开;从上面的说明中可以看得出来。