![]() |
iTunes Problem...
Bevor ich hier lang rumerzähl, einfach mal bisschen Code :lol:
Delphi-Quellcode:
Im OnCreate der Form:
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;
Delphi-Quellcode:
Und noch der Timer:
if not iTunesRunning then begin
MessageBox(Handle,'Start iTunes first...','Error',MB_OK or 16); Application.Terminate; end; Timer1Timer(Sender);
Delphi-Quellcode:
Nun zu meinem Problem:
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; 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 ![]() |
Re: iTunes Problem...
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; |
Re: iTunes Problem...
Da passt deine Signatur aber ganz gut :lol:
Ja, das mit dem close soll schon so sein ;) Bleibt nur noch das zweite Problem: Zitat:
|
Re: iTunes Problem...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz