Открыть программу(игру) и нажать на клавишу

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

Открыть программу(игру) и нажать на клавишу

Сообщение eldar22 » 03.05.2010 (Пн) 13:45

Здравствуйте!
Есть код
Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowsName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal cCmdShow As Long) As Long
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Command1_Click()
Dim lFoundWindow As Long
lFoundWindow = FindWindow(vbNullString, "Counter-Strike")
Call SetForegroundWindow(lFoundWindow)
Call ShowWindow(lFoundWindow, 9)
Call ShowWindow(lFoundWindow, 10)

Const VK_esc = 27


keybd_event VK_esc, 0, 0, 0   ' press esc
   
End Sub


По идеи программа должна найти заголовок игры Counter-Strike открыть ее и нажать на кнопку Esc
Программа находит окно открывает его, но не нажимает кнопку Esc

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Открыть программу(игру) и нажать на клавишу

Сообщение Хакер » 03.05.2010 (Пн) 14:19

Вся это идея с открыванием приложений и эмуляции нажатий клавиш с помощью kebd_event — гадость.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Re: Открыть программу(игру) и нажать на клавишу

Сообщение Saturn.65 » 03.05.2010 (Пн) 14:54

eldar22 писал(а):Программа находит окно открывает его, но не нажимает кнопку Esc

Может у клавиши фокуса нет?
Главное, ребята, сердцем не стареть...

ExiliM
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 22.02.2010 (Пн) 4:41

Re: Открыть программу(игру) и нажать на клавишу

Сообщение ExiliM » 03.05.2010 (Пн) 15:48

для чего именно посылается Esc? Она ж просто менюшку откроет...

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Открыть программу(игру) и нажать на клавишу

Сообщение eldar22 » 03.05.2010 (Пн) 16:17

так кнопку Esc для примера

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Открыть программу(игру) и нажать на клавишу

Сообщение eldar22 » 04.05.2010 (Вт) 19:57

Хакер писал(а):Вся это идея с открыванием приложений и эмуляции нажатий клавиш с помощью kebd_event — гадость.


Простите каким тогда методом с помощью чего сделать чтобы это не казалось гадостью?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Открыть программу(игру) и нажать на клавишу

Сообщение Хакер » 04.05.2010 (Вт) 20:03

Что сделать?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

eldar22
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 09.09.2008 (Вт) 18:11

Re: Открыть программу(игру) и нажать на клавишу

Сообщение eldar22 » 04.05.2010 (Вт) 21:42

Ответ нашел через SendKeys работает :D

Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowsName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal cCmdShow As Long) As Long
Private Sub Command1_Click()
Dim lFoundWindow As Long
lFoundWindow = FindWindow(vbNullString, "Counter-Strike")
Call SetForegroundWindow(lFoundWindow)
Call ShowWindow(lFoundWindow, 9)
Call ShowWindow(lFoundWindow, 10)         
       
SendKeys "{ESC}", True           

End Sub


Спасибо Хакер!


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

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

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

    TopList