VC++2008 OpenProcess总是返回错误87,VB6里面正常
如题,在VC++2008里面用OpenProcess总是失败,GetLastError取得错误码为87,参数不正确。但我用VB使用这个函数,哪怕是PROCESS_ALL_...
如题,在VC++2008里面用OpenProcess总是失败,GetLastError取得错误码为87,参数不正确。但我用VB使用这个函数,哪怕是PROCESS_ALL_ACCESS都可以取得进程句柄。听人说要提权,但提权的资料少得可怜,而且貌似在CSDN有人提权后还是出现这个错误。我已经个人奋斗一整天,现已筋疲力尽。望高手相助,谢。
问题解决后有追加。
#include <windows.h>
#pragma comment(lib,"user32.lib")
HANDLE hProcess;
HWND GameHwnd;
DWORD ID;
long errors;
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
HWND gHWND;
DWORD pID;
HANDLE hProc;
long gErrors;
gHWND=FindWindow(NULL,"计算器");
pID=GetWindowThreadProcessId(gHWND,NULL);
hProc=OpenProcess(PROCESS_ALL_ACCESS,false,pID);
gErrors=GetLastError();
this->Text=gErrors.ToString();
}
窗体标题总是87。
先谢过各位高手了。
此问题已经解决!
使用如下句型:
DWORD ID;
GetWindowThreadProcessId(GameHwnd,&ID);
其他不变。
这里问题改改:
为什么一定要这样写?
明明ID这个变量已经在全局声明过,
还得再局部声明才能编译通过并成功执行?
还有,GetWindowThreadProcessId中参数2为何要家 & 符号?。。。
本人菜鸟,望高手指点,谢。 展开
问题解决后有追加。
#include <windows.h>
#pragma comment(lib,"user32.lib")
HANDLE hProcess;
HWND GameHwnd;
DWORD ID;
long errors;
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
HWND gHWND;
DWORD pID;
HANDLE hProc;
long gErrors;
gHWND=FindWindow(NULL,"计算器");
pID=GetWindowThreadProcessId(gHWND,NULL);
hProc=OpenProcess(PROCESS_ALL_ACCESS,false,pID);
gErrors=GetLastError();
this->Text=gErrors.ToString();
}
窗体标题总是87。
先谢过各位高手了。
此问题已经解决!
使用如下句型:
DWORD ID;
GetWindowThreadProcessId(GameHwnd,&ID);
其他不变。
这里问题改改:
为什么一定要这样写?
明明ID这个变量已经在全局声明过,
还得再局部声明才能编译通过并成功执行?
还有,GetWindowThreadProcessId中参数2为何要家 & 符号?。。。
本人菜鸟,望高手指点,谢。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询