如何取得另一程序窗口的控件内容 ( 积分: 100 )

  • 主题发起人 主题发起人 lilacky
  • 开始时间 开始时间
L

lilacky

Unregistered / Unconfirmed
GUEST, unregistred user!
例如<br>有两个程序A,B<br>A程序要取得B程序某一个文本输入框的内容,并修改,<br>如何实现?
 
例如<br>有两个程序A,B<br>A程序要取得B程序某一个文本输入框的内容,并修改,<br>如何实现?
 
用findwindow找到B窗口<br>用enumchildwindows找到B窗口的文本输入框<br>再用GetWindowText得到它的内容。
 
function EnumChildWindowsProc(hwnd: Integer; lparam: Longint): Boolean; stdcall;<br>var<br> &nbsp;buffer: array[0..255] of char;<br>begin<br> &nbsp;Result := True;<br> &nbsp;GetClassName(hwnd,buffer,256);<br> &nbsp;if StrPas(Buffer)='Edit' then<br> &nbsp;begin<br> &nbsp; &nbsp;SendMessage(hwnd,WM_GETTEXT,256,lparam);<br> &nbsp; &nbsp;Result:=False;<br> &nbsp;end;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> &nbsp;hwnd: Integer;<br> &nbsp;buffer: array[0..255] of char;<br>begin<br> &nbsp;hwnd := FindWindow('你对应的窗口',nil);<br> &nbsp;if hwnd&amp;lt;&amp;gt;0 then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp;EnumChildWindows(hwnd,@EnumChildWindowsProc,Integer(@buffer[0]));<br> &nbsp; &nbsp;Caption := StrPas(buffer);<br> &nbsp; &nbsp;end;<br>end;<br>
 
在A程序中B的更改呢?SetWindowText行吗。B程序不刷新
 
&nbsp; &nbsp; &nbsp;SendMessage(hwnd,WM_SETTEXT, 0, lParam(pChar('15453611')));<br>
 
同意jianguobu
 
如果B程序的画面中有多个Edit呢,回调函数中能找到指定的edit句柄吗?
 
你的edit有个名称呀,你可根据它来找到它对应的句柄.
 

Similar threads

后退
顶部