Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Проблема с эмуляцией клавиши


Автор: I_Am_Rock 18.1.2008, 21:31
Всем привет!

У меня такая проблема.
Эта маленькая программа фоткает экран (эмулирует клавишу PrintScreen) и вставляет содержимое буфера обмена в объект Image1.
Но вот беда - почему-то приходится дважды нажимать кнопку Command1, чтобы это произошло, причем программно сделать это (т.е. двойное нажатие кнопки) не получается!

Вы можете подумать - "почему этот чел ленится дважды нажимать кнопку!"
Дело в том что я собираюсь сделать так, чтобы прога фоткала экран по событию таймера.
А она этого не делает! - т.е. в этом случае приходится дважды запускать прогу и ждать события таймера. А это неприемлимо!

Заранее спасибо!
Код

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_KEYUP = &H2 'событие отпускания клавиши

Private Sub Command1_Click()
keybd_event &H2C, 0, 0, 0
keybd_event &H2C, 0, KEYEVENTF_KEYUP, 0
Image1.Picture = Clipboard.GetData
Clipboard.Clear
End Sub

Private Sub Form_Load()
Clipboard.Clear
End Sub

Автор: I_Am_Rock 18.1.2008, 22:00
Разобрался smile
Оказывается, нужно после "keybd_event &H2C, 0, KEYEVENTF_KEYUP, 0" вставить "DoEvents"...
Все равно спасибо за внимание!smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)