Имя процесса C #, но не как «chrome (.exe)», а как «Chrome» - PullRequest
1 голос
/ 26 апреля 2011

Может быть, странный вопрос, но я не знал, как его задать, надеюсь, я ясно изложил свою точку зрения в заголовке.

Код, который у меня есть:

    /// <summary>
    /// Get the process that is currently running on the foreground
    /// </summary>
    /// <returns>Proces object containing all information about the process that is running on the foreground</returns>
    public static Process GetCurrentRunningProcess()
    {
        Process[] processes = Process.GetProcesses();
        IntPtr activeWindow = GetForegroundWindow();

        foreach (Process process in processes)
        {
            if (process.MainWindowHandle == activeWindow)
                return process;
        }

        return null;
    }

    /// <summary>
    /// Get the Foreground Window using the user32.dll
    /// </summary>
    /// <returns>The handle of the window</returns>
    [DllImport("user32", SetLastError = true)]
    public static extern IntPtr GetForegroundWindow();

Это то, что я делаю сейчас, и я получаю процесс, содержащий ProcessName. В моем случае я получаю «Chrome», где я на самом деле хочу «Chrome» или когда у меня есть блокнот (.exe), я хочу «Блокнот». Есть ли способ добиться этого? Или мне нужно составить список с именами программ и сравнить его с ProcessName?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

То, что вы можете просто использовать, это Process.MainWindowTitle

0 голосов
/ 26 апреля 2011

По большей части таблица поиска лучше, чем попытка переформатировать имя исполняемого файла, так как многие программы не названы самым очевидным образом (Microsoft Word - WINWORD.exe).

Я не проверял Process.MainWindowTitle, но вы можете обнаружить, что он включает в себя имена открытых документов и другой мусор, который вам не нужен. Лучше всего проверить это, прежде чем пытаться что-нибудь необычное.

0 голосов
/ 26 апреля 2011

Как насчет замены "(.exe)" и преобразования первой буквы в верхнюю? Или я упускаю суть?

public string ToUpperFirstLetter(string source)
{
    if (String.IsNullOrEmpty(source))
        return String.Empty;
    // convert to char array of the string
    var letters = source.Replace(".exe", String.Empty).ToCharArray();
    // upper case the first char
    letters[0] = Char.ToUpper(letters[0], CultureInfo.CurrentCulture);
    // return the array made of the new char array
    return new string(letters);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...