python下spy++句柄使用
来源:互联网 发布:扫描答题软件 编辑:程序博客网 时间:2024/06/05 03:43
抛出问题
1、spy++下得到的句柄如何使用?
2、没有标题的窗口如何使用FindWindowEx得到句柄
3、同类型的控件如何区分
4、层数过多如何快速得到对象
答:都可以直接使用句柄定位
在做一个自动化工具时候,发现很多窗口没有标题,因为findWindowEx第四个参数用标题定位很方便,也基本是唯一。于是不得不继续研究findWindowEx这个函数。
FindWindowEx(
Parent: HWND; {要查找子窗口的父窗口句柄}
Child: HWND; {子窗口句柄}
ClassName: PChar; {}
WindowName: PChar {}
)
前两个参数是10进制的数字,而spy++得到的是16进制,转换一下,填写十进制的数就可以。
以上的基本知识背景
下面我们具体介绍如何使用
假设我们有一个工具,用spy++得到了标题是自动化工具,我们可以使用以下函数得到窗口
win = win32gui.FindWindow(None,u'自动化工具')
print win就可以看到窗口句柄,和spy++得到的对比是一样的。
接下来,在自动化工具下面,有一个窗口是配置界面。
于是,我们使用
hhand = win32gui.FindWindowEx(win,None,None,u"配置界面")
就得到了配置界面窗口
但是,我们还可以使用
htet = win32gui.FindWindowEx(123456,None,None,u"配置界面")//123456就是用spy++得到的父窗口的句柄
这样就省去了得到父窗口这句函数
现在,有另一个问题,我们要操作一个按钮button,一般的方式是,先找父窗口,然后
bhand = win32gui.FindWindowEx(win,None,None,u"按钮")
left,top,right,bottom = win32gui.GetWindowRect(bhand)
win32api.SetCursorPos((left+(right-left)/2,top+(bottom-top)/2))//鼠标操作
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)//鼠标操作
...
现在我们发现button标题不存在,于是我们可以直接
left,top,right,bottom = win32gui.GetWindowRect(123456)//123456就是spy++得到的句柄,10进制
win32api.SetCursorPos((left+(right-left)/2,top+(bottom-top)/2))//鼠标操作
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)//鼠标操作
...这样也是可行的
后话
通过句柄直接定位有一个很大的问题就是移植麻烦,而且软件打开后句柄就会变,有标题通过标题定位是最好的,在某些极端情况下,可以使用spy++得到的句柄直接操作。
- python下spy++句柄使用
- 使用Spy++获取的句柄值
- spy++ 使用.
- windows编程入门之句柄 spy++
- spy++如何获得其他进程中的句柄
- Ubuntu下apt-spy的安装与使用
- 用Python实现Spy++
- 用Python实现Spy++
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- 学习使用SPY++
- SPY++的使用
- spy++的基本使用
- SPY++的使用
- 如何使用spy ++
- 流
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 I.GSM Base Station Identification
- 组合数和排列数的关系
- CodeForces
- 【集训队互测2013】城市规划
- python下spy++句柄使用
- Django系列7---cookie、session、json、csrf_token
- spring之applicationContext、beanFactory
- laravel 图片验证码 mews/captcha
- 【Sort】56. Merge Intervals
- 在C#中怎么样声明全局变量和宏定义
- 7.TensorFlow的RNN和LSTM基础范例
- tp5模型笔记---多对多
- 不通过中间变量 交换两个数的值