2015-08-03 4 views
0

Я бы хотел использовать исполняемый экземпляр моего приложения (приложения для одного экземпляра) для запуска новой командной строки ... Я слышал о механизмах мьютексов и IPC, но Я не знаю, как его использовать.Использовать исполняемый экземпляр для выполнения командной строки в vb.net

Объяснение:

Public Class Form1 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     MsgBox(Environment.CommandLine) 
    End Sub 

End Class 

Пример:

я запустить приложение с помощью файла в качестве аргумента, она показывает MsgBox и я смочите. Если я снова запустил приложение с файлом в качестве аргумента, он не покажет MsgBox ... Как я могу показать его с новой командной строкой?

С уважением, Drarig29.

ответ

2

В VB.NET вы можете сделать свое приложение одним экземпляром на странице свойств проекта. Отметьте опцию «Сделать одно приложение экземпляра», а затем нажмите кнопку «Просмотр приложений События»:

Project Properties Page

В ApplicationEvents.vb классе, добавьте обработчик StartupNextInstance - это будет называться, когда приложение уже запущено и вы начинаете его снова. Вы можете вызвать метод на главной форме:

Namespace My 

    Partial Friend Class MyApplication 

     Private Sub MyApplication_StartupNextInstance(sender As Object, e As ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance 
      ' Handle arguments when app is already running 
      If e.CommandLine.Count > 0 Then 
       ' Pass the argument to the main form 
       Dim form = TryCast(My.Application.MainForm, Form1) 
       form.LoadFile(e.CommandLine(0)) 
      End If 
     End Sub 

    End Class 

End Namespace 

В главной форме, вы можете передать начальные аргументы командной строки и обрабатывать последующие, с общим способом:

Public Class Form1 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
     ' Handle arguments from the initial launch 
     Dim args = Environment.GetCommandLineArgs() 
     If args.Length > 1 Then 
      LoadFile(args(1)) 
     End If 
    End Sub 

    Public Sub LoadFile(filename As String) 
     MessageBox.Show(filename) 
    End Sub 

End Class 
+0

Спасибо для ответа, я попробую это позже ... Могли бы вы перестраховать меня? Я бы хотел завоевать некоторую репутацию ... Но просто, если хочешь! ;) – Drarig29

+1

Вы всегда должны попробовать сначала, прежде чем принимать ответ, чтобы будущие читатели знали, разрешило ли это вашу проблему или нет. Существует не торопиться принять ответ, и вы можете не помнить, чтобы его не понимали позже, если он не поможет. :-) – Mark

+0

Я пробовал, и это прекрасно! Спасибо. Марк: D – Drarig29