2

Print Spooler サービスが実行されているかどうかを検出する必要があります。VB.NET のさまざまなリソースを見つけることができます (たとえば、ServiceProcess.ServiceController実際にサービスを操作するために使用します) が、VB6 のリソースはありません。

印刷スプーラーが VB6 で実行されているかどうかを確認する方法はありますか? そして理想的にはそれを開始しますが、私はそれなしで生き残ることができます.

4

3 に答える 3

2

は 1 つしかないため、単一のインスタンスのクラスをPrint Spoolerクエリできます。Win32_Service次に、Startedプロパティをチェックして、開始/実行中かどうかを判断します。

Set objSpooler = GetObject("winmgmts:root\cimv2:Win32_Service.Name='Spooler'")

If objSpooler.Started Then
    MsgBox "Print Spooler is running."
Else
    MsgBox "Print Spooler is NOT running."
End If
于 2015-08-07T13:37:35.513 に答える
1

すでに投稿された両方の回答は適切です(そして問題を解決します)が、私は自分の質問に答えて、他の場所(VBForums.comのユーザーBonnie Westによる)の回答を組み込みたいと思いました。これは、追加のアプローチを提供し、おそらく役立つからです。この質問を見つけた他の人のために:

Option Explicit 'In a standard Module

Private Sub Main()
    With CreateObject("Shell.Application")  'Or New Shell if Microsoft Shell Controls And Automation is referenced
        If .IsServiceRunning("Spooler") Then
            .ServiceStop "Spooler", False
        Else
            .ServiceStart "Spooler", False
        End If
    End With
End Sub

ソース

于 2015-08-07T15:27:51.953 に答える