遇到一个棘手的问题,请各位帮我看看,完全没思路了。 先说说背景吧,就是一个监控打印机的程序,本来之前是每次只监控单个打印机的,基本功能我实现了,但最近被要求加功能,要求能同时监控多个打印机,我不知道该怎么做了。给大家说说我做监控单个打印机的思路吧:
EnumPrinter()检测系统中的打印机个数名称(name),将名称显示到界面供用户选择其希望监控的打印机
OpenPrinter(name,handle)能通过名字获取到该打印机的句柄
通过HANDLE hChange=FindFirstPrinterChangeNotification(handle,,,)来获得打印机状态发生变化时候的一个句柄,然后通过事件对象状态的设置,来实现一旦有打印行为发生的时候,就获取打印任务的信息。
这样实现监控功能,因为将打印机名字(name)传给OpenPrinter()来确定监控的对象是哪台打印机。
现在要实现对系统中所有的打印机进行监控怎么实现呢?多线程监控
EnumPrinter()检测系统中的打印机个数名称(name),将名称显示到界面供用户选择其希望监控的打印机
OpenPrinter(name,handle)能通过名字获取到该打印机的句柄
通过HANDLE hChange=FindFirstPrinterChangeNotification(handle,,,)来获得打印机状态发生变化时候的一个句柄,然后通过事件对象状态的设置,来实现一旦有打印行为发生的时候,就获取打印任务的信息。
这样实现监控功能,因为将打印机名字(name)传给OpenPrinter()来确定监控的对象是哪台打印机。
现在要实现对系统中所有的打印机进行监控怎么实现呢?多线程监控
hChange=FindFirstPrinterChangeNotification(handle,,,);
if(WaitForSingleObject(hChange,0U)==WAIT_OBJECT_0)
{
//监控到打印行为
}触发时间对象就需要打印机的name handle,所以这两个变量在触发之前得确定啊。
hChange=FindFirstPrinterChangeNotification(handle,,,);
if(WaitForSingleObject(hChange,0U)==WAIT_OBJECT_0)
{
//监控到打印行为
}触发时间对象就需要打印机的name handle,所以这两个变量在触发之前得确定啊。
WaitForMultipleObjects