2012-06-16 10 views
-2

Для жизни меня не видно, почему мое кодирование не работает. Следующее кодирование дает мне сообщение, если файл открыт в блокноте, но это не так, если файл открыт в слове или 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 
+0

Что с '' .ToString' после MainWindowTitle' в первом примере? –

+0

Вы пытались отладить?! Я рекомендую, чтобы вы это сделали, тогда вы обнаружите очень легко, в чем проблема –

ответ

2

Поскольку p.ProcessName является "WINWORD" -> UpperCase
вы проверить на "WinWord", -> в нижнем регистре.

изменить тесты для

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

игнорировать регистр

Смежные вопросы