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为何要家 & 符号?。。。
本人菜鸟,望高手指点,谢。
展开
 我来答
百度网友c6c78e9
2008-08-11 · TA获得超过2283个赞
知道小有建树答主
回答量:620
采纳率:0%
帮助的人:997万
展开全部
你是怎么调用的OpenProcess的?
原来的问题是,OpenProcess需要一个进程ID,而你用GetWindowThreadProcessId()得到的pID实际上是线程ID,因此OpenProcess打不开;但不明白你说的现在的问题是什么意思,看上去似乎不是VC++的语法……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式