2

私は ac#/soap/php プロジェクトに取り組んでいます。このプロジェクトでは、php Web インターフェイスが SOAP 要求を実行して、コンソール アプリケーションが実行されているかどうかを判断します。

SOAP 要求は、プロセスを取得する関数を呼び出し、ループしてプロセス名に が含まれているかどうかを判断しますEmailServerEmailServer.exeただし、タスクマネージャーでプロセスを確認できても、これは見つかりません。また、どのプロセスが配列にあり、EmailServer がそこにないかを調べることができるように、ブレークポイントを設定しました。

.net Framework 3.5 で Windows 7 x64 を実行しており、管理者アカウントとしてログインしているため、アクセス許可の問題になることはありません。

以下は、タスク マネージャーで実行中のプロセスを示すスクリーンショットです。ここに画像の説明を入力

以下は、プロセスリストを取得するコードです

public bool checkIfProcessIsRunning()
        {
            Process[] processes = Process.GetProcesses();
            foreach (Process process in processes)
            {
                if (process.ProcessName.ToLower().Contains("EmailServer"))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            return false;
        }

ご協力いただきありがとうございます。

4

2 に答える 2

10

process.ProcessName.ToLower().Contains("EmailServer")

すべて小文字の文字列に大文字の文字列が含まれているかどうかを確認しています。

于 2012-08-03T18:17:26.567 に答える
2

代わりにこれを使用してください:process.ProcessName.IndexOf("EmailServer", StringComparison.OrdinalIgnoreCase) > -1

使用することもできます

if(Process.GetProcessesByName("EmailServer").Count() > 0)

または単に

public bool checkIfProcessIsRunning(){
    return Process.GetProcessesByName("EmailServer").Any();
}
于 2012-08-03T18:24:34.047 に答える