Einzelnen Beitrag anzeigen

Seras

Registriert seit: 14. Dez 2005
12 Beiträge
 
Delphi 2006 Professional
 
#1

COM, "Oxxx.Create", feststellen ob Programm gestar

  Alt 14. Dez 2005, 10:45
Hallo,

es gibt ja die Wunderbare Möglichkeit, Programme per OLE/COM fernzusteuern.
Dazu importiere ich die Typbibliothek, erstelle mein Objekt und mache da ein COxxx.Create.
Beispielsweise:
Delphi-Quellcode:
var iTunesApp: IiTunes;
{......}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  iTunesApp := COiTunesApp.Create; // Denkt euch den try..except block hier einfach.
end;
In meinem Falle also iTunes.
Jetzt gibt es aber zwei Möglichkeiten:
1. iTunes läuft bereits => Es wird einfach die "laufende Instanz" genommen.
2. iTunes läuft nicht => iTunes wird extra gestartet.

Kann ich irgendwie herausfinden ob iTunes vorher schon lief oder ob es durch "mein" .create jetzt extra gestartet wurde?
Wie gebe ich ein COM-Object danach eigentlich wieder sauber frei?

Wenn ich das hier mache:
Delphi-Quellcode:
procedure TMainForm.FormDestroy(Sender: TObject);
begin
  if iTunesApp <> nil then iTunesApp.Quit;
  iTunesApp := nil;
end;
wird iTunes beendet. Das will ich aber nicht immer. Ich will eigentlich nur mein iTunesApp sauber entfernen, also die Verbindung zu iTunes lösen ohne iTunes zu beenden.

Danke für Hinweise!
  Mit Zitat antworten Zitat