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个简单的问题!谢谢
{
// 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个简单的问题!谢谢
HWND FindWindow(
LPCTSTR lpClassName, // class name
LPCTSTR lpWindowName // window name
);
用spy抓一下就看到了。
2. 看B程序的需要了,一般菜单命令是WM_COMMAND消息。
第二个参数是窗口的标题名,就是这个窗口在任务栏上显示的字符串,或者用SPY抓一下看看菜单一般响应WM_COMMAND消息,这个只能通过消息捕获工具才能知道SPY++ 工具在http://www.ccrun.com/spy4win/ 有下载!
2、用SendMessage发WM_COMMAND消息,给出菜单项的ID就可以。
要怎么实现啊