Page 2 of 5
com_module_sample
Posted: Tue Apr 12, 2022 9:43 am
by wriedmann
Hallo Franz,
ich habe mit einem Tool kontrolliert, ob in der DLL das Manifest drin ist - und das war es nicht.
Nach dem Hinzufügen der beiden defines und Berichtigen des Eintrages war das Manifest in der DLL enthalten (immer laut meinem Tool).
Die defines sind immer gleich.
Wolfgang
com_module_sample
Posted: Thu Apr 14, 2022 9:22 am
by lagraf
Hallo Wolfgang,
ich habe deine Änderungen nachgezogen, bekomme beim Aufruf der Methode ICOMTESTER:OUTPUT aus VO die Meldung "OLE AutoObject has not been initialized or is already destroyed" . Ist das die gleiche Meldung, die auch du bekommst?
Sollte man die beiden defines nicht in der X# Doku ergänzen?
com_module_sample
Posted: Thu Apr 14, 2022 9:26 am
by wriedmann
Hallo Franz,
das ist genau die Meldung, die ich bekomme, wenn ich die erfolgreiche Erstellung des Ole-Objektes nicht abfrage:
Code: Select all
METHOD DoComTest() CLASS StandardShellWindow
LOCAL oCom AS ICOMTester
oCom := ICOMTester{}
if oCom:fInit
oCom:Output()
else
ErrorBox{ self, "Fehler beim Initialisieren" }:Show()
endif
RETURN SELF
Ich hatte leider noch nicht genügend Zeit, mich weiter damit zu beschäftigen.
Wolfgang
com_module_sample
Posted: Wed Apr 20, 2022 8:28 am
by wriedmann
Hallo Franz,
habe mich heute noch eine Weile damit beschäftigt, es aber nicht zum Laufen bekommen - keine Ahnung warum.
Interessanterweise habe ich aber gleichzeitig eine COM-DLL geschrieben, die mir den Zugriff auf das Google Ads API erlaubt - und die hat auf Anhieb funktioniert.
Wolfgang
com_module_sample
Posted: Wed Apr 20, 2022 8:50 am
by lagraf
Hallo Wolfgang,
danke für deine Bemühungen!
Es ist halt blöd, wenn das X# Beispiel in der Doku 1:1 durchgespielt nicht funktioniert und die COM Schnittstelle so "empfindlich" ist. Hast du ein anderes, simples COM Testbeispiel, das vielleicht nur einen Text ausgibt oder 2 Zahlen addiert und das Ergebnis ausgibt? Dann könnte ich mal ausprobieren ob das bei mir läuft.
com_module_sample
Posted: Wed Apr 20, 2022 9:36 am
by wriedmann
Hallo Franz,
leider ist die COM-Schnittstelle sehr empfindlich - bis sie mal läuft.
Laut dem, was ich gefunden habe, ist das ein Versionsproblem in der DLL:
https://stackoverflow.com/questions/938 ... ot-match-t
Nur komme ich beim besten Willen nicht drauf, wo es hängt, denn es ist immer die Version 1.0.0.0, die ich zurückbekomme.
Und im EventViewer bekomme ich keinen Fehler, genauso wenig wie mit sxstrace.
Hast Du eigentlich die GUIDs neu generiert?
Wolfgang
com_module_sample
Posted: Wed Apr 20, 2022 9:40 am
by wriedmann
Hallo Franz,
ich werde heute abend versuchweise eine neue DLL ganz von vorne bauen.
Hast Du einen Wunsch für den Namen?
Wolfgang
com_module_sample
Posted: Wed Apr 20, 2022 10:32 am
by lagraf
Hallo Wolfgang,
die beiden GUIDS habe ich hintereinander mit GuidGen erzeugt.
Kann es ev. stören dass die Versionsnummer in COMTest.dll.manifest 0.0.0.0 ist, sie wurde so autom. erstellt.
Ich hab keine Eile bei der DLL, du weißt ja ich bin in Rente <g>, als Name vielleicht COMTestWR, ich vergleiche sie dann mit meiner COMTest.
com_module_sample
Posted: Sat Apr 23, 2022 2:16 pm
by wriedmann
Hallo Franz,
das funktioniert jetzt - war ein Problem im Manifest der COM-DLL.
- ComTestFR.png (12.78 KiB) Viewed 496 times
Hier findest Du die Quellen der DLL und der VO-Exe:
Und so sollte das Manifest ausschauen:
Code: Select all
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
name="COMTestFR"
version="1.0.0.0"
publicKeyToken="0359fa75d6c66754"
type="Win32">
</assemblyIdentity>
<clrClass
clsid="{CA36EE8F-120A-4943-9CE2-ACC310AB62A8}"
progid="COMTestFR.ComTesterFR"
name="COMTestFR.ComTesterFR"
runtimeVersion="v4.0.30319">
</clrClass>
<file
name="COMTestFR.dll"
>
</file>
</assembly>
Wolfgang
com_module_sample
Posted: Sun Apr 24, 2022 7:21 am
by lagraf
Hallo Wolfgang,
ich habe das gesamte ZIP File nach C:tempCOMTest entpackt, die AEF importiert und compiliert. Allerdings startet die COMTestF App nicht (Create Process Failed).
Warum sind in der AEF IComTester und IComTesterFR vorhanden und im Manifest ComTestF und ComTestFR definiert?