Jump to content

AutoIt discovering


Recommended Posts

Hi, I'm discovering this interesting tool and maybe i missed something about how use function, i'm looking for your light to help me solving a problem.

I have to make a script wich convert text and save it in file and then i take some function and when i launch these function it show me an error.

if someone has any idea :)

#NoTrayIcon



$ok=0

If($CmdLine[1]="save") Then
    $a=FileOpen ($CmdLine[2],2)
    $ok=FileWrite($a,ClipGet())
    FileClose($a)
EndIf

If($CmdLine[1]="saveUnicode2Utf8") Then
    $a=FileOpen ($CmdLine[2],2)
    $string = Unicode2Utf8(ClipGet())
    $ok=FileWrite($a,$string)
    FileClose($a)
EndIf

If($CmdLine[1]="saveUtf82Unicode") Then
    $a=FileOpen ($CmdLine[2],2)
    $string = ClipGet()
    saveUtf82Unicode($string)
    $ok=FileWrite($a,$string)
    FileClose($a)
EndIf

If($CmdLine[1]="saveAsc2Unicode") Then
    $a=FileOpen ($CmdLine[2],2)
    $string = ClipGet()
    saveAsc2Unicode($string)
    $ok=FileWrite($a,$string)
    FileClose($a)
EndIf

If($CmdLine[1]="saveUnicode2Asc") Then
    $a=FileOpen ($CmdLine[2],2)
    $string = ClipGet()
    saveUnicode2Asc($string)
    $ok=FileWrite($a,$string)
    FileClose($a)
EndIf

If($CmdLine[1]="append") Then
    $a=FileOpen ($CmdLine[2],1)
    $ok=FileWrite($a,ClipGet())
    FileClose($a)
EndIf



ConsoleWrite ($ok)

exit

Func Utf82Unicode($Utf8String)
    Local $BufferSize = StringLen($Utf8String) * 2
    Local $Buffer = DllStructCreate("byte[" & $BufferSize & "]")
    Local $Return = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
        "int", 65001, _
        "int", 0, _
        "str", $Utf8String, _
        "int", StringLen($Utf8String), _
        "ptr", DllStructGetPtr($Buffer), _
        "int", $BufferSize)
    Local $UnicodeString = StringLeft(DllStructGetData($Buffer, 1), $Return[0] * 2)
    $Buffer = 0
    Return $UnicodeString   
EndFunc

Func Asc2Unicode($AscString)
    Local $BufferSize = StringLen($AscString) * 2
    Local $Buffer = DllStructCreate("byte[" & $BufferSize & "]")
    Local $Return = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
        "int", 0, _
        "int", 0, _
        "str", $AscString, _
        "int", StringLen($AscString), _
        "ptr", DllStructGetPtr($Buffer), _
        "int", $BufferSize)
    Local $UnicodeString = StringLeft(DllStructGetData($Buffer, 1), $Return[0] * 2)
    $Buffer = 0
    Return $UnicodeString
EndFunc

Func Unicode2Asc($UniString)
    If Not IsBinaryString($UniString) Then
        SetError(1)
        Return $UniString
    EndIf

    Local $BufferLen = StringLen($UniString)
    Local $Input = DllStructCreate("byte[" & $BufferLen & "]")
    Local $Output = DllStructCreate("char[" & $BufferLen & "]")
    DllStructSetData($Input, 1, $UniString)
    Local $Return = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
        "int", 0, _
        "int", 0, _
        "ptr", DllStructGetPtr($Input), _
        "int", $BufferLen / 2, _
        "ptr", DllStructGetPtr($Output), _
        "int", $BufferLen, _
        "int", 0, _
        "int", 0)   
    Local $AscString = DllStructGetData($Output, 1)
    $Output = 0
    $Input = 0
    Return $AscString
EndFunc

Func Unicode2Utf8($UniString)
    If Not IsBinaryString($UniString) Then
        SetError(1)
        Return $UniString
    EndIf

    Local $UniStringLen = StringLen($UniString)
    Local $BufferLen = $UniStringLen * 2
    Local $Input = DllStructCreate("byte[" & $BufferLen & "]")
    Local $Output = DllStructCreate("char[" & $BufferLen & "]")
    DllStructSetData($Input, 1, $UniString)
    Local $Return = DllCall("kernel32.dll", "int", "WideCharToMultiByte", _
        "int", 65001, _
        "int", 0, _
        "ptr", DllStructGetPtr($Input), _
        "int", $UniStringLen / 2, _
        "ptr", DllStructGetPtr($Output), _
        "int", $BufferLen, _
        "int", 0, _
        "int", 0)   
    Local $Utf8String = DllStructGetData($Output, 1)
    $Output = 0
    $Input = 0
    Return $Utf8String
EndFunc

thanks

Edited by gilloub
Link to comment
Share on other sites

I use AutoIt 3

I assumed you are using AutoIT3. The question was, which version of AutoIT3 you are using.

Try to rename isBinaryString into isBinary inside the script, because according to the changelog the function has been renamed. It depends on the Version of autoit you are using. Could you write the error message in detail?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...