首页
社区
课程
招聘
[求助]为什么OpenProcess永远返回92
发表于: 2015-10-17 21:45 4191

[求助]为什么OpenProcess永远返回92

2015-10-17 21:45
4191
为什么用OpenProcess获取的句柄永远返回92?
获取鼠标所在窗口的进程句柄
下面是代码
#include <Windows.h>
#include <stdio.h>
void fun(WCHAR* str);
int main(){
        fun(NULL);
        system("pause");
        return 0;
}
void fun(WCHAR* str){
                POINT p;
                DWORD Game_Process_ID;
                printf("请在三秒内将鼠标移动到指定窗口\n");
                Sleep(3000);
                GetCursorPos(&p);
                HWND hWnd=WindowFromPoint(p);
                GetWindowThreadProcessId(hWnd,&Game_Process_ID);
                HANDLE handle=OpenProcess(PROCESS_ALL_ACCESS,1,Game_Process_ID);

                printf("%d\n%d\n",Game_Process_ID,handle);
                //CreateRemoteThread
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 52
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不是的吧,还是不一样的吧,就算一样也不奇怪,句柄就像虚拟地址一样的
2015-10-17 22:19
0
雪    币: 108
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
怎么会不奇怪,难道系统中所有的进程句柄都是92?要是那样的话,还要那个函数作什么
2015-10-17 22:20
0
雪    币: 52
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
进程的唯一标识不是句柄,句柄只是一个下标,不同进程的里的句柄是可以一样的,但是并不一定代表同一个资源。。。
2015-10-17 22:45
0
雪    币: 114
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
同时打开多个进程就不是了。第一个句柄的数值不变。
2015-10-17 23:12
0
雪    币: 114
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
这个值也不一定是92,估计每台电脑都不一样。
2015-10-17 23:15
0
雪    币: 108
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈,我知道了,把句柄的定义给忘了,句柄是是个Atom型的数字,只有操作系统才能知道他的含义,我把它打印出来,自然没什么意义.
我以为进程句柄像窗口句柄一样一直存在于系统,原来是要调用openprocess后才存在
2015-10-17 23:41
0
雪    币: 108
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哈哈,你说的不错,几个字就能说明问题,果然,我调了两次OpenProcess第二个橘饼就是96了,我这才明白进程句柄是个什么东西
2015-10-18 00:04
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
句柄不是一种索引吗?为什么第一个句柄的数值不变?换个编译器,应该就变了吧
2015-10-18 20:20
0
雪    币: 108
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
句柄系统分配的,与编译器无关.就像系统里面的页目录项,页表项,他们也是一种索引,但这个索引也是操作系统自己分配的,应用程序没法控制,编译器就更不可能了
2015-10-19 10:18
0
游客
登录 | 注册 方可回帖
返回
//