none
VB6.0で作成し、VistaでPrintersコレクションを使う場合 RRS feed

  • 質問

  •  

    こんにちわ。

    VB6.0で作成した、以下のようなロジックを

    XP,VISTA(管理者権限)で実行すると、正常に値が出力されるのですが、

    このプログラムをサービスで起動した場合に、なぜか、0が返されてしまいます。

     

    Debug.Print Pinters.Count

     

    ※実際には、For Eachでプリンター一覧を取得し、指定されたプリンターで印刷するアプリですが、

    サービスで起動した場合に、指定したプリンターが取得できないので、調べてみたら、Printers.Countすら

    取得できていないことがわかりました。

    これをWindowsにAdministratorログインし、で実行したら正常に動作しました。

     

    何か手立てが必要でしょうか?または何か別の方法を検討しないといけないのでしょうか?

     

    以上、お願いいたします。

    2008年7月30日 12:14

回答

  • とりあえず、Printersコレクションが使えないっぽいので、

    WMIでPrinter情報を取得する方法でうまくいきました。

     

        Dim colPinters As Object

        Dim intPrtCount As Integer

      Set colPrinters = CreateObject("WbemScripting.SWbemLocator").ConnectServer _
              .ExecQuery("Select * From Win32_Printer")
      intPrtCount = colPrinters.Count

    2008年7月31日 5:10