问题描述
我们都熟悉打印窗口(例如按下 ctrl+p 或点击某些软件上的打印按钮时)。有没有办法在 Python 中弹出打印窗口时获得通知[捕捉任何信号](当用户尝试打印某些东西时)? 我已经尝试使用下面的代码来了解当前哪个窗口处于活动状态,但我认为打印窗口不属于活动窗口类别,因为什么也没有发生。
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,-1,1)
for job_info in job_tuple:
job = win.GetJob(hprinter,job_info["JobId"],win.JOB_INFO_1)
break
显然我们确实有 3 种类型的 Print-Popup-Window 类别:
第 1 部分的解决方案来自以下 Stack Overflow 帖子: Get text from popup window。 这需要一些修改:
import time,win32gui
while True:
window = win32gui.GetForegroundWindow()
title = win32gui.GetwindowText(window)
if title == "Print":
do stuff
对于 2 和特别是 3 我仍然没有任何想法
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)