Backstory:我正在使用Electron创建一个应用程序,目前正在尝试在计算机被锁定/解锁时运行一个函数。在
经过多次尝试和错误之后,我终于设法使下面的python代码正常工作。当相关代码被触发时,代码会在屏幕上打印锁定或解锁。现在我需要从Node JS运行python脚本,以便在事件触发时运行更多函数。在
import win32con
import win32gui
import win32ts
import time
print("Test")
WM_WTSSESSION_CHANGE = 0x2B1class WTSMonitor():
className = "WTSMonitor"
wndName = "WTS Event Monitor"
def __init__(self):
wc = win32gui.WNDCLASS()
wc.hInstance = hInst = win32gui.GetModuleHandle(None)
wc.lpszClassName = self.className
wc.lpfnWndProc = self.WndProc
self.classAtom = win32gui.RegisterClass(wc)
style = 0
self.hWnd = win32gui.CreateWindow(self.classAtom, self.wndName,
style, 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
0, 0, hInst, None)
win32gui.UpdateWindow(self.hWnd)
win32ts.WTSRegisterSessionNotification(self.hWnd, win32ts.NOTIFY_FOR_ALL_SESSIONS)
def start(self):
win32gui.PumpMessages()
def stop(self):
win32gui.PostQuitMessage(0)
def WndProc(self, hWnd, message, wParam, lParam):
if message == WM_WTSSESSION_CHANGE:
self.OnSession(wParam, lParam)
def OnSession(self, event, sessionID):
if event == 7:
print("Locked")
if event == 8:
print("Unlocked")
print(event)
myststa(event)
WTSMonitor().start()
节点代码:
^{pr2}$当我使用“python”从控制台运行python时锁定.py“我看到测试信息打印出来了。但是,在使用节点时锁定.js脚本看起来像在运行,但从未打印到控制台。在
另一件事是,如果我注释掉最后一行WTSMonitor().start(),那么我可以看到输出到节点控制台的测试消息。在
在进行实际的故障排除之前,使用python调用w32api的主要原因是什么?首先,您可以通过electron/nodejs本身来完成,而且electron将在powerMonitor中直接拥有一个特定的事件(https://github.com/electron/electron/blob/3a0640993ba9748ced9f9cd00de5dbfe7651f788/docs/api/power-monitor.md#event-lock-screen-macos-windows)不一定需要第三方代码。在
相关问题 更多 >
编程相关推荐