Сканирование окон в Windows

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

Сканирование окон в Windows

Сообщение Alex_Security » 29.07.2008 (Вт) 11:12

Люди помогите плиз, как можно просканировать все окна в системе и вывести их hwnd к примеру в listbox? Заранее спасибо.[/list]

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.07.2008 (Вт) 11:16

Что уже было сделано?
Lasciate ogni speranza, voi ch'entrate.

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 11:18

Я вообще писал прогу для управления окнами в винде. Короче по заголовку. Но посеял проект, терь хочу написать заново, только получше. А так ни чё небыло сделанно

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2008 (Вт) 11:20

Ну начни с EnumWindows
Весь мир матрица, а мы в нем потоки байтов!

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 11:38

Какие параметры указать? Я чё то не врублюсь
ByVal lpEnumFunc
ByVal lParam

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2008 (Вт) 11:44

Alex_Security, а описание что не позволяет прочитать? Первый параметр - указатель на callback-функцию, второй параметр указывает на передаваемое в эту функцию значение.
Весь мир матрица, а мы в нем потоки байтов!

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 11:53

А больше никак?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.07.2008 (Вт) 12:01

Может перебирать числа от 0 до 4 миллиардов.
Lasciate ogni speranza, voi ch'entrate.

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 12:02

А можно пример. please

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2008 (Вт) 12:02

А этот способ чем не подходит? Можно конечно GetWindow вызывать последовательно, но это не есть гуд.
Весь мир матрица, а мы в нем потоки байтов!

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 12:04

В смысле hwnd перебирать

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2008 (Вт) 12:06

Alex_Security писал(а):А можно пример. please
Пример чего? Перебора чисел от 0 до 4-х миллиардов? :D
Весь мир матрица, а мы в нем потоки байтов!

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 12:10

кода, не получается, vb вылетает

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 12:22

Дайте код :roll:

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 29.07.2008 (Вт) 12:22

этот способ чем не подходит? Можно конечно GetWindow вызывать последовательно, но это не есть гуд.
Как раз-таки наоборот! EnumWindows() в итоге вызывает NtUserBuildHwndList(), а некоторые "нехорошие" дяди научились её перехватывать и исключать свои окна из списка. А GetWindow() манипулирует списками окон непосредственно, даже не вызывая ядерные функции - эти списки отмаплены в АП каждого GUI-процесса. Посему я рекомендую именно GetWindow() - быстрее и надежнее.

Если есть желание копнуть по-глубже, можете почитать мою статью на тему окон... :wink:

ЗЫ: А вот на крики "дайте код" врядли кто-то ответит.
Последний раз редактировалось Twister 29.07.2008 (Вт) 12:27, всего редактировалось 1 раз.
А я все практикую лечение травами...

Alex_Security
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 29.07.2008 (Вт) 11:05
Откуда: АсТрАхАнЬ

Сообщение Alex_Security » 29.07.2008 (Вт) 12:25

Пасиб, потом почитаю, если пойму

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 29.07.2008 (Вт) 12:26

Рабочий пример с EnumWindows есть в ApiGuid'e. Поэтому читаем правила форума, в пункте VII находим ссылку на этот справочник, качаем его и изучаем.
Salus populi suprema lex

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2008 (Вт) 12:26

Alex_Security писал(а):кода, не получается, vb вылетает
Что не получается? Какой код пробовал, почему, где и как вылетает?
З.Ы. Упорное скандирование "Дайте код" может привести к мерам административного воздействия.
З.З.Ы. Да и GetWindow можно воспользоваться.
Весь мир матрица, а мы в нем потоки байтов!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 29.07.2008 (Вт) 12:30

Рабочий пример с EnumWindows есть в ApiGuid'e. Поэтому читаем правила форума
Необходимо включить в правила форума запрет на упоминание о глючном ApiGuid'е... :wink:
А я все практикую лечение травами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.07.2008 (Вт) 12:34

Twister писал(а):
Рабочий пример с EnumWindows есть в ApiGuid'e. Поэтому читаем правила форума
Необходимо включить в правила форума запрет на упоминание о глючном ApiGuid'е... :wink:
И исключить его из ссылок! Но в данном случае пример оттуда действительно рабочий.
Весь мир матрица, а мы в нем потоки байтов!


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 64

    TopList