import ctypes
import time
import threading
KEYEVENTF_EXTENDEDKEY =0x0001
KEYEVENTF_KEYUP =0x0002
VK_SCROLL =0x91defpress_scroll_lock():"""模拟按下并释放ScrollLock键"""
ctypes.windll.user32.keybd_event(VK_SCROLL,0, KEYEVENTF_EXTENDEDKEY,0)
time.sleep(0.05)
ctypes.windll.user32.keybd_event(VK_SCROLL,0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0)defcheck_scroll_lock_state():"""检查ScrollLock当前状态"""return ctypes.windll.user32.GetKeyState(VK_SCROLL)&0x0001defmain():
cycle_count =10
delay =0.5print(f"开始控制ScrollLock指示灯,将闪烁{cycle_count}次")print("按Ctrl+C可中途退出")try:if check_scroll_lock_state():
press_scroll_lock()
time.sleep(0.1)for i inrange(cycle_count):
press_scroll_lock()
state = check_scroll_lock_state()print(f"第{i +1}次 - ScrollLock已{'开启'if state else'关闭'}")
time.sleep(delay)
press_scroll_lock()
state = check_scroll_lock_state()print(f"第{i +1}次 - ScrollLock已{'开启'if state else'关闭'}")
time.sleep(delay)except KeyboardInterrupt:print("\n程序已被用户中断")finally:if check_scroll_lock_state():
press_scroll_lock()print("程序结束,ScrollLock已关闭")if __name__ =="__main__":
main()
发布评论