我正在尝试创建一个MDI / TDI单实例应用程序,该应用程序将从另一个应用程序调用,每个应用程序在每次调用时都具有不同的命令行参数(例如,每次传递不同的患者ID)。我遇到的问题是,第一次调用该应用程序时,正确解析了命令行参数,但是在随后的每次调用中,新的命令行参数都没有传递给应用程序。
我想创建一个单实例应用程序,因为该程序可以在一天中多次调用,并且不想运行用户(在这种情况下为phyicician)将无法关闭的多个实例。
如何实现这一目标。如果这不是正确的方法,我愿意接受其他建议和代码链接。
我试图读取Form Load,Activate,GotFocus事件中的参数,但没有一个起作用。
感谢您的时间和帮助。 Juzer
sr是StreamWriter,可以初始化为调试目的写入日志文件
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
sr.Write("Inside Activated")
sr.WriteLine()
For Each s As String In My.Application.CommandLineArgs
Select Case s.Substring(0, 4).ToLower()
Case "/gt1"
sr.Write($"T1 = {s.Substring(5)} ")
TextBox1.Text = s.Substring(5)
Case "/gt2"
sr.Write($"T2 = {s.Substring(5)} ")
TextBox2.Text = s.Substring(5)
Case "/gt3"
sr.Write($"T2 = {s.Substring(5)} ")
TextBox3.Text = s.Substring(5)
End Select
Me.Refresh()
Next
sr.WriteLine()
sr.Flush()
End Sub
下面是两次运行应用程序的输出。似乎正在触发Form Activated方法,但未解析命令行参数。 SSApp.exe / gt1 = A1 / gt2 = B1 / gt3 = C1 当应用程序运行时,使用新参数再次调用 SSApp.exe / gt1 = A1 / gt2 = B2 / gt3 = C2
日志文件 内部激活 T1 = A1 T2 = B1 T2 = C1 内部激活 T1 = A1 T2 = B1 T2 = C1