AGB  ·  Datenschutz  ·  Impressum  







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

iTunes COM Events

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

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

iTunes COM Events

  Alt 20. Okt 2009, 21:33
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:
  • iTUnes COM Interface - Events werden hier überhaupt nicht behandelt
  • COM-Events verwenden - Das verlinkte Tool war relativ hilfreich, das Beispiel mit Jabber hingegen absolut nicht, ich konnte es nicht auf iTunes übertragen...
  • iTunes-Track herausfinden - Hier wird mit dem Event gearbeitet, wie das Event verlinkt (oder wie auch immer man das nennt) wird, steht leider nirgends
Ausserdem habe ich diesen Thread gefunden, der Code dort ist aber für Delphi 6 und nicht für das von mir verwendete D7. Das Kompilieren gibt mir einen Fehler, dass iTunesLibIiTunesEvents1 kein Feld hätte und ob ich es entfernen will, wenn ich das verneine, gibt es zunächst mal eine AV bevor das Programm dann startet, allerdings ohne die Eventbehandlung... Beim Beenden gibts dann erneut eine AV

Natürlich habe ich auch das Beispiel bei CodeProject gefunden, da das aber in C# programmiert ist und ich von dieser Sprache keine Ahnung habe, hat mir das auch nicht wirklich geholfen...

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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: iTunes COM Events

  Alt 20. Okt 2009, 21:46
Zitat:
Ausserdem habe ich diesen Thread gefunden, der Code dort ist aber für Delphi 6 und nicht für das von mir verwendete D7.
Und warum sollte der code nicht in D7 gehen außer, dass dort anscheinend einiges weggelassen wurde?

Hast du dir die TypeLib erzeugt?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Z4ppy

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

Re: iTunes COM Events

  Alt 20. Okt 2009, 21:49
Keine Ahnung, aber er scheint nicht zu funktionieren

Natürlich... Habe mal eben die beiden von EventSinkImp erstellten Dateien angehängt

MfG Z4ppy
Angehängte Dateien
Dateityp: pas ituneslibevents_764.pas (17,9 KB, 16x aufgerufen)
Dateityp: pas ituneslib_tlb_207.pas (110,3 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: iTunes COM Events

  Alt 20. Okt 2009, 22:24
Und was hast du jetzt gemacht?

Du musst also irgendwie dein ITunes starten:
Delphi-Quellcode:
var iTunes:IiTunes;

iTunes:=CoiTunesApp.Create;
Dann erstellst du eine Klasse, welche die Events empfängt:
Delphi-Quellcode:
var iTunesLibIiTunesEvents:TiTunesLibIiTunesEvents;

iTunesLibIiTunesEvents:=TiTunesLibIiTunesEvents.Create(nil); //oder eben mit Owner;
Dann verbindest du den Eventhandler mit iTunes:
Delphi-Quellcode:
//das funktioniert widererwartend "rückwärts"
iTunesLibIiTunesEvents.connect(iTunes);
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.

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:
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;
Jo, und dann sollte alles gehen. Ich habe (leider) kein iTunes, kann es deswegen nicht testen
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Z4ppy

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

Re: iTunes COM Events

  Alt 20. Okt 2009, 23:45
Bin wohl zu müde, die Zuweisung hinzukriegen
iTunesEvents.OnPlayerPlayEvent:=Play; geht schonmal nicht (wobei iTunesEvents das "iTunesLibIiTunesEvents" von deinem Code ist und Play eine Prozedur, die als Variable den Track erwartet)...
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

MfG Z4ppy
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: iTunes COM Events

  Alt 21. Okt 2009, 08:17
Such einfach mal nach deiner Fehlermeldung! Dieser Fehler wird hier in ca. jedem 100. Thread behandelt.

Delphi-Quellcode:
procedure play(...); //ist eine reguläre Prozedur

procedure TForm1.play(...); //ist eine Methode der Klasse TForm1.
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.


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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Z4ppy

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

Re: iTunes COM Events

  Alt 21. Okt 2009, 14:28
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*



MfG Z4ppy
  Mit Zitat antworten Zitat
Z4ppy

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

Re: iTunes COM Events

  Alt 23. Okt 2009, 23:10
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: iTunes COM Events

  Alt 26. Okt 2009, 11:50
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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 23:34 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