Найти идентификатор процесса с помощью дескриптора окна
У меня проблема с получением определенного PID процесса,
проблема с этим процессом в том, что он скрытый процесс, который не отображается в диспетчере задач /powershell, полностью скрыт.
то, что я сделал далеко, является главным дескриптором окна этого процесса, вопрос в том, как я могу получить pid этого.
то, что я пытаюсь сделать, - это прочитать память этого процесса и отредактировать его, но не могу сделать этого без PID, я думаю (поскольку мне нужно получить его базовый адрес в памяти).
Итак, если у кого-то есть обходное решение или что-то для меня, это будет здорово.
P.S: этот процесс не отображается в Process.GetProcesses().
ти!
Ответы
Ответ 1
Вы можете использовать следующий Windows API:
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
Вы передаете HWND и используете параметр out для возврата PID.
Вы можете прочитать больше об этой функции здесь на MSDN.
Ответ 2
Вам нужно будет использовать P/invoke с Windows API.
Объявите функцию в своем классе, например
[DllImport("User32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
а затем вызовите его в своем классе.
См. PInvoke.