2015-08-07 11 views
1

Мне нужно определить, запущена ли служба диспетчера очереди печати. Я могу найти различные ресурсы для VB.NET (например, используя ServiceProcess.ServiceController для фактического управления сервисом), но ничего для VB6.Проверка состояния диспетчера очереди печати (работает или нет)

Есть ли способ проверить, работает ли диспетчер очереди печати в VB6? И в идеале начать его, но я могу выжить без этого.

ответ

3

Мы используем wmi в VBA/VB6/VBScript и командной строке.

В этом списке процессов

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_Process") 
For Each objItem in colItems 
     msgbox objitem.name & " PID=" & objItem.ProcessID & " SessionID=" & objitem.sessionid 
'  objitem.terminate 
Next 

Это напечатано командную строку.

wmic process get 

Глядишь вы можете получить методы VBS/свойства, используя Wmic помощь

Wmic /? wmic process /? wmic process get /?

Так wmic service get caption,status

так

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * From Win32_Service") 
For Each objItem in colItems 
     msgbox objitem.name & " " & objitem.status 
Next 
2

Поскольку есть только один 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 
+0

Ooh, еще проще - благодаря –

1

Оба ответа уже размещен хороший (и будет решать эту проблему), но я просто хотел, чтобы ответить на мой собственный вопрос, чтобы включить ответ заданного в другом месте (по пользователя Бонни Запада над на VBForums.com), поскольку это дает дополнительный подход, и, вероятно, полезно для всех, кто считает этот вопрос:

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 

Source