Определение PID текущего окна

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ParserDSS
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 10.02.2008 (Вс) 12:54

Определение PID текущего окна

Сообщение ParserDSS » 22.02.2008 (Пт) 21:14

Вопрос: как определить PID активного окна. Т.е. К примеру, запустил я блокнот, консоль и что-то ещё. Тыкнул в блокнот - как определить PID блокнота? А потом тыкнул консоль - как определить PID консоли.

На сколько я понимаю, нужно поставить таймер, и отлавливать PID активного окна. А, к примеру, в label это дело отображать. Только вот как отлавливать...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 22.02.2008 (Пт) 21:41

PID окна? Это какой-то новый термин?

PID принято понимать как Process IDentifier (process id). К окну это никакого отношения не имеет. Однако, по манипулятору окна (window handle, HWND) можно получить ID соотв. потока и/или процесса -- GetWindowThreadProcessId
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

ParserDSS
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 10.02.2008 (Вс) 12:54

Сообщение ParserDSS » 22.02.2008 (Пт) 22:00

Т.е. PID процесса.

ParserDSS
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 10.02.2008 (Вс) 12:54

Сообщение ParserDSS » 23.02.2008 (Сб) 9:40

Более или менее разобрался, только вот как получить ID процесса из HWND

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 23.02.2008 (Сб) 9:42

ParserDSS писал(а):Более или менее разобрался, только вот как получить ID процесса из HWND


Во втором посте BV написал как!

ParserDSS
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 10.02.2008 (Вс) 12:54

Сообщение ParserDSS » 23.02.2008 (Сб) 9:55

Видел, но что-то не понял: получаемый результат не соответствует тому, что отображает диспетчер задач.

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 23.02.2008 (Сб) 10:01

Раз: http://msdn2.microsoft.com/en-us/library/ms633522.aspx
Два:
Код: Выделить всё
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Sub Command1_Click()
Dim pid As Long, tid As Long

tid = GetWindowThreadProcessId(Me.hwnd, pid)

MsgBox "Process ID: " & pid & vbCrLf & _
                "Thread ID: " & tid
End Sub

ParserDSS
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 10.02.2008 (Вс) 12:54

Сообщение ParserDSS » 23.02.2008 (Сб) 15:25

Всё, разобрался, спасибо


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 76

    TopList