Как эмулировать глобально нажатие клавиши?

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

Как эмулировать глобально нажатие клавиши?

Сообщение Space » 10.06.2009 (Ср) 6:03

SetKeyboardState устанавливает нажатые клавиши для текущего приложения, а как эмулировать глобально нажатие клавиши, чтобы GetAsyncKeyState получало эмулированную нажатую клавишу?

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Как эмулировать глобально нажатие клавиши?

Сообщение karlex » 10.06.2009 (Ср) 7:59

Может keyb_event?
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

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

Re: Как эмулировать глобально нажатие клавиши?

Сообщение JohnK » 10.06.2009 (Ср) 12:37

Глобальный вопрос: зачем?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Как эмулировать глобально нажатие клавиши?

Сообщение Space » 10.06.2009 (Ср) 20:04

чтобы обмануть GetAsyncKeyState

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

Re: Как эмулировать глобально нажатие клавиши?

Сообщение JohnK » 10.06.2009 (Ср) 21:15

А зачем дурить? Все зависит от поставленной задачи. Какая стоит задача? Возможно есть другие способы, более простые. Возможно подойдет сабклассинг конкретного окна.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Как эмулировать глобально нажатие клавиши?

Сообщение Space » 11.06.2009 (Чт) 4:50

не подойдёт :)

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Как эмулировать глобально нажатие клавиши?

Сообщение karlex » 11.06.2009 (Чт) 13:18

JohnK писал(а):Глобальный вопрос: зачем?

Например удаленное управление рабочим столом.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

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

Re: Как эмулировать глобально нажатие клавиши?

Сообщение JohnK » 11.06.2009 (Чт) 17:31

karlex
Ну я не обладаю телепатией. Автор топика не сказал для чего.

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Command1_Click()
    Dim handle as long
    handle = FindWindow(vbNullString, "Заголовок окна")
    SetForegroundWindow (handle)
    keybd_event vbKeyF6, 0, 0, 0
    keybd_event vbKeyF6, 0, 2, 0
End Sub
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Как эмулировать глобально нажатие клавиши?

Сообщение Saturn.65 » 18.06.2009 (Чт) 17:38

В тему или нет попал -не знаю. Просто надо определенной кнопке на форме присвоить клавишу на клавиатуре, чтоб Enter нажал и Command1_Click сработала. Фокус то получает через Tab, а вот как нажать? Или это надо через меню делать? Но там клавиши Enter нет.
Главное, ребята, сердцем не стареть...

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Как эмулировать глобально нажатие клавиши?

Сообщение Space » 18.06.2009 (Чт) 18:10

Command1.Default=True


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

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

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

    TopList