我的程序执行了TerminateProcess这个函数后,关闭的是我的主窗口,而关闭的不是我新打开的窗口?
程序如下:
CString m_path;
PROCESS_INFORMATION infoProcess;
STARTUPINFO infoStart;
void CProcessDlg::OnButton2()
{
ZeroMemory( &infoStart, sizeof(infoStart) );
infoStart.cb=sizeof(infoStart);
infoStart.lpReserved=NULL;
infoStart.lpDesktop=NULL;
infoStart.lpTitle=NULL;
infoStart.cbReserved2=0;
infoStart.lpReserved2=NULL;
infoStart.dwFlags=STARTF_USEPOSITION;
infoStart.dwX=200;
infoStart.dwY=200;
char str[100];
strncpy(str,(LPCTSTR)m_path,sizeof(str));
BOOL flag=CreateProcess(NULL,str,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL, &infoStart,&infoProcess);
} void CProcessDlg::OnButton3()
{
// TODO: Add your control notification handler code here
LPDWORD lpDWord;
TerminateProcess(infoProcess.hProcess,GetExitCodeProcess(infoProcess.hProcess,lpDWord));
}
infoProcess.hProcess不应该是新的进程的句柄吗?
程序如下:
CString m_path;
PROCESS_INFORMATION infoProcess;
STARTUPINFO infoStart;
void CProcessDlg::OnButton2()
{
ZeroMemory( &infoStart, sizeof(infoStart) );
infoStart.cb=sizeof(infoStart);
infoStart.lpReserved=NULL;
infoStart.lpDesktop=NULL;
infoStart.lpTitle=NULL;
infoStart.cbReserved2=0;
infoStart.lpReserved2=NULL;
infoStart.dwFlags=STARTF_USEPOSITION;
infoStart.dwX=200;
infoStart.dwY=200;
char str[100];
strncpy(str,(LPCTSTR)m_path,sizeof(str));
BOOL flag=CreateProcess(NULL,str,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL, &infoStart,&infoProcess);
} void CProcessDlg::OnButton3()
{
// TODO: Add your control notification handler code here
LPDWORD lpDWord;
TerminateProcess(infoProcess.hProcess,GetExitCodeProcess(infoProcess.hProcess,lpDWord));
}
infoProcess.hProcess不应该是新的进程的句柄吗?
解决方案 »
- 如何获得右键弹出窗口句柄
- 有没有工具能查个某个软件的每个dll分配了多少内存?
- 如何隐式调用dll函数
- 初学gdi,关于如何声明成员变量m_Img一问
- 关于BMP的问题,应该很简单吧!
- windows下得到网络封包的原理
- 有学生吗?我有一个通用的方法可以破掉所有的软件型机房管理软件的客户端,有人有兴趣吗?(保护卡无关)
- 为什么我搜索以前的贴子,好多打不开?有什么办法吗?
- 已经获取到游戏的IDirect3DDevice8,怎么hook住Endscene来进行画图?
- 关于宏定义问题
- 谁有用Win32 API直接操作串口的例子?
- 怎样得到windows显卡驱动的hwDeviceExtension结构
LPDWORD lpDWord;
是返回值,没申请内存,这样就可以了
DWORD DWord;
TerminateProcess(infoProcess.hProcess,GetExitCodeProcess(infoProcess.hProcess,&DWord));
{
CString str;
str.format( _T("Terminate Failed!\nError code: %d\n")
_T("Process Handle: %#0x"), GetLastError(), infoProcess.hProcess );
MessageBox(NULL, str, _T("Error"), 0 );
}
请楼主用下面的代码测试一下:if ( !TerminateProcess( infoProcess.hProcess, 0 ) )
{
CString str;
str.format( _T("Terminate Failed!\nError code: %d\n")
_T("Process Handle: %#0x"), GetLastError(), infoProcess.hProcess );
MessageBox(NULL, str, _T("Error"), 0 );
}