python winapi_python---win32gui、win32con、win32api:winAPI操作

importsysfrom PyQt5.QtWidgets importQApplication, QWidgetfrom lianxi importUi_Formfrom PyQt5.QtCore importQtimport win32gui #winAPI模块--以便于操作窗口

classWin(QWidget,Ui_Form):def __init__(self):

super(Win, self).__init__()

self.setupUi(self)

self.setWindowFlag(Qt.MSWindowsFixedSizeDialogHint)#窗体不能调整大小

self.setWindowTitle('练习')def lianxi1(self): #win32gui按钮的槽函数

self.hwnd = win32gui.GetForegroundWindow() #获取最前窗口句柄

self.hwnd = win32gui.FindWindow(0, wdname) #根据窗口标题,取得窗口句柄

#函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写

#参数1 窗口类名

#参数2 窗口标题--必须完整;如果该参数为None,则为所有窗口全匹配

#返回值:如果函数成功,返回值为窗口句柄;如果函数失败,返回值为0

#self.hwnd = win32gui.FindWindow("Notepad", None) # 根据窗口类名,取得窗口句柄

print('窗口句柄为:', self.hwnd)if self.hwnd !=0:

win32gui.SetForegroundWindow(self.hwnd)#窗口显示最前面

#参数:窗口句柄

text = win32gui.GetWindowText(self.hwnd) #获取窗口标题

print('窗口标题为:', text)

clsname= win32gui.GetClassName(self.hwnd) #获取窗口类名

print('窗口类名:',clsname)

left, top, right, bottom= win32gui.GetWindowRect(self.hwnd) #获取窗口位置

#left, top是左上角坐标;right, bottom是右下角坐标

print('窗口位置',left, top, right, bottom)

windows= [] #自定义参数,可以是任何类型

#win32gui.EnumWindows(self.ss, windows) #寻找所有顶层窗口的句柄

#参数1:回调函数名称,每找到一个句柄就把句柄和windows传给a和b,并执行一次回调函数

#参数2:必须有,可以向回调函数传递一些其它参数--传给b,可以是任何类型

#枚举屏幕上的所有的顶层窗口,轮流地将这些窗口的句柄传递给回调函数的a参数。EnumWindows会一直进行下去,直到枚举完所有的顶层窗口,或者回调函数返回了FALSE.

#打开一个记事本

self.hwnd1 = win32gui.FindWindow("Notepad", None)print("父窗口句柄:",self.hwnd1)

win32gui.EnumChildWindows(self.hwnd1,self.sss,windows)#寻找子窗口句柄

#参数1 父窗口句柄,如果此参数为Null,则此函数等效于EnumWindows;每找到一个句柄就把句柄和windows传给a和b,并执行一次回调函数

#参数2 回调函数

#参数3 自定义参数

#枚举所有子窗口,轮流地将这些窗口的句柄传递给回调函数的a参数。函数会一直进行下去,直到枚举完所有的子窗口,或者回调函数返回了FALSE

#特别注意:qt只有一个窗体,里面控件的句柄是找不到的--所以这条指令不能用在Qt绘制的窗口上

#打开彗星小助手

self.hwnd=win32gui.FindWindowEx(0,0,0,'彗星小助手') #查找窗口或子窗口句柄

#参数1 父窗口句柄;如果是 0, 则函数以桌面窗口为父窗口;如果是 HWND_MESSAGE, 函数仅查找消息窗口

#参数2 子窗口句柄,必须是参数1的直接子窗口;子窗口以Z序排列,查找参数后面的子窗口;如果是 0, 查找从父窗口的第一个子窗口开始

#如果参数1和参数2同时是 0, 则函数查找所有的顶层窗口及消息窗口

#参数3 类名

#参数4 标题;可以是None

#返回找到的第一个窗口的句柄

print('彗星小助手的句柄:',self.hwnd)

subHandle= win32gui.FindWindowEx(self.hwnd1, 0, "EDIT", None) #笔记本类名为EDIT的句柄

#编辑框的句柄

menuHandle= win32gui.GetMenu(self.hwnd1) #获取窗口的菜单句柄

#参数 窗口句柄

print('记事本菜单句柄:',menuHandle)

subMenuHandle= win32gui.GetSubMenu(menuHandle, 0) #获得子菜单或下拉菜单句柄

#参数1 菜单句柄

#参数2 子菜单索引号

print('子菜单文件句柄:',subMenuHandle)

menuItemHandle= win32gui.GetMenuItemID(subMenuHandle, 0) #获得菜单项中的的标志符ID,注意,分隔符是被编入索引的

#参数1 子菜单句柄--文件菜单句柄

#参数2 项目索引号

#1

print(menuItemHandle)defsss(self,a,b):print(a,b)defss(self,a,b):print(a,b)if __name__ == '__main__':

app=QApplication(sys.argv)

wdname= u'练习'demo=Win()

demo.show()

sys.exit(app.exec_())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值