Ich möchte eine existierende Delphi Form in eine Delphi
DLL packen und diese Form in C# aufrufen.
Eigentlich habe ich sowas schon früher mit einer anderen Programmiersprache problemlos gemacht..allerdings habe ich den alten Quellcode nicht mehr und die Ziel-Programmiersprache ist eine andere.
Die c# Applikation soll dann später über ICS (welche Form dann auch immer) mit der Delphi
DLL kommunizieren.
Ich weiß dass es Möglichkeiten wie Hydra oder Crosstalk gibt. Allerdings möchte ich es erstmal ohne diese kostenpflichtigen Tools probieren.
Ich kann in C# Funktionen aus der Delphi
DLL aufrufen und bekomme auch Rückgabewerte, aber sobald ich eine Form in der
DLL erstelle bekomme ich eine
Exception in C#. Der Fehler passiert schon beim Create der Form (hab ich soweit debuggt).
Ich habe schon versucht die Form mit Create(nil) zu erstellen, allerdings mit selbigem Ergebnis.
Ich hoffe ihr könnt mir weiterhelfen
Delphi-Quellcode:
library Project8;
uses
SysUtils,
Classes,
Windows,
Forms,
Unit9 in 'Unit9.pas' {Form9};
{$R *.res}
procedure TestWindowAnzeigen(aHandle: HWND); stdcall;
begin
Form9 := TForm9.CreateParented(aHandle);
Form9.ShowModal;
end;
exports TestWindowAnzeigen;
begin
end.
c# Code
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport("Project8.dll", CallingConvention = CallingConvention.StdCall)]
public static extern void TestWindowAnzeigen(IntPtr aHandle);
//public static extern void TestWindowAnzeigen();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TestWindowAnzeigen(Form1.ActiveForm.Handle);
}
}
}