我正在尝试使用 python 创建一个 Windows 服务来监视鼠标移动和键盘按下。该代码在控制台中运行时工作正常,但是当我修改它以将其变成服务时,它没有检测到鼠标移动。我向 ChatGPT 询问它,它说 Windows 服务在非交互式环境中运行。
那么有什么办法可以实现我的要求呢?顺便说一句,我使用 pywin32 将其安装为服务,它成功运行并按预期执行其他所有操作。
这是代码:
mouse_listener = None
def monitor_mouse():
# write_log("s0", log_path)
# global timer
global mouse_listener
# mouse_listener = mouse.Listener()
mouse_listener = mouse.Listener(on_move=reset_timer, on_click=reset_timer, on_scroll=reset_timer)
mouse_listener.start()
mouse_listener.join()
pynput
来监视鼠标和键盘。它将在用户会话中运行,而不是作为服务运行。简化示例:
# Service
import socket
def start_service():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen()
while True:
client_socket, addr = server_socket.accept()
data = client_socket.recv(1024)
print(f'Received: {data.decode()}')
client_socket.close()
# Monitoring script
import socket
from pynput import mouse
def on_move(x, y):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
client_socket.send(f'Mouse moved to {x}, {y}'.encode())
client_socket.close()
with mouse.Listener(on_move=on_move) as listener:
listener.join()