python 调用 windows 高精度计时器

import time
from ctypes import *




# 在此添加需要在多媒体定时器中执行的程序
def _timer_callback(uTimerID, uMsg, dwUser, dw1, dw2):
    """
    Callback function
    :param uTimerID: 计时器的标识符。该标识符由timeSetEvent函数返回。
    :param uMsg: 保留。
    :param dwUser: 为timeSetEvent函数的dwUser参数指定的值。
    :param dw1: 保留。
    :param dw2: 保留。
    """
    # 输出毫秒时间戳
    print(time.time() * 1000)




# 导入动态链接库
_winmm = windll.LoadLibrary('winmm.dll')
# 定义传入多媒体定时器的回调函数
_cb = CFUNCTYPE(c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_void_p)(_timer_callback)
"""
UDelay
事件延迟,以毫秒为单位。
如果该值不在计时器支持的最小和最大事件延迟范围内,则该函数返回错误。


uResolution
计时器事件的分辨率,以毫秒为单位。
分辨率随着值的减小而增加;分辨率为0表示周期性事件应以尽可能高的精度发生。
但是,为了减少系统开销,您应该使用适合您的应用程序的最大值。


lpTimeProc
指向回调函数的指针,该回调函数在单个事件到期时调用一次,或在周期性事件到期时定期调用。
如果fuEvent指定TIME_CALLBACK_EVENT_SET或TIME_CALLBACK_EVENT_PULSE标志,则lpTimeProc参数被解释为事件对象的句柄。
该事件将在单个事件完成时设置或触发,或在周期性事件完成时定期设置或触发。
对于fuEvent的任何其他值,lpTimeProc参数是指向LPTIMECALLBACK类型的回调函数的指针。


dwUser
是否用户提供回调数据


fuEvent
计时器事件类型
0 单次
1 定时
"""
# 使用timeSetEvent创建定时器
_timerId = _winmm.timeSetEvent(5, 1, _cb, 0, 1)


time.sleep(1)


_winmm.timeKillEvent(_timerId)

python 调用 windows 朗读

pip3 install pywin32
from win32com.client import Dispatch
speaker = Dispatch("SAPI.SpVoice")


# 设置语速,区间[-10, 10]
speaker.Rate = 5
# 设置音量,区间[0, 100]
speaker.Volume = 100


speaker.Speak("你好,世界!", 0) 同步
speaker.Speak("Hello World!", 1) 异步
speaker.Speak("", 2) 阻断异步,可以用于中断上一次异步朗读