C#进程名称,但不像'chrome(.exe)'但像'Chrome'

时间:2011-04-26 14:34:43

标签: c# process

也许是一个奇怪的问题,但我真的不知道怎么问它,希望我在标题中说明我的观点。

我到目前为止的代码:

    /// <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的Process。在我的情况下,我得到'铬'我真的想要'Chrome'或当我有记事本(.exe)我想要记事本。有没有办法实现这个目标?或者我是否必须列出包含程序名称的列表并将其与ProcessName进行比较?

3 个答案:

答案 0 :(得分:0)

如何替换“(。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);
}

答案 1 :(得分:0)

您可以使用的是Process.MainWindowTitle

答案 2 :(得分:0)

在大多数情况下,查找表比尝试重新格式化可执行文件名更好,因为很多程序都没有以明显的方式命名(Microsoft Word是WINWORD.exe)。

我没有测试Process.MainWindowTitle,但您可能会发现它包含了您不想要的打开文档和其他垃圾的名称。最好在尝试任何想象之前进行测试。