Was für Profis - DLL steuern

  • Hallo zusammen!

    Ich habe bereits in einem alten Thread Hilfe gesucht, Videoinformationen auszulesen.

    Was mich natürlich viel mehr interessieren würde: Kann man die DLL des Programms mit AutoIT steuern, sodass man bequem sein Ergebnis bekommt?

    Hier der Link zur DLL bzw. zum SDK des Programms.

    Ich bin gespannt auf eure Meinungen.

    EDIT: Link zeigt jetzt direkt auf das zipfile

    Einmal editiert, zuletzt von Taek (1. August 2008 um 14:27)

  • OK, und wie mache ich das? Ich hab mir bei deiner DLL und bei der Hilfe den Befehl DllCall angeschaut, aber ich kann da keinen Bezug zu meinem Beispiel erkennnen, sry.

  • Hi, vielleicht hilft es dir weiter, es gibt ein Programm damit kannst du dir die Funktionen einer DLL anschauen, die zu übergebenden Parameter stehen in der Doku bzw. in den Beispielprojekten. Ich habe es eben auch mal versucht, aber wenn ich eine Datei öffnen will, kommt der liebe Dr. Watson :(

    Aufrufe bei VB6


    Private Declare Function MediaInfoA_Open Lib "MediaInfo.DLL" (ByVal File As String) As Long
    Private Declare Function MediaInfoA_Close Lib "MediaInfo.DLL" (ByVal Handle As Long) As Long
    Private Declare Function MediaInfoA_Inform Lib "MediaInfo.DLL" (ByVal Handle As Long) As Long 'WARNING : This is a char* value
    Private Declare Function MediaInfoA_GetI Lib "MediaInfo.DLL" (ByVal Handle As Long, ByVal StreamKind As Long, ByVal StreamNumber As Long, ByVal Parameter As Long, ByVal KindOfInfo As Long) As Long 'WARNING : This is a char* value, see MediaInfoDLL.h for enumeration values
    Private Declare Function MediaInfoA_Get Lib "MediaInfo.DLL" (ByVal Handle As Long, ByVal StreamKind As Long, ByVal StreamNumber As Long, ByVal Parameter As String, ByVal KindOfInfo As Long, ByVal KindOfSearch As String) As Long 'WARNING : This is a char* value, see MediaInfoDLL.h for enumeration values
    Private Declare Function MediaInfoA_Info_Parameters Lib "MediaInfo.DLL" (ByVal CSV As Long) As Long 'WARNING : This is a char* value
    Private Declare Function MediaInfoA_Count_Get Lib "MediaInfo.DLL" (ByVal Handle As Long, ByVal StreamKind As Long, ByVal StreamNumber As Long) As Long 'see MediaInfoDLL.h for enumeration values
    Private Declare Function MediaInfoA_Complete_Get Lib "MediaInfo.DLL" () As Long
    Private Declare Function MediaInfoA_Complete_Set Lib "MediaInfo.DLL" (ByVal Complete As Long) As Long
    Private Declare Function MediaInfoA_Inform_Set Lib "MediaInfo.DLL" (ByVal Handle As Long, ByVal Text As String) As Long
    Private Declare Function MediaInfoA_Info_Capacities Lib "MediaInfo.DLL" () As Long 'WARNING : This is a char* value
    Private Declare Function MediaInfoA_Info_Codecs Lib "MediaInfo.DLL" () As Long 'WARNING : This is a char* value
    Private Declare Function MediaInfoA_Info_Version Lib "MediaInfo.DLL" () As Long 'WARNING : This is a char* value

    Mein Versuch
    [autoit]


    $handle = DllCall("MediaInfo.DLL","long","MediaInfo_Info_Version")
    _TestCall(@error)

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

    ;Hier kommt Dr. Watson :(
    ;$handle = DllCall("MediaInfo.DLL","long","MediaInfo_Open","str","title.wma")
    ;_TestCall(@error)

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

    Func _TestCall($feher)
    Switch $feher
    Case 0
    $str = 'Success'
    case 1
    $str = 'unable to use the DLL file'
    case 2
    $str = 'unknown "return type"'
    case 3
    $str = '"function" not found in the DLL file'
    Case Default
    $str = 'Unbekannter Fehler.....'
    EndSwitch

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

    If $str <> 'Success' Then
    MsgBox(48,"Fehler",$str)
    Else
    If IsArray($handle) Then
    For $i = 0 To UBound($handle) -1
    MsgBox(64,"Info",$handle[$i])
    Next
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • McPoldy: Also dein Beispiel hab ich nachvollzogen. Und warum geht das nicht? Der Befehl stimmt doch, im Dependency Walker stehts auch so drin. Heisst das also, ich kann die dll doch nicht steuern?

  • Ja steht zwar so drinnen aber ohne ne richtige Fehlermeldung kann ich mir auch keinen Reim aus dem Fehler machen. Vielleicht hat hat noch jemand anderes eine Idee, bin eh nicht so fit mit DLLs.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Das Problem hat sich erledigt, anstatt MediaInfo benutze ich GSpot. Da bekomm ich die Werte genauso und dazu noch als eigenständige Werte.
    Danke trotzdem für die Hilfe.