0 / 0 / 0
Регистрация: 01.10.2011
Сообщений: 12
|
|||||||||||
1 | |||||||||||
Как предотвратиь появление определенного чужого окна12.10.2011, 14:02. Показов 1336. Ответов 8
Метки нет (Все метки)
Написал прогу, которая постоянно перебирает все окна и закрывает, если у окна определенный заголовок
не дать ему появляться вообще? У меня ощущение, что это можно сделать с помощью хука. Написал тестовую прогу, которая не дает открывать ни одно окно:
0
|
12.10.2011, 14:02 | |
Ответы с готовыми решениями:
8
Появление окна через определенное время или при прокрутке до определенного блока Как отловить появление на странице чужого div с конкретным классом Как изменить размер чужого окна? Как мне перехватить перерисовку чужого окна |
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
13.10.2011, 11:47 | 2 |
описание "Функция CBTProc / Hook / Win32 API"
http://netcode.ru/cpp/?artID=3143 имя и ли класс окна передается в параметрах WPARAM wParam, LPARAM lParam не помню точно давно писал
0
|
0 / 0 / 0
Регистрация: 01.10.2011
Сообщений: 12
|
|
13.10.2011, 11:53 [ТС] | 3 |
Ну так и как их узнать? Окно то еще не создано. Если в фильтер-функции вызвать GetWindowText(), все обвалится. Я проверял.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|||||||||||
13.10.2011, 12:00 | 4 | ||||||||||
в lParam
придет структура CBT_CREATEWND
LPCTSTR lpszClass; анализируй
0
|
0 / 0 / 0
Регистрация: 01.10.2011
Сообщений: 12
|
||||||
13.10.2011, 15:46 [ТС] | 5 | |||||
Я понял так, что должно быть что-то такое:
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
13.10.2011, 19:30 | 6 |
0 лишний
строка и так запишет 0 в конце название может не совпадать лучше фильтровать по классу окна или выбери ключевое слово Блокнот и проверяй есть ли оно в названии может не совпадать ANSII и UNICODE лучше объявить глобально тогда он не будет переопределятся при каждом заходе Добавлено через 57 секунд как влияет
0
|
0 / 0 / 0
Регистрация: 01.10.2011
Сообщений: 12
|
|
13.10.2011, 19:37 [ТС] | 7 |
Ну целевое окно то не Блокнот, просто тестить удобно на блокноте. заблокировать нужно другое окно его класс окна довольно странный что-то типа #32772 (Диалоговое окно). Проверка на класс окна результата не давала, поэтому проверяю заголовок.
Объявление и инициализация TCHAR buf[50] в теле фильтр-функции почему-то приводит к крашу процесса explorer, от чего пропадают все значки на рабочем столе и панель задач. Лечится повторым запуском эксплорера через диспетчер задач, при этом сама моя прога не падает, но может зависнуть.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||||||||||||
13.10.2011, 22:49 | 8 | |||||||||||||||
я только сейчас заметил
она и будет падать так строки не инициализируются получишь падения стека(что ты получил) или ошибку доступа дело в том что память на стеке выделяется в процессе выполнения и как бы должна инициализироватся но у массива нет конструктора копирования (да и быть не может) ты же не пишешь так
или делай буфер глобальным (статическим)тогда он инициализируется при построении и в памяти будет строка или используй функции wsprintf spritf( еще есть не помню)
используй строки CString string или сравнивай с константоной строкой
и научись пользоватся отладчиком ты бы сразу увидел что не срабатывает Добавлено через 2 минуты #32772 это и есть класс окна диалога с 3.0(раньше не работал) не делают символьное определение
0
|
0 / 0 / 0
Регистрация: 01.10.2011
Сообщений: 12
|
|
14.10.2011, 10:38 [ТС] | 9 |
TCHAR buf[50] = TEXT("Безымянный - Блокнот\0"); - Это работает. смотрел с помощью отладчика, правда с фильтр-функцией вообще что-то непонятное. Отладчик не показывает мне что происходит внутри нее, хотя я точно знаю что она вызывается и отрабатывает. С другими CALLBACK-функциями такого не было.
0
|
14.10.2011, 10:38 | |
14.10.2011, 10:38 | |
Помогаю со студенческими работами здесь
9
Как узнать хендл чужого окна свёрнутого в трей? Как добавить свою кнопку в title-bar ЧУЖОГО окна? Как зная дескриптор чужого окна сделать его неактивным? Как сделать размер чужого окна больше максимального разрешения экрана Как получить текущую раскладку клавиатуры для чужого активного окна? Как подавить появление окна настроек принтера? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |