Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имитация клика в определённой программе 
:(
    Опции темы
Iww
Дата 27.8.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



Уважаемые!
Я смотрел в поиске "имитация клика", но там всегда координаты относительно экрана, либо нада искать определённую кнопку.
У меня немного другая ситуация. Нада сымитировать клик в окно, которое построено на DirectX (поэтому найти определённую кнопку нельзя). Но нельзя использовать SetCursorPos. Нада чтобы координаты пошли уже относительно от окна а не всего экрана. Клик должен быть произведен независимо от того где курсор. Вот нашел этот код, но он не работает:

Код

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const HWND_NOTOPMOST = -2
Private Const HWND_TOPMOST = -1

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)

Private Type POINTAPI
       x As Long
       y As Long
End Type


Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long


  Const MOU_LD = &H2     'нажатие левой кнопки
  Const MOU_LU = &H4     'отпускание левой кнопки
  Const MOU_MD = &H20  'нажатие средней кнопки
  Const MOU_MU = &H40  'отпускание средней кнопки
  Const MOU_RD = &H8     'нажатие правой кноки
  Const MOU_RU = &H10   'отпускание правой кнопки
Dim p As POINTAPI

Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
       Left As Long
       Top As Long
       Right As Long
       Bottom As Long
End Type
Dim razmer As RECT
Dim a, b As Long




Private Sub Command1_Click()
     g = FindWindow(vbNullString, "MyWindow")
     GetWindowRect g, razmer
     a = razmer.Left
     b = razmer.Top
     GetCursorPos p
     Call SetCursorPos(a + 100, b + 100)
     mouse_event MOU_LD, x, y, 0&, 0&
     mouse_event MOU_LU, x, y, 0&, 0
End Sub



Большое спасибо заранее!
PM MAIL   Вверх
I_Am_Rock
Дата 27.8.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Добавь 

Код

Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


Добавлено через 48 секунд
Я добавил и проверил - все вроде работает...
PM MAIL WWW   Вверх
Iww
Дата 29.8.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



Прошу прощения, я сам в коде сделал ошибку. Еще раз повторюсь - нада бы сделать чтобы кликалось без SetCursorPos т.е. в независимости где курсор - клик будет произведен по заданным координатам

Код

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long



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)

Private Type POINTAPI
       x As Long
       y As Long
End Type


  Const MOU_LD = &H2     'нажатие левой кнопки
  Const MOU_LU = &H4     'отпускание левой кнопки
  Const MOU_MD = &H20  'нажатие средней кнопки
  Const MOU_MU = &H40  'отпускание средней кнопки
  Const MOU_RD = &H8     'нажатие правой кноки
  Const MOU_RU = &H10   'отпускание правой кнопки



Private Sub Command1_Click()
     g = FindWindow(vbNullString, "MyWindow")
     mouse_event MOU_LD, 130, 200, 0&, 0&
     mouse_event MOU_LU, 130, 200, 0&, 0
End Sub


Большое спасибо заранее!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.