Laden...

Hosten eines Prozesses und aller Kinderprozesse

Erstellt von adm1n vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.630 Views
A
adm1n Themenstarter:in
51 Beiträge seit 2014
vor 7 Jahren
Hosten eines Prozesses und aller Kinderprozesse

Hallo Forum,

das hosten eines Prozesses via PInvoke SetParent() aus dem anderen Thread hat soweit ganz gut funktioniert.
Jedoch habe ich nun das Problem, dass Kindprozesse des gehosteten Prozesses wieder "außerhalb" sind. Zum Beispiel wenn der VNC-Viewer eine VNC-Verbindung in einem neuen Fenster öffnet.

Besteht die Möglichkeit, einen Prozess und alle Kindprozesse die dieser startet zu hosten / das Parent zu ändern?

Thanks!

Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein

A
adm1n Themenstarter:in
51 Beiträge seit 2014
vor 7 Jahren

Keiner eine Idee?

Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein

771 Beiträge seit 2009
vor 7 Jahren
A
adm1n Themenstarter:in
51 Beiträge seit 2014
vor 7 Jahren

@Cat: vielen Dank, mit WMI funktioniert das hervorragend!

Habe den MultiProcessHoster von kkyzivat implementiert und einen watch auf die gewünsche Kindprozesse gelegt. Sobald ein neuer Prozess erzeugt wird, der auf der Watchlist steht, hoste ich diesen in den jeweiligen Container.

private void procWatcher_ProcessCreated(Win32_Process win32Process)
{
      var processId = win32Process.ProcessId;
      var process = Process.GetProcessById((int)processId);

     if(process != null)
           Load(process);
}

In Load() ist dann der übliche Win32-API-Code mit SetParent(), MoveWindow() und ShowWindow().

Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein

771 Beiträge seit 2009
vor 7 Jahren

👍