プリンタ接続の判別方法について – プログラミング – Home

プリンタ接続の判別方法について
 
通知
すべてクリア

[解決済] プリンタ接続の判別方法について


めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

EnumPrintersで取得したプリンタがローカル接続かネットワーク接続か
判別したいのですが、うまくいきません。
どなたかご教授願います。

※pPrinterInfoはEnumPritners()で取得したバッファを格納してあるPRINTER_INFO_2の
インスタンス。

DWORD dwAttribute = pPrinterInfo[i].Attributes &= PRINTER_ATTRIBUTE_LOCAL;
if(dwAttribute != PRINTER_ATTRIBUTE_LOCAL)
{
//はじく処理;
}

上記のようにしてみたのですが、すべてのプリンタがローカル接続だと判別してしまい
ます。
よろしくお願いします。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

PRINTER_INFO_2のメンバー変数からdwAttributeに取り出すところの処理がへん。
もし、パンチミスで無いのならもう一度良く見直すことをお勧めします。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

DWORD dwAttribute = pPrinterInfo[i].Attributes;

素直に上記のようにしてみたのですが、やはりうまくいきません。
ネットにもなかなか情報がなので
よろしければほかの方法をご教授願いますか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> DWORD dwAttribute = pPrinterInfo[i].Attributes;
> 素直に上記のようにしてみたのですが、

改悪。


返信引用
はぁ…
 はぁ…
(@はぁ…)
ゲスト
結合: 17年前
投稿: 1
 

if (pPrinterInfo[i].Attributes & PRINTER_ATTRIBUTE_LOCAL) {
//はじく処理;
}
でいいのでは?


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

ネットワーク接続という用語に混乱がないか確かめておいたほうがいいな

プリンタサーバ機が公開している共有プリンタに
(暗黙の) net use で接続する場合は「リモート」

LAN 接続プリンタに IP アドレスを直接指定して打ち出す場合は「ローカル」
(プリンタプロパティ画面でポートが Standard TCP/IP Port ならローカル)

最近の LAN 接続プリンタを使うのであればローカルなのが当たり前な気がするぞ


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

tetrapodさん、ありがとうございます。
ご指摘の通り、認識に間違いがありました。

Standard TCP/IP Port → PRINTER_ATTRIBUTE_NETWORK
Local Port → PRINTER_ATTRIBUTE_LOCAL
という認識でした。

Standard TCP/IP PortとLocal Portの判別を行いたいのですが、
PRINTER_INFO_2のメンバでは無理ということでしょうか?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

「&=」の用法についてちゃんと調べて理解する事がまず先決かと。
この辺は単純な文法の問題なので本で確認すればわかると思います。

プリンタの接続に関してはちゃんと仕様を抑えないと駄目でしょうねぇ。
あと、なんでローカル接続で無いと駄目なのかと言う部分の解説が無いと
この判断で良いかどうかの判定もできない気がしますね。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

うわっ、ニアミスだった。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ニアミスだけなのはあんまりなので。

PRINTER_INFO_2のpPortNameは使えない?
その物ズバリポートの名前だから判別できるのでは?

ちなみになぜStandard TCP/IP Portをはじきたいのかまで提示すれば、
別の案も出てくるかも。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

>ちなみになぜStandard TCP/IP Portをはじきたいのかまで提示すれば、
>別の案も出てくるかも。

特別なことはありません。
Local Port接続のプリンタ名を取得して、リストに列挙したいのです。

>PRINTER_INFO_2のpPortNameは使えない?
>その物ズバリポートの名前だから判別できるのでは?
すいません、情報提示不足でした。
上記方法は試行済みです。
ただ、Attributesメンバも使えそうたっだので、試していました。

上記方法でやるのが、無難そうですかね...


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> Local Port接続のプリンタ名を取得して、リストに列挙したいのです。

だから、どうして Local Port のだけ列挙したいのか? という疑問なのです。
「理由はない。なんとなく」なのでしょうか?


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

>> Local Port接続のプリンタ名を取得して、リストに列挙したいのです。
>
>だから、どうして Local Port のだけ列挙したいのか? という疑問なのです。
>「理由はない。なんとなく」なのでしょうか?

そそ。
私もそれが言いたかった。
Local Portだけを列挙すると言うことはそれ以外だと不都合があるとか
そういう話なのかなと。
もし別の方向でカバーできるならそこを気にしなくても良いのでは
と言う話です。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

>だから、どうして Local Port のだけ列挙したいのか? という疑問なのです。
Local Port接続のプリンタ名を列挙する、という仕様だからです。


返信引用
めがね
 めがね
(@めがね)
ゲスト
結合: 17年前
投稿: 18
Topic starter  

なにもないようなので解決にしちゃいます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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