Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi COM Object freigeben (https://www.delphipraxis.net/164100-com-object-freigeben.html)

WizoHulk 28. Okt 2011 14:33

COM Object freigeben
 
Hallo,

Ich bin hier schon am verzweifeln und komme nicht weiter.

Ich habe einen ComServer der über die Anwendung1 mit
Delphi-Quellcode:
ole := createOLEObject('Application.updater');
erstellt bzw. gestartet wird, was auch so weit alle sganz gut klappt, aber ich möchte über die Anwendung2 die Instanz beenden.
Über die Anwendung2 greife ich auf die Instanz mit
Delphi-Quellcode:
getActiveOLEobject('Application.updater')
zu.
Mein Problem ist, wenn sie die erste Anwendung schließt, schließt sich die Instanz auch.
wie kann ich über die Zweite Anwendung das Object schließen?

WizoHulk 28. Okt 2011 16:29

AW: COM Object freigeben
 
Hat denn keiner eine Lösung?

WizoHulk 29. Okt 2011 10:34

AW: COM Object freigeben
 
*Push*

Bernhard Geyer 29. Okt 2011 10:43

AW: COM Object freigeben
 
Wie war das nochmal mit den 24 Stunden zwischen puschen:gruebel:

Stichworte wären hier der direkt aufruf der Release und AddRef Methoden um den Referenzcounter entsprechend zu beeinflussen.
Oder schauen ob das Marshallen von Interface-Pointer auch über Applikations-Grenzen möglich wäre.

Oder du schaust ob du nicht eine COM+-Applikation verwendest. Dort sind solche Anwendungsfälle mit "stehenbleibenden" COM-Server vorgesehen.

WizoHulk 30. Okt 2011 00:59

AW: COM Object freigeben
 
Oh entschuldige bitte, ich wusste nicht das ich 24h warten muss.


Zitat:

Oder du schaust ob du nicht eine COM+-Applikation verwendest. Dort sind solche Anwendungsfälle mit "stehenbleibenden" COM-Server vorgesehen.
Ich habe eine Application mit einen COM Server, oder meinst du was anderes?

Ich starte ja die COM + Application über eine andere Anwendung. jedoch schließt die Application, wenn die Anwendung beendet wird.

WizoHulk 15. Nov 2011 14:40

AW: COM Object freigeben
 
hallo

ich habe die Funktionen
Delphi-Quellcode:
AddRef
,
Delphi-Quellcode:
Release
und
Delphi-Quellcode:
QueryInterface
gefunden.
Nun leider kann ich diese nicht ausführen da ich immer eine fehlermeldung bekomme, das dies vom Objekt nicht unterstützt wird.

Muss ich das noch irgendwo einbinden?

shmia 15. Nov 2011 15:36

AW: COM Object freigeben
 
Wenn du verhindern willst, dass deine Serveranwendung beendet wird, dann kannst du das über das Event OnLastRelease verhindern:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
   // Wenn die Anwendung über COM hochgezogen wurde und der letzte Client die Verbindung
   // beendet dann Anwendung nicht beenden (wird in dem Event-Handler gesteuert).
   ComServer.OnLastRelease := Self.HandleComServerOnLastRelease;
...

procedure TMainForm.HandleComServerOnLastRelease(var Shutdown: Boolean);
begin
   // Anwendung weiter laufen lassen, wenn der letzte Client die Verbindung abbaut
   ShutDown := False;
end;

WizoHulk 18. Nov 2011 06:57

AW: COM Object freigeben
 
wo hast du diese Funktion her
Delphi-Quellcode:
Self.HandleComServerOnLastRelease;
muss mann da jetzt noch eine Unit einbinden?

DeddyH 18. Nov 2011 08:16

AW: COM Object freigeben
 
Die steht doch direkt unten drunter.

WizoHulk 18. Nov 2011 08:30

AW: COM Object freigeben
 
ja ich über geber der Procedure ein Parameter der nie benutzt wird?
und das versteh ich grad nicht so ganz.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz