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

请教为什么这样做得不到本进程的句柄呢

2012-01-12 
请问为什么这样做得不到本进程的句柄呢?我想在基于对话框程序的OnInitDialog处设置进程的优先级,利用OpenP

请问为什么这样做得不到本进程的句柄呢?
我想在基于对话框程序的OnInitDialog处设置进程的优先级,利用OpenProcess和SetPriorityClass两个函数。但我按下面这样做却分别提示错误代码87和6,如下:    
 
BOOL     CNewDlg::OnInitDialog()    
{    
      ...    
      PROCESSENTRY32       pe       =       {       sizeof(pe)       };      
      HANDLE       s       =       CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,       0);      
      BOOL       b   =       Process32First(s,       &pe);  
      HANDLE   processHandle;

      processHandle=OpenProcess(PROCESS_ALL_ACCESS,false,pe.th32ProcessID);
      if(processHandle==0)
      {
DWORD   errCord=GetLastError();
CString   strErrCord;
strErrCord.Format( "%d ",errCord);
MessageBox( "打开进程失败,出错代码 "+strErrCord);
//出错代码87     :The     parameter     is     incorrect.     ERROR_INVALID_PARAMETER  
      };
      if(SetPriorityClass(processHandle,HIGH_PRIORITY_CLASS)==0)
      {
DWORD   errCord=GetLastError();
CString   strErrCord;
strErrCord.Format( "%d ",errCord);
MessageBox( "进程优先级设置失败,出错代码 "+strErrCord);
//出错代码6:The     handle     is     invalid.     ERROR_INVALID_HANDLE    
      }        
      ...    
}    
唉,累,获取个进程的句柄这么麻烦,而且编译运行还得不到句柄。请问该怎么修改呢?谢谢!

[解决办法]
pe.th32ProcessID 是谁啊?

随便一个进程你都OPEN啊?
[解决办法]
BOOL b = Process32First(s, &pe);
=============================
你想要的是什么?这个API得到不一定是本进程的信息

热点排行