Может быть, странный вопрос, но я не знал, как его задать, надеюсь, я ясно изложил свою точку зрения в заголовке.
Код, который у меня есть:
/// <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?