dll中用TerminateProcess关闭进程后无法再打开该exe文件了?
osiku 2008-04-23 02:28:18 在dll的键盘钩子程序中关闭了指定的程序后,就无法再启动此exe文件了。但把代码放到界面中运行却能正常启动。
代码如下:
LRESULT WINAPI CallBackKeyMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
if (HC_ACTION == code || HC_NOREMOVE == code)
{
if (wParam==VK_F9)
{
HANDLE hProcessHandle;
ULONG nProcessID;
HWND hwnd=NULL;
hwnd=::FindWindowEx(NULL,NULL,NULL,"电信缴费程序");
if(hwnd!=NULL)
{
::GetWindowThreadProcessId( hwnd, &nProcessID );
hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE,nProcessID );
::TerminateProcess( hProcessHandle, 4 );
SHELLEXECUTEINFO shell = { sizeof(shell)};
shell.fMask = SEE_MASK_FLAG_DDEWAIT;
shell.lpVerb = "open";
shell.lpFile ="D:\\TSoft\\telecom.exe";
shell.nShow = SW_SHOWNORMAL;
::ShellExecuteEx(&shell) ;
}
}
}
return(CallNextHookEx(NULL,code,wParam,lParam));
}
用过::CreateProcess和system()都没有反应,也不报错~~