知道了窗体的句柄怎么得到上面的一个控件的的句柄.(只有一个类是TEDit控件)(100分)

  • 主题发起人 主题发起人 smilboy
  • 开始时间 开始时间
S

smilboy

Unregistered / Unconfirmed
GUEST, unregistred user!
知道了窗体的句柄怎么得到上面的一个控件的的句柄.(只有一个类是TEDit控件)<br>得到这个控件的句柄
 
这个窗体是你自己创建的吗? 还是使用别人的?你是不是想对别人的应用程序做点什么?<br>这样吧,有几个个函数你可以试一试:<br><br>&nbsp; hForegroundWindow:= GetForegroundWindow();<br>&nbsp; hT := GetWindowThreadProcessId(hForegroundWindow, nil);<br>&nbsp; CT := GetCurrentThreadID;<br>&nbsp; if (hT &lt;&gt; CT) and (hT &lt;&gt; 0) then<br>&nbsp; &nbsp; if AttachThreadInput(hT,CT, True) then<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; hForegroundWindow := GetFocus;<br>&nbsp; &nbsp; &nbsp; &nbsp; //PostMessage(hForegroundWindow, WM_KEYDOWN, FrmOption.VKEYS, 0);<br>&nbsp; &nbsp; &nbsp; &nbsp; if ht &lt;&gt; hThread then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if hThread &lt;&gt; 0 then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AttachThreadInput(hThread, CT, False);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hThread := hT;<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; end;<br><br>本来想写几个函数就完了,可是一不小心就泄了一段程序,仔细看看吧。
 
简单些:<br><br>比如,hwindow是一个窗口的句柄,要取得一个TEdit的句柄<br><br>HSubWindow:=FindWindowEx(hwindow,0,'TEdit',nil);<br><br>HSubWindow就是了.
 
EnumChildWindows()这个也很好用。
 
好像不行呀
 
知道了窗口的句柄,你就可以将它提到最前端,然后,你可用<br>getcaretpos(MPoint);<br>controlhwnd:=windowfrompoint(MPoint);<br>得到EDIT的句柄(仅限于EDIT类)<br>——iseek
 
用这个 自己 查吧。<br>http://eagleboost.myrice.com/issues/Tools/spy++.rar<br>消息监视工具,Visual Studio 6.0附带<br>————以下问题————<br>var<br>&nbsp; m1, m: HWnd;<br>&nbsp; Text: PChar;<br>begin<br>&nbsp; GetMem(Text, 255);<br>&nbsp; try<br>&nbsp; &nbsp; m := FindWindow('TForm1', 'Q');<br>&nbsp; &nbsp; if m &lt;&gt; 0 then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; m1 := FindWindow(nil, 'edit1');<br>&nbsp; &nbsp; &nbsp; SendMessage(m1, WM_GETTEXT, 255, integer(text));<br>&nbsp; &nbsp; &nbsp; memo5.Text := text;//问题:返回的数据为乱吗????怎么解决<br>&nbsp; &nbsp; end<br>如能提供帮助,万分感激! &nbsp;要多少分都给 &lt;1000<br>
 
楼上的lshong, <br>你用buf:array[0..1023] of char;替换Text: PChar;<br>用memo5.Text := string(text);试试,PChar实际上是Char的指针,你要记清楚哟.<br>
 
多人接受答案了。
 
后退
顶部