C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: プリンタのポート番号を取得したい


(過去ログ 16 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■5788 / inTopicNo.1)  プリンタのポート番号を取得したい
  
□投稿者/ nana* (1回)-(2007/07/23(Mon) 19:56:57)

分類:[VB6 以前] 

新米プログラマです 宜しくお願いします。

プログラムを実行する端末に接続されているある特定のプリンタのポート番号をIPアドレス\ポート番号形式で取得したいと考えています。

このコーディングでは、ポート番号をIPアドレス\ポート番号形式で取得することが出来ずに困っています。
Dim X As Printer

For Each X In Printers
If X.DeviceName = "特定のプリンタ" Then
Set Printer = X
Exit For
End If
Next


WMIを使用すれば取得可能らしいのですが、WMIに関する技術力不足のため
他に取得する方法は無いか(例えばAPIを使用してレジストリの値を取得する等)調べています。


どなたかご存知の方がいらっしゃったら教えていただきたいです。
宜しくお願いします。
引用返信 編集キー/
■5791 / inTopicNo.2)  Re[1]: プリンタのポート番号を取得したい
□投稿者/ 魔界の仮面弁士 (355回)-(2007/07/23(Mon) 21:11:41)
2007/07/23(Mon) 21:12:09 編集(投稿者)
No5788 (nana* さん) に返信
> ある特定のプリンタのポート番号をIPアドレス\ポート番号形式で取得したいと考えています。
(中略)
> WMIを使用すれば取得可能らしいのですが、WMIに関する技術力不足のため

WMI でよければ、これでどうでしょう。


Option Explicit
Private Sub Form_Load()
    Dim prn As Object
    For Each prn In GetObject("winmgmts:").InstancesOf("Win32_Printer")
        Debug.Print "名前="; prn.Name
        Debug.Print "モデル="; prn.DriverName
        Debug.Print "ポート="; prn.PortName
        Debug.Print "---------------"
    Next
End Sub


http://msdn2.microsoft.com/en-us/library/Aa394363.aspx

引用返信 編集キー/
■5804 / inTopicNo.3)  Re[2]: プリンタのポート番号を取得したい
□投稿者/ nana* (2回)-(2007/07/24(Tue) 09:18:46)
No5791 (魔界の仮面弁士 さん) に返信
> 2007/07/23(Mon) 21:12:09 編集(投稿者)
>
> ■No5788 (nana* さん) に返信
>>ある特定のプリンタのポート番号をIPアドレス\ポート番号形式で取得したいと考えています。
> (中略)
>>WMIを使用すれば取得可能らしいのですが、WMIに関する技術力不足のため
>
> WMI でよければ、これでどうでしょう。
>
>
> Option Explicit
> Private Sub Form_Load()
> Dim prn As Object
> For Each prn In GetObject("winmgmts:").InstancesOf("Win32_Printer")
> Debug.Print "名前="; prn.Name
> Debug.Print "モデル="; prn.DriverName
> Debug.Print "ポート="; prn.PortName
> Debug.Print "---------------"
> Next
> End Sub
>
>
> http://msdn2.microsoft.com/en-us/library/Aa394363.aspx


魔界の仮面弁士 さんお返事ありがとうございます。

書き方が悪く 申し訳ありません。
自分がWMIについての理解が浅く、社内でも詳しいエンジニアが居ないようなので
後々の運用と開発の生産性を考えて WMIを使用せずに情報を取得したいと考えているのです。

やはり、難しいのでしょうか??
引用返信 編集キー/
■5809 / inTopicNo.4)  Re[3]: プリンタのポート番号を取得したい
□投稿者/ 中博俊 (1132回)-(2007/07/24(Tue) 10:08:07)
中博俊 さんの Web サイト
誰かがやらなければ誰もわからないですよね?
あえて難しいやり方をする方が簡単だなんて、哲学的ですね。

引用返信 編集キー/
■5810 / inTopicNo.5)  Re[3]: プリンタのポート番号を取得したい
□投稿者/ Moo (79回)-(2007/07/24(Tue) 10:16:18)
Moo さんの Web サイト
No5804 (nana* さん) に返信
> 自分がWMIについての理解が浅く、社内でも詳しいエンジニアが居ないようなので
> 後々の運用と開発の生産性を考えて WMIを使用せずに情報を取得したいと考えているのです。

