![]() |
Re: iTunes steuern mit iTunes Type Library
Achso okay.
Und was muss ich dafür ändern? Ich hab das nochmal ausprobiert: 1) iTunes geöffnet und Lied abspielen lassen 2) Quelltext:
Delphi-Quellcode:
3) getestet
var it: IiTunes;
begin it := CoiTunesApp.create; showmessage(it.CurrentTrack.Get_Album) end; iTunes wurde wie schon vorher in den Vordergrund geholt und die Form öffnete gar nicht erst. Das dauert dann etwa 20-30 Sekunden.. .. und dann kam aber eine andere Fehlermeldung (ist mir vorher vielleicht nicht aufgefallen , dass das eine andere ist): Zitat:
Wenn ich ok drücke und starte öffnet die Form und es passiert nichts weiter (die Message wurde nicht angezeigt). |
Re: iTunes steuern mit iTunes Type Library
Hi,
ich hatte da mal für mein Programm JoyToAny ne DLL geschrieben, die zwar nur play/pause, next track und previous track kann, aber vielleicht kann dir der code ja helfen: ![]() MfG |
Re: iTunes steuern mit iTunes Type Library
Ganz ehrlich.. ich kann damit gar nichs anfangen.. sry..
Gibt es hier keinen, der mir helfen kann? Irgendjemand muss doch schonmal mit Delphi auf iTunes zugegriffen haben ^^ LG -iBot |
Re: iTunes steuern mit iTunes Type Library
Da hast du aber Glück... genau so etwas habe ich heute erst für meine mIRC-DLL geschrieben :mrgreen:
Ich habe jetzt nicht so viel Zeit, das ganze auf "normales" Format umzuschreiben, aber entferne einfach die ganzen unnötigen Parameter; das Ergebnis landet hier in data. Ich weiss, da ist viel Copy&Paste drin, aber man kann ja nicht alles haben. :-D
Delphi-Quellcode:
unit Query;
interface uses ComObj, ComTool, SysUtils, Variants, Windows, iTunesLib_TLB; implementation function queryFile(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; ret : AnsiString; track : IITTrack; tkind : ITTrackKind; ftrack : IITFileOrCDTrack; utrack : IITURLTrack; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; tkind := track.Kind; if tkind = ITTrackKindURL then begin utrack := IDispatch(iTunes.CurrentTrack) as IITURLTrack; ret := AnsiString(utrack.URL); end else begin ftrack := track as IITFileOrCDTrack; ret := AnsiString(ftrack.Location); end; if (ret <> '') then begin StrCopy(data, PAnsiChar(ret)); Exit(3); end end; end; except end; StrCopy(data, 'n/a'); Result := 3; end; function queryType(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; name, uret : AnsiString; fret : PAnsiChar; track : IITTrack; tkind : ITTrackKind; ftrack : IITFileOrCDTrack; utrack : IITURLTrack; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; tkind := track.Kind; if tkind = ITTrackKindURL then begin utrack := IDispatch(iTunes.CurrentTrack) as IITURLTrack; name := AnsiString(utrack.URL); uret := Copy(name, 1, Pos(AnsiString('://'), name) - 1); StrCopy(data, PAnsiChar(uret)); Exit(3); end else if (tkind = ITTrackKindFile) or (tkind = ITTrackKindCD) then begin ftrack := track as IITFileOrCDTrack; name := AnsiString(ftrack.Location); fret := AnsiStrRScan(PAnsiChar(name), '.') + 1; StrCopy(data, fret); Exit(3); end; end; end; except end; StrCopy(data, 'n/a'); Result := 3; end; function queryTitle(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; name, interp : AnsiString; track : IITTrack; tkind : ITTrackKind; ftrack : IITFileOrCDTrack; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; tkind := track.Kind; if tkind = ITTrackKindURL then begin name := AnsiString(VarToStr(iTunes.CurrentStreamTitle)); StrCopy(data, PAnsiChar(name)); Exit(3); end else if (tkind = ITTrackKindFile) or (tkind = ITTrackKindCD) then begin ftrack := track as IITFileOrCDTrack; interp := AnsiString(ftrack.Artist); name := AnsiString(ftrack.name); StrCopy(data, PAnsiChar(interp)); StrCat(data, ' - '); StrCat(data, PAnsiChar(name)); Exit(3); end; end; end; except end; StrCopy(data, 'n/a'); Result := 3; end; function queryBitrate(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; track : IITTrack; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; StrCopy(data, PAnsiChar(AnsiString(IntToStr(track.BitRate)))); Exit(3); end; end; except end; StrCopy(data, '-1'); Result := 3; end; function queryLength(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; track : IITTrack; tkind : ITTrackKind; ftrack : IITFileOrCDTrack; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; tkind := track.Kind; if tkind = ITTrackKindURL then begin StrCopy(data, '-1'); Exit(3); end else if (tkind = ITTrackKindFile) or (tkind = ITTrackKindCD) then begin ftrack := track as IITFileOrCDTrack; StrCopy(data, PAnsiChar(AnsiString(IntToStr(ftrack.Duration)))); Exit(3); end; end; end; except end; StrCopy(data, '-2'); Result := 3; end; function queryLengthF(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; track : IITTrack; tkind : ITTrackKind; ftrack : IITFileOrCDTrack; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; tkind := track.Kind; if tkind = ITTrackKindURL then begin StrCopy(data, 'Stream'); Exit(3); end else if (tkind = ITTrackKindFile) or (tkind = ITTrackKindCD) then begin ftrack := track as IITFileOrCDTrack; StrCopy(data, PAnsiChar(AnsiString(ftrack.Time))); Exit(3); end; end; end; except end; StrCopy(data, 'n/a'); Result := 3; end; function queryPosition(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin StrCopy(data, PAnsiChar(AnsiString(IntToStr(iTunes.PlayerPosition)))); Exit(3); end; end; except end; StrCopy(data, '-2'); Result := 3; end; function queryPositionF(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing, b, m, s : integer; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin b := iTunes.PlayerPosition; s := b mod 60; m := b div 60; StrCopy(data, PAnsiChar(AnsiString(Format('%d:%02d', [m, s])))); Exit(3); end; end; except end; StrCopy(data, 'n/a'); Result := 3; end; function queryStatus(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin StrCopy(data, PAnsiChar(AnsiString(IntToStr(iTunes.PlayerState)))); Exit(3); end; except end; StrCopy(data, '-1'); Result := 3; end; function queryStatusF(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; state : ITPlayerState; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin state := iTunes.PlayerState; case state of ITPlayerStateStopped: StrCopy(data, 'Gestoppt'); ITPlayerStatePlaying: StrCopy(data, 'Laufend'); ITPlayerStateFastForward: StrCopy(data, 'Vorspulen'); ITPlayerStateRewind: StrCopy(data, 'Zurückspulen'); else StrCopy(data, 'Fehler'); end; Exit(3); end; except end; StrCopy(data, '-1'); Result := 3; end; function queryNum(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; playlist : IITPlaylist; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin playlist := IDispatch(iTunes.CurrentPlaylist) as IITPlaylist; StrCopy(data, PAnsiChar(AnsiString(IntToStr(playlist.Tracks.Count)))); Exit(3); end; end; except end; StrCopy(data, '-2'); Result := 3; end; function queryInfo(mWnd, aWnd: HWND; data, parms: PAnsiChar; show, nopause:boolean) : integer; stdcall; var iTunes : OleVariant; playing : integer; track : IITTrack; tkind : ITTrackKind; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin playing := iTunes.PlayerState; if playing > 0 then begin track := IDispatch(iTunes.CurrentTrack) as IITTrack; tkind := track.Kind; if tkind = ITTrackKindURL then begin StrCopy(data, '2'); Exit(3); end else if (tkind = ITTrackKindFile) or (tkind = ITTrackKindCD) then begin StrCopy(data, '1'); Exit(3); end else begin StrCopy(data, '3'); Exit(3); end; end; end else begin StrCopy(data, '0'); Exit(3); end; except end; StrCopy(data, '-1'); Result := 3; end; exports queryFile, queryType, queryTitle, queryBitrate, queryLength, queryLengthF, queryPosition, queryPositionF, queryStatus, queryStatusF, queryNum, queryInfo; end.
//EDIT: falls, nötig, hab ich auch noch Funktionen für Play, Pause etc... |
Re: iTunes steuern mit iTunes Type Library
Hier noch die Kontrollprozeduren, sogar nicht im mIRC-Format :mrgreen:
Delphi-Quellcode:
unit Control;
interface uses ComObj, Variants, Windows; implementation procedure play; var iTunes : OleVariant; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then begin iTunes.Play; end; except end; end; procedure pause; var iTunes : OleVariant; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then iTunes.Pause; except end; end; procedure prev; var iTunes : OleVariant; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then iTunes.PreviousTrack; except end; end; procedure next; var iTunes : OleVariant; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then iTunes.NextTrack; except end; end; procedure stop; var iTunes : OleVariant; begin try iTunes := CreateOleObject('iTunes.Application'); if not VarIsNull(iTunes) then iTunes.Stop; except end; end; end. |
Re: iTunes steuern mit iTunes Type Library
Danke :thumb:
Das ist ja ein bischen viel Copy&Paste :lol: aber nja ich setz mich mal wieder dran (so in 2 wochen. ich fahr morgen in Urlaub :'D ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 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