这个问题有点怪!(50分)

  • 主题发起人 主题发起人 徐永进
  • 开始时间 开始时间

徐永进

Unregistered / Unconfirmed
GUEST, unregistred user!
最近,本人在做一个捕获QQ的在对话模式的情况下的窗口的时候,发现一个怪问题,在对话<br>模式下,下面的输入窗口是一个TEDIT可以捕捉到,但是,上面接受消息的那个窗体,用<br>winsight32就可以看到是一个TRICHEDIT类,可是你找到对话模式的窗口之后!利用<br><br>function GetRicheditHandle(hwnd: Integer; lparam: Longint):Boolean; stdcall;<br>var<br>&nbsp; buffer: array[0..255] of Char;<br>&nbsp; buffer1: array[0..255] of Char;<br>begin<br>&nbsp; Result := True;<br>&nbsp; //得到目标窗口的控件<br>&nbsp; getclassname(hwnd,buffer,256);<br>&nbsp; if StrPas(Buffer)='RICHEDIT' then<br>&nbsp; begin<br>&nbsp; &nbsp; GetWindowText(hwnd,buffer1,100);<br>&nbsp; &nbsp; PInteger(lparam)^ := hwnd; //得到目标控件的Hwnd(句柄)<br>&nbsp; &nbsp; Result:=False; &nbsp;//终止循环<br>&nbsp; end;<br>end;//end of function<br><br>EnumChildWindows(richedithandle,@GetRICHEDIThandle,Integer(@richedithandle));<br>Frichedithandle:=richedithandle;<br>却不能得到,我后来看了全部的EnumChildWindows所用到的HWND,发现没有找到RICHEDIT的<br>句柄,哪个大侠讲讲为什么![:D][:D][8D]
 
你用FindWindowEX也找不到这个RichEdit的句柄么?<br>我这里没有QQ,所以不能试验.[:(]
 
FINDWINDOWEX不是问题的所在,在这里之前,已经找到了RICHEDIT所在的窗体的句柄,但是却不<br>能够找到,RICHEDIT的句柄!RICHEDIT是没有标题的!怎么办才好,知道BUBBLE是高手,怎么解决<br>,我好像看到的是从系统的DLL中出来的RICHEDIT阿!怎么回事!
 
procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; Handle:THandle;<br>begin<br>&nbsp; Handle:=FindWindow(nil,'对话模式');<br>&nbsp; //不一定对,具体是什么我也忘记了,反正这个找到handle是那个对话模式的handle<br>&nbsp; Handle:=FindWindowEX(Handle,0,'TRichEdit',nil);<br>&nbsp; //如果你确定这个类名叫作TRichEdit,这样应该可以找到它的handle.<br>end;<br>再不行,我就只能旁听了,我也就知道这些。<br>你可以参考http://www.delphibbs.com/delphibbs/dispq.asp?lid=1021818
 
1.知道它的類名為TRICHEDIT,<br>用findwindow('TRICHEDIT',nil);<br>你寫的<br>if StrPas(Buffer)='RICHEDIT' then<br>是不是應該為'TRICHEDIT'<br>2.不知道類名,可通過<br>windowfrompoint()函數得到其句柄,再通過<br>getclassname()可得類名。<br>&nbsp;
 
我已经解决了答案!哈哈!分数给你们了!不过,我不是通过你们的方法!呵呵!bubble的方法可以<br>使用,但是我的是NT所以呵呵!我只是通过图象来得到信息,很笨蛋的方法!^_^[:D]
 
后退
顶部