externe Anwendung ohne ActiveX-Control integrieren

masmin

Mitglied
Hallo,

ich habe da mal wieder ein Problem. Ich möchte gerne eine externe Anwendung (z.B. application.exe) aus meinem C#-Programm starten und in einem Fenster in einem MDI Container angezeigt haben (oder auch in irgendeiner anderen Windows Forms), bzw. da drin soll die gestartet Anwendung dann laufen. Das Problem besteht nun darin, dass es von dieser Anwendung kein ActiveX Control gibt und ich nun nicht weiß, wie ich das anstellen könnte. Klar gibt es die Möglichkeit das Programm mit Process.start() zu starten, allerdings läuft das Programm dann außerhalb meines Programms.
Weiß hier jemand Rat oder hat Lösungsansätze?

Hoffe ich bin im richtigen Unterforum damit.
 
Hi.

Ist so was denn ÜBERHAUPT möglich? Ich jedenfalls habe so etwas noch nicht gesehen. :-(

Lasse mich aber auch gerne eines besseren belehren.


MfG Alexander12
 
Hi.

Warum auch immer du das haben willst, hier wäre eine Möglichkeit.

  • Bei pinvoke.net die SetParent Signatur holen
Code:
[DllImport("user32.dll")]
		static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
  • Neuen Process starten
Code:
ProcessStartInfo psi = new ProcessStartInfo("notepad.exe");
Process p = Process.Start(psi);
  • Parent des Hauptfensters neu setzen
Code:
SetParent(p.MainWindowHandle, this.Handle);


Viel Spass.

MfG,
Alex
 
Hallo Alexander,

danke für die Hilfe. Das funktioniert soweit schon ganz gut, bzw. es funktioniert! :) Allerdings habe ich trotzdem noch ein Problem damit. Wenn ich nun eine Anwendung starte, welche selbst ein neues Fenster öffnet, wird dieses wieder außerhalb meiner Anwendung geöffnet. Kann man das noch irgendwie unterbinden?
 
Sorry,

da kann ich dir dann im Moment auch nicht weiterhelfen.
Hab das selbst nur schnell zusammengebastelt und ausprobiert wie ich deinen Thread gesehen habe.
 
Naja, ich habs jetzt auch nicht probiert, aber das neue Fenster sollte als ParentHandle doch das Mainfenster haben. Darüber solltest es via Win32-API rausfinden und abfangen können. Die Frage ist nur, wie die Anwendung damit dann umgeht ;-)
 
Zurück