Hilfe bei Dll-Aufruf

  • Hallo,

    es geht um die Fish.dll, die normalerweise bei mIRC zum Einsatz kommt. Ich möchte mit dieser (nutzt blowfish) auch texte ver- und entschlüsseln.
    Ich habe nun gefunden, wie diese (in C?) aufgerufen werden soll/ kann ... habe aber keine Ahnung, wie ich das auf AutoIt übertrage.

    Wer kann mir helfen?

    Syntax ist: FiSH_encrypt_msg(HWND mWnd, HWND aWnd, char *theData, char *params, BOOL show, BOOL nopause)

    Dll gibts hier -> http://fish.secure.la/BETA/FiSH.v1.4….v6.35-BETA.zip (enthält keine Viren, AV kann aber patch-Dateien als Virus erkennen, aber es wird ja nur die dll benötigt)

    Und hier hab ich noch, wie es in mirc angewandt wird -> http://fish.secure.la/forum/viewtopic.php?f=1&t=70&view=next

    thx schonmal

    [EDIT] hier noch was, dass ich in der mirchilfe gefunden habe.

    Spoiler anzeigen
  • DllCall("Fish.dll", "int", "FiSH_encrypt_msg", "HWND" $mWnd, "HWND", $aWnd, "str", $theData, "str" $params, "BOLLEAN", $show, "BOOLEAN", $nopause)

    Falls es so geht, dann aber so:

    [autoit]

    DllCall("Fish.dll", "int", "FiSH_encrypt_msg", "hwnd", $mWnd, "hwnd", $aWnd, "str", $theData, "str" $params, "bool", $show, "bool", $nopause)

    [/autoit]
    • Offizieller Beitrag

    Wenn ich nicht irre, werden hier aber Pointer verlangt:

    Zitat

    char *data, char *parms


    Meiner Meinung nach, könnte es so etwas werden:

    [autoit]

    Func _FiSH_encrypt_msg($mWnd, $aWnd, $sData, $show, $nopause)
    Local $tData = DllStructCreate('char[900]')
    DllStructSetData($tData, 1, $sData)
    Local $tParams = DllStructCreate('char[900]')
    Local $ret = DllCall('Fish.dll', 'int', 'FiSH_encrypt_msg', 'hwnd', $mWnd, 'hwnd', $aWnd, 'ptr', DllStructGetPtr($tData), _
    'ptr', DllStructGetPtr($tParams), 'BOOLEAN', $show, 'BOOLEAN', $nopause)
    If @error Then Return SetError(@error,0,-1)
    Switch $ret[0]
    Case 0, 1
    Return $ret[0]
    Case 2
    Local $aOut[2] = [DllStructGetData($tData,1), DllStructGetData($tParams,1)]
    Return $aOut
    Case 3
    Return DllStructGetData($tData,1)
    EndSwitch
    EndFunc

    [/autoit]
  • Hey,

    dank euch schonmal, dass ihr euch meines Problems annehmt.

    Getestet hatte ich diese Nacht bis hierhin:

    [autoit]

    $DLLCall = DllCall("Fish.dll", 'int','FiSH_encrypt_msg', 'hwnd', WinGetHandle("[Class:SciTEWindow]"), 'hwnd', ControlGetHandle("[Class:SciTEWindow]", "", "Scintilla2"), 'str', 'Blubb', 'str', '1234', 'bool', true, 'bool', true)

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

    ConsoleWrite("WinHandle: " & WinGetHandle("[Class:SciTEWindow]") & @CRLF & "ControlHandle: " & ControlGetHandle("[Class:SciTEWindow]", "", "Scintilla2") & @CRLF & "DllCall: " & $DLLCall & @TAB & "Error: " & @error & @TAB & "Array: " & _ArrayToString($DLLCall) & @CRLF)

    [/autoit]

    Am Ende erhalte ich vom DLLCALL ein Array zurück, was wie folgt ausschaut:

    Zitat

    0|0x00330782|0x000B07AE||1234|1|1

    2x Win+Ctrl Handle, den 2. str (1234) und 2x 1 (für True)

    komischweise kommt das "Blubb" nicht zurück, wobei mir das Array natürlich nicht wirklich weiterhilft. es steht ja mehr oder weniger nur das drin, was ich übergeben habe. das mit den pointern hört sich ganz gut an ... aber das bekomm ich net auf die reihe.

    Die Idee von BugFix scheint schon sehr gut zu sein. Ich hatte zwar in mIRC folgendes: Blubb + 1234 = +OK XyYxV1HYaF.1
    Aber nun passiert folgendes:

    [autoit]

    $mWnd = WinGetHandle("[Class:SciTEWindow]")
    $aWnd = ControlGetHandle("[Class:SciTEWindow]", "", "Scintilla2")
    $sData = "Blubb 1234"
    $show = True
    $nopause = True

    [/autoit]

    Das Ergebnis ist: +OK 28cAV.ZCAlU1

    Sieht also schonmal ganz gut aus =)

    Jetzt habe ich versucht, das ganze wieder zu decrypten ... das klappt aber aktuell noch nicht:

    [autoit]

    $sData = $encrypt & " 1234"

    [/autoit]

    und die funtion wie folgt geändert:

    [autoit]

    Func _FiSH_decrypt_msg($mWnd, $aWnd, $sData, $show, $nopause)
    ...
    Local $ret = DllCall('Fish.dll', 'int', 'FiSH_decrypt_msg', 'hwnd', $mWnd, 'hwnd', $aWnd, 'ptr', DllStructGetPtr($tData), _
    'ptr', DllStructGetPtr($tParams), 'BOOLEAN', $show, 'BOOLEAN', $nopause)
    ...

    [/autoit]