我需要点击默认打印机更改通知,可以吗?
我的情况是,只要在窗口中更改默认打印机,我就想执行一个命令。我的命令所做的是,它只是从注册表中获取默认打印机信息并将其保存在 HKLM 中。
所以,我有这方面的服务。使用此服务,我如何在更改默认打印机时点击通知。我正在使用 C++。
我需要点击默认打印机更改通知,可以吗?
我的情况是,只要在窗口中更改默认打印机,我就想执行一个命令。我的命令所做的是,它只是从注册表中获取默认打印机信息并将其保存在 HKLM 中。
所以,我有这方面的服务。使用此服务,我如何在更改默认打印机时点击通知。我正在使用 C++。
在常规应用程序中,我会监听一条WM_SETTINGCHANGE
消息,然后调用GetDefaultPrinter
以查看默认打印机是否已实际更改。
我不知道您是否可以从服务中查看该消息。默认打印机可以是每用户设置,因此您的服务必须作为该用户而不是本地系统运行。
拦截消息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);