Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
gvozd1989
-
- Новичок
-
-
- Сообщения: 38
- Зарегистрирован: 13.01.2005 (Чт) 9:16
- Откуда: Украина
-
gvozd1989 » 15.12.2005 (Чт) 15:10
Можно ли получить hWnd главного окна программы, либо всех окон программы, зная PID процесса?
-
Twister
-
- Теоретик
-
-
- Сообщения: 2251
- Зарегистрирован: 28.06.2005 (Вт) 12:32
- Откуда: Алматы
-
Twister » 15.12.2005 (Чт) 15:15
Нужно перебрать все окна, принадлежащие к данному процессу...
А я все практикую лечение травами...
-
Twister
-
- Теоретик
-
-
- Сообщения: 2251
- Зарегистрирован: 28.06.2005 (Вт) 12:32
- Откуда: Алматы
-
Twister » 15.12.2005 (Чт) 15:18
- Код: Выделить всё
Declare Function EnumThreadWindows Lib "user32" Alias "EnumThreadWindows" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long
Кажись то, что нужно...
А я все практикую лечение травами...
-
gvozd1989
-
- Новичок
-
-
- Сообщения: 38
- Зарегистрирован: 13.01.2005 (Чт) 9:16
- Откуда: Украина
-
gvozd1989 » 15.12.2005 (Чт) 15:50
Но тут TreadID, а не ProcessID. Попробовал пример из API-Guide, но там в функцию передается hWnd, а мне он неизвестен.
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 15.12.2005 (Чт) 15:54
gvozd1989 писал(а):Но тут TreadID, а не ProcessID.
Ну? PID характеризует процесс, а не трэд. Находишь процесс, находишь все его нити и для каждой нити находишь все его окна.
Lasciate ogni speranza, voi ch'entrate.
-
gvozd1989
-
- Новичок
-
-
- Сообщения: 38
- Зарегистрирован: 13.01.2005 (Чт) 9:16
- Откуда: Украина
-
gvozd1989 » 15.12.2005 (Чт) 16:06
А можно поподробнее, какими функциями находить нити, и что передавать в параметры в EnumThreadWindows?
-
Twister
-
- Теоретик
-
-
- Сообщения: 2251
- Зарегистрирован: 28.06.2005 (Вт) 12:32
- Откуда: Алматы
-
Twister » 15.12.2005 (Чт) 16:48
GetWindowThreadProcessId
Вообщем глянь пример, все станет ясно...
- Код: Выделить всё
'in a form
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim ThreadID As Long, ProcessID As Long ' receive id to thread and process of Form1
' Determine the thread which owns this window
ThreadID = GetWindowThreadProcessId(Me.hWnd, ProcessID)
' Use the callback function to list all of the enumerated thrad windows
EnumThreadWindows ThreadID, AddressOf EnumThreadWndProc, 0
'Show the results
Me.AutoRedraw = True
Me.Print sClasses
End Sub
'In a module
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Declare Function EnumThreadWindows Lib "user32" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
'variable used to list all the classnames
Public sClasses As String
Public Function EnumThreadWndProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
Dim Ret As Long, sText As String
'create a string-buffer
sText = Space(255)
'get the classname of the window handle
Ret = GetClassName(hWnd, sText, 255)
'cut off the unnecessary part of Chr$(0)'s
sText = Left$(sText, Ret)
'add this classname to the list of classnames
sClasses = sClasses + sText + vbCrLf
'continue the enumeration
EnumThreadWndProc = 1
End Function
А я все практикую лечение травами...
-
gvozd1989
-
- Новичок
-
-
- Сообщения: 38
- Зарегистрирован: 13.01.2005 (Чт) 9:16
- Откуда: Украина
-
gvozd1989 » 15.12.2005 (Чт) 17:28
Пример я смотрел, но в том-то и дело, что в
- Код: Выделить всё
ThreadID = GetWindowThreadProcessId(Me.hWnd, ProcessID)
передается hWnd.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 172