DLL Call funktioniert nicht

  • Hallo
    habe eine DLL für ImageShack.us gefunden...(atomatischer Bilder Upload)

    Mein script

    [autoit]

    $File = @ScriptDir & "\ScreenShot.png"

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

    $hDLL = DllOpen(@SCRIPTDIR &'\LibImgUpp.dll')
    IF $hDLL THEN
    $ret = DllCall($hDLL, "long", "ImageShackPost", "dword", $File)
    IF IsArray($ret) THEN
    MsgBox(64,@SCRIPTNAME,$ret[0])
    ELSE
    MsgBox(16,@SCRIPTNAME,"DllCall error!")
    ENDIF
    DllClose($hDll)
    ENDIF
    EXIT

    [/autoit]

    Info file

    Spoiler anzeigen

    #######################################################
    ### Read-me of LibImgUpp.dll 1.0.0.11 ###
    #######################################################


    Functions of DLL
    function ImageShackPost(FileName, UserAgent: PWideChar): PWideChar; stdcall;
    function About(): PWideChar; stdcall;

    #ImageShackPost
    Are two parameters;
    - FileName
    - UserAgent

    The first parameter has an default UserAgent:
    Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
    If you want to use the default useragent send as parameter "default"

    This function return two parameter comma-separated:
    Link_of_Embed_Image,Direct_link_to_image
    In case of a handled error, can return:
    file - For file not found
    send - Error to connect, or send a file
    read - Error to get the result links

    #About
    This function has no parameters.
    Returns about the DLL.
    Example:
    'Nome....: LibImgUpp.dll'


    Contact:
    Paulo Urio (paulourio@gmail.com)
    JulianoRS (mirandolli@gmail.com)

  • Sorry, kenn mich mit DLLs zuwenig aus...
    Hab schon alles ausprobiert, jedoch hängt sich Autoit immer auf.
    Die demo.exe (in delphi geschrieben) funktioniert perfekt

    Spoiler anzeigen
  • Hi,

    kenne mich mit delphi leider nicht aus.
    Aber vllt klappt es ja so:

    Spoiler anzeigen
    [autoit]

    $File = @ScriptDir & "\ScreenShot.png"

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

    $hDLL = DllOpen(@SCRIPTDIR &'\LibImgUpp.dll')
    IF $hDLL THEN
    $ret = DllCall($hDLL, "LONG", "ImageShackPost", "WSTR", $File, "WSTR", "default")
    IF IsArray($ret) THEN
    MsgBox(64,@SCRIPTNAME,$ret[0])
    ELSE
    MsgBox(16,@SCRIPTNAME,"DllCall error!")
    ENDIF
    DllClose($hDll)
    ENDIF
    EXIT

    [/autoit]

    Gruß
    Greenhorn


  • [autoit]

    $ret = DllCall($hDLL, "wstr", "ImageShackPost", "WSTR", $File, "WSTR", "default")

    [/autoit]

    gibt den link zurück

  • Hmm, so besser ?

    Spoiler anzeigen
    [autoit]

    $File = @ScriptDir & "\ScreenShot.png"

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

    $hDLL = DllOpen(@SCRIPTDIR &'\LibImgUpp.dll')
    IF $hDLL THEN
    $ret = DllCall($hDLL, "PTR", "ImageShackPost", "WSTR", $File, "WSTR", "default")
    IF IsArray($ret) THEN
    $szLink = DllStructCreate ("WCHAR [260]", $ret[0])
    If (not @error) Then
    MsgBox(64,@SCRIPTNAME, DllStructGetData ($szLink, 1))
    Else
    MsgBox(16,@SCRIPTNAME,"DllStructCreate error!")
    EndIf
    ELSE
    MsgBox(16,@SCRIPTNAME,"DllCall error!")
    ENDIF
    DllClose($hDll)
    ENDIF
    EXIT

    [/autoit]

    EDIT:
    Oder so wie Andy es vorschlägt ...;)

    Gruß