AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

iTunes Problem...

Ein Thema von Z4ppy · begonnen am 9. Okt 2009 · letzter Beitrag vom 9. Okt 2009
Antwort Antwort
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#1

iTunes Problem...

  Alt 9. Okt 2009, 19:55
Bevor ich hier lang rumerzähl, einfach mal bisschen Code
Delphi-Quellcode:
function iTunesRunning:boolean;
begin
  if(FindWindow('iTunes',nil)=0) then Result:=false
  else Result:=true;
end;

function CurrentTrack:TTrack;
var iTunesApp, iTunesCurrentTrack: OLEVariant;
begin
  iTunesApp:=CreateOleObject('iTunes.Application');
  if not VarIsNull(iTunesApp) then begin
    iTunesCurrentTrack:=iTunesApp.CurrentTrack;
    if not VarIsNull(iTunesCurrentTrack) then begin
      Result.Artist:=iTunesCurrentTrack.Artist;
      Result.Album:=iTunesCurrentTrack.Album;
      Result.Song:=iTunesCurrentTrack.Name;
      if not VarIsNull(iTunesApp) then iTunesApp:=Unassigned;
    end;
  end;
end;
Im OnCreate der Form:
Delphi-Quellcode:
  if not iTunesRunning then begin
    MessageBox(Handle,'Start iTunes first...','Error',MB_OK or 16);
    Application.Terminate;
  end;
  Timer1Timer(Sender);
Und noch der Timer:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if not iTunesRunning then begin
    //wiedergabe gestoppt an server senden, kein problem
    Application.Terminate;
  end;
  LastTrack:=CurTrack;
  CurTrack:=CurrentTrack;
  if (CurTrack.Artist='') and (CurTrack.Album='') and (CurTrack.Song='') then begin
    //wiedergabe gestoppt senden
    close;
  end;
  // wenn nötig, TrayIcon-Hint anpassen und daten an server senden, das ist aber kein problem...
end;
Nun zu meinem Problem:
Ist iTunes nicht am Laufen, so kommt die entsprechende Meldung. Danach aber wird es gestartet und es kommt eine Access Violation, obwohl ich nach der Überprüfung, ob denn iTunes läuft, Application.Terminate aufrufe!
Wieso wird das Programm da einfach weiter ausgeführt?

Und wie stelle ich fest, ob die Wiedergabe pausiert wurde? Wenn ich nämlich etwas abspiele und auf Pause stelle, so meint mein Programm immer noch, ich würde hören - logisch, der pausierte Song ist ja auch der CurrentTrack ^^, aber ich hör eben nicht...

MfG Z4ppy

PS.: Ich hab noch ein anderes Problem mit iTunes, siehe hier ^^
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: iTunes Problem...

  Alt 9. Okt 2009, 22:46
Weil Application.Terminate nicht das Programm veranlasst alle Brocken hinzuwerfen und sich kopf- und haltlos ins Nirwana verabschiedet, sondern der Code danach auch noch ausgeführt wird.

Delphi-Quellcode:
if
  not iTunesRunning
then
  begin
    MessageBox(Handle,'Start iTunes first...','Error',MB_OK or 16);
    Application.Terminate;
  end
else
  begin
    Timer1Timer(Sender);
  end;
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if
    not iTunesRunning
  then
    begin
      //wiedergabe gestoppt an server senden, kein problem
      Application.Terminate;
    end
  else
    begin
      LastTrack := CurTrack;
      CurTrack := CurrentTrack;
      if
        ( CurTrack.Artist = '' ) and
        ( CurTrack.Album = '' ) and
        ( CurTrack.Song = '' )
      then
        begin
          //wiedergabe gestoppt senden
          close; // <<--- hier wird die Form geschlossen! Soll das so sein???
        end;
    end;
  // wenn nötig, TrayIcon-Hint anpassen und daten an server senden, das ist aber kein problem...
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: iTunes Problem...

  Alt 9. Okt 2009, 23:03
Da passt deine Signatur aber ganz gut

Ja, das mit dem close soll schon so sein

Bleibt nur noch das zweite Problem:
Zitat:
Und wie stelle ich fest, ob die Wiedergabe pausiert wurde? Wenn ich nämlich etwas abspiele und auf Pause stelle, so meint mein Programm immer noch, ich würde hören - logisch, der pausierte Song ist ja auch der CurrentTrack ^^, aber ich hör eben nicht...
MfG Z4ppy
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: iTunes Problem...

  Alt 9. Okt 2009, 23:24
Die Antwort solltest Du auch da finden

http://www.delphipraxis.net/internal...088453#1088453
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 06:55 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