procedure TForm1.Button1Click(Sender: TObject); var dd,hh: hwnd; i: integer; mem: pchar; begin dd := FindWindow(nil,'SendMsg'); if dd>0 then begin hh := FindwindowEx(dd,0,pchar('TRichEdit'),nil); if hh>0 then begin i := SendMessage(hh,WM_GETTEXTLENGTH,0,0); getmem(mem,i+1); SendMessage(hh,WM_GETTEXT,i+1,LongInt(mem)); showmessage(strpas(mem)); end else showmessage('no such window'); end; getmem(mem,0); end;
就一个程序放一个ServerSocket,一个放ClientSocket,通过socket两个程序建立联系。
然后将你的文本通过socket放送即可
var
dd,hh: hwnd;
i: integer;
mem: pchar;
begin
dd := FindWindow(nil,'SendMsg');
if dd>0 then
begin
hh := FindwindowEx(dd,0,pchar('TRichEdit'),nil);
if hh>0 then
begin
i := SendMessage(hh,WM_GETTEXTLENGTH,0,0);
getmem(mem,i+1);
SendMessage(hh,WM_GETTEXT,i+1,LongInt(mem));
showmessage(strpas(mem));
end
else
showmessage('no such window');
end;
getmem(mem,0);
end;
如果你的程序要获取Focus,响应WM_SETFOCUS来获取窗口
如果你的程序不是要取当前Focus窗口的文本,用SetCapture捕获鼠标,用WindowFromPoint获取窗口
当然用Hook也可以,但是好像大材小用了
ActiveControl:=WindowFromPoint(Mouse.CursorPos);
SendMessage(ActiveControl,WM_COPY,0,0);
TextArea.Lines.Clear;
SendMessage(TextArea.Handle,WM_PASTE,0,0)
它对网页中文本不起作用,是不是无法取得它的窗口还是发送的WM_COPY无效?