这个其实用消息SendMessageEx的话最为简单, 提示个思路
A程序可以通过B程序的名称获取到钩子ProcessID,得到句柄,发送消息 send +参数 到B , B重写 DefWndProc消息方法, 捕获send事件 进行处理 ,(这个时间 可以让界面有一系列的反应) . B处理完成后, 按同样的方法把结果发送给A
两段关键代码
//重写消息
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
switch (m.Msg)
{
case WM_COPYDATA:
COPYDATASTRUCT mystr = new COPYDATASTRUCT();
Type mytype = mystr.GetType();
mystr = (COPYDATASTRUCT)m.GetLParam(mytype);
//mystr:参数
default:
base.DefWndProc(ref m);
break;
}
}
//发送消息
private static void Send(IntPtr hwid, string str)
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(str);
int len = sarr.Length;
COPYDATASTRUCT cds;
cds.dwData = (IntPtr)100;
cds.lpData = str;
cds.cbData = len + 1;
SendMessage(hwid, WM_COPYDATA, 0, ref cds);
}
温馨提示:答案为网友推荐,仅供参考