我想调用 WM_SETTEXT 消息给一个RichEdit,给它写上一定的文本(100分)

  • 主题发起人 主题发起人 chinaxuguojun
  • 开始时间 开始时间
C

chinaxuguojun

Unregistered / Unconfirmed
GUEST, unregistred user!
var
Test: arrary [0..255] of char;
Hand: HWND;//RichEdit的句柄
begin
............

try
Test := 'aaaaaaaaaaaaa';
SendMessage(Hand,WM_SETTEXT,0,Integer(@Test));
finally

end;
end;

这个RichEdit,是另外一个程序的,而不是本程序的,如果是本程序的,我测试过了,是可以的

请各位帮忙解决,100相送
 
如果你handle对的话一般是没问题的
 
function GetComponentHandle(hwnd: Integer; lparam: Longint):Boolean; stdcall;
var
buffer: array[0..255] of Char;
begin
Result := True;
//得到目标窗口的控件
GetClassName(hwnd, buffer, 256);
//找到目标窗口的TButton类目标控件
if StrPas(Buffer)='TRichEdit' then
begin
PInteger(lparam)^ := hwnd; //得到目标控件的Hwnd(句柄)
Result:=False; //终止循环
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
AHandle, BHandle: Integer;
S:String;
begin
//取指定窗口句柄
AHandle := FindWindow(nil, 'form1); //就是窗口的Caption
if AHandle<>0 then
begin
//在这里循环取到想要的句柄为止
EnumChildWindows(AHandle, @GetComponentHandle, Integer(@BHandle));
//此时,BHandle就是你要的句柄
S:=trim(RichEdit1.text);
SendMessage(BHandle, WM_SETTEXT, 0, LongInt(lpstr(S)));
end;
(@vBuffer)); //通过WM_GETTEXT取得文本~~
end;
 
FindWindow之后用FindWindowEx得到EDIT控件的句柄,就可以用SendMessage了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部