![]() |
iTunes COM Events
Ich versuche, die Events aus der iTunesLib zu benutzen, z.B. OnPlayerPlayEvent, OnPlayerStopEvent usw.
Nun habe ich mich schon halb tot gesucht nach Beispielen wie man diese verwendet, aber leider nur wenig und vor allem nichts funktionierendes gefunden. Gefunden habe ich folgendes Material: Hier auf DP:
![]() Natürlich habe ich auch ![]() Die offizielle Dokumentation von Apple konnte ich mir leider nicht ansehen, da man dafür einen Account im Mac Developer Program benötigt. Allerdings scheint diese ebenfalls nur Beispiele in C# und C++ zu haben, was mir wiederum äusserst wenig hilft... Wie kann ich auf die Events reagieren? MfG Z4ppy |
Re: iTunes COM Events
Zitat:
Hast du dir die TypeLib erzeugt? |
Re: iTunes COM Events
Liste der Anhänge anzeigen (Anzahl: 2)
Keine Ahnung, aber er scheint nicht zu funktionieren :lol:
Natürlich... Habe mal eben die beiden von EventSinkImp erstellten Dateien angehängt ;) MfG Z4ppy |
Re: iTunes COM Events
Und was hast du jetzt gemacht?
Du musst also irgendwie dein ITunes starten:
Delphi-Quellcode:
Dann erstellst du eine Klasse, welche die Events empfängt:
var iTunes:IiTunes;
iTunes:=CoiTunesApp.Create;
Delphi-Quellcode:
Dann verbindest du den Eventhandler mit iTunes:
var iTunesLibIiTunesEvents:TiTunesLibIiTunesEvents;
iTunesLibIiTunesEvents:=TiTunesLibIiTunesEvents.Create(nil); //oder eben mit Owner;
Delphi-Quellcode:
Damit bekommt dein Objekt iTunesLibIiTunesEvents alle Ereignisse von iTunes mit. Du kannst auch problemlos mehrere Eventhandler bei iTunes connecten. Dann wird bei einem entspröchenden Ereignis eben jedes Objekt benachrichtigt.
//das funktioniert widererwartend "rückwärts"
iTunesLibIiTunesEvents.connect(iTunes); Allerdings weis jetzt iTunesLibIiTunesEvents nocht nicht, was es bei einem Event machen soll. Bzw. bis jetzt macht es noch gar nichts, dafür musst du eben wie in Delphi gewohnt die Ereignisbehandlungsroutinen zuweisen:
Delphi-Quellcode:
Jo, und dann sollte alles gehen. Ich habe (leider) kein iTunes, kann es deswegen nicht testen
type
TiTunesLibIiTunesEvents = class (TiTunesLibEventsBaseSink) [...] published //SinkEventsPublished// property OnDatabaseChangedEvent: T_IiTunesEventsOnDatabaseChangedEventEvent read FOnDatabaseChangedEvent write FOnDatabaseChangedEvent; property OnPlayerPlayEvent: T_IiTunesEventsOnPlayerPlayEventEvent read FOnPlayerPlayEvent write FOnPlayerPlayEvent; property OnPlayerStopEvent: T_IiTunesEventsOnPlayerStopEventEvent read FOnPlayerStopEvent write FOnPlayerStopEvent; property OnPlayerPlayingTrackChangedEvent: T_IiTunesEventsOnPlayerPlayingTrackChangedEventEvent read FOnPlayerPlayingTrackChangedEvent write FOnPlayerPlayingTrackChangedEvent; property OnUserInterfaceEnabledEvent: T_IiTunesEventsOnUserInterfaceEnabledEventEvent read FOnUserInterfaceEnabledEvent write FOnUserInterfaceEnabledEvent; property OnCOMCallsDisabledEvent: T_IiTunesEventsOnCOMCallsDisabledEventEvent read FOnCOMCallsDisabledEvent write FOnCOMCallsDisabledEvent; property OnCOMCallsEnabledEvent: T_IiTunesEventsOnCOMCallsEnabledEventEvent read FOnCOMCallsEnabledEvent write FOnCOMCallsEnabledEvent; property OnQuittingEvent: T_IiTunesEventsOnQuittingEventEvent read FOnQuittingEvent write FOnQuittingEvent; property OnAboutToPromptUserToQuitEvent: T_IiTunesEventsOnAboutToPromptUserToQuitEventEvent read FOnAboutToPromptUserToQuitEvent write FOnAboutToPromptUserToQuitEvent; property OnSoundVolumeChangedEvent: T_IiTunesEventsOnSoundVolumeChangedEventEvent read FOnSoundVolumeChangedEvent write FOnSoundVolumeChangedEvent; end; |
Re: iTunes COM Events
Bin wohl zu müde, die Zuweisung hinzukriegen :wall:
Delphi-Quellcode:
geht schonmal nicht (wobei iTunesEvents das "iTunesLibIiTunesEvents" von deinem Code ist und Play eine Prozedur, die als Variable den Track erwartet)...
iTunesEvents.OnPlayerPlayEvent:=Play;
Als Fehler kommt vom Compiler "Incompatible types: 'method pointer and regular procedure'"... Kann mir schnell noch jemand sagen, wie ich das machen muss? Sonst probier ichs morgen nochmal, wenn ich nich mehr so müde bin :lol: MfG Z4ppy |
Re: iTunes COM Events
Such einfach mal nach deiner Fehlermeldung! Dieser Fehler wird hier in ca. jedem 100. Thread behandelt.
Delphi-Quellcode:
Du benötigst das untere, hast aber das obere verwendet. Es ist übrigens egal, welcher Klasse die Methode angehört. Du solltest sie natürlich strukturell sinnvoll zuordnen.
procedure play(...); //ist eine reguläre Prozedur
procedure TForm1.play(...); //ist eine Methode der Klasse TForm1. btw.: Hast die beim Typelib-Import nur "Unit anlegen" oder gleich "Installieren" geklickt. Bei letzterem dürftest du deine Event-Klasse im Register "AxtiveX" auf der Komponentenleiste finden. Da kannst du dann die Ereignisse ganz normal zuweisen. |
Re: iTunes COM Events
Die Suche ergab genau 2 Ergebnisse, eines davon dieser Thread ;) Aktuell gibt es 151.924 Threads, es müssten also nach deiner Aussage ca. 1500 Ergebnisse kommen ^^
Danke, jetz gehts *freu* :dp: MfG Z4ppy |
Re: iTunes COM Events
Ich denke, es ist sinnvoll, das auch hier reinzunehmen :)
Gibt es ein Event, das ausgelöst wird, wenn die Wiedergabe pausiert wird? Bei Play wird ja das OnPlayerPlayEvent ausgelöst, bei Stop OnPlayerStopEvent. Aber ich hab nichts für Pause gefunden :( MfG Z4ppy |
Re: iTunes COM Events
Dazu musst du die Dokumentation lesen, oder die Frage nochmal mit einer entsprechenden Überschrift in einem neuen Thread öffnen, damit den auch jemand liest, der sich damit auskennt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 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