PythonShell/Node JS输出为空

2024-09-28 22:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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(),那么我可以看到输出到节点控制台的测试消息。在


Tags: 代码importselfeventif节点defstart