Laden...

COM Wrapper

Erstellt von george vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.946 Views
G
george Themenstarter:in
130 Beiträge seit 2005
vor 19 Jahren
COM Wrapper

Hallo,

hat jemand Erfahrung mit dem Programmieren von COM - Wrapper - Klassen ? Ich möchte im Compact Framework COM - Funktionalität nutzen.
Vielleicht mal ein kleines Beispiel.

Danke george

P
939 Beiträge seit 2003
vor 19 Jahren

Die Wrapper-Dll mit Tlbimp.exe generieren, klappt nicht? Man kann glaube ich auch Source generieren, den man nachbessern kann.

Link mit Beispiel: Prozess/InternetExplorer schliessen

Gruss
Pulpapex

G
george Themenstarter:in
130 Beiträge seit 2005
vor 19 Jahren

Hallo,

es funktioniert so nicht. Ich bekomme eine Exception auf dem CE - Device. Das Problem ist, dass du keine Interoperabilitätsunterstützung im Compact Framework hast. Das CF bietet nur ein Plattform - Invoke an. Im Forum habe ich einen Hinweis gefunden, dass man eine Wrapper - Klasse für die COM - DLL erstellen muss und dann über P/Invoke auf die Funktionalität zugreifen kann.
Aber ich verstehe den Mechanismus dahinter nicht. Wie muss ich die COM - Funktion in der Wrapper - Klasse deklarieren und wie muss sie implementiert werden?
Ich hoffe, dass mir jemand zu diesem Thema weiterhelfen kann. Es ist dringend.

Danke george

P
939 Beiträge seit 2003
vor 19 Jahren

Ich hatte gedacht, dass Tlbimp.exe den generierten Quellcode ausgeben kann. Ist aber nicht so, muss ich mit irgendetwas verwechseln. Jedenfalls ... vielleicht bringt es dich weiter, den generierten COM-Wrapper mit Reflector zu decompilieren. So könntest du Code mit Inkompatiblitäten und nicht unterstützte Typen abändern.

Hier noch ein Msdn-Link, wie man COM-Wrappers manuell erstellt und anpasst:
Marshallen von Daten mit COM-Interop

Gruss
Pulpapex

G
george Themenstarter:in
130 Beiträge seit 2005
vor 19 Jahren

Hallo pulpapex,

ich habe ein Beispiel gefunden.

Man muss über

[DllImport(<DLLName>)]
<funktionsname>

die Funktionen bekannt machen. Dann muss man eine eigene Funktion schreiben, wo die deklarierte Funktion aus der DLL aufgerufen wird.

zum Beispiel: (Microsoft Beispiel)
//--------------------------------------------------------------------------------
[ DllImport("PocketOutlook.dll", EntryPoint="IPOutlookApp_Logon") ]
private static extern int do_Logon(IntPtr self, int hWindowHandle);

public void Logon(int hWindowHandle)
{
PocketOutlook.CheckHRESULT(do_Logon(m_pIPOutlookApp,
hWindowHandle));
}
//---------------------------------------------------------------------------------

Gruss george