Página 1 de 1

Ayuda DllCall

Publicado: 17 Ago 2012, 13:45
por Bendito
Ola hermanos , primer dar las felicitaciones ao foro , no conecia , és bueno , a ver se me ayudam ,
Bueno ,lo que necessito és pasar esta lhamada de vb6 a DllCall , se podeis claro


CallWindowProc VarPtr(sData(0)), StrPtr(sValue), VarPtr(sBuffer(0)), 0, 0


Gracias de Antemano :smt023

Re: Ayuda DllCall

Publicado: 18 Ago 2012, 16:37
por BasicOs
Hola, yo no uso la función DllCall, pero aquí hay un ejemplo de la función por si te vale:

Código: Seleccionar todo

Func _Base64Encode($Data)

    Local $Base64EncOpcode = "0x5589E5FF7510535657EB1A8B5D088B7DFC8B4D0CE81F000000834508038345FC04836D0C03837D0C007FE08B75FCC606005F5E5BC9C21000E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A0FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033DC3"

    Local $Ret

    Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Base64EncOpcode) & "]")

    If @error Or $CodeBuffer = 0 Then Return SetError(1, 0, -1)

    DllStructSetData($CodeBuffer, 1, $Base64EncOpcode)

    If @error Then Return SetError(2, 0, -1)

    Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")

    If @error Or $Input = 0 Then Return SetError(3, 0, -1)

    DllStructSetData($Input, 1, $Data)

    If @error Then Return SetError(4, 0, -1)

    Local $Output = DllStructCreate("char[" & Int(BinaryLen($Data) * 4 / 3) + 4 & "]")

    If @error Or $Output = 0 Then Return SetError(5, 0, -1)

    DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), "ptr", DllStructGetPtr($Input), _

            "int", BinaryLen($Data), "ptr", DllStructGetPtr($Output), "int", 0)

    If @error Then Return SetError(6, 0, -1)

    $Ret = DllStructGetData($Output, 1)

    $Input = 0

    $Output = 0

    $CodeBuffer = 0

    Return $Ret

EndFunc
Y otro ejemplo: http://www.autoitscript.com/forum/topic ... ntry563559


Puedes mirar más info en la ayuda aquí: DllCall ( "dll", "return type", "function" [, type1, param1 [, type n, param n]] )
http://www.autoitscript.com/autoit3/doc ... llCall.htm

No obstante puede que la función ya exista en Autoit con lo que NO necesitas usar DLLcall()
Salu22:)

Re: Ayuda DllCall

Publicado: 19 Ago 2012, 20:15
por Chefito
Como bien intuye BasicOs, esa función está definida en AutoIt. Se encuentra en la udf winapi.au3. Se denomina _WinAPI_CallWindowProc .
Mira en la ayuda que te la explica y te trae un ejemplo.

Saludos.