Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Нажать кнопку в приложении DirectX Добавлено: 10.07.07 21:25  

Автор вопроса:  TERMIT | Web-сайт: xtec.ru | ICQ: 5297101 

Ответить

  Ответы Всего ответов: 33  

Номер ответа: 16
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #16 Добавлено: 12.07.07 04:42
Х.з. может быть... В играх я тоже не разу кнопки не нажимал, незнаю. Просто примеры приведенные TERMIT'ом и теоретически недолжны работать. Если ознакомится со статьей ссылку на которуя я привёл выше, можно научится хотябы правильно использовать SendKeys. Возможно в играх, как ты говоришь, нужен будет другой подход.

Ответить

Номер ответа: 17
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #17
Добавлено: 12.07.07 15:03
Compile error:

Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound function

OK <-> Справка



Вот такую мне ошибищу выдает и помечает:
Call diDevKeyboard.SendDeviceData(cdod, rgdod, 0)


вот это выделяет: rgdod =( Шо делать?

Ответить

Номер ответа: 18
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #18
Добавлено: 12.07.07 15:06
Короче, заработало, затупил я.... но чтота теперь другие ошибки выдает. не мог бы ты скинуть полный текст проги... херь какая то...

Ответить

Номер ответа: 19
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #19
Добавлено: 12.07.07 15:15
Блин HACKER. Послушай та ссылка что ты дал, добавляет только одно:

ReturnValue = Shell("CALL.exe", 1) ' Запускает калькулятор.
AppActivate ReturnValue ' Активизирует калькулятор.

первая строка для запуска и получения значения к чему обращатся втрой строке. вторая строка делает активным это окно... Я е на столько тупой чтобы не понять что когда юзаеш SendKey нужно активным держать окно.... Я в таймер ставил это все дело которое я выше приводил примером... И в блокноте и в других прогах пахало, а в игру нет =(

Сдесь нада внатуре через директ мочить. Но чтота у меня там все не сростается тот примерчик =)

Ответить

Номер ответа: 20
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #20
Добавлено: 12.07.07 17:44
Отправил полный пример.
Но он из SDK8. Так что если каких -то дллешек не хватит, я не виноват.:)

Ответить

Номер ответа: 21
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #21 Добавлено: 13.07.07 00:03
SendMessage не поможет ни фига =) Он отсылает проге мессаг о нажатие клавиши, где-то то же самое делает Sendkeys(keybd_event) (конечно другое, оно пишет в общий буфер сообщений, а сендмессаг в частный оконный)
1. Тут надо поднимать драйвер виртуальной клавы, который перехватывает все мессаги с первой и перерабатывая их на себе, отдает. (это если ниче не поможет, хардкорный вариант)
2. Попробовать использовать элемент хука клавы от Desaware входящий в комплект SpyWorks для VB6.

Ответить

Номер ответа: 22
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #22 Добавлено: 13.07.07 00:05

SpyWorks...
NT Service Toolkit...
StateCoder...
VersionStamper...
StorageTools and more...
With Desaware's Universal .NET and Universal COM you have complete control and an inside view of advanced programming techniques. $649 each - get them both for only $995.

Сцуки, раньше 15 баксов стоил =) Ващще обалдели. Щас я у себя посмотрю, сомневаюсь что в инете можно его найти.

Ответить

Номер ответа: 23
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #23
Добавлено: 13.07.07 14:07
vito

Привет пример получил, но ведь там только:

Создание устройства и чтение буфера. это у меня есть а вот наоборот в буфер директа как записать. не могу!!!

Ответить

Номер ответа: 24
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #24
Добавлено: 13.07.07 20:44
У тебя пример не работает по двум причинам.
1. Не подключены нужные либы (если посланный пример компилится все ок).
2. Не создан объект (девайс). Если с примером нормально, значит вставляй процедуру (из примера), только посмотри, чтобы имена девайса и etc совпадали.
Все должно быть ок.

Ответить

Номер ответа: 25
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #25
Добавлено: 13.07.07 20:46
Во втором случае(2) я имею в виду процедуру записи, котору я привел ранее.

Ответить

Номер ответа: 26
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #26
Добавлено: 14.07.07 14:06
Ну дык компилится все нормально, но имено при вызове строчки:

    Call diDEV.SendDeviceData(cdod, rgdod, 0)

он выдает ошибку:

Run-time error: 445

Object doesn't support this action


Вот я выцгрузил имено тот проект который выдает ошибку:

http://xtec.ru/termit/4.rar

Ответить

Номер ответа: 27
Автор ответа:
 W[4Fh]LF



Вопросов: 0
Ответов: 187
 Web-сайт: hunger.ru
 Профиль | | #27
