讲解易语言句柄的概念

以下我们给大家详细讲述了易语言中的句柄的概念和含义

这是操作系统里的一个概念,句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。

从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?

为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。

句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象

本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。

(0)

相关推荐

  • 易语言通过句柄名来关闭互斥体实现游戏多开的代码

    DLL命令代码 .版本 2 .DLL命令 GetProcessHandleCount, 逻辑型 .参数 hProcess, 整数型 .参数 pdwHandleCount, 整数型, 传址 .DLL命令 DuplicateHandle, 逻辑型 .参数 hSourceProcessHandle, 整数型 .参数 hSourceHandle, 整数型 .参数 hTargetProcessHandle, 整数型 .参数 lpTargetHandle, 整数型, 传址 .参数 dwDesiredAcce

  • 易语言超文本浏览框取真实句柄方法

    很多朋友想做网页 鼠标键盘后台消息的软件,但是苦于找不到超文本浏览狂的真实句柄. 如果你用 超文本浏览框.取窗口句柄() 那么你取到的是图1的句柄,这个句柄是无法操作的 图中2的句柄才是真正可以发送消息和模拟操作的句柄,也是用窗口助手真正查到的句柄 具体操作看下图. 用的是精易模块的窗口枚举所有子窗口命令 然后匹配出类名为"Internet Explorer_Server"的那个句柄就是真实句柄了. 感谢大家对我们的支持,如果大家在学习中有任何问题可以联系小编.

  • 易语言关闭多线程句柄方法

    命令名 :关闭线程句柄 返回真表示已成功关闭线程句柄.在Linux下,如果线程已经结束,本命令可能返回假.本命令为初级命令. 参数 数据类型 说明 线程句柄 整数型(int) 可通过"启动线程"的第三个参数获取线程句柄. 使用例子: .版本 2 .支持库 EThread .程序集 程序集1 .程序集变量 线程句柄, 整数型 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 启动线程 (&子程序1, , 线程句柄) 关闭线程句柄 (线程句柄) 返回 (0) '

  • 易语言当前窗口或组件的窗口句柄获取方法

    取窗口句柄方法 英文命令:GetHWnd 操作系统支持:Windows    所属对象:窗口 取出本窗口或窗口组件的窗口句柄(即HWND). 语法:  整数型  窗口组件.取窗口句柄() 例程 说明 通过"取窗口句柄"命令获取指定窗口的句柄.窗口每次创建都被系统赋予一个新的句柄. 句柄:在计算机中,所有的数据都是由一系列二进制数值所表示的,像窗口,文件,图片等大型的作为一个整体 的数据,系统自动赋予一个名字来命名它,这个名字就是句柄.窗口句柄就是窗口在系统中的名字. 本方法适用于所有组

  • 易语言通过取设备句柄命令获取指定画板的设备场景句柄

    取设备句柄方法 英文命令:GetHDC 操作系统支持:Windows    所属对象:画板 语法: 整数型 画板.取设备句柄() 如当前用户程序正在处理本画板所产生的"绘画"事件,则返回画板所对应的设备句柄(即HDC),否则返回 0. 例程 说明 通过"取设备句柄"命令获取指定画板的设备场景句柄."取设备句柄"命令只在绘画事件子程序中好用. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,

  • 认识易语言句柄及局部变量

    局部变量 创建方法,选择"插入" 局部变量:就是只能在一个子程序里访问.程序集变量:就是能在一个程序集里访问,不过其他的程序集访问也可以(不过需要特殊访问).全局变量:什么地方都能访问.

  • 易语言枚举进程通过窗口句柄获取已经登录的QQ号码

    DLL命令表 .版本 2 .DLL命令 GetDesktopWindow, 整数型, "user32.dll", "GetDesktopWindow" .DLL命令 CreateToolhelp32Snapshot, 整数型, "kernel32", "CreateToolhelp32Snapshot" .参数 dwFlags, 整数型, , 0 .参数 th32ProcessIE, 整数型, , 0 .DLL命令 Proce

  • 易语言枚举进程所有句柄信息的代码

    DLL命令表 .版本 2 .DLL命令 GetCurrentProcessId, 整数型, "kernel32.dll", "GetCurrentProcessId" .DLL命令 GetCurrentProcess, 整数型, "kernel32.dll", "GetCurrentProcess" .DLL命令 RtlMoveMemory_SYSTEM_HANDLE_INFORMATION, , "kernel32

  • 讲解易语言句柄的概念

    以下我们给大家详细讲述了易语言中的句柄的概念和含义 这是操作系统里的一个概念,句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等.WINDOWS句柄有点象C语言中的文件句柄. 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人.从数据类型上来看它只是一个16位的无符号整数.应

  • 实例讲解易语言合并整数

    易语言=合并整数-实例讲解,位运算,希望能帮到大家. 1.易语言新建一个windows窗口点击进入代码编辑区具体看如何用易语言编写自己第一个程序?易语言新建一个windows窗口点击进入代码编辑区具体看如何用易语言编写自己第一个程序? 2.我们输入 合并整数()这个函数 3.展开这个函数我们发现 这个函数有2个参数 这个函数的意思比较复杂,需要懂点位的低/高16位知识 把第一个整数的低16位放到合并整数的低16位 把第二个整数的低16位放到合并整数的高16位 合并返回这个整数 4.我们是输入 合

  • 实例讲解易语言复制数组

    易语言复制数组实例详解,数组操作,实例讲解,希望能帮到大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体看如何用易语言编写自己第一个程序? 2.我们首先定义2个数组 分别是a和b 3.我们首先给b[1]赋值我们输入b[1]="0"针对赋值的操作可以看 易语言连续赋值我们首先给b[1]赋值我们输入b[1]="0"针对赋值的操作可以看 易语言连续赋值 4.我们输入这个函数 输入复制数组 (a, b) 意思就是把b复制到a 5.我们我们使用调试输出 我

  • 实例讲解易语言数组排序

    易语言数组排序,就是将数组排序,这个针对的是数值型数组,我教大家操作. 1.打开易语言新建一个windows程序进入下图界面 2.我们点击进入代码编辑区 3.这个函数针对数组 所以要先定义一个数组 4.我们给数组赋值 我们输入 a[1]=1 a[2]=2 a[3]=3 5.然后输入数组排序这个函数 并展开发现有2个参数 6.参数简单 第一个我输入a. 第二个看你需要我们输入真,就是从小到大,否则就是从大到小 7.我们调试输出 a[1] 调试输出(a[1]) 结果为1 8.我们把 数组排序 (a,

  • 实例讲解易语言静态编译

    正在进行名称连接... 正在统计需要编译的子程序正在编译...正在生成主程序入口代码程序代码编译成功等待用户输入欲编译到的文件名正在进行名称连接...开始静态链接...无法定位链接器!请检查 tools\link.ini 中的配置是否正确.静态连接失败 [上述所遇到的易语言静态编译问题,此经验可立即解决您遇到的此问题] 1.易语言根目录 2.打开VC98linker文件夹 3.打开link易语言源文件 4.点击运行 5.源文件窗口 6.单击修改后,修改配置成功,我们去试试看是否可静态编译 7.编

  • 实例讲解易语言取文本中间自定义子程序

    我们先看下代码: 版本 2 .子程序 取文本中间内容, 文本型 .参数 完整内容, 文本型 .参数 左边文本, 文本型 .参数 右边文本, 文本型 .局部变量 临时位置, 整数型 .局部变量 总长度, 整数型 .局部变量 返回结果, 文本型 总长度 = 取文本长度 (完整内容) 临时位置 = 寻找文本 (完整内容, 左边文本, , 假) + 取文本长度 (左边文本) 返回结果 = 取文本中间 (完整内容, 临时位置, 总长度) 总长度 = 取文本长度 (返回结果) 临时位置 = 寻找文本 (返回

  • 易语言制作调试助手

    DLL命令表 .版本 2 .DLL命令 窗口_FindWindowA, 整数型, "user32", "FindWindowA", , 句柄操作 .参数 lpClassName, 文本型 .参数 lpWindowName, 文本型 .DLL命令 窗口_SendMessage, 整数型, , "SendMessageA", , 句柄操作 .参数 HWND .参数 sc .参数 z1 .参数 z2, 文本型 .DLL命令 窗口_PostMessage

  • 易语言声明变量的步骤讲解

    易语言教程入门之变量学习变量是什么 1.变量就是一个容器一个仓库,存放程序中的结果,或读取的数据等,这些是基本的概念,变量就是一个容器一个仓库,存放程序中的结果,或读取的数据等,这些是基本的概念, 2.下面我们来一个小程序来实际操作一下 我们先要声明一个变量(就是增加一个变量),先新建一个win窗口程序,在里面画一个按钮,进入代码编辑区,在_按钮1_被单击里面按ctrl+l 3.然后在变量名下面输入一个变量名,这里啰嗦一下,在很多编程语言教程里面,老师总是把变量名的命名规则说半天的,这里我只想说

  • 易语言关于右移知识点讲解

    易语言-右移-实例讲解,位运算,希望能帮到大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体看如何用易语言编写自己第一个程序? 2.我们输入 右移()这个函数 3.我们展开这个函数发现 这个函数有2个参数 这个函数意思是将某整数的数据位右移指定位数 4.我们输入 3,1 意思是将3的数据位右移1位 5.我们使用调试输出这个函数 输入调试输出 (右移 (3, 1))  具体看易语言调试输出函数实例详解 结果为1 6.投票.点赞,看下图红色标记 总结:以上就是关于易语言右移相关的

随机推荐