リモート スプーラでジョブを監視しようとしています。これには以下のコードを使用しています。実際に何かを印刷すると、MyChangeCallback が呼び出され、正常に処理を進めることができます。ただし、印刷ダイアログの「ファイルに出力」ボックスにチェックマークを付けると、コールバックは呼び出されません。「ファイルに出力」が選択されていても機能させる方法はありますか?
// Callback definition
VOID MyChangeCallback(PVOID lpParameter, BOOLEAN TimerOrWaitFired)
{
DEBUG("Change notification received");
HANDLE hChange = *((HANDLE*)lpParameter));
// Call FindNextPrinterChangeNotification with hChange
...
}
int main() {
HANDLE hPrinter = 0;
OpenPrinter(L"\\MyPrintServer\\SharedPrinter", &hPrinter, NULL);
HANDLE hChange = FindFirstPrinterChangeNotification( hPrinter,
PRINTER_CHANGE_ALL,
0,
NULL);
HANDLE hNewWaitObj = 0;
RegisterWaitForSingleObject( &hNewWait,
hChange,
MyChangeCallback,
(PVOID)&hChange,
INFINITE,
WT_EXECUTEDEFAULT);
// Wait for events
Sleep(INFINITE);
}