#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