[AutoIt] Senden von "seltsamen" Zeichen

04/17/2009 23:14 felixli93#1
hallo, wollte fragen, ob es in AutoIt eine möglichkeit gibt Zeichen wie z.b. Chinesische zeichen zu senden?
wenn ich die zeichen allerdings aus google translator ins script einfüge kommt dort nur ???? statt
测试 (als beispiel)

weiß einer ne möglichkeit, wie es trotzdem klappt?
04/17/2009 23:20 Noisuf-X#2
unter windows gibt es da doch immer bestimmte tastenkominationen für ©¥£¢
versuch doch einfach die tasten kombinationen zu senden
04/17/2009 23:34 Zagaris123#3
ja zb. halte ALT und schreib 1478 oder so was dann kommen immer andere sachen raus
04/17/2009 23:38 felixli93#4
jo, schon klar, das sind die ACSII-Codes von den Zeichen
aber dieser ASCII-Code-Bereich umfasst nur die Zeichen von 1 - 255
alles was danach kommt ist lediglich eine wiederholung vom dem was davor kommt (z.b. ist 311 das gleiche wie 55 bzw. 567)
beweis: 777^^


EDIT:
hab's jetzt
muss man mit UniCodes machen (also AscW und ChrW)


Noch Edit:

bringt aber immer noch nichts
kann das jetzt zwar z.b. mit clipput speichern und dann mit strg + v einfügen (퐥 z.b. = ChrW (54309)), aber über den Send Befehl geht es immer noch nicht
04/18/2009 03:38 Bot_interesierter#5
[Only registered and activated users can see links. Click Here To Register...]
lies dir mal die Seite durch, dann wird dir sicher der Absatz
Quote:
To send UNICODE characters enter the character code (decimal or hex), for example this sends a Chinese character
Send("{ASC 2709}") or Send("{ASC 0xA95}")
auffallen, der deine Frage beantwortet.
04/18/2009 10:53 felixli93#6
soweit war ich auch schon
nur bringt mir das für chinesische charakter sehr wenig, weil z.b. das teil nur î sendet
chinesische zeichen liegen soweit ich weiß irgendwo bei 30000. wenn ich aber das senden lassen, kommen auch nur normale zeichen raus (das wiederholt sich wieder)
04/18/2009 11:25 SecretDead#7
versuch vll ma alle unicode einzubauen vll bringts was?
04/18/2009 12:27 felixli93#8
Quote:
Current Limitations
There are a few parts of AutoIt that don't yet have full Unicode support. These are:

Send and ControlSend - Instead, Use ControlSetText or the Clipboard functions.
Regular expressions - To reduce the size of AutoIt, the regular expression engine is currently compiled in ANSI mode.
Console operations are converted to ANSI.
so steht das in der autoit hilfe

also send unterstützt noch nicht unicode
aber wie soll ich dann solche zeichen senden lassen -.-
04/18/2009 14:21 __wadim#9
SendMessageW für unicode.
04/18/2009 18:51 SecretDead#10
Quote:
Originally Posted by __wadim View Post
SendMessageW für unicode.
den befehl gibts nicht in Autoit
und @ Threadsteller du musst dann die unicodes rausfinden und so schreiben:
(Beispiel)
Code:
Send("{ASC 067}")
04/18/2009 19:10 __wadim#11
Quote:
Originally Posted by SecretDead View Post
den befehl gibts nicht in Autoit
und @ Threadsteller du musst dann die unicodes rausfinden und so schreiben:
(Beispiel)
Code:
Send("{ASC 067}")
was redest du da, nur weil du nicht weisst wie oder wtf?
Code:
Func _SendMessageA($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lparam")
	Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageA", "hwnd", $hWnd, "int", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
	If @error Then Return SetError(@error, @extended, "")
	If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
	Return $aResult
EndFunc   ;==>_SendMessageA
da machste jetzt einfach ein W draus, hab W grad nicht gefunden.
04/18/2009 19:24 Cholik#12
Ein Hoch auf die WinAPI :D
04/18/2009 19:29 felixli93#13
in welcher include ist diese funktion?
bei mir gibts nur _SendMessage in der <misc.au3>
04/18/2009 19:32 Cholik#14
Du deklarierst sie dir selbst x,x

Code:
Func _SendMessageAW($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lparam")
    Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "int", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
    If @error Then $aResult = DllCall("user32.dll", $sReturnType, "SendMessage", "hwnd", $hWnd, "int", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
    If @error Then Return SetError(@error, @extended, "")
    If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
    Return $aResult
EndFunc   ;==>_SendMessage
04/18/2009 19:39 felixli93#15
ah ok, hab sie gefunden
seltsamerweise steht sie nicht in der hilfe datei

danke ich versuchs mal!