Добавлено: 15.07.07 09:11
keybd_event не посылает никаких сообщений окнам, это низкоуровневая функция, которая посылает "нажатия" в keyboard stream и на уровне системы нет разницы между обычным нажатием и этим. Функция прекрасно работает и в OpenGL и в DirectX приложениях. По-крайней мере, когда-то я писал тренеры для Soldier of Fortune и CS на основе этой функции и у меня всё работало. Единственная особенность - это сделать задержку между нажатием и отпусканием:

Call keybd_event(VK_RETURN, 0, 0, 0)
Call Sleep(50)
Call keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0)

Ответить

Номер ответа: 28
Автор ответа:
 TERMIT



ICQ: 5297101 

Вопросов: 16
Ответов: 93
 Web-сайт: xtec.ru
 Профиль | | #28
Добавлено: 15.07.07 13:42
Привет, к сожалению, я попрробовал но не работает =(

игра Resident Evil 4

=((((( растоился я...

Ответить

Номер ответа: 29
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #29
Добавлено: 16.07.07 01:34
он выдает ошибку:

Run-time error: 445

Object doesn't support this action


6 - ки у меня уже года три как не стоит.
Но попробуем разобраться.
В SDK для С++ есть более подробный пример. До вызова функции нужно получить идентификатор клавиши.

DIDEVICEOBJECTINSTANCE didoi;
DWORD NumLockID;
HRESULT hr = pdev->GetObjectInfo(&didoi,
        ;DIMAKEUSAGEDWORD(0x07,0x53), DIPH_BYUSAGE);
NumLockID = didoi.dwType;

Правда у меня не работает, пишет что аргументы неверные. Описания по этой функции очень скудные.
То же самое нужно сделать и для VB.
Можно посмотреть в SDK. Но на всякий случай приведу ее описание. Пример в SDK не прикладывается.

object.GetObjectInfo( _
  obj As Long, _
  how As CONST_DIPHFLAGS) _
  As DirectInputDeviceObjectInstance
Parts
object
Resolves to a DirectInputDevice8 object.
obj
Value that identifies the object whose information will be retrieved. The interpretation of this parameter depends on the value specified in the how parameter.
how
Value specifying how the obj parameter should be interpreted. This value can be one of the constants of the CONST_DIPHFLAGS enumeration.

//------------------------

CONST_DIPHFLAGS
Members of the CONST_DIPHFLAGS enumeration are used to specify how a device object is identified. They are used in the DirectInputDevice8.GetObjectInfo method as well as in the DIPROPLONG and DIPROPRANGE types.

Enum CONST_DIPHFLAGS
    ;DIPH_BYID = 2
    ;DIPH_BYOFFSET = 1
    ;DIPH_BYUSAGE = 3
    ;DIPH_DEVICE = 0
End Enum
Constants
DIPH_BYID
The device object is identified by the instance identifier obtained from the return value of the DirectInputDeviceObjectInstance.GetType method.
DIPH_BYOFFSET
The device object is identified by the offset into the current data format of the object whose information is being accessed.
DIPH_BYUSAGE
The device object is identified by the HID usage page and usage values in packed form.
DIPH_DEVICE
The property applies to the entire device, not to a particular object.
//-----------------------------

HID

HAL
Hardware abstraction layer. The HAL consists of hardware and device driver mechanisms that insulate applications from device-specific implementation details. If a capability requested by an application is not implemented by the current hardware, the capability is emulated by the software.
hardware blitter
A hardware component, built into the display adapter, that performs efficient blit operations.
HEL
Hardware emulation layer. The HEL provides software-based emulation of features that are not present in hardware.
HID
Human Interface Device. A USB class representing devices that enable a human to control a computer.
hit detection
See collision detection.
host
In Microsoft® DirectPlay®, a virtual player whose ID is DPID_SYSMSG. The host manages system messages and messages sent to all players in a session.
HREF
Horizontal refresh. In a video stream, the HREF is active to signal that the display is to begin a new scan line. See also VREF.
HRTF
Head-related transfer function. A mathematical representation of the effect of the listener's physiology on the pitch and timing of sounds arriving from different directions.

Если разберешься расскажи.

Ответить

Номер ответа: 30
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #30
Добавлено: 16.07.07 03:36
Инфы почти нет.
И это действительно работа на уровне драйвера.
Лучше всего сходи на wasm.ru и спроси о SendDeviceData.

Ктати на Gamуdev точно такой - же вопрос обсуждался, но решения так и не нашли.

http://www.gamedev.ru/code/forum?id=15555

Решили церез драйвер обращения перехватывать. А какой драйвер на VB.:)
Задачка оказалась не простой.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам