Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2013, 20:34   #1
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
Сообщение Эмуляция нажатия клавиш мыши

Есть програма которая имитирует нажатия мышкой по координате.
Код:
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)

Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down 
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up 

Cursor.Position = New Point(x, y)
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
Код работает но при этом мышка перемещаеться перед кликом на указаною координату. Как зделать что клик был но сама мышка не двигалась.
Или как можно например имитировать щелчки в другом окне которое свернуто. То окно в которое будет посылаться клики мышкой не должно становиться активным оно должно оставаться фоновым.

Последний раз редактировалось Painkiller_13; 15.03.2013 в 20:39.
Painkiller_13 вне форума Ответить с цитированием
Старый 16.03.2013, 00:11   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Измените окно, чтоб оно не реагировало на нажатие мыши.
waleri вне форума Ответить с цитированием
Старый 16.03.2013, 00:33   #3
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

И как например изменить окно калькулятора или блокнота?
Тут нужно использовать функции API
Найти хендл окна и отправить ему через SendMessage код кнопки только я ни как не могу разобраться как это зделать.
Painkiller_13 вне форума Ответить с цитированием
Старый 16.03.2013, 08:15   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Можно попробовать через FindWindow но этого может оказаться недостаточно.
Найти в списке процессов нужный, потом просмотреть все окна и проверить, какие окна относятся к этому процессу.

Читайте про Process32First(), EnumWindows() и GetWindowThreadProcessId()
waleri вне форума Ответить с цитированием
Старый 16.03.2013, 12:21   #5
Painkiller_13
Пользователь
 
Регистрация: 07.07.2011
Сообщений: 58
По умолчанию

Почему при поиске окна у меня выдает набор разных цифр (90194313216,4439226657538048) и тд хотя если заголовок окна не найдет должен возрашаться ноль.

Код:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowsName As String) As Long

Dim hwnd As Long
hwnd = FindWindow(vbNullString, Textbox1.text)
Label1.Text = hwnd
Заголовки и класы искал через Spy++
Painkiller_13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция нажатия клавиш KamiMAN Общие вопросы Delphi 5 13.03.2011 06:24
Эмуляция нажатия мультимедийных клавиш W0LF Общие вопросы Delphi 0 03.04.2010 22:01
Эмуляция нажатия мыши, клавиатуры xmur Помощь студентам 2 08.04.2009 17:45
Эмуляция нажатия нескольких клавиш -=Shad0www Общие вопросы Delphi 3 12.05.2008 08:13