Wie kann ich eine externe Anwendung im Hintergrund überprüfen, ob diese gestartet ist?
Über Process.GetProcesses habe ich auch schon versucht. Aber das mit dem Hintergrund habe ich keine Ahnung.
Ich vermute mit Threads könnte das gehen. Nur wie?
ja, genau. So habe ich ein Teil Angefangen. Nur müsste ich zyklisch Abfragen im Hintergrund. Könnte ja sein, dass jemand das externe Programm schliesst.
Wo ist das Problem? @VB1963 hat Dir einen Denkanstoß gegeben, keine Lösung.
.NET stellt Dir mehrere Sorten Timer zur Verfügung.
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter(der ist verfügbar). Programmierfragen über PN / Konversation werden ignoriert!
So weit Läuft das Programm.
Mit dem MenuStrip habe ich noch ein Problem. Mit Anklicken bekomme ich die Untermenus. Jedoch schliessen sich diese sofort.
Habe ich den falschen Timer?
VB.NET-Quellcode
Imports System.Timers
PublicClass Form1
Dim sec AsInteger
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Dim Timer1 AsNewTimer
AddHandler Timer1.Elapsed, New ElapsedEventHandler(AddressOf Timer1_Elapsed)
Timer1.Interval =1000
Timer1.Start()
EndSub
PrivateSub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs)
If sec =0Then
prozess()
sec =1
Else
sec = sec -1
EndIf
EndSub
Sub prozess()
Dim p() As Process = Process.GetProcessesByName("window_proc")
WMI zu benutzen um polling zu verhindern ist ja wohl absoluter käse, WMI events funktionieren auch nur durch polling. Aber die proccess klasse hat doch extra ein event, wenn ein proccess geschlossen wird, wieso das nicht verwenden?
Ob die Anwendung gestartet wurde musst du regelmäßig prüfen (polling), das geht nicht anders (nein, auch WMI macht nichts anderes). Wenn du den Process einmal hast, kannst du ganz einfach mit dem Exited Event arbeiten.
Der Timer gehört aus der Prozedur in die Klasse.
Zieh Dir einen im esigner auf die Form.
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter(der ist verfügbar). Programmierfragen über PN / Konversation werden ignoriert!
Ich habe den Fehler gefunden. Ein Timer war zuviel.
Besten Dank an alle