как получить ID процесса,зная только имя exe файла??
От: Black_  
Дата: 19.11.05 23:18
Оценка:
Re: как получить ID процесса,зная только имя exe файла??
От: krasin Россия  
Дата: 20.11.05 00:38
Оценка: 2 (1)
Здравствуйте, Black_, Вы писали:

Кратко: Process.GetProcesses(), Process.Modules, ProcessModule.FileName.
Точнее:

using System;
using System.Diagnostics;


namespace Temp2005
{
    class Program
    {
        static Process FindProcess(string fileName)
        {
            foreach (Process process in Process.GetProcesses())
            {
                Console.WriteLine(process.ProcessName);
                Console.WriteLine("---------------------------");
                try
                {
                    foreach (ProcessModule module in process.Modules)
                    {
                        Console.WriteLine(module.FileName);
                        if (module.FileName.ToLower().IndexOf(fileName.ToLower()) >= 0)
                        {
                            return process;
                        }
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Access denied");
                }
                Console.WriteLine();
            }
            throw new Exception(string.Format("Couldn't find process for module {0}", fileName));
        }

        [STAThread]
        static void Main()
        {
            try
            {
                Console.WriteLine(FindProcess("iexplore.exe"));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

    }
}
Re: как получить ID процесса,зная только имя exe файла??
От: IDecember Россия  
Дата: 21.11.05 06:47
Оценка: 3 (1)
Здравствуйте, Black_, Вы писали:
using System;
using System.Management;

class Class1
{
    [STAThread]
    static void Main(string[] args)
    {
        string queryString = "Win32_Process";
        string condition = "Name=\'Opera.exe\'";
        SelectQuery query = new SelectQuery(queryString, condition);
        ManagementObjectSearcher searcher =    new ManagementObjectSearcher(query);
        ManagementObjectCollection processes = searcher.Get();
        foreach (ManagementObject obj in processes)
        {
            Console.WriteLine(obj["ProcessID"]);
            Console.WriteLine(obj["Name"]);
        }
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.