python库win32gui,windows的API管理及自动化

使用了python实现了打开windows的鼠标属性页面并更改鼠标的主键的功能,今天主要是针对使用的库进行一个讲解,也即是win32gui库的详细讲解。

对于windows的打开的窗口中,可以通过窗口的类型和名字来进行窗口的具体查找,使用的win32gui.FindWindow方法来进行查找,传入的参数是FindWindow(lpClassName=None, lpWindowName=None),该方法返回的是窗口的句柄,如果返回的句柄值是0的话,就是在当前打开的窗口中未找到想要找的窗口,这里就要查找一下自己的输入是不是存在什么问题,可能就是输入的窗口的类型不对,或者是名称不对;例如这里想要找到鼠标属性窗口,通过的就是窗口的名称来进行查找,对于输入的两个值可以为None。

window_name = u'鼠标 属性'
 hwnd = win32gui.FindWindow(None, window_name)

添加图片注释,不超过 140 字(可选)

通过只使用窗口的名字即可查到该窗口的句柄

添加图片注释,不超过 140 字(可选)

而获取到这个窗口的句柄之后,需要做的就是对这个窗口下的组件进行轮询,想要找到这个窗口里面的某个组件,这个组件可能是个button,可能是个checkButton,想要找到的是切换主要和次要按钮这个checkbutton和确定这个button,定义一个button列表,然后对窗口的句柄使用EnumChildWindows方法,并将查找到的子窗口存储在button列表中,存入了之后,其实是不知道各个button子列是什么,可以使用GetWindowText来输出一下每个button子列的名字,输入的就是子列的句柄,然后输出的即为名称。

添加图片注释,不超过 140 字(可选)

通过找到的button[2]即是想要找到的切换主要和次要按钮这个checkbutton,所以对这个checkbutton进行模拟点击,使用的是win32gui.PostMessage方法,输入的是checkbutton的句柄,同时还有左键按下的模拟输入,以及左鼠标按钮;而有了按下,对应的就有按键弹起。

    button = []
    win32gui.EnumChildWindows(hwnd,lambda hwnd,param:param.append(hwnd),button)
    changeButtonhwnd = button[2]
    win32gui.PostMessage(changeButtonhwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON)
    time.sleep(0.01)
    # 模拟鼠标弹起
    win32api.PostMessage(changeButtonhwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON)

要注意,两个模拟按钮行为之间要有间隙,不然的话会出现冲突导致其中一个行为失效。

以上就是一个简单的对于windows窗口的一个自动化的全过程。

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据您的问题进行回答。首先,win32apiwin32gui、win32com、win32con这四个库都是PythonWindows操作库,用于在Windows平台上进行GUI编程、系统编程、自动化编程等方面的开发。下面分别详细介绍。 1. win32api库 win32api库提供了很多Windows原生API函数的Python封装,可以用于进行系统编程方面的开发。下面是一些常用函数及其用法: (1)win32api.ShellExecute() 此函数用于在Windows中启动一个程序,可以指定程序的路径、命令行参数、工作目录等参数。例如,下面的代码启动了Windows的记事本程序: import win32api win32api.ShellExecute(0, "open", "notepad.exe", "", "", 1) (2)win32api.WinExec() 此函数用于执行Windows命令行命令。例如,下面的代码执行了一个ipconfig命令,并且将结果输出到文件中: import win32api win32api.WinExec("ipconfig > result.txt") (3)win32api.MessageBox() 此函数用于弹出一个Windows消息框,可以指定消息框的标题、内容、类型等参数。例如,下面的代码弹出了一个带有OK按钮的消息框: import win32api win32api.MessageBox(0, "Hello World!", "Message", win32con.MB_OK) 2. win32guiwin32gui库提供了很多Windows原生GUI函数的Python封装,可以用于进行GUI编程方面的开发。下面是一些常用函数及其用法: (1)win32gui.FindWindow() 此函数用于查找Windows中某个窗口的句柄,可以指定窗口类名、窗口标题等参数。例如,下面的代码查找了Windows的桌面窗口: import win32gui hwnd = win32gui.FindWindow("Progman", "Program Manager") (2)win32gui.GetWindowText() 此函数用于获取某个窗口的标题。例如,如果我们要获取上面查找到的桌面窗口的标题,可以使用下面的代码: import win32gui hwnd = win32gui.FindWindow("Progman", "Program Manager") title = win32gui.GetWindowText(hwnd) (3)win32gui.SendMessage() 此函数用于向某个窗口发送消息,可以用于模拟鼠标键盘操作、获取窗口信息等操作。例如,下面的代码模拟了一个单击鼠标左键的操作: import win32gui, win32con hwnd = win32gui.FindWindow("Notepad", None) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0) 3. win32com库 win32com库提供了Python与COM对象之间交互的接口,可以用于进行自动化编程、Office开发等方面的开发。下面是一些常用类及其用法: (1)win32com.client.Dispatch() 此方法用于连接COM对象,可以通过指定对象的ProgID或ClsID创建一个COM对象实例。例如,下面的代码连接了Windows Media Player组件: import win32com.client wmp = win32com.client.Dispatch("WMPlayer.OCX.7") (2)win32com.client.DispatchEx() 此方法与Dispatch()方法一样,也用于连接COM对象,但是可以指定一些参数,例如安全级别等。例如,下面的代码连接了Outlook组件: import win32com.client outlook = win32com.client.DispatchEx("Outlook.Application", 0, 0) (3)win32com.client.constants 此类用于定义COM对象中的常量,可以通过此类获取一些COM对象中的属性、方法等。例如,下面的代码获取了Windows Media Player的播放状态: import win32com.client.constants wmp = win32com.client.Dispatch("WMPlayer.OCX.7") status = wmp.playState 4. win32con库 win32con库定义了一些Windows常量,可以用于进行系统编程方面的开发。下面是一些常用常量及其用途: (1)win32con.SW_HIDE 此常量用于隐藏某个窗口。例如,下面的代码将记事本窗口隐藏: import win32gui, win32con hwnd = win32gui.FindWindow(None, "Untitled - Notepad") win32gui.ShowWindow(hwnd, win32con.SW_HIDE) (2)win32con.WM_CLOSE 此常量用于向某个窗口发送关闭消息。例如,下面的代码向记事本窗口发送关闭消息: import win32gui, win32con hwnd = win32gui.FindWindow(None, "Untitled - Notepad") win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0) (3)win32con.VBOK 此常量用于在Windows消息框中显示OK按钮。例如,下面的代码弹出了一个带有OK按钮的消息框: import win32gui, win32con win32gui.MessageBox(None, "Hello World!", "Message", win32con.MB_OK | win32con.MB_ICONINFORMATION)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值