回 帖 发 新 帖 刷新版面

主题:怎么给单独的一个进程发消息啊

请教各位大哥,大姐,怎么在程序中只给一个主控进程发消息,不给所有的进程发消息,用了SENDappmessage,它是给所有的进程发的,最好能告诉我详细的用法,谢谢!

回复列表 (共2个回复)

沙发

用SendMessage试试吧。
参数 类型及说明 
hwnd Long,要接收消息的那个窗口的句柄 
wMsg Long,消息的标识符 
wParam Long,具体取决于消息 
lParam Any,具体取决于消息 

板凳

用TCopyDataStruct的方法试一试,这个好像是进程间发消息的.
procedure TForm1.Button1Click(Sender: TObject);
var
  ds: TCopyDataStruct;  
  hd: THandle;
begin
  ds.cbData := Length (Edit1.Text) + 1;
  GetMem (ds.lpData, ds.cbData );           //为传递的数据区分配内存
  StrCopy (ds.lpData, PChar (Edit1.Text));
  Hd := FindWindow (nil, 'Form2');          // 获得接受窗口的句柄
  if Hd <> 0 then
       SendMessage (Hd, WM_COPYDATA, Handle,
           Cardinal(@ds)) // 发送WM_COPYDATA消息
  else
    ShowMessage ('目标窗口没找到!');
   FreeMem (ds.lpData); //释放资源
end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册