procedure TForm1.Timer1Timer(Sender: TObject); var hwnd:integer; hwndthread:integer; hwndfocus:integer; i:integer; str:string[15]; begin hwnd:=getforegroundwindow(); hwndthread:=getwindowthreadprocessid(hwnd,nil); attachthreadinput(getcurrentthreadid(), hwndthread,true); hwnd:=getfocus; attachthreadinput(getcurrentthreadid(), hwndthread,false); str:=edit1.Text;//比如:你好啊 for i:=0 to length(edit1.Text) do begin postmessage(hwnd,wm_char,integer(str[i]),0); end; end; 师兄,我真的实现了啊!!发送的就是中文啊
SendMessage改为PostMessage,加入消息队列即可,没必要立即执行!for i:=1 to Lenght(Str) do begin PostMessage(Hwnd,WM_CHAR,Integer(Str[i]),0); end;或者 SendMessage(Memo1.Handle,WM_SETTEXT,Integer(PChar(Str)),0);
for i:=0 to length(edit1.Text)-1 do
begin
postmessage(hwnd,wm_char,integer(str[i]),0);
end;
{ // 模拟键盘按键输入文本
PostMessage(hWnd, WM_CHAR, (WPARAM)(SS_Text->Text[i] & 0xFF), 0);
}
bcb得代码,注意他有个运算的
var
hwnd:integer;
hwndthread:integer;
hwndfocus:integer;
i:integer;
str:string[15];
begin
hwnd:=getforegroundwindow();
hwndthread:=getwindowthreadprocessid(hwnd,nil);
attachthreadinput(getcurrentthreadid(),
hwndthread,true);
hwnd:=getfocus;
attachthreadinput(getcurrentthreadid(),
hwndthread,false);
str:=edit1.Text;//比如:你好啊
for i:=0 to length(edit1.Text) do
begin
postmessage(hwnd,wm_char,integer(str[i]),0);
end;
end;
师兄,我真的实现了啊!!发送的就是中文啊
begin
PostMessage(Hwnd,WM_CHAR,Integer(Str[i]),0);
end;或者
SendMessage(Memo1.Handle,WM_SETTEXT,Integer(PChar(Str)),0);