Python-pywin32库的使用高级操作方法

作者:

文章目录
  • win32api:对Windows API函数直接访问。 win32con:定义了各种Windows常量,用于与其他模块一起使用。
  • win32gui:操作Windows图形用户界面,包括窗口、菜单、对话框等。
  • win32com:提供了对COM(Component Object Model)对象的访问,可用于操作如Microsoft Office等应用程序。 win32process:用于管理Windows进程。 # 进程信息获取 import win32process processes = win32process.EnumProcesses() for process_id in processes: print(process_id) 到此这篇关于Python-pywin32库的使用的文章就介绍到这了,更多相关Python pywin32库使用内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 深入理解Python中pywin32库实现Windows自动化与系统交互 Python利用pywin32库实现将PPT导出为高清图片
  • 目录
    • win32api模块
      • 警告提示对框
      • 删除和复制文件
      • 获取时间
      • 系统警告提示音
      • 自定义声音播放
      • 检索系统级度量信息
      • 打开系统程序
    • win32gui
      • 窗口句柄及参数
      • 向窗口发送命令
      • 修改窗口标题
      • 窗口显示
    • 其他模块

      pywin32库可对Windows API进行访问和进行一些高级操作。

      win32api:对Windows API函数直接访问。

      win32con:定义了各种Windows常量,用于与其他模块一起使用。

      通常可以通过弹出一个提示窗口,通过获取用户选择得到返回值后做其他操作,

      函数 win32api.MessageBox(hwnd, text, title, type)参数:

      hwnd: 父窗口的句柄。如果为0或None,则消息框没有父窗口。

      text: 消息框中显示的文本内容。

      title: 消息框的标题。

      type: 指定消息框的类型和按钮组合。可以是以下常量或常量的组合:

      • MB_OK—显示“确定”按钮。
      • MB_OKCANCEL—显示“确定”和“取消”按钮。
      • MB_YESNO—显示“是”和“否”按钮。
      • MB_YESNOCANCEL—显示“是”、“否”和“取消”按钮。
      • MB_ICONQUESTION—显示问号图标。
      • MB_ICONINFORMATION—显示信息图标。
      • MB_ICONWARNING—显示警告图标。
      • MB_ICONASTERISK—含图标、固定按钮 提示信息框。
      • win32con.MB_ICONERROR—显示错误图标。
      • MB_HELP—不含图标、可改变按钮 说明信息框。
      • MB_RETRYCANCEL—不含图标,重试信息框。
      • MB_ICONSTOP—显示X号图标。

      type为常量整数,所以可以直接使用数字:

      • 0: 确定
      • 1: 确定,取消
      • 2: 终止,重试,忽略
      • 3: 是,否,取消
      • 4: 是,否
      • 5: 重试,取消
      • 6: 取消,再试一次,继续

      函数返回值:

      • 1: 确定
      • 2: 取消
      • 3: 终止
      • 4: 重试
      • 5: 忽略
      • 6: 是
      • 7: 否
      • 10:再试一次
      • 11:继续
      import win32api, win32gui
      from win32con import *
      mes = win32api.MessageBox(None, "这是一个测试对话窗口", "警告", MB_RETRYCANCEL)
      print(mes)   # 打印结果为4

      可以使用组合按钮,如下,

      mes = win32api.MessageBox(None, "测试1", "test", MB_YESNO | MB_ICONQUESTION)
      print(mes)

      # win32con.IDOK: 用户点击了“确定”按钮。
      # win32con.IDCANCEL: 用户点击了“取消”按钮。
      # win32con.IDYES: 用户点击了“是”按钮。
      # win32con.IDNO: 用户点击了“否”按钮。
      mes = win32api.MessageBox(None, "测试2", "test", IDOK | IDCANCEL)
      print(mes)

      win32api.DeleteFile(r'E:桌面99测试图片1.jpg')  # 删除文件
      win32api.CopyFile(r'E:桌面测试文件23.png', r'E:桌面测试文件123.png')  # 复制文件,参数分别是源文件和目标文件

      print(win32api.GetLocalTime())  # 计算机时间(2024, 4, 1, 15, 13, 37, 26, 781)
      print(win32api.GetSystemTime())  # 格林尼治时间(2024, 4, 1, 15, 5, 37, 26, 781)

      MessageBeep() 函数用于使计算机发出声音,通常用于向用户发出警告或通知。

      win32api.MessageBeep(type=MB_ICONQUESTION)

      type 参数可以设置为以下几种预定义的值,这些值决定了播放哪种声音:

      • win32con.MB_OK:系统默认声音,通常是一个短促的“嘟”声。
      • win32con.MB_ICONASTERISK:一个连续的“嘟”声,直到下一个 MessageBeep() 调用。
      • win32con.MB_ICONEXCLAMATION:一个长“嘟”声。
      • win32con.MB_ICONHAND:一个双“嘟”声。
      • win32con.MB_ICONQUESTION:一个“嘟-嘟”声(两个短促的声音)。

      Beep()用于通过计算机的主板扬声器(或声卡模拟)发出指定频率和时长的蜂鸣声。与 MessageBeep()(播放系统预定义声音)不同,Beep() 允许自定义声音的频率和持续时间。

      win32api.Beep(frequency, duration)
      参数名 类型 描述
      frequency int 声音的频率(单位:赫兹,Hz)。有效范围:37 Hz 到 32767 Hz。262 Hz (中音C)、440 Hz (标准音A)、1000 Hz (高频提示音)
      duration int 声音的持续时间(单位:毫秒,ms)。有效范围:正整数(如 500=0.5秒)。

      演示一段音符, 

      # 定义音符频率和时长(毫秒)
      melody = [
          (262, 300),  # C4
          (294, 300),  # D4
          (330, 300),  # E4
          (349, 300),  # F4
          (392, 600),  # G4
      ]
      for freq, dur in melody:
          win32api.Beep(freq, dur)
          time.sleep(0.05)  # 音符间短暂间隔

      GetSystemMetrics() 可以返回多种与系统相关的度量值,比如屏幕尺寸、工作区尺寸、系统字体大小等。

      win32api.GetSystemMetrics() 函数的一些常用参数及其含义:

      • 0:返回屏幕宽度(像素)。
      • 1:返回屏幕高度(像素)。
      • SM_CXSCREEN(等同于 0):屏幕宽度(像素)。
      • SM_CYSCREEN(等同于 1):屏幕高度(像素)。
      • SM_CXWORK:工作区的宽度(像素),即屏幕宽度减去系统任务栏等区域的宽度。
      • SM_CYWORK:工作区的高度(像素),即屏幕高度减去系统任务栏等区域的高度。
      • SM_CXFULLSCREEN:全屏窗口的宽度(像素)。对于多显示器设置,这通常是主显示器的宽度。
      • SM_CYFULLSCREEN:全屏窗口的高度(像素)。
      • SM_CXFIXEDFRAME:窗口边框的宽度(像素)。
      • SM_CYFIXEDFRAME:窗口边框的高度(像素)。
      • SM_CXSIZEFRAME:窗口可调边框的宽度(像素)。
      • SM_CYSIZEFRAME:窗口可调边框的高度(像素)。
      • SM_CXFRAME:等同于 SM_CXSIZEFRAME
      • SM_CYFRAME:等同于 SM_CYSIZEFRAME
      • SM_CXMIN:窗口的最小宽度(像素)。
      • SM_CYMIN:窗口的最小高度(像素)。
      • SM_CXVSCROLL:垂直滚动条的宽度(像素)。
      • SM_CYHSCROLL:水平滚动条的高度(像素)。
      • SM_CYCAPTION:标题栏的高度(像素)。
      • SM_CXBORDER:窗口边框的宽度(像素)。
      • SM_CYBORDER:窗口边框的高度(像素)。
      • SM_CXDLGFRAME:对话框边框的宽度(像素)。
      • SM_CYDLGFRAME:对话框边框的高度(像素)。
      • SM_CYMENU:菜单的高度(像素)。
      • SM_CXFULLSCREENSM_CYFULLSCREENSM_CXICONSM_CYICON 等其他度量值。
      # 获取屏幕宽度和高度
      screen_width = win32api.GetSystemMetrics(0)
      screen_height = win32api.GetSystemMetrics(1)

      win32api.WinExec('notepad.exe')

      win32gui:操作Windows图形用户界面,包括窗口、菜单、对话框等。

      import win32gui
      from win32con import *
      hwnd = win32gui.FindWindow(None, "釘釘")
      if hwnd:
          print(f'窗口句柄:{hwnd}')
          print(f'窗口标题:{win32gui.GetWindowText(hwnd)}')
          print(f'窗口类名:{win32gui.GetClassName(hwnd)}')
          rect = win32gui.GetWindowRect(hwnd)
          left, top, right, bottom = rect
          print("窗口位置:(左:{}, 上:{})".format(left, top))
          print("窗口大小:(宽:{}, 高:{})".format(right - left, bottom - top))
          parent_hwnd = win32gui.GetParent(hwnd)
          child_hwnds = []
          win32gui.EnumChildWindows(hwnd, lambda hwnd, param: param.append(hwnd), child_hwnds)
          print("父窗口句柄:", parent_hwnd)
          print("子窗口句柄:", child_hwnds)

      SendMessage 和 PostMessage 函数用于向窗口发送消息。SendMessage 会等待消息处理完成才返回,而 PostMessage 则立即返回。

      # 向窗口发送一个关闭消息(WM_CLOSE)
      win32gui.SendMessage(hwnd, win32con.WM_CLOSE, 0, 0)

      win32gui.SetWindowText(hwnd, "新的窗口标题")   # 修改窗口标题

      win32gui.ShowWindow()函数可以显示、隐藏或最大化、最小化窗口。

      win32gui.ShowWindow(hwnd, SW_HIDE)   # SW_HIDE表示隐藏窗口

      win32com:提供了对COM(Component Object Model)对象的访问,可用于操作如Microsoft Office等应用程序。

      win32process:用于管理Windows进程。

      # 进程信息获取
      import win32process
      processes = win32process.EnumProcesses()
      for process_id in processes:
          print(process_id)

      到此这篇关于Python-pywin32库的使用的文章就介绍到这了,更多相关Python pywin32库使用内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • 深入理解Python中pywin32库实现Windows自动化与系统交互
      • Python利用pywin32库实现将PPT导出为高清图片

      站内搜索