AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?
Thema durchsuchen
Ansicht
Themen-Optionen

OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?

Ein Thema von tenikx · begonnen am 17. Okt 2013 · letzter Beitrag vom 17. Okt 2013
Antwort Antwort
tenikx

Registriert seit: 1. Mär 2009
7 Beiträge
 
#1

OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?

  Alt 17. Okt 2013, 10:57
Hallo zusammen,

ich schreibe eine Anwendung, die ein anderes Programm (Stata) per OLE fernsteuert. Der Zugriff funktioniert auch prima per CreateOLEObject(...).

Allerdings, sobald mein Programm beendet wird, wird auch das ferngesteuerte Programm geschlossen. Das möchte ich vermeiden, da das ferngesteuerte Programm je nach Situation auch schon vorher läuft.

Ich bin mittlerweile darauf gestoßen, dass es wohl mit der Freigabe des OLE-Objektes zu tun hat. Denn wenn ich das OLE-Objekt als lokale Variable in einer Prozedur definiere, wird das ferngesteuerte Programm bereits bei verlassen der Prozedur beendet und nicht erst bei Beendigung meines Programms insgesamt. Zumindest dies konnte ich umgehen, indem ich die Variable global definiert habe.

Trotzdem wäre es wünschenswert, wenn man dafür sorgen könnte, dass die Anbindung an das ferngesteuerte Programm zu einem beliebigen Zeitpunkt aufgelöst wird, ohne dieses zu beenden.

Jemand eine Idee? Ich habe schon vielfach auf Google und in Foren gesucht, aber vielleicht komme ich nicht auf die richtigen Suchbegriffe...

Danke im Voraus für jede Hilfestellung!
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?

  Alt 17. Okt 2013, 11:05
Das hört sich eher danach an das auf seiten des zu steuernden Programmes was falsch implementiert wurde.
Standardmäßig ist es so das die Anwendung weiterläuft wenn sie vor dem Start der Automatisierung gelaufen ist und sich nur beendet wenn sie auch von der Automatisierung gestartet wurde.

Kannst du denn Fall den mittels einfachen VBS-Script nachstellen?
Falls ja würde ich den Hersteller der entsprechenden Anwendung um eine Fehlerkorrektur bitten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
tenikx

Registriert seit: 1. Mär 2009
7 Beiträge
 
#3

AW: OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?

  Alt 17. Okt 2013, 15:03
Vielen Dank für die schnelle Antwort, Bernhard!

Ich werde das auf jeden Fall bei dem Hersteller zur Sprache bringen. Allerdings ist es fraglich, ob der (rechtzeitig) reagiert...

Gibt es eine Möglichkeit, das Problem meinerseits zu umschiffen?

Danke und liebe Grüße
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?

  Alt 17. Okt 2013, 15:09
Gibt es eine Möglichkeit, das Problem meinerseits zu umschiffen?
Keine Richtige. Du könntest probieren bei deinen Interfacezeiger mit _AddRef() den Refernzzeiger zu manipulieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
tenikx

Registriert seit: 1. Mär 2009
7 Beiträge
 
#5

AW: OLE-Fernsteuerung: Objekt freigeben, ohne ferngesteuerten Prozess zu beenden?

  Alt 17. Okt 2013, 16:44
Nochmal danke, Bernhard.

Ich habe IInterface(fStataOLEVariant)._AddRef direkt hinter CreateOLEObject(...) ausgeführt. Das Problem wird dadurch nicht gelöst. Aber interessanterweise macht es einen Unterschied insofern, dass fStataOLEVariant nun eine lokale Variable sein kann und das Stata-Fenster trotzdem bis zum Ende des Gesamtprogramms (aber leider auch nur bis dann) geöffnet bleibt

Bringt Dich das auf eine weitere gute Idee für einen Work-Around?

Gruß
Tobias
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
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