DirectInput и приложение, которое его использует
От: ShadowDragon  
Дата: 11.03.09 08:33
Оценка:
Воспользовался поиском, нашёл похожую тему, но решения там нет и описания толком тоже нет.

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

Что нужно сделать: нужно передавать нажатия клавиатуры и мыши в свернутое приложение.

Наработки: Post/SendMessage не работают с DirectInput. Работает только keybt/mouse_event. А так-же SendInput, если в качестве сканкодов передавать не обычные значения, а те, которые использует DirectInput, там есть дефайны в заголовочных файлах DirectX.

Ищу способ сделать это без установки окна в foreground режиме. Или установить его в псевдо-фореграунд режиме, когда окна не активно, но винда "думает", что оно активно, если такое вообще возможно.

Если можете привести пример, приводите. Понимаю код C/C++/VB/Delphi, мне собсно только суть нужна.
По возможности, без инжекта кода в приложение, которое использует DirectInput.

11.03.09 12:34: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: DirectInput и приложение, которое его использует
От: 8bit  
Дата: 11.03.09 09:28
Оценка: +1
Здравствуйте, ShadowDragon, Вы писали:

У DirectInput есть несколько видов cooperative level. Игры обычно используют такой, при котором
если окно не в foreground, то DirectInput освобождает занятое устройство ввода (что кстати правильно)
и соответственно что бы вы там не слали, все будет идти мимо "кассы".
Re[2]: DirectInput и приложение, которое его использует
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 11.03.09 19:38
Оценка:
Здравствуйте, 8bit, Вы писали:

8>У DirectInput есть несколько видов cooperative level. Игры обычно используют такой, при котором

8>если окно не в foreground, то DirectInput освобождает занятое устройство ввода (что кстати правильно)
8>и соответственно что бы вы там не слали, все будет идти мимо "кассы".

+1.

Если интересно, это вызов IDirectInputDevice8::SetCooperativeLevel, чаще всего используется с флагами DISCL_EXCLUSIVE | DISCL_FOREGROUND, которые и определяют, что при потере фокуса устройство "теряется" и для восстановления нужно выполнить некоторые действия...
[КУ] оккупировала армия.
Re[3]: DirectInput и приложение, которое его использует
От: ShadowDragon  
Дата: 11.03.09 23:54
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Если интересно, это вызов IDirectInputDevice8::SetCooperativeLevel, чаще всего используется с флагами DISCL_EXCLUSIVE | DISCL_FOREGROUND, которые и определяют, что при потере фокуса устройство "теряется" и для восстановления нужно выполнить некоторые действия...



И какие-же действия нужно выполнить?
Re: DirectInput и приложение, которое его использует
От: ShadowDragon  
Дата: 16.03.09 22:14
Оценка:
Помощь будет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.