也许是一个奇怪的问题,但我真的不知道怎么问它,希望我在标题中说明我的观点。
我到目前为止的代码:
/// <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进行比较?
答案 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
,但您可能会发现它包含了您不想要的打开文档和其他垃圾的名称。最好在尝试任何想象之前进行测试。