![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Славик |
|
|||
|
Unregistered |
Привет. Помогите пожалуйста разобраться с вопросом по Паскалю. Я уже много чего переискал, но нигде ненахожу ответа. Речь об имитации нажатия на кнопки клавиатуры. Как симитировать нажатие на несколько кнопок клавиатуры ОДНОВРЕМЕННО? Так как я новичок в программировании, мне нужен пример алгоритма, допустим для одновременного нажатия на "abcd". Без примера, я не обойдусь : ) Поскольку мало что понимаю... Все это нужно для управления роликом флэш. Мне удобней будет его тестить именно так. Периодически, паскаль будет "нажимать" на разные сочитания кнопок, чтобы запустить разные эпизоды ролика. Работаю я на Free Pascal. Еще вопрос Нужно скрыть из вида на рабочем столе, работающий файл exe паскаля. Чтобы был виден только флэш ролик. Если это возможно, мне нужен пример алгоритма. Спасибо за все заранее... |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: нет Всего: 74 |
Тебе лучше в Дельфи идти!
Из Паскаля, я не знаю как реализовать скрытие и работу с WinAPI(она-то тебе и нужна) -------------------- Всем добра |
|||
|
||||
| Romtek |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 7.12.2004 Где: Холон Репутация: нет Всего: 4 |
Можно тоже самое и в FPC сделать. Кажется, придётся обрабатывать сообщения WM_ХХХ --------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр. |
|||
|
||||
| Славик |
|
|||
|
Unregistered |
Мне написали нижеописанное на другом форуме. Но мог бы кто нибудь написать мне пример алгоритма для одновременного нажатия(имитации) на "abcd"? А то я просто не знаю как пользоваться нижеописанной подсказкой. Обьяснить мне там(на форуме http://forum.pascal.net.ru) не хотят. Тут ДВА возможных варианта передать или симитировать нажатие кнопок.
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Чтобы использовать эту подсказку, нужно сначала разобраться, куда ты хочешь нажимать клавиши. В смысле, кто будет получать это нажатие. Ведь ты хочешь нажать эти клавиши в какой-то чужой программе. Без знания WinAPI это будет слишком сложно. Нужно будет искать окно, посылать сообщения о нажатии каждой клавиши, потом сообщения об отпускании каждой клавиши.
Тут чистый WinAPI. Для начала тебе нужно как минимум справка по нему и знание английского. Брось эту затею. Сам не справишься. А делать за тебя вряд ли кто-то будет. Начни для начала с более простых вещей. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
на вот посмотри:
http://www.sedinko.ru/delphi/doc7.php Это сообщение отредактировал(а) chaos - 24.2.2005, 10:10 |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Snowy
Я всего навсего хочу симитировать нажатие кнопок на клавиатуре. Никуда ничего не передавая. Просто как будто бы я сам их нажимаю. Все это нужно для управления роликом флэш. Периодически, паскаль будет "нажимать" на разные сочитания кнопок, чтобы запустить разные эпизоды ролика. В ролике флэш, будет просто указано - если такие то кнопки одновременно нажаты, то... он будет кое что делать. chaos Спасибо. Попробую разобраться более детально. Но там вроде говорится о посылании каких то значений другой программе. А мне просто надо симитировать нажатие ничего никому не высылая. Но посмотрю и это... |
|||
|
||||
| Славик |
|
|||
|
Unregistered |
Мой вопрос, может корректней бы звучал так: Как эмулировать нажатия клавиш клавиатуры(!) из паскаля? Ничего никому при этом не передавая. Пользуюсь Free Pascal. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Это тебе не DOS. В виндах у нажатия клавиш должен быть получатель. Обычно это текущее активное окно. Вот нужному окну ты и должен послать сообщение о том, что клавиша нажата. Само окно не догадается. Иначе клавиши надимались бы во всех окнах, независимо от того, с каким мы работаем.
Добавлено @ 16:01 Просто нажитие клавиш - SetKeyboardState. Но клавиши тогда нажмутся в твоем окне. Твой ролик об этом даже не узнает. Добавлено @ 16:02 И зарегестрируйся |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Ребят, а может просто можно считывать из буфера клавиатуры? Сорри, не знаю, что происходит когда нажимаются одновременно четыре клавиши? Если они просто заносятся в буффер одновременно - на них можно readkey наслать.
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Это же винда!!! В DOS'e пожалуйста. Только из буфера они и прочитаются поочереди.
Для винды засунуть 4 символа в буфер, то же самое, что послеть 4 нажатия и 4 отпускания клавиш. нажал-отжал, нажал-отжал, нажал-отжал, нажал-отжал. Здесь же нужно послать сначала 4 нажатия, а потом четыре отжатия. В любом случае нужно посылать. |
|||
|
||||
| Slavik |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Сделано ; ) В флэш я пишу скрипт в программе -
Нужно чтобы мне на флэш ничего не отсылалось, а всего лишь симитировалось нажатие на кнопки. Ранее, я с одним человеком разрабатывали игру. Он на Дельфи имитировал нажатие на кнопки, а я вышеописанным образом ловил эти нажатия. Работало : ) Но мне нужно такое реализовать самому в паскале. Пусть через DOS или как то еще. Мне пока все равно, главное чтобы это был язык Паскаля : ) И чтобы работало. : ) А вообще, спасибо вам за отклики, ... это уже не молчание, что хорошо. Добавлено @ 18:24
Но при этом, не исключаю чтобы паскаль имел адрес откуда запускается флэш на компе. То есть, тот "получатель" о котором говорит Snowy |
||||||
|
|||||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Ну сам подумай. Что ты делаешь в этой строке? Здесь ты определяешь листенер, который будет слушать посылаемые ему события. Не будет события - он не сработает. Не будет события - он просто не узнает о факте нажатия клавиш. Поэтому ему нужно сказать: "Произошло событие WM_KEYDOWN". Чтобы послать клавиши твоей флэшке, нужно знать хотя бы часть заголовка окна программы, в которой она крутится. |
|||
|
||||
| Slavik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Я не спорю, а просто спрашиваю, не все ли равно я пальцем кнопку нажму или программа паскаля это сдеает за меня? Зачем точно указывать адрес? Если окно флэшки будет активным на данный момент. Чтобы послать клавиши твоей флэшке, нужно знать хотя бы часть заголовка окна программы, в которой она крутится. Да нет проблем. Мне все равно как. Допустим "game". Лишь бы уже работало... : ) А то уже почти неделю лажу по форумам, спрашиваю, никто примерного алгоритма дать неможет. Все для прожвинутых программистов расчитано. То есть, я уже согласен на все о чем ты говоришь. Пусть будет точный адрес где она установлена, название и т.д. Лишь бы уже это научился делать как то... Но пример мне нужен именно рабюочий... чтобы я мог его сам просмотреть у себя. Если надо, могу ролик флэш для пробы прикрепить вам. После нажатия на "abc" он кое что проиграет. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |