Hi!
Es gibt verschiedene Beispiele in der MSDN... Hier mal eins:
Basiert auf der MSDN. Hiermit kann man ein VB Programm als Dienst (Service) starten. Zum installieren muss das Programm mit dem Parameter "-install" gestartet werden, zum deinstallieren mit dem Parameter "-uninstall"
'-------------- Anfang Projektdatei SAMPLE.VBP --------------
'------ Anfang Formular "ServiceMain" alias sample.Frm ------
'Basiert auf einem Code aus der MSDN-Library.
'(C) MSDN
'TITLE: An OLE Control for Creating Win32 Services in Visual Basic
'Mauricio Ordóñez
'Microsoft Consulting Services
'June 1996
Option Explicit
Private Sub Form_Load()
On Error GoTo Err_Load
Dim strDisplayName As String
Dim bStarted As Boolean
strDisplayName = NTService1.DisplayName
StatusBar.Panels(1).Text = "Starte..."
' Befehle zur Interaktion mit dem Desktop
If Command = "-install" Then
'Installieren
NTService1.Interactive = True
If NTService1.Install Then
Call NTService1.SaveSetting("Parameters", _
"TimerInterval", "1000")
MsgBox strDisplayName & " erfolgreich installiert."
Else
MsgBox strDisplayName & " konnte nicht installiert werden."
End If
End
ElseIf Command = "-uninstall" Then
'Deinstallieren
If NTService1.Uninstall Then
MsgBox strDisplayName & " erfolgreich deinstalliert."
Else
MsgBox strDisplayName & " konnte nicht deinstalliert werden."
End If
End
ElseIf Command = "-debug" Then
NTService1.Debug = True
ElseIf Command <> "" Then
MsgBox "Unbekannter Kommandozeilenparameter"
End
End If
StatusBar.Panels(1).Text = "Lade Konfiguration"
Dim parmInterval As String
parmInterval = NTService1.GetSetting("Parameters", _
"TimerInterval", "2000")
Timer.Interval = CInt(parmInterval)
' Pause/Fortfahren muss initialisiert werden, bevor
' StartService aufgerufen wurde oder man sich im
' Design Modus befindet
StatusBar.Panels(1).Text = "Steuerungsmodus aktiviert"
NTService1.ControlsAccepted = svcCtrlPauseContinue
' Service zum "Windows NT services controller" verbinden
StatusBar.Panels(1).Text = "Starte Verbindung"
NTService1.StartService
Err_Load:
If NTService1.Interactive Then
MsgBox "[" & Err.Number & "] " & Err.Description
End
Else
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" _
& Err.Number & "] " & Err.Description)
End If
End Sub
Private Sub NTService1_Continue(Success As Boolean)
On Error GoTo Err_Continue
Timer.Enabled = True
StatusBar.Panels(1).Text = "Fortgefahren"
Success = True
Call NTService1.LogEvent(svcEventInformation, svcMessageInfo, _
"Service fortgefahren")
Err_Continue:
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" & _
Err.Number & "] " & Err.Description)
End Sub
Private Sub NTService1_Control(ByVal e As Long)
On Error GoTo Err_Control
StatusBar.SimpleText = NTService1.DisplayName & " " &_
"Steuerungssignal " & e
Err_Control:
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" & _
Err.Number & "] " & Err.Description)
End Sub
Private Sub NTService1_Pause(Success As Boolean)
On Error GoTo Err_Pause
Timer.Enabled = False
StatusBar.Panels(1).Text = "Pausiert"
Call NTService1.LogEvent(svcEventError, svcMessageError, "Service " &_
"pausiert")
Success = True
Err_Pause:
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" & _
Err.Number & "] " & Err.Description)
End Sub
Private Sub NTService1_Start(Success As Boolean)
On Error GoTo Err_Start
StatusBar.Panels(1).Text = "Ok"
Success = True
Err_Start:
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" & _
Err.Number & "] " & Err.Description)
End Sub
Private Sub NTService1_Stop()
On Error GoTo Err_Stop
StatusBar.Panels(1).Text = "Gestoppt"
Unload Me
Err_Stop:
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" & _
Err.Number & "] " & Err.Description)
End Sub
Private Sub Timer_Timer()
On Error GoTo Err_Timer
StatusBar.Panels(2).Text = Format(Now(), "hh:mm:ss")
Err_Timer:
Call NTService1.LogEvent(svcMessageError, svcEventError, "[" & _
Err.Number & "] " & Err.Description)
End Sub
'------- Ende Formular "ServiceMain" alias sample.Frm -------
' Die Komponente COMCTL32.OCX wird benötigt.
' Die Komponente ntsvc-1.ocx wird benötigt.
'-------- Anfang Modul "declares" alias declares.bas --------
Public Declare Sub DebugBreak Lib "kernel32" ()
'--------- Ende Modul "declares" alias declares.bas ---------
'--------------- Ende Projektdatei SAMPLE.VBP --------------- Gruss
Michael |