tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
WMIで通常使うプリンターを取得及びプリンターの状態を取得(VB6.0) ( No.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 や接続されているか、判断できるようです。
(但し、プリンターによってやパラレル接続等でうまく取得できない場合があります)

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



 [スレッド一覧へ] [親スレッドへ]