Получить 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;
}
}