MusicBrainz - DLL

  • Hallo,

    kann mir jemand Hilfestellung geben, wie man diese DLL am besten handeln kann? Also wie man damit an die Information der Disc-ID kommt ? Serverseitige Abfragen verstehe ich. Mein Problem ist der grundsätzliche Umgang mit der Ansteuerung von DLLs mit Autoit. Ich komme eigentlich nur mit dieser Abfrage erfolgreich zurecht:

    AutoIt
    Local $hDLL = DllOpen("discid.dll")
    $aArr0 = DllCall($hDLL, "str", "discid_get_default_device"); LW H:
    MsgBox("","Laufwerk",$aArr0[0])

    Das sind die Funktionen in der discid.dll , die hier inkl. Quelltext komplett heruntergeladen werden kann: https://musicbrainz.org/doc/libdiscid


    Anliegend die *.dll alleine.

    [0]|discid_free
    [1]|discid_get_default_device
    [2]|discid_get_error_msg
    [3]|discid_get_feature_list
    [4]|discid_get_first_track_num
    [5]|discid_get_freedb_id
    [6]|discid_get_id
    [7]|discid_get_last_track_num
    [8]|discid_get_mcn
    [9]|discid_get_sectors
    [10]|discid_get_submission_url
    [11]|discid_get_toc_string
    [12]|discid_get_track_isrc
    [13]|discid_get_track_length
    [14]|discid_get_track_offset
    [15]|discid_get_version_string
    [16]|discid_get_webservice_url
    [17]|discid_has_feature
    [18]|discid_new
    [19]|discid_put
    [20]|discid_read
    [21]|discid_read_sparse

    Dank und Gruß
    Thomas

  • Hey, ist im Grunde ganz einfach. Musst nur in der libdiscid-0.6.1-win32\libdiscid-0.6.1\include\discid\discid.h ein wenig herum wühlen und dir die Dokumentation dadrin durchlesen. Ist eigentlich alles sehr gut beschrieben. Ein Beispielcode dazu findest du auch hier: http://jonnyjd.github.io/libdiscid/

    Dazu mal ein passender AutoIt Code:

    [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit][autoit][/autoit][autoit]

    OnAutoItExitRegister(__DiscID_Close__)

    [/autoit][autoit][/autoit][autoit]

    Global $g_hDiscID = DllOpen('discid.dll')

    [/autoit][autoit][/autoit][autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit][autoit][/autoit][autoit]

    Global $pDisc = _DiscID_New()

    [/autoit][autoit][/autoit][autoit]

    If Not _DiscID_ReadSparse($pDisc, Null, 0) Then
    ConsoleWrite('! ERROR: ' & _DiscID_GetErrorMsg($pDisc) & @CRLF)
    Else
    ConsoleWrite(_DiscID_GetID($pDisc) & @CRLF)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    _DiscID_Free($pDisc)

    [/autoit][autoit][/autoit][autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit][autoit][/autoit][autoit]

    Func _DiscID_New()
    Return DllCall($g_hDiscID, 'ptr:cdecl', 'discid_new')[0]
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _DiscID_ReadSparse($pD, $sDevice, $iFeatures)
    Return DllCall($g_hDiscID, 'int:cdecl', 'discid_read_sparse', 'ptr', $pD, 'str', $sDevice, 'uint', $iFeatures)[0]
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _DiscID_GetErrorMsg($pD)
    Return DllCall($g_hDiscID, 'str:cdecl', 'discid_get_error_msg', 'ptr', $pD)[0]
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _DiscID_GetID($pD)
    Return DllCall($g_hDiscID, 'str:cdecl', 'discid_get_id', 'ptr', $pD)[0]
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _DiscID_Free($pD)
    DllCall($g_hDiscID, 'none:cdecl', 'discid_free', 'ptr', $pD)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit][autoit][/autoit][autoit]

    Func __DiscID_Close__()
    DllClose($g_hDiscID)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit]

    Einmal editiert, zuletzt von Yjuq (28. Mai 2015 um 23:57)