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) 阻断异步,可以用于中断上一次异步朗读