![]() |
Externe Anwendung auf das eigene Programm legen?
Hallo :),
ich habe mit C# (.NET 2.0) eine Komponente geschrieben. Diese möchte ich auch gerne in einer Delphi.NET Anwendung verwenden (.NET 1.1). Aufgrund der unterschiedlichen .NET Version klappt das ja nicht. Meine Idee war jetzt folgende: Ich bastel nen kleines Programm um die Komponente (mit C#) und starte das Programm in meiner Delphi.NET Anwendung (.NET 1.1). Dann habe ich mir überlegt, könnte ich ja einfach mit der Win32API Funktion SetParent die Handles umbiegen und so die Anwendung in die Delphi-Anwendung bekommen. Dazu erstelle ich mir eine Form, auf die dann die Anwendung angezeigt werden soll. Gesagt getan: Testweise starte ich erstmal den Taschenrechner.
Delphi-Quellcode:
Leider kommt sobald ich mit der Maus auf den Taschenrechner oder meine Anwendung klicke die Fehlermeldung:
TProcessHelper = class
private [DllImport('"user32.dll')] class function SetParent(hWndChild : IntPtr; hWndNewParent : IntPtr) : IntPtr; static; {...} procedure loadProcess(); var p : Process; frm : Form; begin frm := Form.Create(); frm.Owner := _parent; frm.ShowInTaskbar := false; p := Process.Create(); p.StartInfo.FileName := 'calc.exe'; include(p.Exited, p_Exited); // nur damit das Form auch wieder geschlossen werden kann. p.Start(); SetParent(p.MainWindowHandle, frm.Handle); frm.ShowDialog(); end; Zitat:
Vielleicht fällt euch ja auch noch eine etwas elegantere Möglichkeit ein, die Anwendung in das Delphi-Programm zu integrieren? Besten Dank, Alexander |
Re: Externe Anwendung auf das eigene Programm legen?
Ist das zusätzliche Anführungszeichen im Attribut beim Kopieren reingerutscht? Ich hoffe nicht, denn einen anderen Fehler kann ich nicht erkennen.
|
Re: Externe Anwendung auf das eigene Programm legen?
Oha, das wirklich ein Fehler :oops:. Leider klappt es aber nicht so, wie ich mir das gedacht habe.
Bzw. es ist Zufall, ob es klappt oder nicht. Mal klappt es, dann wieder nicht. Ich habe mir da jetzt noch etwas anderes überlegt. Ich lasse die Anwendung einfach modal anzeigen, indem ich den Prozess in einem nicht sichtbaren, aber modal geladenen Form starte. Das klappt recht gut. Auch wenn der Lösungsweg schon recht schräg ist :P. Aber so weit ich weiß, gibt es keine Möglichkeit diese Prozesse modal anzuzeigen (also wie bei ShowDialog einer Form). Wenn du noch eine Idee hast, woran es liegen kann. Dann nur her damit :P |
Re: Externe Anwendung auf das eigene Programm legen?
Was passiert denn, wenn es mal "nicht klappt"? Ist dein code vielleicht einfach zu schnell und das Fenster noch nicht erstellt?
Achja, nur so am Rande: welcher böse Mensch zwingt dich zu 1.1 :stupid: ? |
Re: Externe Anwendung auf das eigene Programm legen?
Zitat:
Mehr weiß ich leider auch nicht. Es kann gut sein, dass es ein Problem mit der Schnelligkeit ist. Das kann ich leider aber nicht nachvollziehen. Zitat:
Chrome wäre sicherlich eine Alternative, habe es aber derzeit nur in einer Studentenversion ;). |
Re: Externe Anwendung auf das eigene Programm legen?
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz