1

我需要点击默认打印机更改通知,可以吗?

我的情况是,只要在窗口中更改默认打印机,我就想执行一个命令。我的命令所做的是,它只是从注册表中获取默认打印机信息并将其保存在 HKLM 中。

所以,我有这方面的服务。使用此服务,我如何在更改默认打印机时点击通知。我正在使用 C++。

4

2 回答 2

0

在常规应用程序中,我会监听一条WM_SETTINGCHANGE消息,然后调用GetDefaultPrinter以查看默认打印机是否已实际更改。

我不知道您是否可以从服务中查看该消息。默认打印机可以是每用户设置,因此您的服务必须作为该用户而不是本地系统运行。

于 2012-12-19T17:34:03.150 回答
0

拦截消息WM_WININICHANGE,然后获取新的打印机:

PRINTDLGW *pd;
pd = (PRINTDLGW *)malloc(sizeof(PRINTDLGW));
pd->lStructSize = sizeof(PRINTDLGW);
pd->hDevMode = NULL;
pd->hDevNames = NULL;
pd->Flags = PD_RETURNDEFAULT;
PrintDlgW(pd);
于 2019-12-13T15:00:34.387 回答