Python 如何使SendMessage取消阻止?

Python 如何使SendMessage取消阻止?,python,winapi,pywin32,Python,Winapi,Pywin32,我使用以下脚本关闭监视器: import win32api, win32con print "start" win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2) print "end" “end”不会打印,脚本也不会结束。 终端机的窗户一直开着,真烦人 如何使SendMessage无阻塞 无法使win32api.SendMessage()非阻塞,因为

我使用以下脚本关闭监视器:

import win32api, win32con

print "start"
win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2)
print "end"
“end”
不会打印,脚本也不会结束。
终端机的窗户一直开着,真烦人


如何使
SendMessage
无阻塞

无法使
win32api.SendMessage()
非阻塞,因为底层Windows函数正在阻塞。相反,您可以使用
win32api.PostMessage()
,它具有相同的签名:

import win32api, win32con

print "start"
win32api.PostMessage(win32con.HWND_BROADCAST, win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2)
print "end"

并且没有相同的签名。
SendMessage
返回值,这是处理消息的结果,
PostMessage
返回一个布尔成功代码。@IInspectable:您可能是对的,我无法测试它。我的意思是传递相同的函数参数。在PyWin32文档中,它们都没有记录为返回任何内容,但我认为
SendMessage
将返回一个整数,而
PostMessage
似乎返回并出错,或者
None
,而不是布尔值。如果
SendMessage
的PyWin32包装没有记录为返回任何内容,然后,
SendMessage
是无用的(如果它没有返回任何信息),或者文档(因为省略了重要信息)。