SendH( sAnsiText ) { wStrLen:=DllCall("MultiByteToWideChar",uint,0, uint,0, str,sAnsiText , uint,-1, str, 0, uint,0 ) varSetCapacity(cu_WideText,wStrLen*2,0) DllCall("MultiByteToWideChar",uint,0, uint,0, str,sAnsiText , uint,-1, str,cu_WideText, uint, wStrLen ) nEventCount := wStrLen* 2 , VarSetCapacity( events, 28*nEventCount, 0 ) ptrWCode:=&cu_WideText , p:=&events msgbox, % ptrwcode loop, % wStrLen-1 { code:=*ptrWCode|( *(ptrWCode+1)<<8 ),ptrWCode+=2 p:=NumPut(4,NumPut(code,NumPut(1,p+0 )+2,0,"UShort")+0)+16 p:=NumPut(6,NumPut(code,NumPut(1,p+0 )+2,0,"UShort")+0)+16 } result := DllCall( "SendInput", "uint", nEventCount, "uint", &events, "int",28) if( ErrorLevel or result < nEventCount ) { MsgBox, [SendInput] failed: EL = %ErrorLevel% ~ %result% of %nEventCount% return, false } return, true }