Einzelnen Beitrag anzeigen

Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Externe Anwendung auf das eigene Programm legen?

  Alt 11. Sep 2007, 19:30
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:
   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;
Leider kommt sobald ich mit der Maus auf den Taschenrechner oder meine Anwendung klicke die Fehlermeldung:
Zitat:
"Die DLL user32.dll kann nicht geladen werden."
Woran kann das liegen ?
Vielleicht fällt euch ja auch noch eine etwas elegantere Möglichkeit ein, die Anwendung in das Delphi-Programm zu integrieren?

Besten Dank,
Alexander
Alexander
  Mit Zitat antworten Zitat