клавиатерный шпион

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

клавиатерный шпион

Сообщение -=alp=- » 09.03.2003 (Вс) 5:44

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

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

Сообщение Amed » 09.03.2003 (Вс) 9:37

есть функция GetAsyncKeyState, но она не показывает нажатую клавишу, а возвращает состояние указанной клавиши. Отсюда правило - напиши небольшую функцию, делающую то, что нужно

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 09.03.2003 (Вс) 15:58

А как именно пользоваться этой функцией ?

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

Сообщение Amed » 09.03.2003 (Вс) 20:08

'Сначала объявляешь функцию:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'Потом - код клавиши (смотри в Api Viewere коды на VK_)
Private Const VK_F10 = &H79

Потом, скажем, по таймеру, проверяешь состояние

Public Sub Timer1_Timer()
if GetAsyncKeyState(VK_F10)<0 then
msgbox "Нажата кнопка F10"
endif
End Sub

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

Сообщение Amed » 09.03.2003 (Вс) 20:19

А потом пишешь цикл, который перебирает все клавиши и пишет, какие из них нажаты... Вот и всё! Удачи в программировании! :P

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 09.03.2003 (Вс) 21:42

По моему для обработки нажатых клавиш никаких API не нужно! В VB есть стандартный обработчик события KeyPress(KeyAscii As Integer)
Например обработка события нажатия пробела:

Код: Выделить всё
Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii=32 Then

MsgBox "Вы нажали пробел"

End Sub


И никаких API'ев!

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 09.03.2003 (Вс) 22:25

По моему для обработки нажатых клавиш никаких API не нужно! В VB есть стандартный обработчик события KeyPress(KeyAscii As Integer)
Например обработка события нажатия пробела:

Код:
Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii=32 Then

MsgBox "Вы нажали пробел"

End Sub

И никаких API'ев!



Эхх, ты, программист!
Если б, все было так легко, зачем бы люди API функции создавали?
На самом деле, твой пример будет работать только если фокус на твоем окне. а как ты понимаешь, шпиона так не сделаешь...
Поэтому приходиться пользоваться API, так как весь Windows ими пользуется, и естественно можно отслеживать любое нажатие клавиш в любом удобном для тебя месте.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.03.2003 (Вт) 12:20

Да, и не только на окне, но еще именно на самой форме, а не в ее контролах. Иначе ты забыл указать про form.keypreview = true

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 11.03.2003 (Вт) 12:26

А если серьезно, то нужно писать глобальный хук на клаву. 8)
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 11.03.2003 (Вт) 12:27

Это все хорошо.
Я делал такую прогу и,... результат
Бейсиковский таймер тормозит машину.
Что делать, граждане???

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 11.03.2003 (Вт) 12:29

Что есть хук?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 11.03.2003 (Вт) 12:31

Хук (Hook) дословно "крючок". Функция, перехватывающая определенные сообщения в системе. Читай описание SetWindowsHookEx для получения более подробной инфы :)


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 80

    TopList  
cron