「Windowsの管理」を考えるのであれば、まさしくWMIをおすすめします。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnwmi/htm/wmi.asp
を一読すれば考え方が変わるかもしれません
引用返信 編集キー/
■5814 / inTopicNo.6)  Re[4]: プリンタのポート番号を取得したい
□投稿者/ nana* (3回)-(2007/07/24(Tue) 10:49:18)
No5810 (Moo さん) に返信
> ■No5804 (nana* さん) に返信
>>自分がWMIについての理解が浅く、社内でも詳しいエンジニアが居ないようなので
>>後々の運用と開発の生産性を考えて WMIを使用せずに情報を取得したいと考えているのです。
>
> 「Windowsの管理」を考えるのであれば、まさしくWMIをおすすめします。
> http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnwmi/htm/wmi.asp
> を一読すれば考え方が変わるかもしれません


お返事ありがとうございます。


教えていただいたページを拝見しました。
WMIは、様々な情報が簡単に取得できて
開発者にとってはとても嬉しい機能ですね。


自分がやろうとしているのはごくフツウの帳票印刷です。
プリンタの稼動チェック部品の入力インターフェースがIPアドレス\ポート番号形式を指定しているので
なんとか情報を取得しようとしています。


APIは使用したプログラムがたくさん稼動している実績があるので
お客様も社内の人間もそんなに抵抗は無いと思うのですが
今までに実績が無い技術を利用するときは、
品質保証の観点と運用面・生産性から圧力がかかると予想し、何とか打開策は無いかと考えているところです。


個人的には、
十分な品質を確保できるだけの技術力が自分にあり、
運用と生産性から見て利益を確保できるなら
便利な技術は積極的に使用するべきと思っています。

引用返信 編集キー/
■5815 / inTopicNo.7)  Re[4]: プリンタのポート番号を取得したい
□投稿者/ れい (19回)-(2007/07/24(Tue) 11:03:25)
No5810 (Moo さん) に返信
> ■No5804 (nana* さん) に返信
>>自分がWMIについての理解が浅く、社内でも詳しいエンジニアが居ないようなので
>>後々の運用と開発の生産性を考えて WMIを使用せずに情報を取得したいと考えているのです。
>

「HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\」

ここに情報は入ってますから、
これを見ればわかりますが。

運用と開発の生産性を考えるならWMIを使うべきでしょう。
全てを理解する必要もないわけですし。

引用返信 編集キー/
■5818 / inTopicNo.8)  Re[5]: プリンタのポート番号を取得したい
□投稿者/ れい (20回)-(2007/07/24(Tue) 11:14:50)
No5814 (nana* さん) に返信
> 自分がやろうとしているのはごくフツウの帳票印刷です。
> プリンタの稼動チェック部品の入力インターフェースがIPアドレス\ポート番号形式を指定しているので
> なんとか情報を取得しようとしています。

もしかして、
ActiveDirectoryから取りたいとか、
NetBEUIとかNetBIOS over TCP/IPで探したいという話でしょうか?

だとするとWMIもレジストリもはずれなんですが。





引用返信 編集キー/
■5850 / inTopicNo.9)  Re[5]: プリンタのポート番号を取得したい
□投稿者/ Jitta (378回)-(2007/07/24(Tue) 21:52:08)
No5814 (nana* さん) に返信

 Win32_Printer では、プリンタの情報までしかわかりません。IP アドレスは、ポートが持っている情報ですので、Win32_Printer から PortName をキーに、Win32_TCPIPPrinterPort を引っ張ります。
http://msdn2.microsoft.com/en-us/library/aa394492.aspx

 ただ、これでとれるのは Standard TCP/IP Port だけです(名前からわかると思うけど)。メーカー独自のポートモニタを実装している場合、そっちからはとれません。

引用返信 編集キー/
■5961 / inTopicNo.10)  Re[6]: プリンタのポート番号を取得したい
□投稿者/ nana* (4回)-(2007/07/27(Fri) 11:01:57)
No5850 (Jitta さん) に返信
> ■No5814 (nana* さん) に返信
>
>  Win32_Printer では、プリンタの情報までしかわかりません。IP アドレスは、ポートが持っている情報ですので、Win32_Printer から PortName をキーに、Win32_TCPIPPrinterPort を引っ張ります。
> → http://msdn2.microsoft.com/en-us/library/aa394492.aspx
>
>  ただ、これでとれるのは Standard TCP/IP Port だけです(名前からわかると思うけど)。メーカー独自のポートモニタを実装している場合、そっちからはとれません。
>


遅くなりましたが・・・

お返事ありがとうございます。

色々検討した結果、教えていただいたWMIを使用することにしました。
レジストリから値をとることも出来たのですが、
今後の可溶性を考え、
(プリンタに設定されているコメントの情報が必要になるかもしれなくて・・
その場合、バッファから文字列を取得する処理が必要であり、処理が長くなる・・)
WMIを使用することにしました。
ご協力いただいたみなさん どうもありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -