Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Серж

Как зная дескриптор чужого окна сделать его неактивным?

18.02.2008, 09:37. Показов 1644. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как зная дескриптор чужого окна сделать его неактивным (невосприимчивым к левым и правым кликам мыши и нажатием клавиш клавиатуры)?
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2008, 09:37
Ответы с готовыми решениями:

Как получить снимок рабочей области окна программы зная его дескриптор?
Как получить снимок рабочей области окна программы зная его дескриптор?

Изменить тайтл окна сторонней программы, зная его дескриптор
Как изменить тайтл окна программы? Не своего приложения, а сторонней программы запущенной на компе. Дискриптор запущенного окна и...

Найти хендл чужого окна, зная его атом
как можно найти хендл чужого окна по атому??

1
0 / 0 / 0
Регистрация: 10.01.2007
Сообщений: 11
19.02.2008, 07:17
Дискриптор - в смысле хэндл? Тогда попробуй поставить хук на окно. Идея следующая:

Пишем новую оконную процедуру для подопечного окна в которой и будем обрабатывать клики и нажатия клавиш

Visual Basic
1
2
3
4
5
6
7
8
9
Private Function MyHook(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
  Select Case uMsg
    Case WM_мышарное событие
      'можно ничего не делать - главное не возвращать управления окну
    Case Else
      'Возвращаем управление захученому окну
      MyHook= CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
  End Select
ставим хук на окно:

Visual Basic
1
2
3
4
Public Sub HookForm(hw As Long)
    'hw - хэндл окна, PrevProc объяви как Long в разделе деклараций
    PrevProc = SetWindowLong(hw, GWL_WNDPROC, AddressOf MyHook)
End Sub
Снимать хук:

Visual Basic
1
2
3
4
5
6
Public Sub UnHookForm(hw As Long)
    If PrevProc <> 0 Then
        SetWindowLong hw, GWL_WNDPROC, PrevProc
        PrevProc = 0
    End If
End Sub
Несколько нюансов: вся это ботва - ТОЛЬКО в теле модуля (обычного, не модуля классов). Это- простейший вариант. Дело усложняется в случае нескольких хуков на одно окно или на несколько окон. Хочешь - через SetProp действуй, хочешь - классы создавай - здесь каждый сам кто во что горазд пишет (надо признать попадаются виртуозы изрядные).
Успехов!
P.S. Константы мышиных событий:
Visual Basic
1
2
3
4
5
6
7
8
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_NCLBUTTONUP = &HA2
Public Const WM_NCLBUTTONDOWN = &HA1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2008, 07:17
Помогаю со студенческими работами здесь

Как найти дескриптор процесса, зная его имя?
как найти дескриптор (HANDLE) процесса, зная его имя? Добавлено через 2 часа 0 минут я не просил перемещать мою тему, тема создана...

Проверить, свёрнуто ли окно программы, зная его дескриптор
Как проверить свёрнуто ли окно программы зная его дискриптор?

Как сделать размер чужого окна больше максимального разрешения экрана
Вопрос собственно в заголовке. Вот здесь решается проблема (последнее сообщение) http://**********/q/9278 Только там размер...

Как взять текст из окна, зная его Handle?
К примеру я знаю хэндл (hWnd) текстового окна в любой запущенной программе. Как мне взять из неё текст????? SendMessage(ом) работает,...

Как узнать имя окна (обьекта), зная его хэндл?
Допустим, хэндл окна я узнаю так: HANDLE h=WindowFromPoint(Mouse-&gt;CursorPos); Класс так: GetClassName(h,p,100); А как узнать имя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru