| 

.NET C# Java Javascript Exception

3
Hallo,

ich versuche seit zwei Tagen in meiner Anwendung eine Function einzubauen, welche
1) checkt, ob die Anwendung schon gestartet wurde
2) wenn JA, dann die gestartete Anwendung in den Vordergrund bringt.

Punkt 1) konnte ich lösen, aber der Punkt 2) will nicht funktionieren. Habe schon mehrere Varianten laut "Google" probiert. Nichts funktioniert.

Hier der Code:
Public Function AppGestartet(Optional ProgrammTitel As String = "") As Boolean
Try
'Dim hwnd As Integer
'Dim pl As Process() = Process.GetProcessesByName(My.Application.Info.Title)
Dim pl As Process() = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName)

'hwnd = GetFirstWindowHandle(Process.GetCurrentProcess.ProcessName)
'MsgBox(String.Format("1: {0} -> {1} -> {2} -> {3}", Process.GetCurrentProcess.ProcessName, pl(0).Id, pl(0).Handle, pl(0).StartTime.ToLongTimeString))

If pl.Length > 1 Then
' MsgBox(String.Format("2: {0} -> {1} -> {2} -> {3}", Process.GetCurrentProcess.ProcessName, pl(1).Id, pl(1).Handle, pl(1).StartTime.ToLongTimeString))
'AppActivate(pl(1).Id)
'If IsMinimized(hwnd) Then
'Dim ptr As IntPtr = FindWindow(vbNull, ProgrammTitel)
ShowWindow(pl(1).Handle, 9)
SetForegroundWindow(pl(1).Handle)

'End If
Return True
Else
Return False
End If

Catch ex As Exception
' Bei Fehler nicht starten
Return True
End Try
End Function


Kann mir da jemand helfen? Danke.

LG
Gerhard
News:
14.06.2013
Gerhard 21 2
2 Antworten
1
Unter Projekt -> Einstellungen kann man (zumindest in WinForms) den Haken bei "Einzelinstanzanwendung erstellen" setzen. Dann startet das Programm auch nicht mehrfach.
14.06.2013
muffi 1,4k 1 9
0
Die Win API Funktion BringWindowToTop (Pinvoke Signatur) sollte hier weiterhelfen. Dieser musst Du nur ein Window-Handle zum Fenster übergeben, dass Du in den Vordergrund bringen möchtest. Ich habe diese Funktion schon länger nicht mehr benutzt, meine mich aber zu erinnern, dass Sie zuverlässig funktioniert.
14.06.2013
ffordermaier 8,4k 3 9

Stelle deine .net-Frage jetzt!