如何关闭另外一个应用程序? 如何在VC中达到一定条件时关闭另外一个应用程序,然后再打开它!就象是瑞星升级时的那种效果,升级软件先关闭瑞星杀毒程序,然后升级,最后重新打开.调用另外一个应用程序,实用ShellExcute吗,还有哪些方法?那么关闭呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 得到那个程序的instance,调用exitinstance() 查找存在的程序,发送WM_QUIT(WM_CLOSE)使它关闭。然后用shellexec或者winexec重新打开 FindWindow 得到窗口句柄发送WM_CLOSE消息 CWnd *pWnd = FindWindow(NULL,"程序标题");if(pWnd) pWnd->PostMessage(WM_QUIT); 怎么得到那个程序的instance?是不是非VC的应用程序也可以用通过发送WM_CLOSE消息关闭?比如用Labview编的程序 是不是非VC的应用程序也可以用通过发送WM_CLOSE消息关闭?比如用Labview编的程序 如果是GUI程序应该都可以,但是对于控制台程序就不行了,只能得到运行程序的hinstance,然后ExitInstance.因为控制台程序无法处理消息,也就收不到WM_CLOSE了 WM_CLOSE消息可以跨进程发送么?那些消息可以跨进程发送? to nonowhy:好象所有消息都可以吧, 但是一些需要传内存地址做参数的消息会有问题 怎么得到某个程序的instance? void CTest1Dlg::OnButtonOPEN() { PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si,0,sizeof(si)); si.cb=sizeof(si); si.wShowWindow =SW_SHOW; si.dwFlags =STARTF_USESHOWWINDOW; BOOL fRet=CreateProcess( "g:/windows/notepad.exe", NULL, //参数前注意有一个空格 NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); if(fRet) { m_hPro=pi.hProcess ; /* unsigned long s1,s2; s1=pi.dwProcessId ; s2=pi.dwThreadId ; CString str; str.Format ("%d %d",s1,s2); MessageBox(str); unsigned long* s; s=new(unsigned long); *s=s2; ResumeThread(s);*/ } else MessageBox("打开失败"); }void CTest1Dlg::OnButtonCLOSE() { if(TerminateProcess(m_hPro,NULL)) MessageBox("成功关闭"); else MessageBox(“关闭失败");} 请问构造函数后面的throw()含义 VC WebBrowser控件 关于文件读写的问题,高手请进 过来人指点一上兄弟 两个不同的动态库,包含名字相同的函数,怎么在同一工程中调用? 请问ActiveX控件中如何调用dll中的函数?绝对给分!!! 求助:移动对话框至指定位置并锁定??? 请教了,怎么样存储一个对象,比如CList的对象呀详细点好么,最好是有例程呀。 谁用过这个DMO?——ParamEq 如何判断本程序是被其它程序启动的还是被人直接启动的? 鼠标左键单击事件为什么不响应? CSocket的Connect能设置为非阻塞模式吗?
发送WM_CLOSE消息
if(pWnd)
pWnd->PostMessage(WM_QUIT);
那些消息可以跨进程发送?
好象所有消息都可以吧, 但是一些需要传内存地址做参数的消息会有问题
{ PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow =SW_SHOW;
si.dwFlags =STARTF_USESHOWWINDOW;
BOOL fRet=CreateProcess(
"g:/windows/notepad.exe",
NULL, //参数前注意有一个空格
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi);
if(fRet)
{
m_hPro=pi.hProcess ;
/* unsigned long s1,s2;
s1=pi.dwProcessId ;
s2=pi.dwThreadId ;
CString str;
str.Format ("%d %d",s1,s2);
MessageBox(str);
unsigned long* s;
s=new(unsigned long);
*s=s2;
ResumeThread(s);*/
}
else
MessageBox("打开失败");
}void CTest1Dlg::OnButtonCLOSE()
{ if(TerminateProcess(m_hPro,NULL))
MessageBox("成功关闭");
else
MessageBox(“关闭失败");
}