|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.08.2011, 13:09 | #1 |
Регистрация: 28.07.2011
Сообщений: 7
|
Не работает в реестре програмное нажатие кнопок мыши и клавиатуры.
Всем доброго времени суток.
Я пишу с другом программу... в одном из её "блоков" необходимо програмно управлять мышью, кликать её, а также програмно нажимать клавиши клавиатуры. Сделал, начал тестировать... в "обычных окнах" работает, а вот в реестре можно только указателем шевелить, кликнуть в заданных координатах невозможно, также как и нажать програмно клавишу. Использую следующие процедуры: 1. Для мыши: 1)SetCursorPos(x, y); // Новые координаты курсора 2)Mouse_Event(MOUSEEVENTF_LEFTDOWN, x,y,0,0); 3)Mouse_Event(MOUSEEVENTF_LEFTUP,x, y,0,0); 2.Для клавиатуры: keybd_event(KEY), 0, 0, 0); keybd_event(Ord(KEY), 0, KEYEVENTF_KEYUP, 0); Я полагаю что Windows "защищает" реестр от "вторжение". Но ведь с экранной клавиатуры в нём печатать можно. Наверно нужно посылать команды наперерез драйверу клавиатуры, через WMI... ну в общем я не знаю как, и лучше не буду предполагать дабы не нести чушь. Знающие люди, пожалуйста помогите. Буду очень благодарен. P.S.: Если кто знает какой нибудь учебник по WMI - посоветуйте пожалуйста. |
29.08.2011, 14:14 | #2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
29.08.2011, 15:23 | #3 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,814
|
виртуально перетаскиваем объект мышкой
Код:
Код:
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
29.08.2011, 19:09 | #4 | |
Регистрация: 28.07.2011
Сообщений: 7
|
Цитата:
Для эксперимента я задавал курсору координаты 10,10 и кликал туда (отпускал и нажимал точнее), а также пробовал с задержкой - получался двойной клик. Похожим образом экспериментировал и с клавиатурой. Делал в батоне Sleep(1000) и побуквенный набор своего имени. Тоесть жмёшь на батон быстренько выбираешь окно где печатать (пробовал блоткнот, строку поиска в GOOGLE, проводник и ... реестр) и программа там печатала. Но это не цель - это тест. Я же на чистом делитанском языке объяснил что нужно нечто Mouse_Event и keybd_event, но чтобы работало в редакторе реестра (regedit). И есть подозрения что эти процедуры не работают и в других важных для Windows местах. |
|
29.08.2011, 19:19 | #5 | |
Регистрация: 28.07.2011
Сообщений: 7
|
Я имел ввиду стандартный редактор (Regedit), а не файл реестра где действительно шевелить буквально, не метафорически, ничем нельзя.
Цитата:
И кстати, сам не пробовал но друг говорил что через TeamViewer тоже не получается "лазить" в редакторе реестра. |
|
29.08.2011, 20:00 | #6 | ||
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Что мешает программно открыть реестр и смотреть/править его безо всяких мышеклаводвижений ? Цитата:
Что я делаю не так ? И нафих такой "друг" ?) |
||
29.08.2011, 20:25 | #7 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,814
|
стоп! у меня была такая проблема! надо сделать в таймере с интервалом 2000мс, иначе не будет успевать срабатывать клик мышкой!!! вспомнил, почему не работало у меня. Таймер кидай на форму и обрабатывай шаги: на первом - открываем окно, на втором - смещаем его на нужную позицию, на третьем - мышкой орудуем...и т.д.
Вот тебе пример куска моего кода: Код:
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
29.08.2011, 21:01 | #8 | |
Регистрация: 28.07.2011
Сообщений: 7
|
Цитата:
Проблема не в двойном клике а в том что Окно редактора реестра нифига не реагирует на Mouse_Event(MOUSEEVENTF_LEFTDOWN,10 ,10,0,0); Mouse_Event(MOUSEEVENTF_LEFTUP,10,1 0,0,0); это как пример. А нужно мне всё это для того чтобы один компьютер управлял другим и клиент получая координаты мыши,коды нажатых клавиш клавиатуры и мыши програмно этим всем "ЩЕВЕЛИЛ!", отправляя назад серверу свой принтскрин. А случай с редактором реестра ломает универсальность |
|
29.08.2011, 21:42 | #9 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,814
|
В программе-утилите RegOrganizer тоже есть редактор реестра, наподобие RegEdit'а. Может, тогда там сработает Ваш код?
У меня была проблема, что надо было свою форму скрыть и уже потом работать этими виртуальными командами с чужими окнами, иначе он работает только со своим окном. У Вас так? Если нет, то попробуйте скрыть своё окно на время выполнения этих команд.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
Последний раз редактировалось NetSpace; 29.08.2011 в 21:48. |
30.08.2011, 14:49 | #10 |
Ещё не
Форумчанин
Регистрация: 04.01.2010
Сообщений: 517
|
Код:
P.S. Вы прогу делаете по локалки?
Воображение важнее, чем знания. (Albert Einstein)
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
програмное нажатие кнопок мыши | ALKOrobot | Общие вопросы C/C++ | 7 | 25.03.2012 12:12 |
Нажатие кнопок мыши в чужом приложении | Der_G()RuNu(h | Работа с сетью в Delphi | 16 | 25.05.2011 13:09 |
Не работает MessageBox нет реакции на нажатие кнопок | Vladya | Общие вопросы C/C++ | 2 | 09.03.2010 13:29 |
Програмное нажатие на клавиши | mustang007 | Общие вопросы Delphi | 6 | 24.05.2009 11:40 |
Нажатие кнопок мыши | zzzzz | Win Api | 7 | 02.12.2007 12:33 |