C++,打开进程的句柄
我正试图控制我的开放进程,这就是我得到的:C++,打开进程的句柄,c++,winapi,handle,C++,Winapi,Handle,我正试图控制我的开放进程,这就是我得到的: #include "stdafx.h" #include <Psapi.h> using namespace std; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow) { bo
#include "stdafx.h"
#include <Psapi.h>
using namespace std;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
{
bool _result;
DWORD *pProcessIds = new DWORD[1000];
DWORD cb;
DWORD *pBytesReturned= new DWORD[1000];
_result = EnumProcesses(pProcessIds, 1000,pBytesReturned);
HANDLE _Proccess = new HANDLE;
for (int i = 0;i<=1000; i++)
{
_Proccess = OpenProcess(READ_CONTROL, false, *pProcessIds);
DWORD error;
error = GetLastError();
CloseHandle(_Proccess);
pProcessIds ++;
}
return 0;
}
1-我不断地得到错误87
2-_进程也没有分配任何内容。在每个iTertation上,它都被设置为0x00000000
3-EnumProcess工作正常,因为PBytesReturn返回一个数字
有什么想法吗?确保以管理员身份运行
对于int i=0;ifor int i=0;IEnumProcessProcessId,1000,PB返回;1000太小了。您需要1000*sizeofDWORD,因为第二个参数定义为pProcessIds数组的大小,以字节为单位。DWORD*PBytesReturn=new DWORD[1000];这也是错误的。您不需要创建数组。这是指向DWORD的单个指针。读取此DWORD以获取返回的字节数。创建一个DWORD变量并使用&获取其地址。将其作为第三个参数传递。感谢各位提供的信息。显然,它只是出于某种原因停止了出错。