我们都熟悉打印窗口(比如按下ctrl+p或在某些软件上点击打印按钮)。在Python中,当打印窗口弹出时,有没有一种方法可以得到通知[捕获任何信号](当用户试图打印某些内容时)? 我尝试使用下面的代码来了解当前哪个窗口是acitve,但我假设打印窗口不属于活动窗口类别,因为没有发生任何事情
def all_apps_running(self):
""" looks throgh wind32processes to find all Foreground running apps """
try:
hwnd = ctypes.windll.user32.GetForegroundWindow()
_, pid = win32process.GetWindowThreadProcessId(hwnd)
exe = ""
for p in self.c.query('SELECT Name FROM Win32_Process WHERE ProcessId = %s' % str(pid)):
exe = p.Name
break
except:
return None
else:
return exe
...
我找到了一些关于打印机事件的信息(如下面的代码,我尝试了更多),但在用户向打印机发送一些打印作业之后,这种方法就可以工作了,我需要向用户显示一个通知,与打印窗口的显示完全一致
if __name__ == "__main__":
job = {}
while True:
printer_name = win.GetDefaultPrinter()
hprinter = win.OpenPrinter(printer_name)
job_tuple = win.EnumJobs(hprinter, 0, -1, 1)
for job_info in job_tuple:
job = win.GetJob(hprinter, job_info["JobId"], win.JOB_INFO_1)
break
显然,我们有3种类型的打印弹出窗口分类:
第1部分的解决方案来自以下堆栈溢出帖子: Get text from popup window。 这只需要一些修改:
import time, win32gui
while True:
window = win32gui.GetForegroundWindow()
title = win32gui.GetWindowText(window)
if title == "Print":
do stuff
对于第二部,特别是第三部,我仍然不知道
目前没有回答
相关问题 更多 >
编程相关推荐