こんにちわ初めて質問させていただきます。
Win2000でMFCを使って開発を行ってます。
印刷時にプリンタの状態をチェックしようと思ってます。
電源がOFFだったり紙切れとかのチェックです。
で、ヘルプを見るとGetPrinterで取得したPRINTER_INFO_2
という構造体のStatusに状態が返るということでやってみたところ、
構造体自体には値が入っているのですが、
電源がONであろうがOFFであろうがStatusには0が入ってます。
ヘルプやWebを見るとOSやドライバによって
取れたり取れなかったり?らしいのです。
そこで、取得方法がわかる方いらっしゃいましたら
よろしくお願いします。
せめてプリンタの機種と接続方法は書かないと、誰もわからないと思いますよ。。。
GetPrinter()関数は、成功してますか?
お返事ありがとうございます。
すいません。プリンタはHP LaserJet 4050 Series PCL 6で、
ネットワーク接続しています。
ローカルのUSB接続プリンタでもためしてみたのですが、
同じ結果でした。
以下のように取得しています。
//プリンタの状態を取得
LPPRINTER_INFO_2 printer;
DWORD dwTmp;
nRes = GetPrinter(handle, 2, NULL, 0, &dwTmp);
printer = (LPPRINTER_INFO_2)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY,
dwTmp);
nRet = GetPrinter(handle, 2, (LPBYTE)printer, dwTmp, &dwTmp);
if(nRet != 0)
{
//ここに取得処理
}
::HeapFree(::GetProcessHeap(), 0, printer);
これで、GetPrinter()は成功しています。
PRINTER_INFO_2構造体の
pPrinterName、pShareName、pPortName、pDriverName
などにも正常に値が返っているのですが、
Statusがウンともスンとも言わないのです。
何か取得方法が間違っているのでしょうか?
やったことないですが、MSDNをみて、必要なアクセス権を指定して
OpenPrinter 関数を呼び出してみたらどうかなと思ったのですが。
思っただけ・・・ごめんちゃい。