Постоянно отслеживать hwnd окон без таймера

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

Постоянно отслеживать hwnd окон без таймера

Сообщение waresok » 11.09.2008 (Чт) 9:12

Есть такой код в процедуре Timer, который отслеживает появление окна Total Commander и завершает программу, если находит.
Код: Выделить всё
Private Sub Timer1_Timer()
b = FindWindow("TTOTAL_CMD", vbNullString)
    If Not b = 0 Then
        GetWindowThreadProcessId b, pID
        hProc = OpenProcess(PROCESS_TERMINATE, False, pID)
        Call SendMessage(b, WM_QUERYENDSESSION, 0, 1)
        Call SendMessage(b, WM_ENDSESSION, -1, 1)
        TerminateProcess hProc, 0
        CloseHandle hProc
    End If
End Sub


На самом деле это кусочек кода из программы, а в действительности таких окон много, которые необходимо закрыть или блокировать при появлении. (Прога используется в школе). Так вот, можно ли пойти другим путем, не использовать Timer или есть лучшая альтернатива ему? проблема в том, что хоть и не сильно но процессор прога грузит.

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

Re: Постоянно отслеживать hwnd окон без таймера

Сообщение dr.MIG » 11.09.2008 (Чт) 15:10

Как вариант WMI, класс Win32_Process... Только вот про загрузку процессора в этом случае ничего хорошего сказать не могу.
Salus populi suprema lex

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Re: Постоянно отслеживать hwnd окон без таймера

Сообщение Alexanbar » 11.09.2008 (Чт) 18:14

SetWindowsHookEx.

Но, по-моему, проблема решается вообще без привлечения программирования при наличии NTFS - путём разграничения прав доступа к файлам.

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Постоянно отслеживать hwnd окон без таймера

Сообщение waresok » 11.09.2008 (Чт) 18:24

Спасибо, попробую ваши варинты.

Alexanbar, в том то и дело, что файловая система FAT32.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Re: Постоянно отслеживать hwnd окон без таймера

Сообщение Alexanbar » 11.09.2008 (Чт) 20:33

Подобное решение (отслеживание окон) уже использовалась. Для w98 создавалась утилита KsiWin. Неприятность заключается в том, что такое поведение утилиты классифицируется как вирус.

Эффективность данной утилиты была, естественно, не 100%.

waresok
Новичок
Новичок
Аватара пользователя
 
Сообщения: 35
Зарегистрирован: 15.06.2008 (Вс) 9:17

Re: Постоянно отслеживать hwnd окон без таймера

Сообщение waresok » 11.09.2008 (Чт) 20:45

Да нет, утилита уже месяц успешно работает на 30 машинах, ни NOD32 ни касперский за вирус ее не считают,
блокирует около 30 окон Windows с различными настройками и отдельные программы.
Две версии и под 98 и под XP. Считаю, что не зря, очень удобно. По паролю можно снять все ограничения и получить доступ ко всему сразу.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

    TopList