1

私は常にプロセスに問題があり、何らかの理由でプロセスが実行されているかどうかを確認できませんでした。Googleで見つけたコードのスニペットをすべて試しましたが、何も機能しませんでした。私も別のファイルを試しました。だから最後に私は助けを求めます:)ここにnotepad.exeさえ検出できなかった多くのスニペットがあります:

public bool IsProcessOpen(string name) {
    foreach (Process clsProcess in Process.GetProcesses()){
        if (clsProcess.ProcessName.Contains(name)){
            return true;
        }
    }
    return false;
}

私は明らかにメソッドを呼び出す方法を知っていますが、他のすべてのように、実行されているかどうかにかかわらず、すべてのファイルに対してfalseを返します。それはある種のバグですか?

4

5 に答える 5

3

だけなnotepad.exeので、は見つかりません。ProcessNamenotepad

ここに画像の説明を入力

次を使用して拡張機能をトリミングできます。

Path.GetFileNameWithoutExtension(name)

また、メソッド本体を 1 行に減らすこともできます。

return Process.GetProcessesByName(Path.GetFileNameWithoutExtension(name)).Length > 0;
于 2012-10-30T09:58:34.673 に答える
1

これは常に私のために働いています

if(Process.GetProcessesByName("notepad").Length == 0)
{
    // do stuff
}
于 2012-10-30T10:02:02.847 に答える
1

あなたの方法は大丈夫です。大文字と小文字に問題があるのではないでしょうか? if ステートメントで大文字にマッピングすることで、チェックを改善できます。

clsProcess.ProcessName.ToUpperInvariant().Contains(name.ToUpperInvariant())

次にnotepadNotepadNOTEPADはすべて という名前のプロセスに一致しますnotepad

于 2012-10-30T09:58:47.267 に答える
1

停止した作業プロセスでは機能しません。

于 2013-10-07T07:56:10.080 に答える