可以,第1个不知道你从哪找来的字符,第二个确定是中文来的。 用下面的函数可以发送 //hFocus--接收窗口句柄 //Text--要发的内容 procedure SendDBCSString(hFocus: HWND; const Text: string); var i: integer; ch: byte; begin if hFocus = 0 then hFocus := GetFocus; if hFocus = 0 then Exit; i := 1; while i <= Length(Text) do begin ch := byte(Text[i]); if Windows.IsDBCSLeadByte(ch) then begin //SendMessage(hFocus, WM_IME_CHAR, MakeWord(byte(Text[i]), ch), 0); Inc(i); SendMessage(hFocus, WM_IME_CHAR, MakeWord(byte(Text[i]), ch), 0); end else SendMessage(hFocus, WM_IME_CHAR, word(ch), 0); Inc(i); end; end;
procedure TForm1.Button1Click(Sender: TObject); var ch:pchar; begin ch:='φ'; edit1.Clear; edit1.Focused; SendMessage(edit1.Handle, WM_settext, 0, integer(ch));end;我实验过了,没问题
procedure TForm1.Button1Click(Sender: TObject); var ch:pchar; begin ch:='φA'; edit1.Clear; edit1.Focused; SendMessage(edit1.Handle, WM_settext, 0, integer(ch)); end; 这样也没问题 接分...
用下面的函数可以发送
//hFocus--接收窗口句柄
//Text--要发的内容
procedure SendDBCSString(hFocus: HWND; const Text: string);
var
i: integer;
ch: byte;
begin
if hFocus = 0 then hFocus := GetFocus;
if hFocus = 0 then Exit;
i := 1;
while i <= Length(Text) do begin
ch := byte(Text[i]);
if Windows.IsDBCSLeadByte(ch) then begin
//SendMessage(hFocus, WM_IME_CHAR, MakeWord(byte(Text[i]), ch), 0);
Inc(i);
SendMessage(hFocus, WM_IME_CHAR, MakeWord(byte(Text[i]), ch), 0);
end
else SendMessage(hFocus, WM_IME_CHAR, word(ch), 0);
Inc(i);
end;
end;
var
ch:pchar;
begin
ch:='φ';
edit1.Clear;
edit1.Focused;
SendMessage(edit1.Handle, WM_settext, 0, integer(ch));end;我实验过了,没问题
var
ch:pchar;
begin
ch:='φA';
edit1.Clear;
edit1.Focused;
SendMessage(edit1.Handle, WM_settext, 0, integer(ch)); end; 这样也没问题
接分...
这个方法好!嘿嘿!
怎么能向WORD,TXT里同时发送消息呢!不知道怎么获取句柄
就是当输入特殊字符时,总是把以前的都删除了,最后只剩下最后输入的字符!而输入adfg654这些就没事,它会一个个往后走,不会把以前的都删除了
var
ch:pchar;
begin
ch:='φa';
//edit1.Focused;
SendMessage(edit1.Handle, WM_settext, 0, integer(edit1.Text+ch));//这个就是在原有的字符基础上加你的字符end;
var
ch:pchar;
begin
ch:='φa';
//edit1.Focused;
SendMessage(edit1.Handle, WM_settext, 0, integer(edit1.Text+ch));//这个就是在原有的字符基础上加你的字符 end;