Mouse down...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Mouse down...

Сообщение drronnie » 10.03.2004 (Ср) 5:10

Господа как отследить нажатия клавиш мыши вне моей формы? Надо отслеживать не Click а Down и Up...?
Компиляция - перевод словесного поноса в машинный код.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.03.2004 (Ср) 12:05

А кто тебе сказал, что твоя форма останется активной после того, как юзер переключился на другую??? Может, он теперь вообще с другим процессом работает!

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 10.03.2004 (Ср) 18:39

Ennor я согласен, что форма не останется активной... но я же написал - вне моей формы... Можно конечно повесить хук, но есть (когда-то встречал) боле простой метод... мне нужно просто отлавливать нажатия кнопок...
Компиляция - перевод словесного поноса в машинный код.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 10.03.2004 (Ср) 20:21

Все делается в три раза проще:
GetAsyncKeyState 8)
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 10.03.2004 (Ср) 20:28

Поясняю:

1) Ловим по таймеру состояние кнопки мыши (GetAsyncKeyState) в 2 момента времени.
2) Как только OldKeyState <> NewKeyState, смотрим значение NewKeyState. Если оно <0, то произошло MouseDown. Иначе - MouseUp.

Код: Выделить всё
Timer1_Timer()
NewKeyState = GetAsyncKeyState
If NewKeyState<>OldKeyState Then
'Обработка события
If NewKeyState<0 Then DownProcedure
If NewKeyState=0 Then UpProcedure
End If
OldKeyState=NewKeyState
End Sub

З.Ы. Надеюсь, объяснил доходчиво...

drronnie
Постоялец
Постоялец
 
Сообщения: 793
Зарегистрирован: 04.03.2002 (Пн) 22:29
Откуда: Украина, Алчевск

Сообщение drronnie » 11.03.2004 (Чт) 2:38

Ну это всё криво и не спортивно...
Компиляция - перевод словесного поноса в машинный код.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.03.2004 (Чт) 8:25

А как, если не секрет, прямо и спортивно?

Ennor писал(а):Критикуя - предлагай!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 11.03.2004 (Чт) 11:17

Видимо, под "прямо и спортивно" имеется в виду изменение 2-3 байт в файле NTOSKRNL.EXE :lol:
Если честно, то я понятия не имею, как это реализовать. Конечно, в винде существует возможность создания межпроцессных хуков, но я думаю, овчинка выделки не стоит. А в пределах своего процесса ты - царь и бог: вешай оконную процедуру на главную форму (а лучше на все) и лови свои WM_MOUSE(ВСЕПОДРЯД).


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

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

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList  
cron