玄関へお回り下さい。
プリンターの状態を取得する (1個)            (SNo.058)
使用コントロール Button1  ComboBox1
その他条件 WindowsVista  WindowsXP(SP2)  VB2005(EE)  Framework2.0
別途、必要によりComboBox1にプリンターの一覧を取得しておいて下さい
必要により、プロジェクト→参照の追加→.NET→で System.Management を追加しておいて下さい
プリンターの状態を取得

Private Sub Button1_Click(ByVal sender As System.Object, _
                         
ByVal e As System.EventArgs) Handles Button1.Click
   Dim ms As New System.Management.ManagementObjectSearcher("Select * from Win32_Printer")
   
Dim offLine As String
   
Dim priName As String
   
Dim port As String
   
For Each oPrinter As System.Management.ManagementObject In ms.Get()
      priName = oPrinter("Name").ToString()
      port = oPrinter("PortName").ToString()
     
If DirectCast(oPrinter("WorkOffline"), Boolean) = True Then
         offLine = "オフライン"
     
Else
         offLine = "準備完了"
     
End If
      Debug.WriteLine("----------------------------------------")
      Debug.WriteLine("プリンター名:" & priName)
      Debug.WriteLine("状態        :" & offLine)
      Debug.WriteLine("場所        :" & port)
   
Next oPrinter
End Sub

取得結果

電源断

----------------------------------------
プリンター名: EPSON PM - A840
状態: オフライン
場所: USB001
----------------------------------------
プリンター名:EPSON LASER LP-1400
状態: 準備完了
場所: LPT1


電源入り
----------------------------------------
プリンター名: EPSON PM - A840
状態: 準備完了
場所: USB001
----------------------------------------
プリンター名:EPSON LASER LP-1400
状態: 準備完了
場所: LPT1

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

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



2007/12/16


VBレスキュー(花ちゃん)
VB.NET2003  VB2005