palaber
Captain
- Registriert
- Juni 2006
- Beiträge
- 3.856
Hi Leute,
ich versuche eine Messagebox in den Vordergrund meiner Applikation zu bringen. Die Messagebox wird von
einem Prozess geöffnet (exe die ich über Process.Start(ProcessStartInfoObjekt) starte).
Der normale Prozessstart öffnet das verwendete Tool im Vordergrund. Auch wenn das Tool von meinem ursprünglichen Programm
überdeckt ist, kann ich via Button-Klick das Tool wieder in den Vordergrund holen.
Dies realisiere ich über die Windows-APIs:
Die variable hWnd entspricht hierbei der Prozess.MainWindowHandle Property.
Geht beim starten des Tools etwas schief erscheint eine MessageBox. Eigentlich im Vordergrund. Allerdings kann diese durch "blödes" klicken hinter die ursprüngliche Applikation rutschen. Jetzt funktioniert mein Button mit der SetForegroundWindow-Funktionalität leider nicht mehr. Das Problem ist, dass der Prozess den MainWindowHandle = 0 hat (somit kein aktives Fenster besitzt und nicht in der Taskleiste angezeigt wird).
Über ALT-TAB kann ich zwar die Fehlermeldung in den Vordergrund holen, dass ganze soll aber auch ohne Tastatur gehen.
Weiß jemand wie ich die Msg-Box "TopMost" bekomme?
Wird ein Process.Kill() durchgeführt wird auch die Msg-Box geschlossen (nur zur Info).
Danke für die Hilfe!
ich versuche eine Messagebox in den Vordergrund meiner Applikation zu bringen. Die Messagebox wird von
einem Prozess geöffnet (exe die ich über Process.Start(ProcessStartInfoObjekt) starte).
Der normale Prozessstart öffnet das verwendete Tool im Vordergrund. Auch wenn das Tool von meinem ursprünglichen Programm
überdeckt ist, kann ich via Button-Klick das Tool wieder in den Vordergrund holen.
Dies realisiere ich über die Windows-APIs:
C#:
[DllImport("user32.dll")]
internal static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
internal static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
Geht beim starten des Tools etwas schief erscheint eine MessageBox. Eigentlich im Vordergrund. Allerdings kann diese durch "blödes" klicken hinter die ursprüngliche Applikation rutschen. Jetzt funktioniert mein Button mit der SetForegroundWindow-Funktionalität leider nicht mehr. Das Problem ist, dass der Prozess den MainWindowHandle = 0 hat (somit kein aktives Fenster besitzt und nicht in der Taskleiste angezeigt wird).
Über ALT-TAB kann ich zwar die Fehlermeldung in den Vordergrund holen, dass ganze soll aber auch ohne Tastatur gehen.
Weiß jemand wie ich die Msg-Box "TopMost" bekomme?
Wird ein Process.Kill() durchgeführt wird auch die Msg-Box geschlossen (nur zur Info).
Danke für die Hilfe!