为什么用GetWindowText 不能获取QQ的richEdit窗口中的内容~ ( 积分: 100 )

  • 主题发起人 主题发起人 ak_2004
  • 开始时间 开始时间
先要HOOK吧<br>我记得GetWindowText之类的方法不能取得另一进程中的编译框的内容,WM_GETTEXT也不行的,两个进程间传递地址
 
我注册了但发不了新帖,所以在此跟帖问个问题,如果热心网友看到麻烦帮我开个新帖,或者解答一下,谢谢!<br><br>我想截取另外一个VB程序中的MSFLEXGRID表格的内容,进行监控。我获得到了这个MSFLEXGRID的句柄,但是无法获得这个表格的内容。试了用WM_COPY、WM_GETTEXT、GETWINDOWTEXT等方法都不行,表格的内容读不出来。<br><br>如果哪位DX有比较好的方法,请指教一下!多谢!!!<br><br>我的QQ是6677322。
 
怕没有说清楚,再说详细一点:<br><br>有一个外部程序,是VB写的,它里面有个MsFlexGrid的控件,是个表格,显示一些内容。我想用DELPHI写一个程序,把这个表格中的文字读取出来。<br><br>通过FindWindow等函数,我目前得到了这个MsFlexGrid的句柄。请问接下去用什么方法可以读出表格内容?
 
最近试了一下以前的许多QQ灌水之类的东东,全都失效了,问题在于腾讯对richedit做了处理,以前使用sendmessage(FoundRichedit_hw, WM_settext, 100, Integer(pchar(Edit1.Text)))之类的语句已经不能正确发送了,不知有没有高手出个高招?
 
帮顶<br> <br> --------签名档---------------------------<br> <br> 惊爆开源站<br> <br> http://www.source520.com <br><br> 80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
 
program QQmsg;<br><br>uses<br> &nbsp;Windows,<br> &nbsp;Messages;<br><br>const<br> &nbsp; s1:string='尊敬的用户您好:您的话费余额已不足0.1元,请您在近日内:卖儿卖女卖大米,砸锅卖铁卖点儿血,卖房卖地卖老婆,把话费交上。谢谢合作!你的主人!';<br> &nbsp; s2:string='我是一棵葱,站在风雨中,谁要拿我沾大酱我操他老祖宗!走过南闯过北,厕所后面喝过水,火车道上压过腿,还和傻子亲过嘴。操!啥也不拒,就是想';<br> &nbsp; s3:string='恋爱了吧!高兴了吧!从此花钱大了吧!结婚了吧!爽了吧!从此有人管了吧!离婚了吧!自由了吧!做爱要花钱了吧!艾滋了吧!傻了吧!躺在床上等死吧!';<br> &nbsp; s4:string='我一直都守在你身边,也一再为你担心,今天你吃得饱吗?睡得好吗?深夜会冷吗?我向来都知道你就是不会照顾自己,每当我一走开,你就从猪栏跳出去。';<br> &nbsp; s5:string='二他骂,泥介四赶骂七呀?”“桑发员达管斯七!”“原高被高?”“原高!”“原高,够牛笔地呀!”“牛笔骂呀,被强见了!”';<br> &nbsp;var<br> &nbsp;TimerHandle:WORD;<br> &nbsp;MSG:TMSG;<br> &nbsp;n:integer;<br><br><br>procedure TimerProc(Wnd:HWnd;Msg,TimerID,dwTime:DWORD);stdcall;<br>var<br> &nbsp;hLastWin,hButton : THandle;<br> &nbsp;szWindowText: array[0..MAX_PATH] of Char;<br> &nbsp;szTextLength: Integer;<br> &nbsp;QQName,tem:String;<br>begin<br> &nbsp;hLastWin := GetForegroundWindow;<br> &nbsp;GetClassName(hLastWin,szWindowText,SizeOf(szWindowText));<br> &nbsp;if szWindowText &lt;&gt;'#32770' then Exit;<br> &nbsp;szTextLength := SendMessage(hLastWin, WM_GETTEXT, MAX_PATH, Integer(@szWindowText[0]));<br> &nbsp;szWindowText[szTextLength] := #0;<br> &nbsp;if Pos('聊天中',szWindowText)&gt;0 then<br> &nbsp;begin<br> &nbsp; &nbsp;QQName:=Copy(szWindowText,Pos(' ',szWindowText)+1,Pos('聊天中',szWindowText)-Pos(' ',szWindowText)-2);<br> &nbsp; &nbsp;hLastWin := FindWindowEx(hLastWin, THandle(nil),'#32770',nil);<br> &nbsp; &nbsp;if hLastWin=0 then Exit;<br> &nbsp; &nbsp;hButton := FindWindowEx(hLastWin, THandle(nil),nil,'发送(&amp;S)');<br> &nbsp; &nbsp;if hButton=0 then Exit; &nbsp; &nbsp;<br> &nbsp; &nbsp;hLastWin := FindWindowEx(hLastWin, THandle(nil),'AfxWnd42',nil);<br> &nbsp; &nbsp;if hLastWin=0 then Exit;<br> &nbsp; &nbsp;hLastWin := FindWindowEx(hLastWin, THandle(nil),'RICHEDIT',nil);<br> &nbsp; &nbsp;if hLastWin=0 then Exit;<br> &nbsp; &nbsp;n:=n+1;<br> &nbsp; &nbsp;case n of<br> &nbsp; &nbsp;1:tem:=s1;<br> &nbsp; &nbsp;2:tem:=s2;<br> &nbsp; &nbsp;3:tem:=s3;<br> &nbsp; &nbsp;4:tem:=s4;<br> &nbsp; &nbsp;5:tem:=s5;<br> &nbsp; &nbsp;else<br> &nbsp; &nbsp;tem:='程序出错了,不好意思!';<br> &nbsp; &nbsp;end;<br> &nbsp; &nbsp;if n=5 then<br> &nbsp; &nbsp;n:=0;<br> &nbsp; &nbsp;QQName:=QQName+tem;<br> &nbsp; &nbsp;SendMessage(hLastWin,EM_REPLACESEL,180,Integer(Pchar(QQName)));<br> &nbsp; &nbsp;SendMessage(hButton, WM_LBUTTONDOWN, 0, 0);<br> &nbsp; &nbsp;SendMessage(hButton, WM_LBUTTONUP, 0, 0);<br> &nbsp;end;<br>end;<br><br>procedure StartTimer(Interval:DWORD);<br>begin<br> &nbsp;TimerHandle:=SetTimer(0,0,Interval,@TimerProc);<br>end;<br><br>begin<br> n:=0;<br> &nbsp;StartTimer(200);<br> &nbsp;while(GetMessage(Msg,0,0,0))do<br> &nbsp;begin<br> &nbsp; &nbsp;TranslateMessage(Msg);<br> &nbsp; &nbsp;DispatchMessage(Msg);<br> &nbsp;end;<br>end.
 
后退
顶部