![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
![]()
Доброго времени суток , у меня следующий вопрос:
Я отправляю определенному окну сообщение о нажатой клавише SetForegroundWindow(FindWindow(nil, 'Имя окна')); keybd_event(VK_F1, 0, 0, 0); keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0) всё нормально отправляет нажимает , но . . . программа которой отправляю нажатие клавиши как то узнает что нажатие происходит не человеком а програмно , то есть нажимает определенное количество раз, а потом не происходит не каких действий , программа нажимает 100% так как перещелкивал активное окно на браузер и там он вызывал помощь, если наживаеть в ручьную клавишу то все в порядке , и не каких остоновок не происходит . Как программа узнаёт что я жму не руками а программным путем? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
может проблема во втором параметре? (bScan)
отследи сообщение посылаемые нужному окну программой spy++ и укажи такой же скан код в своей программе Последний раз редактировалось fate; 24.08.2011 в 17:13. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
ClMlD, хм программа ввстравает ваши "несколько нажатий" в цепочку и обработывает их, и новые ставит в конец цепочки. И программе требуется время на обработку этих сообщений и действий связанных с ним.
Как вариант попробуйте посылать нажатия при помощи SendMessage и PostMessage |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
![]()
fate , не могли бы поподробнее описать то что мне нужно зделать ,так как программа незнакома , и я ещю сам не пойму что , окно нужное нашол, а какой параметр брать хз там порядко много информации об данном окне.
Человек_Борща спасибо сейчас попробуем. Так же заметил что после закрытия моей программы и повторного запуска заданая клавиша нажимаеца как ни в чем небывало, так же если в ручьную зажать данную клавишу делает действие определенное количество раз и останавливаеца точно так же как и в посылке клавиши программным путем , попробывал поставить между нажатие и отпусканием клавиши sleep(1000); не помогло |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
скачиваешь программу spy++ (если не найдешь стучи в аську дам)
в ней ctrl+M, finder tols перетаскиваем на нужное окно, переходим на вкладку messages, ставим чекбокс напротив keyboard. Потом жми на клаве F1 (или что там тебе нужно) и в spy++ будут отображаться посылаемые сообщения там же будет виден скан код. P.S. описывал все для microsoft spy++ v. 6.00.8168 |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
![]()
fate , спасибо большое обЪяснил как ребенку .
Как я понял идет обычная отправка сообщения о нажатии, не каких примудростей не видно или я ошибаюсь ? <00001> 00230644 P WM_KEYDOWN nVirtKey:VK_F1 cRepeat:1 ScanCode:3B fExtended:0 fAltDown:0 fRepeat:0 fUp:0 <00002> 00230644 P WM KEYUP nVirtKey:Key:VK F1 cRepeat:1 ScanCode:3B fExtended:0 fAltDown:0 fRepeat:1 fUp:1 И если есть FAQ по данной программе на русском имеется ? можно сылку , а то чувствую пригодится она мне ещё , полезная штука .. . |
![]() |
![]() |
![]() |
#7 |
Недо
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,394
|
![]()
Автор темы, а ты пробовал ставить задержку между нажатием и отпусканием клавиши? "Эта программа" наверняка игра =)
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]()
ClMlD сначала отлови сообщение посылаемые окну при нажатии клавиш на клаве, потом при работе твоей программы и сравни их
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 09.07.2011
Сообщений: 185
|
![]()
А вот такое сообщение идет когда событие нажатия идет от программы и не в ручьном нажатии:
<00001> 00230644 P WM_KEYDOWN nVirtKey:VK_F1 cRepeat:1 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:0 fUp:0 <00002> 00230644 P WM KEYUP nVirtKey:Key:VK F1 cRepeat:1 ScanCode:00 fExtended:0 fAltDown:0 fRepeat:1 fUp:1 Изминилось только ScanCode , fate будь добр поскажи к кокому значению относится ScanCode куда нужно подставить данное значение в моей функции keybd_event? Larboss Пробывал будь внимательнее , и нет это не игра Цитата:
Последний раз редактировалось Stilet; 24.08.2011 в 18:49. |
|
![]() |
![]() |
![]() |
#10 | ||
Форумчанин
Регистрация: 17.03.2009
Сообщений: 318
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Реакция на нажатие клавиши. | Vaigard | Общие вопросы Delphi | 4 | 30.12.2010 18:39 |
Нажатие клавиши... | Basketman | Общие вопросы Delphi | 1 | 11.02.2010 09:35 |
Долгое нажатие клавиши в KeyDown как одно нажатие | marina15056 | Общие вопросы Delphi | 7 | 16.08.2009 00:22 |
Нажатие клавиши (Delphi) | VadEr | Помощь студентам | 3 | 08.06.2009 17:00 |
Нажатие клавиши | format | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 05.05.2008 15:25 |