对于别的程序的TMemo编辑框,如何向他发送字符就如同用户输入一样

alphapaopao 2003-01-18 12:22:47
我想对lanchat的程序中的编辑框发送字符串。我用spy++检查之后,发现它的编辑框是 TMemo,看来好像是Delphi做的。所以特来请教,这种编辑框如何向他发送字符串?

::SendMessage(WM_CHAR...) 只能对非中文字符有效,发送中文就会失败,
所有的中文字符送过去之后,都变成十六进制值为FF 的字符 。

请赐教,谢谢
...全文
81 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphapaopao 2003-01-20
  • 打赏
  • 举报
回复
关键问题,是需要 0xFF & nChar ,我也很纳闷
alphapaopao 2003-01-20
  • 打赏
  • 举报
回复
many thanks, the problem has been resolved
ehom 2003-01-19
  • 打赏
  • 举报
回复
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);

纯冰糖 2003-01-19
  • 打赏
  • 举报
回复
帮你up
alphapaopao 2003-01-19
  • 打赏
  • 举报
回复
还请兄台能否试一下我正在发愁对付的这个程序,下面这个连接就是。我用VC做的程序,用的也是函数SendMessage()。英文可以处理,中文就不行。我还是木或不解阿。所以请兄台试一下这个程序。

http://www.regnow.com/softsell/visitor.cgi?affiliate=2314&action=site&vendor=3337&ref=http://lanchat.chat.ru/LCENT.EXE
alphapaopao 2003-01-18
  • 打赏
  • 举报
回复
兄台大量,很感谢了
纯冰糖 2003-01-18
  • 打赏
  • 举报
回复
sorry,没能帮你
alphapaopao 2003-01-18
  • 打赏
  • 举报
回复
PostMessage(hWnd, WM_CHAR, (WPARAM)(SS_Text->Text[i] & 0xFF), 0);

这样做恐怕也不行吧,对英文字符是没问题,中文字符就不好说了
纯冰糖 2003-01-18
  • 打赏
  • 举报
回复
for (int i = 1; i <= SS_Text->Text.Length(); i++)
{ // 模拟键盘按键输入文本
PostMessage(hWnd, WM_CHAR, (WPARAM)(SS_Text->Text[i] & 0xFF), 0);
}
bcb得代码,注意他有个运算的
纯冰糖 2003-01-18
  • 打赏
  • 举报
回复
str:=edit1.Text;
for i:=0 to length(edit1.Text)-1 do
begin
postmessage(hwnd,wm_char,integer(str[i]),0);
end;
blueshu 2003-01-18
  • 打赏
  • 举报
回复
中文要注意字节问题
perkyy 2003-01-18
  • 打赏
  • 举报
回复
up
纯冰糖 2003-01-18
  • 打赏
  • 举报
回复
另一个接受的窗口也是delphi写的,当处于焦点时,程序1就会插入程序2的线程,发送中文了!
纯冰糖 2003-01-18
  • 打赏
  • 举报
回复
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;
师兄,我真的实现了啊!!发送的就是中文啊

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