#region
#AutoIt3Wrapper_UseX64=y
#endregion
#pragma compile(AutoItExecuteAllowed, true)
#include <Constants.au3>
Global $dllname = @ScriptDir & '\fgh.dll'
$iRet = _DllCallx86($dllname, 'int:cdecl', '_sText', 'str', 'Привет!')
ConsoleWrite($iRet & @LF)
Func _DllCallx86($sDLL, $iRet, $sFunc, $vType1 = '', $vParam1 = '', $vType2 = '', $vParam2 = '')
If Not @AutoItX64 Then
Return DllCall($sDLL, $iRet, $sFunc, $vType1, $vParam1, $vType2, $vParam2)
EndIf
Switch @NumParams
Case 3
$sLine = '"ConsoleWrite(DllCall(''' & $sDLL & ''', ''' & $iRet & ''', ''' & $sFunc & ''')[0])"'
Case 4, 5
$sLine = '"ConsoleWrite(DllCall(''' & $sDLL & ''', ''' & $iRet & ''', ''' & $sFunc & ''', ''' & $vType1 & ''', ''' & $vParam1 & ''')[0])"'
Case 6, 7
$sLine = '"ConsoleWrite(DllCall(''' & $sDLL & ''', ''' & $iRet & ''', ''' & $sFunc & ''', ''' & $vType1 & ''', ''' & $vParam1 & ''', ''' & $vType2 & ''', ''' & $vParam2 & ''')[0])"'
EndSwitch
If @Compiled Then
FileInstall('MyScript64.exe', @ScriptDir & '\MyScript64.exe', 1)
$iPID = Run('"' & @ScriptDir & '\MyScript64.exe' & '" /AutoIt3ExecuteLine ' & $sLine, '', @SW_SHOWNORMAL, $STDOUT_CHILD)
Else
$iPID = Run('"' & StringReplace(@AutoItExe, '_x64.exe', '.exe') & '" /AutoIt3ExecuteLine ' & $sLine, '', @SW_SHOWNORMAL, $STDOUT_CHILD)
EndIf
ProcessWaitClose($iPID)
Local $sRet = StdoutRead($iPID)
If @Compiled Then
FileDelete(@ScriptDir & '\MyScript64.exe')
EndIf
Return $sRet
EndFunc