⑴ 句柄是什么
昨天回答过了。
句柄是从英文翻译过来的词,原文叫handle,操纵杆的意思。翻译成句柄,很令人费解。
从计算机软件核心来看,句柄是一个无符号整型数,它相当于一个指针地址,指向一个“资源块”,例如 HWND 型的 句柄,不同的句柄 指向 不同的 窗体资源块。
从我们写程序来看,可以把它看成 窗 的 ID ( 标识),例如:HWND hwd1,hwd2;
hwd1 就是 1号窗,hwd2 就是 2号窗。
对 hwd1 的操作,就是对 1号窗 做操作。
对 hwd2 的操作,就是对 2号窗 做操作。
c/c++ 有多种多样的 句柄。我们把他们看成 ID 或 一样东西的别名,一个对象(object) 的别名。
⑵ 句柄是什么意思
句柄(handle),有两种解释
1,句柄是一种特殊的智能指针。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
2,整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。
(2)编译的句柄是什么意思扩展阅读:
注意事项:
1,内核对象句柄,是用来标识某个内核对象的一个ID同一个对象的该id对于每个进程是不同的,具体如何实现是ms不公开的算法,以下是一个近似的,可能的算法。
2,进程创建时,windows系统为进程构造了一个句柄表。
3,当该进程希望获得一个内核对象句柄或者创建一个内核对象从而获得该对象句柄时。
4,系统会将在句柄表中增加一个表项,表项的内容中存储了指向目标内核对象的指针。
同时,系统返回这个表项在句柄表中的索引作为句柄。
⑶ 编程中句柄的意思是什么
所谓句柄实际上是一个数据,是一个Long
(整长型)的数据。
句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。
从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?
为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象
本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS
API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
⑷ 句柄的编译原理
一个句型的最左直接短语称为该句型的句柄,句型的句柄是和某产生式右部匹配的子串,并且,把它规约成该产生式左部的非终结符,代表了最右推导过程的逆过程的一步。
如右图,在推导过程中,S→aABe→aAde→aAbcde→abbcde,此四步的句柄分别为aABe,d,Abc,b
句柄的特征:
1. 它是直接短语,即某规则右部。
2. 它具有最左性。
注意:短语、直接短语和句柄都是针对某一句型的,特指句型中的哪些符号子串能构成短语和直接短语,离开具体的句型来谈短语、直接短语和句柄是无意义的。另外句柄的右边仅含终结符如果文法二义,那么句柄可能不唯一。
⑸ 句柄是什么意思,详细解释下
句柄是编写工具
游戏外挂所用到得窗口ID
游戏窗口进程,比如按键精灵所用到的就是获取游戏窗口(句柄)进程ID
E语言编写软件很多地方都会用到句柄
自己慢慢学
⑹ 为什么handle会被翻译成句柄
可能是当年的大佬觉得计算机语言也是“语句”,控制语句对象,则可称之为句柄。之前的一些翻译害死一批善良的人。例如神句“金银天然不是货币,但货币天然是金银”,问题是TMD很多考题还喜欢用这句话。明明就是ZB的翻译。如果翻译成“金银原本并不被当作货币,但货币诞生时就是金银充当的”你就会非常清楚他在讲什么。MLGZZ,装逼害死人!!
⑺ 编译原理中的句柄是什么意思
是操作系统用来管理不同的对象,给他们一个编号而已
比如窗口、线程、图标等都会对应一个句柄,这样可以方便标识与管理
句柄其实也就是一个整数值,而且是唯一的
⑻ 句柄是什么意思
句柄概念在WINDOWS编程中是一个很重要的概念,在许多地方都扮演着重要的角色。但由此而产生的句柄概念也大同小异,比如:<<Microsoft Windows 3 Developer's Workshop>>(Microsoft Press,by Richard Wilton)一书中句柄的概念是:在Windows环境中,句柄是用来标识项目的,这些项目包括:
*.模块(mole)
*.任务(task)
*.实例(instance)
*.文件(file)
*.内存块(block of memory)
*.菜单(menu)
*.控制(control)
*.字体(font)
*.资源(resource),包括图标(icon),光标(cursor),字符串(string)等
*.GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域(region),以及设备描述表(device context)。
WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
在<<WINDOWS编程短平快>>(南京大学出版社)一书中是这么说的:句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。
从上面的2个定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。
⑼ 编译原理中的句柄是什么意思举个简单的例子
语法树的最左子树