| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > FindFirstPrinterChangeNotification|FindNext... |
| Автор: Cyr 26.5.2008, 13:29 |
| Необходимо отслеживать появление нового принтера в системе. Взял с MSDN код, преобразовал в Delphi: program Project1; {$APPTYPE CONSOLE} uses SysUtils, Windows, WinSpool; { TODO -oUser -cConsole Main : Insert code here } var hPrinter:THANDLE; chgObject:THANDLE; pdwChange:DWORD; fcnreturn:BOOL; ppPrinterNotifyInfo: Pointer; begin chgObject := FindFirstPrinterChangeNotification(hPrinter, PRINTER_CHANGE_ALL, 0, nil); WaitForSingleObject(chgObject, INFINITE); fcnreturn := FindNextPrinterChangeNotification(chgObject, pdwChange, nil, ppPrinterNotifyInfo); if (fcnreturn) then begin // check value of *pdwChange and deal with the indicated change Writeln('Событие'); Writeln(pdwChange); end; end. Конечно же ничё не работает. Помогите заставить работать это. |
| Автор: _RIM_ 29.5.2008, 13:03 |
| Тебе важно само событие появления принтера? Можно запомнить кол-во принтеров уже имеющихся в системе - а потом сравнить новый полученный список со старым - и определить т.о. появление нового. Или можно отловить именно событие появления принтера и определить его имя. Что нужно в данном случае? объясни. а я тебе пример накидаю. |
| Автор: Cashey 2.6.2008, 10:24 |
| Cyr, не работает потому что ожидание должно работать в цикле. Пример можно посмотреть http://forum.vingrad.ru/forum/topic-211422.html там свои проблемы есть конечно, но тем не менее это ближе к успеху |