关于sendmessage,如何得到对方程序窗口内容?up有分。谢谢

xch28 2003-05-19 07:46:05
我用spy ++能得到对方窗口句柄。但用下面的程序却不能得到内容。
var
i:integer;
mem:pchar;
begin
i := SendMessage(hdloutput,WM_GETTEXTLENGTH,0,0);
getmem(mem,i+1);
SendMessage(hdloutput,WM_GETTEXT,i+1,LongInt(mem));
memo1.Lines.Append(strpas(mem));
getmem(mem,0);
freemem(mem);
end;

ps,这端代码可以得到其他窗口的内容。
spy++显示这个窗口的class是afx:400000:b:1--11:9:0
有没有什么方法可以得到对方窗口内容的,谢谢。
...全文
198 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
seawavefj 2003-05-19
  • 打赏
  • 举报
回复
gz
xch28 2003-05-19
  • 打赏
  • 举报
回复
ps,不过楼顶的代码在另外一个程序上可以正确得到内容。
xch28 2003-05-19
  • 打赏
  • 举报
回复
ps,我的系统是win2000
xch28 2003-05-19
  • 打赏
  • 举报
回复
给你留言了,能帮帮我么?
papaya_stone 2003-05-19
  • 打赏
  • 举报
回复
发送WM_GETTEXT消息,在98中可以,在2000中不成。
用GetWindowText();只能得到本进程中窗口的内容。
跨进程的话只能在hook函数中发送WM_GETTEXT消息。
智商无下限 2003-05-19
  • 打赏
  • 举报
回复
把窗体设成fsStayOnTop,让他尽量的小,和EDIT一样大。这种方法有一定局限性,想要取得任意处的文字就要使用屏幕取词技术了,有些复杂,你得看看HOOK!祝你好运!
procedure TForm1.Timer1Timer(Sender: TObject);
var h:hwnd;
temp:array[0..255] of char;
begin
h:=windowfrompoint(mouse.CursorPos);
getwindowtext(h,temp,255);
edit1.Text:=string(temp);
end;
xch28 2003-05-19
  • 打赏
  • 举报
回复
等。。。。。
智商无下限 2003-05-19
  • 打赏
  • 举报
回复
唉!重给你写一个!!!等等我!
xch28 2003-05-19
  • 打赏
  • 举报
回复
真的不行哦。
的自己程序上控件的caption或text都没问题。
到别的程序就为空了。
xch28 2003-05-19
  • 打赏
  • 举报
回复
ok,我再试试。
智商无下限 2003-05-19
  • 打赏
  • 举报
回复
都可以的呀!
实在不行你就把上面的代码放到 TIMER中,就实现了 !
xch28 2003-05-19
  • 打赏
  • 举报
回复
谢谢l0f(凌风)
你的方法得句柄很cool,我也刚好需要。
可是你的程序只能得到自己窗口任何空间的内容,
可是在其他程序上就不能得到内容了。
对方程序输出框好象不是简单的edit,或richedit,像是自己写的类。
智商无下限 2003-05-19
  • 打赏
  • 举报
回复
得到固定的窗口内容就更好办了,直接
H:=FINDWIDOW(NIL,'标题');
智商无下限 2003-05-19
  • 打赏
  • 举报
回复
不就是想得到对方窗口中得内容吗!
你的想法不对
这样作://得到任意点的窗口文字,在EDIT上按下鼠标左键,在目标上放开,EDIT中就显示!
procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var h:hwnd;
temp:array [0..255] of char;
begin
h:=windowfrompoint(mouse.CursorPos);
if h<>0 then
begin
getwindowtext(h,temp,255);
edit1.Text:=string(temp);
end;
end;
记得给分呀!
xch28 2003-05-19
  • 打赏
  • 举报
回复
说明一下。wm_gettextlength后,i的值仍然是0.
:(
Comer 2003-05-19
  • 打赏
  • 举报
回复
no 2
up
zjf27 2003-05-19
  • 打赏
  • 举报
回复
up
xch28 2003-05-19
  • 打赏
  • 举报
回复
谢谢大家,解决咯,虽然最终没有得到,但问题解决了。

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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