ich würde empfehlen das ganze so aufzudröseln, das am ende keine scriptblocker mehr übrig bleiben können.
hier ein beispiel:
Code:
TCPStartup()
Global $socket, $answer
InitGoogleTranslation()
RequestTranslation("this is a simple test", "en", "de")
While True
If ReceiveAnswer() Then
MsgBox(0, "Answer", ParseAnswer())
Exit
EndIf
WEnd
Func InitGoogleTranslation()
$socket = TCPConnect(TCPNameToIP('translate.google.com'),80)
EndFunc
Func RequestTranslation($content, $from, $to)
TCPSend($socket, "GET /translate_a/t?client=t&sl="&$from&"&tl="&$to&"&q="&URLEncoding($content)&" HTTP/1.1"&@CRLF&@CRLF)
EndFunc
Func ReceiveAnswer()
$answer &= TCPRecv($socket,1024)
If StringRight($answer,5)=0&@CRLF&@CRLF Then Return True
Return False
EndFunc
Func ParseAnswer()
Local $return, $exp1, $exp2
$exp1 = StringRegExp($answer, "\[\[(\[.+?\])\]", 1)
If Not IsArray($exp1) Then Return False
$exp2 = StringRegExp($exp1[0], '\["(.+?)",.+?,.+?,.+?\]', 3)
If Not IsArray($exp2) Then Return False
For $i=0 To UBound($exp2)-1
$return&=$exp2[$i]&@CRLF
Next
Return StringTrimRight($return,2)
EndFunc
Func URLEncoding($string)
Local $return, $split = StringToASCIIArray($string, Default, Default, 2)
For $i=0 To UBound($split) -1
$return &= '%'&Hex($split[$i],2)
Next
Return $return
EndFunc
sicherlich ist das ganze noch optimierungswürdig, sollte aber zb bei nutzung von guis keine probleme mit scriptblockaden verursachen.
Edit:
bsp mit gui:
Code:
TCPStartup()
Global $socket, $answer
InitGoogleTranslation()
GUICreate('Tranlator', 600, 300, Default, Default, 0x10C80000)
$es = GUICtrlCreateEdit('', 10, 10, 270, 260, 0x1044)
$et = GUICtrlCreateEdit('', 320, 10, 270, 260, 0x844)
$go = GUICtrlCreateButton('->', 290, 10, 20, 282)
$cs = GUICtrlCreateCombo('auto', 10, 270, 270, 20, 0x200943)
$ct = GUICtrlCreateCombo('', 320, 270, 270, 20, 0x200943)
FillCombo()
While True
Switch GUIGetMsg()
Case -3
Exit
Case $go
RequestTranslation(GUICtrlRead($es), GUICtrlRead($cs), GUICtrlRead($ct))
EndSwitch
If ReceiveAnswer() Then GUICtrlSetData($et, ParseAnswer())
WEnd
Func FillCombo()
Local $tmp, $local=LCIDToLocaleName(0)
For $i=1 To 0xFF
$tmp = LCIDToLocaleName($i)
If $tmp<>'' Then
GUICtrlSetData($cs, $tmp, 'auto')
GUICtrlSetData($ct, $tmp, $local)
EndIf
Next
EndFunc
Func LCIDToLocaleName($iLCID)
Local $return = DllCall("Kernel32.dll", "int", "LCIDToLocaleName", "int", $iLCID, "wstr", "", "int", 85, "dword", 0)
Return StringLeft($return[2],2)
EndFunc
Func InitGoogleTranslation()
$socket = TCPConnect(TCPNameToIP('translate.google.com'),80)
EndFunc
Func RequestTranslation($content, $from, $to)
$answer = ''
TCPSend($socket, "GET /translate_a/t?client=t&sl="&$from&"&tl="&$to&"&q="&URLEncoding($content)&" HTTP/1.1"&@CRLF&@CRLF)
EndFunc
Func ReceiveAnswer()
$answer &= TCPRecv($socket,1024)
If StringRight($answer,5)=0&@CRLF&@CRLF Then Return True
Return False
EndFunc
Func ParseAnswer()
Local $return, $exp1, $exp2
$exp1 = StringRegExp($answer, "\[\[(\[.+?\])\]", 1)
If Not IsArray($exp1) Then Return False
$exp2 = StringRegExp($exp1[0], '\["(.+?)",.+?\]', 3)
If Not IsArray($exp2) Then Return False
For $i=0 To UBound($exp2)-1
$return&=$exp2[$i]
Next
$answer = ''
Return StringReplace(StringReplace($return,'\r',@CR),'\n',@LF)
EndFunc
Func URLEncoding($string)
Local $return, $split = StringToASCIIArray($string, Default, Default, 2)
For $i=0 To UBound($split) -1
$return &= '%'&Hex($split[$i],2)
Next
Return $return
EndFunc