ここで私がやろうとしているのは、Microsoft Lync が実行されているかどうかを確認するサービスを作成することです。実行中の場合は、イベントログに書き込むだけです。実行されていない場合は、exe を実行してから、Lync にログインします。私が得ている問題は、exeを実行するときが来て、プロセスを開始しますが、実際にアプリを実行することはありません。メモ帳で動作するかどうかを確認しようとしましたが、タスク マネージャーでプロセスを作成するだけで、実際のアプリを開くことはありませんでした。
Imports System
Imports System.Data
Imports System.Timers
Imports System.Diagnostics
Imports System.Data.SqlClient
Imports System.ServiceProcess
Imports System.Windows.Forms
Public Class Service1
Protected Overrides Sub OnStart(ByVal args() As String)
EventLog.WriteEntry("In Onstart", "starting timer")
Timer1.Start()
End Sub
Protected Overrides Sub OnStop()
End Sub
Private Sub Timer1_Elapsed(ByVal sender As System.Object,
ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
If IsProcessRunning("communicator") Then
EventLog.WriteEntry("no problem")
Else
EventLog.WriteEntry("not running")
Dim info As New ProcessStartInfo("C:\Program Files (x86)\Microsoft Lync\communicator.exe")
info.UseShellExecute = False
info.RedirectStandardError = True
info.RedirectStandardInput = True
info.RedirectStandardOutput = True
info.CreateNoWindow = True
info.ErrorDialog = False
info.WindowStyle = ProcessWindowStyle.Hidden
Dim process__1 As Process = Process.Start(info)
End If
End Sub
Public Function IsProcessRunning(ByVal name As String) As Boolean
For Each clsProcess As Process In Process.GetProcesses()
If clsProcess.ProcessName.StartsWith(name) Then
Return True
End If
Next
Return False
End Function
End Class