请问为什么这样做得不到本进程的句柄呢?
我想在基于对话框程序的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得到不一定是本进程的信息