查看窗口句柄什么工具比较好
句柄概念在WINDOWS编程中是一个很重要的概念,在许多地方都扮演着重要的角色。
但由此而产生的句柄概念也大同小异,比如:>(Microsoft Press,by Richard Wilton)一书中句柄的概念是:在Windows环境中,句柄是用来标识项目的,这些项目包括:*.模块(module)*.任务(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给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
在>(南京大学出版社)一书中是这么说的:句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。
WINDOWS句柄有点象C语言中的文件句柄。
从上面的2个定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。
E语言如何取程序句柄?
获取程序句柄,举一个简单的例子:Dll命令:获得程序句柄 ※ 获取一个应用程序或动态链接库的模块句柄返回值类型:整数型Dll库文件名:kernel32.dll在Dll库中的命令名:GetModuleHandleA参数:模块名 数据类型:整数型※ 指定模块名,这通常是与模块的文件名相同的一个名字。
例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD。
只有在当前进程的场景中,这个句柄才会有效。
Dll命令:获得路径※ 获取一个已装载模板的完整路径名称,如执行成功,返回复制到l装载文件名的实际字符数量;零表示失败。
会设置GetLastError。
返回值类型:整数型Dll库文件名:kernel32.dll在Dll库中的命令名:GetModuleFileNameA参数:模块句柄 数据类型:整数型参数:装载文件名 数据类型:文本型参数:最大长度 数据类型:整数型子程序:_按钮1_被单击局部容器:读出文本 数据类型:文本型局部容器:读出整数 数据类型:整数型局部容器:程序句柄 数据类型:整数型程序句柄 = 获得程序句柄 (0)信息框 (取窗口句柄 (), 0, )信息框 (程序句柄,0,)读出文本 = 取空白文本 (255)读出整数 = 255获得路径 (程序句柄, 读出文本, 读出整数)信息框 (读出文本, 0, )
如何通过子句柄查找父句柄
所谓句柄实际上是一个数据,是一个Long (整长型)的数据。
句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。
WINDOWS句柄有点象C语言中的文件句柄。
从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。
从数据类型上来看它只是一个16位的无符号整数。
应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。
我们知道,所谓指针是一种内存地址。
应用程序启动后,组成这个程序的各对象是住留在内存的。
如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。
但是,如果您真的这样认为,那么您就大错特错了。
我们知道,Windows是一个以虚拟内存为基础的操作系统。
在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。
对象被移动意味着它的地址变化了。
如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。
Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。
这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。
这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象 本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。
假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
怎么用易语言取窗口句柄然后模拟点击某软件按钮
.版本 2.支持库 iext.支持库 eAPI.程序集 窗口程序集1.子程序 __启动窗口_创建完毕超级列表框1.类型 = 3超级列表框1.显示表格线 = 真' ok,记得给超级列表框设置报表列,分别为 :窗口标题 和 窗口句柄。
' 否则没有用。
- -。
.子程序 _按钮1_被单击.局部变量 n, 整数型.局部变量 窗口句柄组, 文本型, , "0".局部变量 x, 整数型窗口句柄组 = 取所有窗口列表 ().计次循环首 (取数组成员数 (窗口句柄组), n) x = 超级列表框1.插入表项 (, 取窗口标题 (到数值 (窗口句柄组 [n])), , , , ) 超级列表框1.置标题 (x, 1, 窗口句柄组 [n]) .计次循环尾 ()Dll命令:获得程序句柄 ※ 获取一个应用程序或动态链接库的模块句柄返回值类型:整数型Dll库文件名:kernel32.dll在Dll库中的命令名:GetModuleHandleA参数:模块名 数据类型:整数型※ 指定模块名,这通常是与模块的文件名相同的一个名字。
例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD。
只有在当前进程的场景中,这个句柄才会有效。
电脑出现句柄无效怎么办?
说简单点,句柄无效出现这种提示,有三种可能:1、软件有问题;2、电脑有病毒;3、系统有故障;你可以把软件在别人的相同系统的电脑上装一下 ,如果不可以使用,你的软件有问题;如果可以使用,你的电脑很有可能中毒了,格式化硬盘,重装系统吧;所谓句柄实际上是一个数据,是一个Long (整长型)的数据;句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等,WINDOWS句柄有点象C语言中的文件句柄;从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样;但是,也可能有一个名字和你一样的人,从数据类型上来看它只是一个16位的无符号整数,应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针;我们知道,所谓指针是一种内存地址,应用程序启动后,组成这个程序的各对象是住留在内存的,如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象;但是,如果您真的这样认为,那么您就大错特错了,我们知道,Windows是一个以虚拟内存为基础的操作系统,在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要,对象被移动意味着它的地址变化了,如果地址总是如此变化,我们该到哪里去找该对象呢;为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的;Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存,这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置,这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统;句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象;本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作;但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。
沉默年代0000