プリンタの状態を取得

[戻る]
なお 2002/04/12(金) 15:44:08
こんにちわ初めて質問させていただきます。

Win2000でMFCを使って開発を行ってます。
印刷時にプリンタの状態をチェックしようと思ってます。
電源がOFFだったり紙切れとかのチェックです。
で、ヘルプを見るとGetPrinterで取得したPRINTER_INFO_2
という構造体のStatusに状態が返るということでやってみたところ、
構造体自体には値が入っているのですが、
電源がONであろうがOFFであろうがStatusには0が入ってます。

ヘルプやWebを見るとOSやドライバによって
取れたり取れなかったり?らしいのです。
そこで、取得方法がわかる方いらっしゃいましたら
よろしくお願いします。

いもちぃ 2002/04/12(金) 15:51:53
せめてプリンタの機種と接続方法は書かないと、誰もわからないと思いますよ。。。

sugar 2002/04/12(金) 17:04:10
GetPrinter()関数は、成功してますか?

なお 2002/04/12(金) 21:06:59
お返事ありがとうございます。
すいません。プリンタは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がウンともスンとも言わないのです。
何か取得方法が間違っているのでしょうか?

さなえ 2002/04/12(金) 21:40:07
やったことないですが、MSDNをみて、必要なアクセス権を指定して
OpenPrinter 関数を呼び出してみたらどうかなと思ったのですが。
思っただけ・・・ごめんちゃい。

古いスレッドには追加発言できません。