Spy++获取子窗口的句柄

http://blog.csdn.net/pipisorry/article/details/46559139

问题:

如果要搜索的外部程序的窗口标题比较容易得到[],问题是比较简单的。如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类呢?

Introduction

Spy++是微软出品的用来获取Window窗口信息的一个小工具。Spy++中,最常用的一个功能,就是识别窗口。获取当前鼠标位置; 获取位于指定位置的窗口句柄; 获取窗口类别; 获取窗口内容或标题。

Spy++ (SPYXX.EXE) 提供系统的进程、线程、窗口和窗口消息的图形视图。

使用 Spy++ 可以执行下列操作: 显示系统对象(包括进程、线程和窗口)之间关系的图形树。 搜索指定的窗口、线程、进程或消息。 查看选定的窗口、线程、进程或消息的属性。 直接从视图中选择窗口、线程、进程或消息。 通过鼠标定位,使用查找程序工具选择窗口。 使用复杂的消息日志选择参数设置消息选项。 提示使用 Spy++ 时,在许多实例中都可以单击鼠标右键显示常用命令的弹出式菜单。命令是否可用取决于指针的位置。例如,如果在指向窗口视图中的某项时单击并且选定的窗口可见,则弹出式“突出显示”菜单项将导致选定窗口的边框闪烁,从而可以轻松地在屏幕上找到该窗口。

spy++获取子窗口的句柄

spy++这个软件来自VC++,装好VC后,就可以在工具中看到。(没安装的也可以在网上下载得到spy++.exe)

spy++的使用:

启动SPY++ > spy++的查找功能(菜单栏上望远镜图标)

拖动耙心(黑色标记处)到这篇博客就可以看到以上内容

handle就是16进制的窗口句柄

caption就是窗口名lpWindowName

class就是窗口类名lpClassName

Note:点击“确定”,可以看到了SPY++显示窗口中的其它子内容。

[Spy++的使用方法]

python中获取子窗口的句柄

python使用win32gui截取某个窗口内容

import win32gui
from PIL import ImageGrab
import win32con
from Utility.Colors import DEFAULT, RED

hwnd = win32gui.FindWindow("MozillaWindowClass", "Spy++获取子窗口的句柄 - 皮皮Blog - 博客频道 - CSDN.NET - Mozilla Firefox")
if not hwnd:
    print(RED, ‘window not found!‘, DEFAULT)
else:
    print(hwnd)

win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)  # 强行显示界面后才好截图
win32gui.SetForegroundWindow(hwnd)  # 将窗口提到最前
#  裁剪得到全图
game_rect = win32gui.GetWindowRect(hwnd)
src_image = ImageGrab.grab(game_rect)
# src_image = ImageGrab.grab((game_rect[0] + 9, game_rect[1] + 190, game_rect[2] - 9, game_rect[1] + 190 + 450))
src_image.show()

Note:得到Image图像后可用show()方法,使用系统默认的图像查看工具打开,方便调试,也可以用save(filename)保存成文件,对应的可以Image.open(filename)打开获得。from:http://blog.csdn.net/pipisorry/article/details/46559139

ref:用Python实现Spy++

获取下一个窗口句柄

Python使用win32api系统钩子

时间: 2025-01-08 17:19:54

Spy++获取子窗口的句柄的相关文章

iframe 子窗口获取父窗口元素 父窗口获取子窗口元素

js 在父窗口中获取iframe中的元素 1. 格式:window.frames["iframe的name值"].document.getElementByIdx_x("iframe中控件的ID").click(); 实例:window.frames["ifm"].document.getElementByIdx_x("btnOk").click(); 2. 格式: var obj=document.getElementByI

JS获取子窗口中返回的数据

在开发的时候,遇到了这样一个问题,客户填写自己的收货地址,可以新建,但同时也可以选择之前填写的,由于我们的客户本身就是商户,地址繁多,把它之前的地址简单用个下拉框罗列出来显然不合适,并且客户要求能够对地址通过姓名筛选,这样,选择地址就必须再开一个小窗来完成了,那么,小窗中填写的值怎么回传呢? js有个方法showModalDialog在这种情况下用的就比较多了,其作用是打开一个模态窗口,什么事模态窗口?就是打开后不能操作父窗口,只有子窗口操作完了,关闭了,才可以继续父窗口的动作.回到最开始的问题

