WinXP: Task eines Processes in Taskleiste verstecken.
-
Hallo Leute,
wie kann ich den Taks eines Prozess in der Taskleiste verstecken, ohne das dass Programm an sich unsichtbar ist. Ich möchte ein externes Programm starten (C#).. und davon dann den Fenster-Handle holen und das Fenster in meine Anwendung einbetten.
Aber während das Programm startet, bis ich dessen Fenster-Handle holen kann, sollte es nicht sichtbar sein ... es sollte vorallem nicht in den Taskmanager angezeigt werden, weil die Taskleiste (trozt TopMost meiner App) aufgeklappt wird.
Wie könnte ich das machen? Ich verwende c# -> Process um Amwendung zu startren und diveres "user32.dll" WinAPI funktionen um den handle um zubiegen.
Danke
-
Bin mir jetzt ned ganz sicher, aber, der Eintrag in der TaskListe haengt doch am "Fenster", das heisst du muesstest deinem MainFenster nur flags mitgeben, das es nicht als Hauptfenster laeuft.
Wie das mit c# geht, keine Ahnung ....
und ob du es in C# hinbekommst, nen Fenster in ne andere Application umzuleiten ? ^^ Denk schon das das unter winapi + c ned einfach sein wird
wie soll deine App die events vom adaptierten(im anderen prozess laufenden) Fenster bekommen ? Sich in ne Msgloop im anderen prozess einzuklinken iss sicher lustig
wenn du beide Apps selber schreibst, also unter deiner Kontrolle hasst, warum machst die eine nicht als Dll ?
Oder ne gescheite IPC zwischen den Prozessen, so das die Fenster (die GUI) des zu adaptierenden Prozesses im eigenen Prozess laeuft ?Ciao ...
-
Hi PalimPalim,
du mußt das Flag 'WS_EX_APPWINDOW' der Extended Window Styles für das MainWindowHandle mittels der WinAPI-Funktion SetWindowLong(Ptr) löschen.
Einen ähnlichen Beitrag dazu habe ich vor kurzem unter http://www.mycsharp.de/wbb2/thread.php?threadid=92176 gehabt.
Die Änderung bei dir wäre also GWL_EXSTYLE (-20) anstatt GWL_STYLE (-16) zu benutzen und entsprechend das Flagconst int WS_EX_APPWINDOW = 0x00040000;
verwenden.
Wichtig: danach dann noch SetWindowPos() aufrufen!!!