this works like a magic!!!
; http://www.autohotkey.com/board/topic/62281-using-mediainfodll-to-get-itunes-info/ ; MediaInfo.dll / 'Test Script' - By David Deley : 08-Jan-2011 ; ; To Test: ; 1. Download and install MediaInfo ; 2. Set variables MediaInfoDll and File1 below ; 3. Run ; ; Thank you to SKAN for posting his Video Properties - MediaInfo.Dll script ; http://www.autohotkey.com/forum/viewtopic.php?t=66500 #NoTrayIcon #SingleInstance, Force SetWorkingDir, %A_ScriptDir% ;USER SET THESE TWO VARIABLES MediaInfoDll := "C:\...\MediaInfo.dll" File1 := "M:\example.mp3" ; CHECK THAT FILE1 EXISTS IfNotExist, %File1% { MsgBox % "Unable to locate file:`n" . File1 . "`n`nSet variable 'File1' to point to an audio or video file." ExitApp } ; LOAD MEDIAINFO DLL hModule := DllCall( "LoadLibrary", Str, MediaInfoDll ) if hModule = 0 { Msgbox % "Error loading MediaInfo.dll`n`nWas trying to load file: " . MediaInfoDll . "`n`nError was: " . GetErrorString(A_LastError) . "`n`nDownload and install MediaInfo, then set variable 'MediaInfoDll' to point to file 'MediaInfo.dll'" ExitApp } FileGetVersion, Ver, MediaInfo.Dll MsgBox MediaInfo Version = %Ver% hnd := MediaInfo_New() ;MsgBox hnd = %hnd% stat := MediaInfo_Open( hnd, File1 ) ;MsgBox stat = %stat% ;DISPLAY FILE INFORMATION ;GENERAL CompleteName := MediaInfo_Get( hnd, 0,0, "CompleteName", 1 ) FileName := MediaInfo_Get( hnd, 0,0, "FileName", 1 ) FileExtension := MediaInfo_Get( hnd, 0,0, "FileExtension", 1 ) Format := MediaInfo_Get( hnd, 0,0, "Format", 1 ) Format_Info := MediaInfo_Get( hnd, 0,0, "Format/Info", 1 ) FileSize := MediaInfo_Get( hnd, 0,0, "FileSize", 1 ) FileSize_String := MediaInfo_Get( hnd, 0,0, "FileSize/String", 1 ) FileSize_String1 := MediaInfo_Get( hnd, 0,0, "FileSize/String1", 1 ) FileSize_String2 := MediaInfo_Get( hnd, 0,0, "FileSize/String2", 1 ) FileSize_String3 := MediaInfo_Get( hnd, 0,0, "FileSize/String3", 1 ) FileSize_String4 := MediaInfo_Get( hnd, 0,0, "FileSize/String4", 1 ) Duration := MediaInfo_Get( hnd, 0,0, "Duration", 1 ) Duration_String := MediaInfo_Get( hnd, 0,0, "Duration/String", 1 ) Duration_String1 := MediaInfo_Get( hnd, 0,0, "Duration/String1", 1 ) Duration_String2 := MediaInfo_Get( hnd, 0,0, "Duration/String2", 1 ) Duration_String3 := MediaInfo_Get( hnd, 0,0, "Duration/String3", 1 ) Title0 := MediaInfo_Get( hnd, 0,0, "Album_ReplayGain_Gain/String", 1 ) MsgBox , ( FILE GENERAL PROPERTIES CompleteName %A_Tab%= %CompleteName% FileName %A_Tab%= %FileName% FileExtension %A_Tab%= %FileExtension% Format %A_Tab%= %Format% Format_Info %A_Tab%= %Format_Info% FileSize %A_Tab%= %FileSize% FileSize_String %A_Tab%= %FileSize_String% FileSize_String1 %A_Tab%= %FileSize_String1% FileSize_String2 %A_Tab%= %FileSize_String2% FileSize_String3 %A_Tab%= %FileSize_String3% FileSize_String4 %A_Tab%= %FileSize_String4% Duration %A_Tab%= %Duration% Duration_String %A_Tab%= %Duration_String% Duration_String1 %A_Tab%= %Duration_String1% Duration_String2 %A_Tab%= %Duration_String2% Duration_String3 %A_Tab%= %Duration_String3% ) ;AUDIO Format := MediaInfo_Get( hnd, 2,0, "Format", 1 ) Format_Info := MediaInfo_Get( hnd, 2,0, "Format/Info", 1 ) Format_Version := MediaInfo_Get( hnd, 2,0, "Format_Version", 1 ) Format_Profile := MediaInfo_Get( hnd, 2,0, "Format_Profile", 1 ) CodecID := MediaInfo_Get( hnd, 2,0, "CodecID", 1 ) CodecID_Hint := MediaInfo_Get( hnd, 2,0, "CodecID/Hint", 1 ) Duration := MediaInfo_Get( hnd, 2,0, "Duration", 1 ) Duration_String := MediaInfo_Get( hnd, 2,0, "Duration/String", 1 ) Duration_String1 := MediaInfo_Get( hnd, 2,0, "Duration/String1", 1 ) Duration_String2 := MediaInfo_Get( hnd, 2,0, "Duration/String2", 1 ) Duration_String3 := MediaInfo_Get( hnd, 2,0, "Duration/String3", 1 ) BitRate_Mode := MediaInfo_Get( hnd, 2,0, "BitRate_Mode", 1 ) BitRate_Mode_String := MediaInfo_Get( hnd, 2,0, "BitRate_Mode/String", 1 ) BitRate := MediaInfo_Get( hnd, 2,0, "BitRate", 1 ) BitRate_String := MediaInfo_Get( hnd, 2,0, "BitRate/String", 1 ) Channels := MediaInfo_Get( hnd, 2,0, "Channel(s)", 1 ) Channels_String := MediaInfo_Get( hnd, 2,0, "Channel(s)/String", 1 ) ChannelPositions := MediaInfo_Get( hnd, 2,0, "ChannelPositions", 1 ) SamplingRate := MediaInfo_Get( hnd, 2,0, "SamplingRate", 1 ) SamplingRate_String := MediaInfo_Get( hnd, 2,0, "SamplingRate/String", 1 ) StreamSize := MediaInfo_Get( hnd, 2,0, "StreamSize", 1 ) StreamSize_String := MediaInfo_Get( hnd, 2,0, "StreamSize/String", 1 ) StreamSize_String1 := MediaInfo_Get( hnd, 2,0, "StreamSize/String1", 1 ) StreamSize_String2 := MediaInfo_Get( hnd, 2,0, "StreamSize/String2", 1 ) StreamSize_String3 := MediaInfo_Get( hnd, 2,0, "StreamSize/String3", 1 ) StreamSize_String4 := MediaInfo_Get( hnd, 2,0, "StreamSize/String4", 1 ) dialnorm := MediaInfo_Get( hnd, 2,0, "dialnorm", 1 ) dialnorm_String := MediaInfo_Get( hnd, 2,0, "dialnorm/String", 1 ) crap := MediaInfo_Get( hnd, 2,0, "crap", 1 ) Album_ReplayGain_Gain_String := MediaInfo_Get( hnd, 2,0, "Album_ReplayGain_Gain/String", 1 ) MsgBox % "AUDIO PROPERTIES" . "`nFormat" . A_Tab . A_Tab . " = " . Format . "`nFormat_Info" . A_Tab . " = " . Format_Info . "`nFormat_Version" . A_Tab . " = " . Format_Version . "`nFormat_Profile" . A_Tab . " = " . Format_Profile . "`nCodecID" . A_Tab . A_Tab . " = " . CodecID . "`nCodecID_Hint" . A_Tab . " = " . CodecID_Hint . "`nDuration" . A_Tab . A_Tab . " = " . Duration . "`nDuration_String" . A_Tab . " = " . Duration_String . "`nDuration_String1" . A_Tab . " = " . Duration_String1 . "`nDuration_String2" . A_Tab . " = " . Duration_String2 . "`nDuration_String3" . A_Tab . " = " . Duration_String3 . "`nBitRate_Mode" . A_Tab . " = " . BitRate_Mode . "`nBitRate_Mode_String" . A_Tab . " = " . BitRate_Mode_String . "`nBitRate" . A_Tab . A_Tab . " = " . BitRate . "`nBitRate_String" . A_Tab . " = " . BitRate_String . "`nChannels" . A_Tab . A_Tab . " = " . Channels . "`nChannels_String" . A_Tab . " = " . Channels_String . "`nChannelPositions" . A_Tab . " = " . ChannelPositions . "`nSamplingRate" . A_Tab . " = " . SamplingRate . "`nSamplingRate_String" . A_Tab . " = " . SamplingRate_String . "`nStreamSize" . A_Tab . " = " . StreamSize . "`nStreamSize_String" . A_Tab . " = " . StreamSize_String . "`nStreamSize_String1" . A_Tab . " = " . StreamSize_String1 . "`nStreamSize_String2" . A_Tab . " = " . StreamSize_String2 . "`nStreamSize_String3" . A_Tab . " = " . StreamSize_String3 . "`nStreamSize_String4" . A_Tab . " = " . StreamSize_String4 . "`ndialnorm" . A_Tab . A_Tab . " = " . dialnorm . "`ndialnorm_String" . A_Tab . " = " . dialnorm_String . "`ncrap" . A_Tab . " = " . crap . "`nAlbum_ReplayGain_Gain_String" . A_Tab . " = " . Album_ReplayGain_Gain_String ;4. FILE INFO TRANSLATED TO iTunes LINGO Track := MediaInfo_Get( hnd, 0,0, "Track" , 1 ) ;Name Artist := MediaInfo_Get( hnd, 0,0, "Artist" , 1 ) ;Artist Accompaniment := MediaInfo_Get( hnd, 0,0, "Accompaniment" , 1 ) ;Album Artist Album := MediaInfo_Get( hnd, 0,0, "Album" , 1 ) ;Album ContentType := MediaInfo_Get( hnd, 0,0, "ContentType" , 1 ) ;Album Composer := MediaInfo_Get( hnd, 0,0, "Composer" , 1 ) ;Composer Comment := MediaInfo_Get( hnd, 0,0, "Comment" , 1 ) ;Comments Genre := MediaInfo_Get( hnd, 0,0, "Genre" , 1 ) ;Genre Recorded_Date := MediaInfo_Get( hnd, 0,0, "Recorded_Date" , 1 ) ;Year MsgBox % "FILE INFO IN iTunes LINGO:" . "`n Name (Track)" . A_Tab . A_Tab . A_Tab . " = " . Track . "`n Artist" . A_Tab . A_Tab . A_Tab . A_Tab . " = " . Artist . "`n Album Artist (Accompaniment)" . A_Tab . " = " . Accompaniment . "`n Album" . A_Tab . A_Tab . A_Tab . A_Tab . " = " . Album . "`n Grouping (ContentType)" . A_Tab . A_Tab . " = " . ContentType . "`n Composer" . A_Tab . A_Tab . A_Tab . " = " . Composer . "`n Comments (Comment)" . A_Tab . A_Tab . " = " . Comment . "`n Genre" . A_Tab . A_Tab . A_Tab . A_Tab . " = " . Genre . "`n Year (Recorded_Date)" . A_Tab . A_Tab . " = " . Recorded_Date ;VIDEO Format := MediaInfo_Get( hnd, 1,0, "Format", 1 ) Format_Info := MediaInfo_Get( hnd, 1,0, "Format/Info", 1 ) Format_Version := MediaInfo_Get( hnd, 1,0, "Format_Version", 1 ) Format_Profile := MediaInfo_Get( hnd, 1,0, "Format_Profile", 1 ) CodecID := MediaInfo_Get( hnd, 1,0, "CodecID", 1 ) CodecID_Hint := MediaInfo_Get( hnd, 1,0, "CodecID/Hint", 1 ) Duration := MediaInfo_Get( hnd, 1,0, "Duration", 1 ) Duration_String := MediaInfo_Get( hnd, 1,0, "Duration/String", 1 ) Duration_String1 := MediaInfo_Get( hnd, 1,0, "Duration/String1", 1 ) Duration_String2 := MediaInfo_Get( hnd, 1,0, "Duration/String2", 1 ) Duration_String3 := MediaInfo_Get( hnd, 1,0, "Duration/String3", 1 ) BitRate_Mode := MediaInfo_Get( hnd, 1,0, "BitRate_Mode", 1 ) BitRate_Mode_String := MediaInfo_Get( hnd, 1,0, "BitRate_Mode/String", 1 ) BitRate := MediaInfo_Get( hnd, 1,0, "BitRate", 1 ) BitRate_String := MediaInfo_Get( hnd, 1,0, "BitRate/String", 1 ) BitRate_Minimum := MediaInfo_Get( hnd, 1,0, "BitRate_Minimum", 1 ) BitRate_Minimum_String := MediaInfo_Get( hnd, 1,0, "BitRate_Minimum/String", 1 ) BitRate_Nominal := MediaInfo_Get( hnd, 1,0, "BitRate_Nominal", 1 ) BitRate_Nominal_String := MediaInfo_Get( hnd, 1,0, "BitRate_Nominal/String", 1 ) BitRate_Maximum := MediaInfo_Get( hnd, 1,0, "BitRate_Maximum", 1 ) BitRate_Maximum_String := MediaInfo_Get( hnd, 1,0, "BitRate_Maximum/String", 1 ) Width := MediaInfo_Get( hnd, 1,0, "Width", 1 ) Width_String := MediaInfo_Get( hnd, 1,0, "Width/String", 1 ) Height := MediaInfo_Get( hnd, 1,0, "Height", 1 ) Height_String := MediaInfo_Get( hnd, 1,0, "Height/String", 1 ) PixelAspectRatio := MediaInfo_Get( hnd, 1,0, "PixelAspectRatio", 1 ) PixelAspectRatio_String := MediaInfo_Get( hnd, 1,0, "PixelAspectRatio/String", 1 ) DisplayAspectRatio := MediaInfo_Get( hnd, 1,0, "DisplayAspectRatio", 1 ) DisplayAspectRatio_String := MediaInfo_Get( hnd, 1,0, "DisplayAspectRatio/String", 1 ) FrameRate_Mode := MediaInfo_Get( hnd, 1,0, "FrameRate_Mode", 1 ) FrameRate_Mode_String := MediaInfo_Get( hnd, 1,0, "FrameRate_Mode/String", 1 ) FrameRate := MediaInfo_Get( hnd, 1,0, "FrameRate", 1 ) FrameRate_String := MediaInfo_Get( hnd, 1,0, "FrameRate/String", 1 ) FrameCount := MediaInfo_Get( hnd, 1,0, "FrameCount", 1 ) Standard := MediaInfo_Get( hnd, 1,0, "Standard", 1 ) Colorimetry := MediaInfo_Get( hnd, 1,0, "Colorimetry", 1 ) ScanType := MediaInfo_Get( hnd, 1,0, "ScanType", 1 ) ScanType_String := MediaInfo_Get( hnd, 1,0, "ScanType/String", 1 ) StreamSize := MediaInfo_Get( hnd, 1,0, "StreamSize", 1 ) StreamSize_String := MediaInfo_Get( hnd, 1,0, "StreamSize/String", 1 ) StreamSize_String1 := MediaInfo_Get( hnd, 1,0, "StreamSize/String1", 1 ) StreamSize_String2 := MediaInfo_Get( hnd, 1,0, "StreamSize/String2", 1 ) StreamSize_String3 := MediaInfo_Get( hnd, 1,0, "StreamSize/String3", 1 ) StreamSize_String4 := MediaInfo_Get( hnd, 1,0, "StreamSize/String4", 1 ) Language_String := MediaInfo_Get( hnd, 1,0, "Language/String", 1 ) MsgBox % "VIDEO PROPERTIES" . "`nFormat" . A_Tab . A_Tab . A_Tab . " = " . Format . "`nFormat_Info" . A_Tab . A_Tab . " = " . Format_Info . "`nFormat_Version" . A_Tab . A_Tab . " = " . Format_Version . "`nFormat_Profile" . A_Tab . A_Tab . " = " . Format_Profile . "`nCodecID" . A_Tab . A_Tab . A_Tab . " = " . CodecID . "`nCodecID_Hint" . A_Tab . A_Tab . " = " . CodecID_Hint . "`nDuration" . A_Tab . A_Tab . A_Tab . " = " . Duration . "`nDuration_String" . A_Tab . A_Tab . " = " . Duration_String . "`nDuration_String1" . A_Tab . A_Tab . " = " . Duration_String1 . "`nDuration_String2" . A_Tab . A_Tab . " = " . Duration_String2 . "`nDuration_String3" . A_Tab . A_Tab . " = " . Duration_String3 . "`nBitRate_Mode" . A_Tab . A_Tab . " = " . BitRate_Mode . "`nBitRate_Mode_String" . A_Tab . A_Tab . " = " . BitRate_Mode_String . "`nBitRate" . A_Tab . A_Tab . A_Tab . " = " . BitRate . "`nBitRate_String" . A_Tab . A_Tab . " = " . BitRate_String . "`nBitRate_Minimum" . A_Tab . A_Tab . " = " . BitRate_Minimum . "`nBitRate_Minimum_String" . A_Tab . " = " . BitRate_Minimum_String . "`nBitRate_Nominal" . A_Tab . A_Tab . " = " . BitRate_Nominal . "`nBitRate_Nominal_String" . A_Tab . " = " . BitRate_Nominal_String . "`nBitRate_Maximum" . A_Tab . A_Tab . " = " . BitRate_Maximum . "`nBitRate_Maximum_String" . A_Tab . " = " . BitRate_Maximum_String . "`nWidth" . A_Tab . A_Tab . A_Tab . " = " . Width . "`nWidth_String" . A_Tab . A_Tab . " = " . Width_String . "`nHeight" . A_Tab . A_Tab . A_Tab . " = " . Height . "`nHeight_String" . A_Tab . A_Tab . " = " . Height_String . "`nPixelAspectRatio" . A_Tab . A_Tab . " = " . PixelAspectRatio . "`nPixelAspectRatio_String" . A_Tab . " = " . PixelAspectRatio_String . "`nDisplayAspectRatio" . A_Tab . A_Tab . " = " . DisplayAspectRatio . "`nDisplayAspectRatio_String" . A_Tab . " = " . DisplayAspectRatio_String . "`nFrameRate_Mode" . A_Tab . A_Tab . " = " . FrameRate_Mode . "`nFrameRate_Mode_String" . A_Tab . " = " . FrameRate_Mode_String . "`nFrameRate" . A_Tab . A_Tab . " = " . FrameRate . "`nFrameRate_String" . A_Tab . A_Tab . " = " . FrameRate_String . "`nFrameCount" . A_Tab . A_Tab . " = " . FrameCount . "`nStandard" . A_Tab . A_Tab . A_Tab . " = " . Standard . "`nColorimetry" . A_Tab . A_Tab . " = " . Colorimetry . "`nScanType" . A_Tab . A_Tab . A_Tab . " = " . ScanType . "`nScanType_String" . A_Tab . A_Tab . " = " . ScanType_String . "`nStreamSize" . A_Tab . A_Tab . " = " . StreamSize . "`nStreamSize_String" . A_Tab . A_Tab . " = " . StreamSize_String . "`nStreamSize_String1" . A_Tab . A_Tab . " = " . StreamSize_String1 . "`nStreamSize_String2" . A_Tab . A_Tab . " = " . StreamSize_String2 . "`nStreamSize_String3" . A_Tab . A_Tab . " = " . StreamSize_String3 . "`nStreamSize_String4" . A_Tab . A_Tab . " = " . StreamSize_String4 . "`nLanguage_String" . A_Tab . A_Tab . " = " . Language_String /* ;Menu (Format used eg: DVD-Video) Format := MediaInfo_Get( hnd, 3,0, "Format", 1 ) MsgBox % "Menu (Format used eg: DVD-Video)" . "`nFormat" . A_Tab . " = " . Format */ MediaInfo_Close( hnd ) exitapp Esc::ExitApp ; Press ESC to cancel this script. Placed after the ExitApp. ;------------------------------------------------------------------------------ MediaInfo_New() { Return DllCall( "mediainfo\MediaInfo" ( A_IsUnicode ? "" : "A" ) "_New" ) } ;------------------------------------------------------------------------------ MediaInfo_Open( hnd, MediaFile ) { Return DllCall( "mediainfo.dll\MediaInfo" ( A_IsUnicode ? "" : "A" ) "_Open", UInt,hnd , Str,MediaFile, UInt ) } ;------------------------------------------------------------------------------ MediaInfo_Get( hnd, StrK=0, StrN=0, Comm="", InfK=0, Srch=0 ) { Return DllCall( "mediainfo.dll\MediaInfo" ( A_IsUnicode ? "" : "A" ) "_Get", UInt,hnd , Int,StrK, Int,StrN, Str,Comm, Int,InfK, Int,Sech, Str ) } ;------------------------------------------------------------------------------ MediaInfo_Close( hnd ) { Return DllCall( "mediainfo\MediaInfo" ( A_IsUnicode ? "" : "A" ) "_Close", UInt,hnd ) } ;------------------------------------------------------------------------------ GetErrorString(Errornumber) { VarSetCapacity(ErrorString, 1024) ;String to hold the error-message. DllCall("FormatMessage" , UINT, 0x00001000 ;FORMAT_MESSAGE_FROM_SYSTEM: The function should search the system message-table resource(s) for the requested message. , UINT, NULL ;A handle to the module that contains the message table to search. , UINT, Errornumber , UINT, 0 ;Language-ID is automatically retreived , Str, ErrorString , UINT, 1024 ;Buffer-Length , str, "") ;An array of values that are used as insert values in the formatted message. (not used) StringReplace, ErrorString, ErrorString, `r`n, %A_Space%, All ;Replaces newlines by A_Space for inline-output return %ErrorString% } ; Note the above gets the info from the file itself. Here's an example of getting info from the iTunes program itself in case that's what you wanted to do: MsgBox Press ESC to abort this script iTunesApp := ComObjCreate("iTunes.Application") iTunesVersion := iTunesApp.Version objPlaylist := iTunesApp.LibraryPlaylist colTracks := objPlaylist.Tracks numiTunesTracks := colTracks.Count MsgBox iTunes loaded. Version %iTunesVersion%`niTunes has %numiTunesTracks% tracks LOOP,%numiTunesTracks% { objTrack := colTracks.item(A_Index) iTunes_track_Name := objTrack.Name ; iTunes Name iTunes_track_Artist := objTrack.Artist ; iTunes Artist iTunes_track_Album := objTrack.Album ; iTunes Album Artist iTunes_track_Album_Artist := objTrack.AlbumArtist ; iTunes Album iTunes_track_Grouping := objTrack.Grouping ; iTunes Grouping iTunes_track_Composer := objTrack.Composer ; iTunes Composer iTunes_track_Comment := objTrack.Comment ; iTunes Comments iTunes_track_Genre := objTrack.Genre ; iTunes Genre iTunes_track_Year := objTrack.Year ; iTunes Year iTunes_track_Location := objTrack.Location ; iTunes track location iTunes_track_Format := objTrack.KindAsString ; e.g. "MPEG Audio" MsgBox % "iTunes track info:" . "`n Track Name" . A_Tab . " = " . iTunes_track_Name . "`n Artist" . A_Tab . A_Tab . " = " . iTunes_track_Artist . "`n Album Artist" . A_Tab . " = " . iTunes_track_Album . "`n Album" . A_Tab . A_Tab . " = " . iTunes_track_Album_Artist . "`n Grouping" . A_Tab . A_Tab . " = " . iTunes_track_Grouping . "`n Composer" . A_Tab . " = " . iTunes_track_Composer . "`n Comment" . A_Tab . " = " . iTunes_track_Comment . "`n Genre" . A_Tab . A_Tab . " = " . iTunes_track_Genre . "`n Year" . A_Tab . A_Tab . " = " . iTunes_track_Year . "`n Location" . A_Tab . A_Tab . " = " . iTunes_track_Location . "`n Format" . A_Tab . A_Tab . " = " . iTunes_track_Format } ExitApp ;Esc::ExitApp ; Press ESC to cancel this script. Placed after the ExitApp.