Определение имени или идентификатора активного окна

#windows #vb.net

#Windows #vb.net

Вопрос:

здравствуйте, я использую VB 2008

возможно ли получить имя или идентификатор активного окна?

например, у меня есть активное окно блокнота, теперь, как я могу получить его имя процесса или process?id (лучше идентификатор процесса)

Ответ №1:

Вам нужно использовать Pinvoke для выполнения некоторого Win32 API, чтобы получить всю эту информацию. Ниже приведена последовательность Pinvoke, которую вам нужно использовать.

  • GetForegroundWindow (чтобы получить дескриптор текущего активного окна — hwnd)
  • GetWindowThreadProcessId (чтобы получить идентификатор процесса и потока для hwnd, которые вы получили в вышеупомянутом вызове API)

Комментарии:

1. я получил эту ошибку: Предпринята попытка чтения или записи в защищенную память. Часто это указывает на то, что повреждена другая память.

2. Как вы используете второй Pinvoke? поскольку это API, который требует, чтобы вы передали указатель на него. См pinvoke.net/default.aspx/user32.getwindowthreadprocessid за использование этого из pinvoke