Есть ли способ получить идентификатор процесса невыбранного форфорда окна на дополнительном экране - PullRequest
0 голосов
/ 12 июня 2019

Windows Api рассматривает текущий активный / выбранный процесс как единственный процесс переднего плана, мне нужно сосредоточиться на приложении, работающем на моем другом экране (если текущий процесс активен на основном экране, я хочу сфокусировать приложение переднего плана в второй экран и наоборот)

В настоящее время я могу дать выбор любому процессу.

Process currentProcess  = Process.GetProcessById(2612);
var hWnd = currentProcess.MainWindowHandle;
if (hWnd != IntPtr.Zero)
{
   SetForegroundWindow(hWnd);
}
[DllImport("user32.dll")]
internal static extern IntPtr SetForegroundWindow(IntPtr hWnd);

Есть ли способ найти идентификатор процесса приложения, запущенного на другом экране?

1 Ответ

1 голос
/ 12 июня 2019

Есть ли способ найти идентификатор процесса на основе координат экрана?

Да.Вы можете получить дескриптор окна из координат (убедитесь, что окно видно в точке на дополнительном экране) с помощью WindowFromPoint.Затем вы можете получить как processId, так и threadId, связанный с дескриптором, с помощью GetWindowThreadProcessId

GetWindowThreadProcessId(WindowFromPoint(Point),ref ProcessId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...