Получить Process по имени окна с#

Есть ли способ получить Process по имени окна этого процесса? Пример: в c++ есть функция FindWindow(), нужно нечто похожее в c#.

Process.GetProcessesByName("xxx"); ищет по имени процесса, а не по окна. Нужно нечто похожее, только ищущее по имени окна. Буду крайне признателен, если поможете:D


Ответы (2 шт):

Автор решения: aepot

Функции Win32 можно использовать в C#.

Можно импортировать функцию Win API:

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
static extern IntPtr FindWindow(IntPtr className, string windowName);

И вот так вызвать:

string windowName = "Название окна";
IntPtr hwnd = FindWindow(IntPtr.Zero, windowName);
if (hwnd != null)
{
    // здесь hwnd - указатель на дескриптор окна
    Console.WriteLine("Окно найдено");
}
else
{
    Console.WriteLine("Окно не найдено");
}

Дескриптор окна можно использовать с других функциях WinAPI, например ShowWindow и SetForegroundWindow.

[DllImport("user32.dll")]
static extern int SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
ShowWindow(hwnd, 9);
SetForegroundWindow(hwnd);
→ Ссылка
Автор решения: Ivan Acoola
static bool findapp()
    {
        var processesss = Process.GetProcessesByName("xxxx");
        if (processesss.Length <= 0)
        {
            return false;
        }
        else
        {
            for (int i = 0; i < processesss.Length; i++)
            {
                if (processesss[i].MainWindowTitle == "WindowName")
                {
                    return true;
                }

            }
            return false;
        }
    }
→ Ссылка