-2

私の一生の間、コーディングが機能しない理由がわかりません。次のコーディングでは、ファイルがメモ帳で開いている場合はメッセージが表示されますが、ファイルがWordで開いている場合やExcelで開いている場合はメッセージが表示されません。

 Dim apps = 0
    Dim Process() As Process = System.Diagnostics.Process.GetProcesses
    For Each p As Process In Process
        If p.MainWindowTitle.ToString.Contains("test") Then
            If p.ProcessName = "notepad" Then
                MsgBox("test file is open in notepad")
                apps += 1
            ElseIf p.ProcessName = "winword" Then
                MsgBox("test file is open in word")
                apps += 1
            ElseIf p.ProcessName = "excel" Then
                MsgBox("test file is open in excel")
                apps += 1
            End If
        End If
    Next

    If apps = 0 Then
        'run my code
    End If

単語をチェックして優れているようには見えませんが、次のコーディングスニペットはどちらも機能しますか?

   Dim Process2() As Process = System.Diagnostics.Process.GetProcessesByName("winword")
    For Each p As Process In Process2
        If p.MainWindowTitle.Contains("test") Then
            MsgBox("test file is open in word")
        End If
    Next

   Dim Process2() As Process = System.Diagnostics.Process.GetProcessesByName("excel")
    For Each p As Process In Process2
        If p.MainWindowTitle.Contains("test") Then
            MsgBox("test file is open in excel")
        End If
    Next
4

1 に答える 1

2

p.ProcessNameは"WINWORD"->UpperCaseである
ため、 "winword"、->lowercaseをテストします。

テストをに変更します

if(String.Compare(p.ProcessName, "winword", true))
   .....

ケースを無視する

于 2012-06-16T12:44:51.570 に答える