当前位置: 代码网 > it编程>前端脚本>Python > Python-pywin32库的使用高级操作方法

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

2025年11月06日 Python 我要评论
pywin32库可对windows api进行访问和进行一些高级操作。win32api模块win32api:对windows api函数直接访问。win32con:定义了各种windows常量,用于与

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

win32api模块

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)
参数名类型描述
frequencyint声音的频率(单位:赫兹,hz)。有效范围:37 hz 到 32767 hz。262 hz (中音c)、440 hz (标准音a)、1000 hz (高频提示音)
durationint声音的持续时间(单位:毫秒,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

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库使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com