VC 获取控制台窗口的句柄(hWnd)

在Windows中,句柄是一个系统内部数据结构的引用.例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作--移动窗口.改变窗口大小.把窗口极小化为图标等.实际上许多Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄.菜单句柄.实例句柄.位图句柄等,不仅仅局限于窗口函数.换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口.位图.图标

获取子窗口的父窗口的兄弟窗口方法

$($("body").find('#jbox-iframe')[0]).contents().find("#keywords").val(name + "(" + code + ")");$($("body").find('#jbox-iframe')[0]).contents().find("#keywords").attr("data-code",code);$

第9章 子窗口控件_9.4-9.6滚动条类、编辑框类、列表框类

9.4 滚动条类 9.4.1 滚动条控件 (1)窗口滚动条与滚动条控件的比较 窗口滚动条 滚动条控件 消息 发送WM_VSCROLL.WM_HSCROLL消息.不发送WM_COMMAND消息.wParam参数的意义是一样的.lParam:当消息来自窗口滚动条时为NULL,来自滚动条控件时为滚动条的句柄. 宽度或高度 固定大小 //水平滚动条高度 GetSysMetrics(SM_CYHSCROLL); //垂直滚动条宽度 GetSysMetrics(SM_CYVSCROLL) 1.大小.位置均可

第9章 子窗口控件_9.1-9.3按钮类、控件颜色、静态类

(1)子窗口控件:①子窗口,其parent为父窗口句柄:②子窗口状态发生变化时,会处理鼠标和键盘消息,并且通知其父窗口.可分为自定义子窗口控件和标准的子窗口控件(如按钮) (2)子窗口控件的使用场合 ①在对话框里使用最广——有内在机制支持Tab和光标移动键来转移焦点. ②在窗口表面直接使用:没内在机制支持Tab键和光标移动键来移动焦点到另一个控件: 对于自定义的控件,当单击子窗口时,父窗口会得到焦点.但对于标准子窗口控件,单击时会自动获得焦点(估计子窗口过程内部在WM_LBUTTONDOWN中实

windows 编程 —— 子窗口类别化(Window Subclassing)

对于子窗口控件,有时我们可能会想要获取子窗口的某些消息,比如在一个主窗口下有三个按钮,如果想要实现使用键盘Tab或者Shift-Tab键来使焦点切换于不同按钮之间,这时就可以使用子窗口类别化(Window Subclassing)的方法. 子窗口类别化: 按钮控件的窗口消息处理程序是Windows内部的.但是,将GWL_WNDPROC标识符作为参数来呼叫GetWindowLong,您就可以得到这个窗口消息处理程序的地址.另外,您可以呼叫SetWindowLong给指定按钮设定一个新的窗口消息处理

简介子窗口控件(api)

子窗口控件 壹佰软件开发小组  整理编译   回忆第七章的CHECKER程序.这些程序显示了矩形网格.当您在一个矩形中按下鼠标按键时,该程序就画一个x:如果您再按一次鼠标按键,那么x就消失.虽然这个程序的CHECKER1和CHECKER2版本只使用一个主窗口,但CHECKER3版本却为每个矩形使用一个子窗口.这些矩形由一个叫做ChildProc的独立窗口消息处理程序维护. 如果有必要,无论矩形是否被选中,都可以给ChildProc增加一种向其父窗口消息处理程序(WndProc)发送消息的手段.通

WinAPI: GetClassName - 获取指定窗口的类名

WinAPI: GetClassName - 获取指定窗口的类名 //声明: GetClassName( hWnd: HWND; {指定窗口句柄} lpClassName: PChar; {缓冲区} nMaxCount: Integer {缓冲区大小} ): Integer; {返回类名大小; 失败返回 0} -------------------------------------------------------------------------------- //测试1: 新建一个工程