Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Эмуляция клавиш в неактивном приложении 
:(
    Опции темы
Romы4
Дата 24.7.2009, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



Делал так:

var  wnd: HWND;
wnd := FindWindow('notepad', nil);
PostMessage(wnd, WM_KEYDOWN, VK_F1, 0);

С блокнотом проходит все на ура, даже когда он не активен, не работает правда когда свернут....с другими приложениями работает токо когда они активны.....помогите плиз примером, суть задачи состоит в том чтобы эмулировать нажатие клавишь в свернутом или хотябы не в активном приложении
PM MAIL   Вверх
Romikgy
Дата 24.7.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romы4
Дата 24.7.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



это было слишком просто)))....нужно чтобы окно не вызывалось поверх остальных (всегда оставалось неактивным)
PM MAIL   Вверх
Romikgy
Дата 24.7.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



зачем такое?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rrader
  Дата 25.7.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



Есть и обходные пути. Команды меню можно эмулировать через WM_COMMAND, при этом идентификатор можно получить, подсмотрев в сканере окон (InqSoft Window Scanner умеет). 
Код

SendNotifyMessage(NotepadWindowHandle, WM_COMMAND, 64, 0);



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Romы4
Дата 1.8.2009, 16:37 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



Цитата(Rrader @ 25.7.2009,  14:25)
Есть и обходные пути. Команды меню можно эмулировать через WM_COMMAND, при этом идентификатор можно получить, подсмотрев в сканере окон (InqSoft Window Scanner умеет). 
Код

SendNotifyMessage(NotepadWindowHandle, WM_COMMAND, 64, 0);

это прекрасно пашет с блокнотом.....но с другими приложениями не работает.......

Я сделал так как мне посоветовал Romikgy -т.е. брал фокус нужного мне окна, посылал в него необходимое нажатие клавиатуры, затем возвращал фокус текущему окну.....НО создалась новая проблема, так как мне надо постоянно с интервалом 1-5 секунд посылать нажатие клавиатуры-возникло мерцание окон из-за постоянного смены фокуса........помогите как можно от этого избавится  smile 
PM MAIL   Вверх
Rrader
  Дата 1.8.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



Цитата(Romы4 @  1.8.2009,  22:37 Найти цитируемый пост)
это прекрасно пашет с блокнотом.....но с другими приложениями не работает.......

Разумеется, для каждого приложения нужно смотреть, что подставлять в параметры. А как это делать, я написал уже smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Romы4
Дата 1.8.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



а можно подробнее про параметры SendNotifyMessage...я имею в виду цифры
PM MAIL   Вверх
Rrader
Дата 1.8.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



В аттаче

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  Notepad.JPG 79,87 Kb


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Romы4
Дата 1.8.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



с этим я разобрался...но все равно спасибо большое.....но в сканере я так и ненашел где он отображает горячие клавиши

Добавлено через 13 минут и 25 секунд
я так понял что для горячих клавишь синтаксис такой:
SendNotifyMessage(NotepadWindowHandle, WM_HOTKEY, 64, 0);.............но как сканер отображает id кнопок я не нашел
PM MAIL   Вверх
Rrader
  Дата 2.8.2009, 06:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



Ничего Вы не поняли, поэтому перечитайте всю тему внимательно от начала до конца и попробуйте понять еще раз. Не выйдет - бросайте это дело.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Romы4
Дата 2.8.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



Ого поммог))))....если все следовали Вашему совету и бросали на полдороги....хммм-мы бы наверное еще на ветках сидели
PM MAIL   Вверх
Yanis
Дата 5.8.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Romы4
Да зачем тебе горячие клавиши-то? Тем более, что они есть не у всех пунктов меню.
У тебя есть идентификатор пункта меню (узнаёшь чеоез s0m Windows Scanner) и ты его программно «нажимаешь», если так можно выразиться.

П. С. Скорее, мы сидели бы на ветках, если бы вопрошающий не слышал ответа.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Romы4
Дата 31.8.2009, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 25.6.2009

Репутация: нет
Всего: нет



Ребят, спасибо вроде разобрался.....с любым окном получается кроме d3d приложения-на него фокус надо обязательно..можно конечно брать хэндл активного окна потом брать в фокус нужное d3d приложение нажимать в нем нужные клавиши и возвращать фокус на предыдущее окно-это единственный способ который я нашел....но от вызывает мерцание между окнам+пока d3d в фокусе не возможно с другим окном работать...а нужно именно так
PM MAIL   Вверх
0LineGate
Дата 21.10.2009, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 17.2.2007
Где: Россия, Тула

Репутация: 0
Всего: 2



Цитата(Romы4 @ 31.8.2009,  07:31)
Ребят, спасибо вроде разобрался.....с любым окном получается кроме d3d приложения-на него фокус надо обязательно..можно конечно брать хэндл активного окна потом брать в фокус нужное d3d приложение нажимать в нем нужные клавиши и возвращать фокус на предыдущее окно-это единственный способ который я нашел....но от вызывает мерцание между окнам+пока d3d в фокусе не возможно с другим окном работать...а нужно именно так

Код

 SendMessage(Handle, WM_KEYDOWN, KeyId, 0);
 SendMessage(Handle, WM_KEYUP, KeyId, 0);

Так и с d3d приложениями должно работать, я думаю.  smile 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.