我想用sendmessage模拟键盘,
可是发现发送英文字符是可以,可是汉字就是无法显示。
看了网上能找到的解决方案,试过了,都是一样的结果,不行!!!!
下面是一个完整的测试程序示例
//模拟发送
procedure TForm1.Button1Click(Sender: TObject);
begin
sendmessage(edit1.Handle,WM_CHAR,49,0);
sendmessage(edit1.Handle,WM_CHAR,50,0);
sendmessage(edit1.Handle,WM_CHAR,209,0);
sendmessage(edit1.Handle,WM_CHAR,203,0);
end;//接收监控测试
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
str := str + key;
end;//显示测试
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text := str;
end;按了按钮button1之后,模拟发送数字1、2,和汉字"阉"
发送之后,edit1中只显示有数字1、2,没有汉字阉
可是我点击按钮button2,之后,eidt1中却可以正常的显示出数字1、2和汉字阉。
那就是说我的字符都是正常发送过去,而且被正常接收了的。
请问哪位大侠,能帮助小弟解决这个汉字为什么不能显示的问题
可是发现发送英文字符是可以,可是汉字就是无法显示。
看了网上能找到的解决方案,试过了,都是一样的结果,不行!!!!
下面是一个完整的测试程序示例
//模拟发送
procedure TForm1.Button1Click(Sender: TObject);
begin
sendmessage(edit1.Handle,WM_CHAR,49,0);
sendmessage(edit1.Handle,WM_CHAR,50,0);
sendmessage(edit1.Handle,WM_CHAR,209,0);
sendmessage(edit1.Handle,WM_CHAR,203,0);
end;//接收监控测试
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
str := str + key;
end;//显示测试
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text := str;
end;按了按钮button1之后,模拟发送数字1、2,和汉字"阉"
发送之后,edit1中只显示有数字1、2,没有汉字阉
可是我点击按钮button2,之后,eidt1中却可以正常的显示出数字1、2和汉字阉。
那就是说我的字符都是正常发送过去,而且被正常接收了的。
请问哪位大侠,能帮助小弟解决这个汉字为什么不能显示的问题
解决方案 »
- 关于fastreport的两个问题
- 如何实现对时间的计算
- ADO方式访问数据库 可否把文件中的数据读到记录集中?
- 讨论一个很简单但大家都可能很关心的问题?Delphi的下一个版本会是什么样的(从.net和java两方面讨论)?
- TreeView如何控制节点间距?
- 求delphi7.0的crack文件:[email protected] 急!
- 急急急,请教delphi调试中查看变量值的方法是什么??在线等候
- 能不能给一个函数传入类名,让函数生成这个类的实例。
- 指针调用问题
- delphi做的dll,使用了第三方控件,调用时出错,怎么办?
- 100分!!UDP网络视频传输的一点小问题,请教各位一下,来着有分!
- 关于VCL Skin的问题?
在memo1中能正常显示汉字,应该怎么做?
//模拟发送
procedure TForm1.Button1Click(Sender: TObject);
begin
postmessage(form1.Handle,WM_CHAR,49,0);
postmessage(form1.Handle,WM_CHAR,50,0);
postmessage(form1.Handle,WM_CHAR,209,0);
postmessage(form1.Handle,WM_CHAR,203,0);
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
memo1.Text := memo1.Text + key;
end;
begin
str:=';postmessage(edit1.Handle,WM_CHAR,49,0);
postmessage(edit1.Handle,WM_CHAR,50,0);
postmessage(edit1.Handle,WM_CHAR,209,0);
postmessage(edit1.Handle,WM_CHAR,203,0); application.ProcessMessages;
memo1.Text:=str;
end; //接收监控测试
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
str := str + key;
end;
sTemp:string;
bHZ:boolean;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(sTemp,2);
bHZ:=false;
postmessage(form1.Handle,WM_CHAR,49,0);
postmessage(form1.Handle,WM_CHAR,50,0);
postmessage(form1.Handle,WM_CHAR,209,0);
postmessage(form1.Handle,WM_CHAR,203,0);
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if byte(Key)>160 then
begin
if bHZ then
begin
sTemp[2]:=Key;
bHZ:=false;
Memo1.Text:=Memo1.Text+sTemp;
end else
sTemp[1]:=Key;
bHZ:=true;
end else
memo1.Text := memo1.Text + key;
end;
var
Form1: TForm1;
str:string;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
str:='';
sendmessage(Memo1.Handle,WM_CHAR,49,0);
sendmessage(Memo1.Handle,WM_CHAR,50,0);
sendmessage(Memo1.Handle,WM_CHAR,209,0);
sendmessage(Memo1.Handle,WM_CHAR,203,0);
//Edit1.Text :=str;
Memo1.Text :=str;
end;procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
str := str + key;
end;