AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit der Steuerung von iTunes über das OLE-Objekt
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit der Steuerung von iTunes über das OLE-Objekt

Ein Thema von CorVu5 · begonnen am 10. Apr 2009 · letzter Beitrag vom 10. Apr 2009
Antwort Antwort
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#1

Problem mit der Steuerung von iTunes über das OLE-Objekt

  Alt 10. Apr 2009, 14:28
Hallo, ich schreibe grade aus Spaß an einem Plugin für das Programm Rainmeter.
Rainmeter dient dazu, nützliche (oder auch unnütze) Sachen auf deinem Desktop auszugeben.
Rainmeter ruft in einem Intervall von 2 Sekunden folgende Funktion auf:
Delphi-Quellcode:
function GetString(id : Uint; flags : Uint) : PWideChar; cdecl;
var
  str : String;
  wide : PWidechar;
begin
  If ProcessExists('ITUNES.EXE') Then Begin //kann nicht nach dem Fenster scannen, weil ich iTunes nur im Tray nutze
    try
      iTunesApp := CreateOleObject('iTunes.Application');
        if iTunesApp.PlayerState And (not VarIsNull(iTunesApp.CurrentTrack)) Then begin
          str := iTunesApp.CurrentTrack.Artist + #13#10 + iTunesApp.CurrentTrack.Name + #13#10 + iTunesApp.CurrentTrack.Album;
          wide := GetMemory(2048 * 2);
          StringToWideChar(str,wide,2048);
          result := wide;
        end else result := '<paused>';
      if not VarIsNull(iTunesApp) then iTunesApp := Unassigned;
    except
      result := '<not ready>';
    end;
  end else result := '<not running>';
end;
Unschwer zu erkennen, dass ich versuche den aktuellen iTunes-song auszulesen und zurückzugeben.
Das funktioniert auch soweit gut, ABER:
Wenn ich jetzt versuche iTunes zu beenden kommt erst die Meldung von wegen "Es ist was mit dem Scripting Interface verbunden, trotzdem beenden?".
Wenn ich jetzt "Ja" wähle startet iTunes kurz darauf erneut, wenn zwischen der Zeit in der iTunes sich heruterfährt aber der Prozess noch existent ist ein weiterer Aufruf der obigen Funktion liegt. Das liegt wohl daran, dass eine neue Ole-Instanz geöffnet wird und sich iTunes dadurch offenbar wieder öffnet.
Kurz gesagt, ich bräuchte eine Überprüfung an der ich erkennen kann, ob iTunes sich grade versucht zu beenden.
Es gibt zwar dafür ein Event (http://dot-totally.co.uk/software/it...Interface.html) namens onAboutToPromptUserToQuitEvent, leider habe ich wenig bis keine Ahnung von OLE und den dazugehörigen Events.

Kann mir ein erleuchteter Geist weiterhelfen?
danke im Voraus
CorVu5
Das Leben ist wie ein Strand...und dann stirbt man.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit der Steuerung von iTunes über das OLE-Objekt

  Alt 10. Apr 2009, 14:38
Du erzeugst auch immer ein neues objekt, welches du nicht freigibst.
Markus Kinzler
  Mit Zitat antworten Zitat
CorVu5

Registriert seit: 31. Dez 2007
26 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit der Steuerung von iTunes über das OLE-Objekt

  Alt 10. Apr 2009, 14:44
Erstmal danke für die Antwort, aber soweit ich weiß (ich kann mich auch irren) zerstört man durch iTunesApp := Unassigned; das Objekt wieder.
Das Leben ist wie ein Strand...und dann stirbt man.
  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 11:46 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