首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么WaitForSingleObject不起作用了解决方案

2012-05-28 
为什么WaitForSingleObject不起作用了#include stdio.h#include conio.h#include iostream#include

为什么WaitForSingleObject不起作用了
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <afx.h>
#include<windows.h>
#include"tlhelp32.h" 
using namespace std;
void main()
{
CString cmdline="-vx 2d -i E:\\zuoye\\gambit1\\2.jou";
STARTUPINFO StartupInfo;
memset(&StartupInfo,0,sizeof(STARTUPINFO));
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow=SW_SHOWNORMAL;
PROCESS_INFORMATION ProcessInfo;
if (!::CreateProcess("D:\\Program Files\\fluent\\Fluent.Inc\\ntbin\\ntx86\\fluent.exe" ,cmdline.GetBuffer(cmdline.GetLength()),NULL,NULL,FALSE,0,NULL,"E:\\zuoye\\gambit1",&StartupInfo,&ProcessInfo))
{cout<<"success";
}
HANDLE han=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //取进程快照/*
HANDLE han2;  
PROCESSENTRY32 lpp;  
 lpp.dwSize=sizeof(PROCESSENTRY32); 
 BOOL bo;  
 bo=Process32First(han,&lpp); //从快照里取第一个进程信息  
 TCHAR *str1;  
 while(bo)  
 {  
  str1=lpp.szExeFile; //str2=_strlwr(str1); 
   
  if(!strcmp(str1,"fl6326s.exe")) //|| !strcmp(str1,"fl6326s.exe")-----判断是否WINWORD.EXE 
  {  
  han2=OpenProcess(PROCESS_TERMINATE,TRUE,lpp.th32ProcessID); //取进程实例 HANDLE 
  TerminateProcess(han2,0); //关闭 
  }  
  bo=Process32Next(han,&lpp); //取下一个进程信息  
 }  
WaitForSingleObject(han2,INFINITE);
CloseHandle(han); //关闭快照
  //这里是接下来的其他程序,要用到调用前一个程序的结果

}
但是运行时WaitForSingleObject(han2,INFINITE);并没有工作,后面的代码就直接执行了
加入下面一段代码试了一下返回的是Invalid process handle...
请问这是什么原因,各位帮忙看看,谢谢

DWORD nRet = WaitForSingleObject(han2,INFINITE);
if (nRet == WAIT_OBJECT_0)
{
  printf("Process is signaled...\n");
}
else if (nRet == WAIT_TIMEOUT)
{
  printf("Time out...\n");
}else if (nRet == WAIT_FAILED)
{
  printf("Invalid process handle...\n");
}
 

[解决办法]
可能运行后立马换了个exe

热点排行