プリンタの状態を取得 – プログラミング – Home

通知
すべてクリア

プリンタの状態を取得


なお
 なお
(@なお)
ゲスト
結合: 25年前
投稿: 35
Topic starter  

こんにちわ初めて質問させていただきます。

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

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


引用解決済
トピックタグ
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

せめてプリンタの機種と接続方法は書かないと、誰もわからないと思いますよ。。。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

GetPrinter()関数は、成功してますか?


返信引用
なお
 なお
(@なお)
ゲスト
結合: 25年前
投稿: 35
Topic starter  

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


返信引用
さなえ
 さなえ
(@さなえ)
ゲスト
結合: 23年前
投稿: 24
 

やったことないですが、MSDNをみて、必要なアクセス権を指定して
OpenPrinter 関数を呼び出してみたらどうかなと思ったのですが。
思っただけ・・・ごめんちゃい。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました