![]() |
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:
erstellt bzw. gestartet wird, was auch so weit alle sganz gut klappt, aber ich möchte über die Anwendung2 die Instanz beenden.
ole := createOLEObject('Application.updater');
Über die Anwendung2 greife ich auf die Instanz mit
Delphi-Quellcode:
zu.
getActiveOLEobject('Application.updater')
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? |
AW: COM Object freigeben
Hat denn keiner eine Lösung?
|
AW: COM Object freigeben
*Push*
|
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 ![]() Oder du schaust ob du nicht eine COM+-Applikation verwendest. Dort sind solche Anwendungsfälle mit "stehenbleibenden" COM-Server vorgesehen. |
AW: COM Object freigeben
Oh entschuldige bitte, ich wusste nicht das ich 24h warten muss.
Zitat:
Ich starte ja die COM + Application über eine andere Anwendung. jedoch schließt die Application, wenn die Anwendung beendet wird. |
AW: COM Object freigeben
hallo
ich habe die Funktionen
Delphi-Quellcode:
,
AddRef
Delphi-Quellcode:
und
Release
Delphi-Quellcode:
gefunden.
QueryInterface
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? |
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; |
AW: COM Object freigeben
wo hast du diese Funktion her
Delphi-Quellcode:
muss mann da jetzt noch eine Unit einbinden?
Self.HandleComServerOnLastRelease;
|
AW: COM Object freigeben
Die steht doch direkt unten drunter.
|
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 21:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz