| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Перехват ЛКМ и потом сразу нажать ее. |
| Автор: AWAX 2.2.2011, 11:03 |
| Доброго дня. Дабы не создавать пару тем опишу все в одной теме. Задача №1. Мне нужно перехватить в полно экранном приложении нажатие ЛКМ и сразу же нажать ее три раза. Как это реализовать? Будет ли сильная задержка между оригинальным нажатием и виртуальным? Выложите свои наработки или дайте ссылки. Пожалуйста. Задача №2. Хочу потренироваться чуть чуть. Поэтому решил написать программку которая будет сканировать ось Х (ось Х изменяется всегда, а ось У постоянна) экрана на наличие пикселя определенного цвета, перемещать курсор мыши на это место и нажимать ЛКМ. Планирую все это сделать в несколько потоков, потому что думаю что сканирование пикселя быстро не произойдет. И в каждом потоке изучать отдельную область экрана. Прежде чем писать это решил поинтересоваться как будет производительность. Будет ли тормозить систему мое приложение при наличии потоков 20? Как лучше получать пиксели с окна? Посоветуйте что нибудь быстрое. Задача №3. Нужно написать утилиту по перехвату кнопок клавы и мышки. Наподобии Mkey. Дайте ссылок и статей по этому поводу. Загвоздка в основном в получении кода кнопки мыши и клавы. Всем спасибо, жду Ваших ответов. |
| Автор: MetalFan 2.2.2011, 13:17 |
| Во-первых: одна тема - один вопрос. Во-вторых: В поиск по "хук" "hooks" "SetWindowHook" |
| Автор: AWAX 3.2.2011, 11:09 |
| Хуки сделать я могу. Вопрос как нажать потом клавишу три раза. Keyb_event если не ошибаюсь что то такое. Раньше игрался с ней. Но вот сейчас подзабыл. там надо нажать и отпустить. Сейчас такой вопрос. На мышке есть дополнительные кнопки. Как выполнить код по их нажатию. Я не могу их поймать. Наверное хуки тему не до конца изучил. |
| Автор: MetalFan 3.2.2011, 13:32 |
Могу выдать предположение... В функции-перехватчике мы должны "передавать" дальше перехваченную инфу (вызывать CallNexHookEx). Так что, если к примеру в своей функции мы ловим нужное нажатие ЛКМ (хук WH_MOUSE_LL чтоли), а дальше вызываем (CallNextHookEx) следующий хук три раза... Не уверен, что данный способ сработает, но можно попробовать. |
| Автор: AWAX 8.2.2011, 10:15 | ||
| Сделал проще. Если курсор находится на определенном окне, то при нажатии ЛКМ нажимаем его еще два раза. Читаю про хуки еще пытаюсь до конца понять все. Не понятно следующее. Где должен быть код который выполняется по нажатию определенной клавише? В dll или ехе? И еще в самой длл уже должны быть прописаны коды клавишь и мышки? Или можно подгружать из другого файла? Вот самый простой на мой взгляд пример с др. сайта Как передать ехе фалйу сообщение которое перехватили? что бы ехе файл мог выполнить определенный код. Что дописать и куда что бы было следующим образом: Сначала поймать нужную клавишу (мышки или клавиатуры) путем ее нажатия в программе (для получения ее кода) а потом присвоить к ней любое действие. Ограничить эту клавишу, подразумеваю следующее, что бы по этой клавише выполнялся только код который я прописал больше ничего.
|