怎么读取别一个已知名字的程序上的一个未知控件(类似richedit)上的文本内容 ( 积分: 200 )

  • 主题发起人 主题发起人 wlyft
  • 开始时间 开始时间
要先取得长度加1<br>在取缓冲数据<br>len := sendMessage(hrichEdit, WM_GETTEXTLENGTH, 0, 0) + 1;<br>GetMem(buf, Len);<br>sendMessage(hrichEdit, WM_GETTEXT, Len, Integer(buf));<br> buf 就是Text data,但有可能其他程序的取不到,可能要用线程注入才行
 
到底这个线程注入是一个什么回事大哥们给个说法啊????
 
方法一<br>function EnumProc(hwnd:Thandle;lparam:lparam):boolean; Stdcall;<br>var<br> &nbsp; &nbsp;lpText,lpCaption &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:array[0..255] of char;<br><br>begin<br> &nbsp; &nbsp;Result := true;<br> &nbsp; &nbsp;GetClassName(hwnd,@lpText,255);//得到类名。<br> &nbsp; &nbsp;if LowerCase(lpText)=lowercase('tbutton') then<br>//这个用类别来查找。这里举例用TBUTTON<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp;Hchild := hwnd;<br> &nbsp; &nbsp; &nbsp; &nbsp;GetWindowText(Hchild,lpCaption,100);<br> &nbsp; &nbsp; &nbsp; &nbsp;if trim(lpCaption)='按钮的CAPTION写在这里' then//在这边用CAPTION来查找<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := false//打到返回FALSE<br> &nbsp; &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := true;<br> &nbsp; &nbsp;end;<br>end;<br><br>function TForm1.GetEditHandle(WinCap:string):integer;<br>var<br> &nbsp; &nbsp;hParent &nbsp; &nbsp; &nbsp; &nbsp; :Thandle;<br> &nbsp; &nbsp;i &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :integer;<br>begin<br> &nbsp; &nbsp;Result := 0;<br> &nbsp; &nbsp;Hchild := 0;<br> &nbsp; &nbsp;hParent := FindWindow(nil,pchar(''));//窗体的名称写在这边<br> &nbsp; &nbsp;if hParent=0 then Exit;<br> &nbsp; &nbsp;EnumChildWindows(hParent,@EnumProc,0);//回调EnumProc<br> &nbsp; &nbsp;Result := Hchild;<br><br>end;<br> <br><br><br>忘记了,还要写一个东西就是发一个消息过去执行CLICK的事件。<br>SendMessage(Hchild,bm_click,0, 0); &nbsp;<br>方法二<br>var<br> H1,H2:THandle;<br>begin<br> &nbsp;H1:=FindWindow('TForm1','shenqw');<br> &nbsp;H2:=Findwindowex(H1,0,'TButton','Button1');<br> &nbsp;SendMessage(H2,bm_click,0,0);<br>end;
 
to hzjone<br>谢谢你的回答,但是你的估计误解了我的意思<br>我要一个类似于richedit控件是的内容,这个控件上文有提供地址下载<br>GetWindowText是获得不了的,只能得到你说的tbutton这种有caption的文字,我也不需在界面上发送click事件
 
procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br> &nbsp;a:TPoint;<br> &nbsp;b:THandle;<br> &nbsp;c: array[0..254] of char;<br>begin<br> &nbsp;GetCursorPos(a);<br> &nbsp;label2.Caption:=inttostr(a.X)+' &nbsp; '+inttostr(a.Y);<br> &nbsp;b:=WindowFromPoint(a);<br> &nbsp;if GetWindowText(b, @c, 255)&gt;0 then<br> &nbsp;memo1.Text:=c;<br><br>end;<br><br>可以这样
 
给分 &nbsp;给分 &nbsp;我是穷人啊!<br><br>WindowFromPoint(Point:TPoint); //得到鼠标上控件的句柄
 
to moko<br>我已说过getwindowtext是不得到那上面的内容的!<br>控件句柄在问这个问题前我已经能得到了!
 
程序发上来,这么说太盲目!
 
to moko<br>我在前面已经把这个控件下载地址贴上来了,你可以去下下来装上<br>我只要知道怎么从另外一个程式读取这个控件上的内容,至于我用<br>getwindowtext,和sendmessage的方法都用过,也都得不到控件上面的内容
 

Similar threads

S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部