调用MDI / TDI单实例应用程序并处理新的命令行参数

时间:2019-01-25 22:06:07

标签: .net winforms command-line

我正在尝试创建一个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

0 个答案:

没有答案