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

Глобальные события в Visual Basic 6

23.01.2014, 07:19. Показов 1638. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, кто знает...
Необходимо в программе, реализованной на VB 6 обработать событие (мыши или клавиатуры), которое должно происходить ГЛОБАЛЬНО, то есть независимо от того, какой контрол формы в данный момент имеет фокус.
Как это можно сделать?...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2014, 07:19
Ответы с готовыми решениями:

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных. Ориентировочный вид окна программы и...

Visual Basic 6 и Visual Basic .NET - в чем различия?
Visual Basic и Visual studio это не одно и тоже? если нет то в чём разница, по мимо оформления?

9
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
23.01.2014, 07:32
Лучший ответ Сообщение было отмечено как решение

Решение

С клавиатурой просто -
Visual Basic
1
2
3
4
5
6
7
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
msgbox KeyCode
End Sub
 
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
А вот с мышью...
3
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.01.2014, 10:48
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Апострофф Посмотреть сообщение
А вот с мышью
Тоже просто. Вот простой кейлогер. На форму таймер и Text1
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim result As Integer
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Const VK_LBUTTON = 1
Const VK_RBUTTON = 2
 
Private Sub Form_Load()
Timer1.Interval = 10
Text1.Text = "" 'Очищаем окно
'App.TaskVisible = False 'Если надо невидимо
End Sub
Private Sub Timer1_Timer()
For i = 32 To 128 'буквы
result = 0
result = GetAsyncKeyState(i)
If result = -32767 Then
Text1.Text = Text1.Text + Chr$(i) ' В текст
End If
Next i
If GetAsyncKeyState(VK_RBUTTON) = -32767 Then Text1.Text = Text1.Text + "{ПКМ}" ' В текст мышку
If GetAsyncKeyState(VK_LBUTTON) = -32767 Then Text1.Text = Text1.Text + "{ЛКМ}" ' В текст мышку
End Sub
3
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.01.2014, 11:03
Лучший ответ Сообщение было отмечено как решение

Решение

Правильней делать через хуки, а не через таймеры. Вот пример где можно перехватывать практически все сообщения, и это будет делаться правильно, а не проводиться ненужная работа
https://www.cyberforum.ru/blog... g1943.html
3
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.01.2014, 13:29
Цитата Сообщение от The trick Посмотреть сообщение
Правильней делать через хуки, а не через таймеры.
Смотря для каких целей. Хуки несколько замедляют работу системы, поскольку они увеличивают количество действий, которые производит система при обработке каждого сообщения. В связи с этим следует устанавливать хуки только при необходимости и удалять их, как только они становятся не нужны.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.01.2014, 13:40
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Смотря для каких целей. Хуки несколько замедляют работу системы, поскольку они увеличивают количество действий, которые производит система при обработке каждого сообщения. В связи с этим следует устанавливать хуки только при необходимости и удалять их, как только они становятся не нужны.
В случае с таймером действий производится больше, тем более если нужно установить локальный хук, то система не будет обрабатывать его в других приложениях.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.01.2014, 14:47
Таймер это так, для примера. GetAsyncKeyState можно вызывать в любом рабочем цикле, особенно, где хуки нежелательны или мешают другим хукам - мало ли что там ещё работает в системе, какие трояны-вирусы

Кстати, твой код у меня ( winXP) выдает "hook error" и для клавы и для мыши, как в скомпилированном виде, таки в IDE. Отчего может быть такое?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.01.2014, 15:01
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Отчего может быть такое?
Попробуй так вызвать
Visual Basic
1
hKeyHook = SetWindowsHookEx(..., ..., App.hInstance, 0)
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.01.2014, 15:50
Цитата Сообщение от The trick Посмотреть сообщение
Попробуй так вызвать
Помогло, теперь работает.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
23.01.2014, 16:33
Добавлю еще, что если нужно перехватить только в одной форме, то можно сделать через сабклассинг еще.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2014, 16:33
Помогаю со студенческими работами здесь

Отличия версий Visual Basic 6.0 от Visual Basic 6.5?
У меня 3 вопроса: 1.Чем отличается версия Visual Basic 6.0 от Visual Basic 6.5? 2.Можно ли запустить проект созданный раннее в Visual...

Visual Basic .Net и Visual Basic 6.0 - В чём разница
В общем возник вопрос: Visual Bisic.Net и Visual Basic - это два разных языка, или же .NET версия это лишь его улучшение. Я так понимаю что...

глобальные события
Добрый день. Подскажите кто знает,как можно отследить системные события и остановить процесс вызвавший это событие. В частности интересует...

Какую среду программирования лучше выбрать для обучения языку C++ ? Visual Studio,Visual Basic или Visual C++?
И напишите,чем рекомендуемая вами среда программирования лучше других? Насколько я понял из Википедии они все поддерживают язык...

Глобальные события приложения
Привет! ASP NET MVC 5. Если я в Global.asax добавляю метод protected void Application_EndRequest(object sender, EventArgs e), то с...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru