Отсылалать окну браузера с флэшем нажатие клавиш

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

Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Denisator » 15.07.2009 (Ср) 16:02

Есть такая браузерная игра на флэше tankionline.com и там всё управление танком производится с клавиатуры (стрелками управляется передвижение танка, клавишами z и x вертится башня, а enter стреляет), я же хочу поворот башни и стрельбу вести при помощи мыши.

Помогите написать программу (или хотя-бы дайте перечень необходимых мне функций) которая будучи висящей в трее отслеживала местоположение курсора мыши на экране и взависимости от этого отсылала окну с флэшем нажатие клавиш "z", "x" или "enter".

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Dimen » 16.07.2009 (Чт) 9:58

Что то ни кто тебе не хочет помогать.....видимо потому что ты сам не пытаешься сделать....
На вот небольшой примерчик управления мышью. Писать все нормально времени нету. Запускаешь программу наводишь мышь на то куда надо тыкнуть нажатием кнопки запоминаешь расположение. и при нажатии на кнопку мышь двигается в нужную нам кординату и производит клик.
Код: Выделить всё
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim z As POINTAPI
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10

Private Sub Command1_Click()
GetCursorPos z 'получить текущее значение местоположения курсора
zx = (Text1.Text - z.x) / 2 'необходимо разделить полученное значение на 2.
zy = (Text2.Text - z.y) / 2
mouse_event MOUSEEVENTF_MOVE, zx, zy, 0&, 0& 'перемещение курсора
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0& 'нажатие на левую клавишу мыши
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0& 'отпускание левой клавиши мыши
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
End Sub

Private Sub Command3_Click()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
GetCursorPos z 'получить текущее значение местоположения курсора
zx = (0 + z.x)  'необходимо разделить полученное значение на 2.
zy = (0 + z.y)
Text1.Text = zx
Text2.Text = zy
End Sub


Остальное сам допишешь...
Íå óïóñêàéòå øàíñ!

Denisator
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 17.05.2002 (Пт) 7:20
Откуда: Russia

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Denisator » 16.07.2009 (Чт) 11:42

Dimen спасибо, буду ковырять.
Мне бы ещё узнать как окну браузера отсылать нажатие клавиш...

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Dimen » 16.07.2009 (Чт) 12:22

Опиши подробнее. Тебе надо нажатие клавишь отправлть в IE или в твоей проге в WebBrowser?
Íå óïóñêàéòå øàíñ!

Denisator
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 17.05.2002 (Пт) 7:20
Откуда: Russia

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Denisator » 16.07.2009 (Чт) 12:40

Опиши подробнее. Тебе надо нажатие клавишь отправлть в IE или в твоей проге в WebBrowser?

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

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Dimen » 16.07.2009 (Чт) 13:33

Я бы поставил на форму твоей проги WebBrowser и слал ему и не парился лисицой.
Íå óïóñêàéòå øàíñ!

Denisator
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 17.05.2002 (Пт) 7:20
Откуда: Russia

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Denisator » 16.07.2009 (Чт) 16:00

Тоесть открывать сайт не бровзером, а своей прогой с помощью функции WebBrowser и слать нажатия уже своей проге?
А будет ли в WebBrowser флэш работать? Ведь флэш работает через плагин прикручиваемый к бровзеру.

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Dimen » 16.07.2009 (Чт) 17:32

А почему не будет? WebBrowser тот же IE. Если в IE все работает значит и в компоненте.
Íå óïóñêàéòå øàíñ!

Denisator
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 17.05.2002 (Пт) 7:20
Откуда: Russia

Re: Отсылалать окну браузера с флэшем нажатие клавиш

Сообщение Denisator » 19.07.2009 (Вс) 16:24

А почему не будет? WebBrowser тот же IE. Если в IE все работает значит и в компоненте.


Вообщем написал я прогу без использования webbrowser.
Однако работает она хореново.
Эмулируемое управление начинает непредсказуемо конфликтовать с реальным управлением.
Причём начинает конфликтовать если используешь 2 кнопки клавиатуры, если используешь только одну то всё работает корректно.


Код: Выделить всё
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
        x As Long
        y As Long
End Type

Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Const VK_LBUTTON As Long = &H1
Const VK_MBUTTON As Long = &H4
Const VK_RBUTTON As Long = &H2

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
  ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Const KEYEVENTF_EXTENDEDKEY = &H1
    Private Const KEYEVENTF_KEYUP = &H2

Private Sub Timer1_Timer()
Dim Output As String, counter As Long, lpPoint As POINTAPI

GetCursorPos lpPoint

If GetAsyncKeyState(VK_LBUTTON) Then
  keybd_event vbKeySpace, 0, KEYEVENTF_EXTENDEDKEY, 0
Else
  keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0
End If

If lpPoint.x < 440 Then
  keybd_event vbKeyZ, 0, KEYEVENTF_EXTENDEDKEY, 0
Else
  keybd_event vbKeyZ, 0, KEYEVENTF_KEYUP, 0
End If

If lpPoint.x > 440 + 150 Then
  keybd_event vbKeyX, 0, KEYEVENTF_EXTENDEDKEY, 0
Else
  keybd_event vbKeyX, 0, KEYEVENTF_KEYUP, 0
End If


End Sub


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Mail.ru [бот] и гости: 13

    TopList  
cron