com_module_sample

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

com_module_sample

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

com_module_sample

Post 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?
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

com_module_sample

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

com_module_sample

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

com_module_sample

Post 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.
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

com_module_sample

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

com_module_sample

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

com_module_sample

Post 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.
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

com_module_sample

Post by wriedmann »

Hallo Franz,
das funktioniert jetzt - war ein Problem im Manifest der COM-DLL.
ComTestFR.png
ComTestFR.png (12.78 KiB) Viewed 510 times
Hier findest Du die Quellen der DLL und der VO-Exe:
ComTestF.zip
(112.43 KiB) Downloaded 91 times
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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 450
Joined: Thu Jan 18, 2018 9:03 am
Location: A

com_module_sample

Post 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?
Post Reply