如何向其它应用程序发送信息(100分)

  • 主题发起人 主题发起人 fishmando
  • 开始时间 开始时间
F

fishmando

Unregistered / Unconfirmed
GUEST, unregistred user!
如何向其它应用程序发送信息,比如向其它程序的edit构件发送字符串
 
LRESULT SendMessage(<br>HWND hWnd, <br>UINT Msg, <br>WPARAM wParam, <br>LPARAM lParam ); <br>首先要获得目的窗口的句柄。
 
自定义消息,然后发送,<br>在另一个应用程序中截获该消息就可以了
 
首先要获得目的句柄,如EDIT1.HANDLE,再<br>SendMessage(Edit1.handle,Mesage,n,n)
 
如果目标程序是你自己的可以自定义消息,然后按照自定义消息发送消息即可,否则只能使用<br>标准的windows消息<br>发送之前首先要找到目标窗口.可以使用ENumWIndows和EnumChildWindows(可能写错错另外),<br>直到找到你的子窗口,然后获取窗口句柄就可以发送消息.<br>例如对于一个Edit<br>PostMessage(handle(Edit的句柄),WM_SETTEXT(设置数据),0,需要设置的数据的地址);<br>
 
procedure TForm1.Button1Click(Sender: TObject);<br>&nbsp;function EnumChildWindowsProc(hwnd: Integer; lparam: Longint):Boolean; stdcall;<br>&nbsp; var<br>&nbsp; &nbsp; buffer: array[0..255] of Char;<br>&nbsp; begin<br>&nbsp; &nbsp; Result := True;<br>&nbsp; &nbsp; GetClassName(hwnd,buffer,256);<br>&nbsp; &nbsp; if StrPas(Buffer)='TEdit' then &nbsp;//找TEdit控件<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; PInteger(lparam)^ := hwnd; &nbsp; //得到目标控件的Hwnd(句柄)<br>&nbsp; &nbsp; &nbsp; Result:=False; &nbsp;//终止循环<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>var<br>&nbsp; Hand: Integer;<br>begin<br>&nbsp; Hand := FindWindow(nil,'Form2'); &nbsp;//Form2第二个程序的窗口名<br>&nbsp; if Hand&lt;&gt;0 then<br>&nbsp; &nbsp; begin <br>&nbsp; &nbsp; &nbsp; EnumChildWindows(Hand,@EnumChildWindowsProc,Integer(@Hand));<br>&nbsp; &nbsp; &nbsp; SendMessage(Hand,WM_SETTEXT,0,Integer(pchar('Your String')));<br>&nbsp; &nbsp; end;<br>end;
 
多人接受答案了。
 
后退
顶部