tagCANDY CGI VBレスキュー(花ちゃん) - WMIで通常使うプリンターを取得及びプリンターの状態を取得(VB6.0) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
WMIで通常使うプリンターを取得及びプリンターの状態を取得(VB6.0)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

WMIで通常使うプリンターを取得及びプリンターの状態を取得(VB6.0) [No.258の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2010/03/09 19:09
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[印刷関係][周辺機器][ダイアログ]                                    *
* キーワード:ぷりんたーの状態,準備完了,オフライン,通常使うプリンタ,Win32_Printer *
***********************************************************************************
タイトル : プリンタの状態を取得する
記 事 No : 14505
投 稿 日 : 2010/03/01(Mon) 18:56
元質問者 : ころまつ  

プリンタの状態をWin2000にて取得できるコツはありませんか?
ダイアログボックスの中に「状態」があるのですが、それを取得できる
方法がわかりません・・・

--------------------------------------------------------------------------------------
記事No : 14509
投稿日 : 2010/03/02(Tue) 01:18
投稿者 : 花ちゃん  
--------------------------------------------------------------------------------------
> ダイアログボックスの中に「状態」があるのですが、それを取得できる

状態 って下記の事でよかったのですよね。
http://hanatyan.sakura.ne.jp/dotnet/Prt13.htm

VB6.0 なら下記のような感じで取得できます。
Private Sub Command1_Click()
On Error Resume Next
   Dim objWMIService As Object
   Dim colItems      As Object
   Dim objItem       As Object
   Dim strComputer   As String
   Dim strOSType     As String
   Text1.Text = ""
   strComputer = "."
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
   Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer", , 48)

   For Each objItem In colItems
      Text1.Text = Text1.Text & "Name: " & objItem.Name & vbCrLf
      If objItem.Default = True Then
         Text1.Text = Text1.Text & "通常使うプリンターです" & vbCrLf
      Else
         Text1.Text = Text1.Text & "通常使うプリンターではありません" & vbCrLf
      End If
      If objItem.WorkOffline = True Then
         Text1.Text = Text1.Text & "オフライン" & vbCrLf
      Else
         Text1.Text = Text1.Text & "準備完了" & vbCrLf
      End If
      Text1.Text = Text1.Text & "場 所 : " & objItem.PortName & vbCrLf
      Text1.Text = Text1.Text & "PrinterStatus: " & objItem.PrinterStatus & vbCrLf
      Text1.Text = Text1.Text & String$(60, "-") & vbCrLf
   Next
End Sub

Windows Vista VB6.0(SP6) の私の環境での取得結果
------------------------------------------------------------
Name: Microsoft XPS Document Writer
通常使うプリンターではありません
準備完了
場 所 : XPSPort:
PrinterStatus: 3
------------------------------------------------------------
Name: EPSON PM-A840
通常使うプリンターではありません
オフライン
場 所 : USB002
PrinterStatus: 3
------------------------------------------------------------
Name: EPSON PM-3700C (M)
通常使うプリンターではありません
オフライン
場 所 : USB003
PrinterStatus: 3
------------------------------------------------------------
Name: EPSON LP-1400
通常使うプリンターです
準備完了
場 所 : USB001
PrinterStatus: 3
------------------------------------------------------------

上記のリンク先にも書いていますが、誤解があるといけないので、こちらへも書いておきます。

アプリの印刷のボタンをクリックした時に表示される印刷のダイアログボックスのプリンターの
状態を取得、Excel・Word 等多くのソフトはPrinterStatus の値を表示しているようです。
これは、繋がっていなかっても、電源がOFF でも  3(準備完了) が表示されます。

IE や メモ帳のダイアログでは、WorkOffline の状態を表示しています。
WorkOffline の状態なら、電源がOFF や接続されているか、判断できるようです。
(但し、プリンターによってやパラレル接続等でうまく取得できない場合があります)

参考図(画像をクリックすると元のサイズで見る事ができます。)
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