当前位置:   article > 正文

win32gui操作_win32gui教程

win32gui教程
  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QWidget
  3. from lianxi import Ui_Form
  4. from PyQt5.QtCore import Qt
  5. import win32gui #winAPI模块--以便于操作窗口
  6. class Win(QWidget,Ui_Form):
  7. def __init__(self):
  8. super(Win, self).__init__()
  9. self.setupUi(self)
  10. self.setWindowFlag(Qt.MSWindowsFixedSizeDialogHint) # 窗体不能调整大小
  11. self.setWindowTitle('练习')
  12. def lianxi1(self): #win32gui按钮的槽函数
  13. self.hwnd = win32gui.GetForegroundWindow() # 获取最前窗口句柄
  14. self.hwnd = win32gui.FindWindow(0, wdname) # 根据窗口标题,取得窗口句柄
  15. # 函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写
  16. # 参数1 窗口类名
  17. # 参数2 窗口标题--必须完整;如果该参数为None,则为所有窗口全匹配
  18. # 返回值:如果函数成功,返回值为窗口句柄;如果函数失败,返回值为0
  19. #self.hwnd = win32gui.FindWindow("Notepad", None) # 根据窗口类名,取得窗口句柄
  20. print('窗口句柄为:', self.hwnd)
  21. if self.hwnd != 0:
  22. win32gui.SetForegroundWindow(self.hwnd) # 窗口显示最前面
  23. # 参数:窗口句柄
  24. text = win32gui.GetWindowText(self.hwnd) # 获取窗口标题
  25. print('窗口标题为:', text)
  26. clsname = win32gui.GetClassName(self.hwnd) #获取窗口类名
  27. print('窗口类名:',clsname)
  28. left, top, right, bottom = win32gui.GetWindowRect(self.hwnd) # 获取窗口位置
  29. #left, top是左上角坐标;right, bottom是右下角坐标
  30. print('窗口位置',left, top, right, bottom)
  31. windows = [] #自定义参数,可以是任何类型
  32. #win32gui.EnumWindows(self.ss, windows) #寻找所有顶层窗口的句柄
  33. #参数1:回调函数名称,每找到一个句柄就把句柄和windows传给a和b,并执行一次回调函数
  34. #参数2:必须有,可以向回调函数传递一些其它参数--传给b,可以是任何类型
  35. #枚举屏幕上的所有的顶层窗口,轮流地将这些窗口的句柄传递给回调函数的a参数。EnumWindows会一直进行下去,直到枚举完所有的顶层窗口,或者回调函数返回了FALSE.
  36. #打开一个记事本
  37. self.hwnd1 = win32gui.FindWindow("Notepad", None)
  38. print("父窗口句柄:",self.hwnd1)
  39. win32gui.EnumChildWindows(self.hwnd1,self.sss,windows) #寻找子窗口句柄
  40. #参数1 父窗口句柄,如果此参数为Null,则此函数等效于EnumWindows;每找到一个句柄就把句柄和windows传给a和b,并执行一次回调函数
  41. #参数2 回调函数
  42. #参数3 自定义参数
  43. #枚举所有子窗口,轮流地将这些窗口的句柄传递给回调函数的a参数。函数会一直进行下去,直到枚举完所有的子窗口,或者回调函数返回了FALSE
  44. #特别注意:qt只有一个窗体,里面控件的句柄是找不到的--所以这条指令不能用在Qt绘制的窗口上
  45. #打开彗星小助手
  46. self.hwnd=win32gui.FindWindowEx(0,0,0,'彗星小助手') #查找窗口或子窗口句柄
  47. #参数1 父窗口句柄;如果是 0, 则函数以桌面窗口为父窗口;如果是 HWND_MESSAGE, 函数仅查找消息窗口
  48. #参数2 子窗口句柄,必须是参数1的直接子窗口;子窗口以Z序排列,查找参数后面的子窗口;如果是 0, 查找从父窗口的第一个子窗口开始
  49. #如果参数1和参数2同时是 0, 则函数查找所有的顶层窗口及消息窗口
  50. #参数3 类名
  51. #参数4 标题;可以是None
  52. #返回找到的第一个窗口的句柄
  53. print('彗星小助手的句柄:',self.hwnd)
  54. subHandle = win32gui.FindWindowEx(self.hwnd1, 0, "EDIT", None) # 笔记本类名为EDIT的句柄
  55. # 编辑框的句柄
  56. menuHandle = win32gui.GetMenu(self.hwnd1) #获取窗口的菜单句柄
  57. #参数 窗口句柄
  58. print('记事本菜单句柄:',menuHandle)
  59. subMenuHandle = win32gui.GetSubMenu(menuHandle, 0) # 获得子菜单或下拉菜单句柄
  60. #参数1 菜单句柄
  61. #参数2 子菜单索引号
  62. print('子菜单文件句柄:',subMenuHandle)
  63. menuItemHandle = win32gui.GetMenuItemID(subMenuHandle, 0) # 获得菜单项中的的标志符ID,注意,分隔符是被编入索引的
  64. #参数1 子菜单句柄--文件菜单句柄
  65. #参数2 项目索引号
  66. #1
  67. print(menuItemHandle)
  68. def sss(self,a,b):
  69. print(a,b)
  70. def ss(self,a,b):
  71. print(a,b)
  72. if __name__ == '__main__':
  73. app = QApplication(sys.argv)
  74. wdname = u'练习'
  75. demo = Win()
  76. demo.show()
  77. sys.exit(app.exec_())

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/109212
推荐阅读
相关标签
  

闽ICP备14008679号