向子进程发送消息!!!!!!!

zgj828 2008-11-07 05:27:17
void CSrvDlg::OnButton1()
{
// TODO: Add your control notification handler code here

PROCESS_INFORMATION pi;//PROCESS_INFORMATION 结构用于接收新进程的信息
STARTUPINFO sui;//STARTUPINFO结构 指定新进程如何显示
ZeroMemory(&sui,sizeof(STARTUPINFO));//将sui中所有变量初始化为0 防止随机值传给CreateProcess
sui.cb=sizeof(STARTUPINFO);
sui.dwFlags=STARTF_USESTDHANDLES;//标记
sui.hStdError=GetStdHandle(STD_ERROR_HANDLE);

if(!CreateProcess("D:\\Program Files\\Hotel\\CHOTEL.exe",NULL,NULL,NULL,TRUE,0,NULL,NULL,
&sui,&pi))
{
MessageBox("创建子进程失败!");
return;
}
else
{
CloseHandle(pi.hProcess);//新进程的 进程句柄
CloseHandle(pi.hThread);//新进程的 主线程句柄
//以上2句柄个在父进程不需要使用 关闭句柄 计数器减一
}
}

void CSrvDlg::OnButton2()
{
//在这里 我想先找到CHOTEL.exe进程的句柄 然后再想其 文件 新建 菜单发送消息
//问题1: 我知道用FindWindow找主窗口句柄 但是第一个参数是什么东西啊? 看人家写什么#33720的 这是什么啊 从哪里得到的啊?

问题2: 如何实现 执行 文件 新建 菜单命令???(代码不知道怎么写?不知道要获取什么东西 发送什么消息)

}

总的来说就是运行A程序 然后 执行B程序的 开始 新建 菜单命令!!!!
希望高手帮我回答下上面2个简单的问题!谢谢
...全文
237 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-11-07
  • 打赏
  • 举报
回复
可以用SPY++来查,或者在代码中用GetMenu、GetSubMenu、GetMenuItemID来获得。
zgj828 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnzdgs 的回复:]
1、FindWindow的第1参数是窗口类名,第2参数是窗口标题文字,两个参数都可以指定也可以不指定,如果不指定则匹配所有窗口。对话框窗口类名默认都是#32770,自己可以改成其它名字。
2、用SendMessage发WM_COMMAND消息,给出菜单项的ID就可以。
[/Quote]
B是一个应用程序 我没有源代码的 怎么设置ID???
要怎么实现啊
cnzdgs 2008-11-07
  • 打赏
  • 举报
回复
1、FindWindow的第1参数是窗口类名,第2参数是窗口标题文字,两个参数都可以指定也可以不指定,如果不指定则匹配所有窗口。对话框窗口类名默认都是#32770,自己可以改成其它名字。
2、用SendMessage发WM_COMMAND消息,给出菜单项的ID就可以。
sfengnet 2008-11-07
  • 打赏
  • 举报
回复
FindWindow 第一个参数是class名字,这个名字是在你创建窗口时注册的类名,如果你不知道的话,可以设置为NULL
第二个参数是窗口的标题名,就是这个窗口在任务栏上显示的字符串,或者用SPY抓一下看看

菜单一般响应WM_COMMAND消息,这个只能通过消息捕获工具才能知道

SPY++ 工具在http://www.ccrun.com/spy4win/ 有下载!
wzaen 2008-11-07
  • 打赏
  • 举报
回复
1.
HWND FindWindow(
LPCTSTR lpClassName, // class name
LPCTSTR lpWindowName // window name
);
用spy抓一下就看到了。
2. 看B程序的需要了,一般菜单命令是WM_COMMAND消息。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