Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Track aus Itunes auslesen (https://www.delphipraxis.net/89610-track-aus-itunes-auslesen.html)

easteregg 3. Apr 2007 08:12


Track aus Itunes auslesen
 
heyho,

Ich such für mein Projekt die Möglichkeit den aktuellen ITunes Song auszulesen!
Auf der Suche nach einer Möglichkeit bin ich auf den Thread hier gestoßen: http://www.delphipraxis.net/internal...ghlight=itunes

allerdings ist der thread a) schon etwas älter und b) bringt mich zu einer ganz anderen frage.

Nämlich woher bekomm ich die nötigen .pas Files die da eingebunden werden? Hab mal bisschen im google gesucht, bin aber nicht weiter fündig geworden!
wäre toll wenn mir da jemand helfen könnte!

Das SDK-Kit scheints ja nicht zu sein, was es auf der Homepage zum download gibt oder?

danke schonmal für Hilfe :)

toms 3. Apr 2007 08:49

Re: Track aus Itunes auslesen
 
Hallo

Ich habe mal eine Funktion getCurrentTitle in diesem Thread gepostet.

easteregg 3. Apr 2007 11:30

Re: Track aus Itunes auslesen
 
herzlichen dank :)
für alle die das auch mal schnell brauchen :)

Delphi-Quellcode:
function ItunesSong(): string;
var
  iTunesApp: OLEVariant;
begin
  // iTunes Objekt erzeugen
  iTunesApp := CreateOleObject('iTunes.Application');
  if not VarIsNull(iTunesApp) then
     begin
      result := iTunesApp.CurrentTrack.Artist +' - '+ iTunesApp.CurrentTrack.Name;
     if not VarIsNull(iTunesApp) then iTunesApp := Unassigned;
  end;
end;

easteregg 3. Apr 2007 14:54

Re: Track aus Itunes auslesen
 
argh, ein problem:

wenn itunes zu ist und ich das ganze start, wird itunes geöffnet, wie kann ich das noch umgehen?
über die api geht das ja schlecht, denn die is ja nur da, wenn itunes gestartet hast.

wie prüf ich das aber vorher?
kennt jemand den handle namen von Itunes?

arbu man 3. Apr 2007 14:56

Re: Track aus Itunes auslesen
 
Benutze doch WinSpy das gibt es hier in der DP

easteregg 3. Apr 2007 14:59

Re: Track aus Itunes auslesen
 
danke für den tipp! da schau ich gleich mal nach :)

edit: das programm is ja genial! danke dafür!!!

easteregg 3. Apr 2007 15:20

Re: Track aus Itunes auslesen
 
hier nochmal die überarbeitete (wenn auch bestimmt nicht eleganteste lösung - aber besser kann ichs nicht ;) )

Delphi-Quellcode:
function ItunesSong(): string;
var
  iTunesApp: OLEVariant;
begin
 result := 'iTunes closed';
 if FindWindow('iTunes', nil) <> 0 then
  begin
    try //Itunes rennt?
    iTunesApp := CreateOleObject('iTunes.Application'); // iTunes Objekt erzeugen
    if not VarIsNull(iTunesApp) then
       begin
        result := iTunesApp.CurrentTrack.Artist +' - '+ iTunesApp.CurrentTrack.Name;
       if not VarIsNull(iTunesApp) then iTunesApp := Unassigned;
       end;
    except //tritt immer auf, wenn itnues zwar gestartet ist, aber nix wiedergibt!
      result := 'Itunes - Stopped';
    end;
  end;
end;

ste_ett 3. Apr 2007 15:25

Re: Track aus Itunes auslesen
 
Prüf doch vor dem Zugriff, ob "iTunesApp.CurrentTrack" existiert, dann brauchste auch keinen except-Block. :)

- edit -

Ungetestet, da ich hier kein ITunes habe. :)

Delphi-Quellcode:
function GetCurrentITunesSong(): String;
var
  iTunesApp, iTunesCurrentTrack: OleVariant;
begin
  Result := 'iTunes closed';
  if (FindWindow('iTunes', nil) <> 0) then
  begin
    iTunesApp := CreateOleObject('iTunes.Application'); // iTunes Objekt erzeugen
    if (not VarIsNull(iTunesApp)) then
    begin
      iTunesCurrentTrack := iTunesApp.CurrentTrack;
      if (not VarIsNull(iTunesCurrentTrack)) then
      begin
        Result := iTunesApp.CurrentTrack.Artist +' - '+ iTunesApp.CurrentTrack.Name;
        iTunesCurrentTrack := Unassigned;
      end;
      iTunesApp := Unassigned;
    end;
  end;
end;

arne99 2. Jul 2007 11:47

Re: Track aus Itunes auslesen
 
[DCC Error] uMain.pas(52): E2003 Undeclared identifier: 'CreateOLEObject'

Delphi-Quellcode:
function GetCurrentITunesSong(): String;
var
  iTunesApp, iTunesCurrentTrack: OLEVariant;
begin
  Result := 'iTunes closed';
  if (FindWindow('iTunes', nil) <> 0) then
  begin
    iTunesApp := CreateOLEObject('iTunes.Application'); // iTunes Objekt erzeugen
    if (not VarIsNull(iTunesApp)) then
    begin
      iTunesCurrentTrack := iTunesApp.CurrentTrack;
      if (not VarIsNull(iTunesCurrentTrack)) then
      begin
        Result := iTunesApp.CurrentTrack.Artist +' - '+ iTunesApp.CurrentTrack.Name;
        iTunesCurrentTrack := Unassigned;
      end;
      iTunesApp := Unassigned;
    end;
  end;
end;
Original Code, implementiert. Einziger Fehler: OLEObject kann nicht erzeugt werden. Warum?

Meine Lösung:
Nat. sollte man ComObj implementieren und desweiteren mit Delphi 2007 auch Variants als VarTyp verwenden.

arne99 2. Jul 2007 12:18

Re: Track aus Itunes auslesen
 
Dennoch: Es funktioniert mit der neuesten Version von iTunes, WinXP SP2 und diesem Code nicht!

Ich nochmal: Edit!

Also, solange iTunes laeuft aber kein Lied spielt gibt es eine Zugriffsverletzung. Das muesste man noch abfangen. Gruß Arne


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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