Отправить молчаливые ключи в Flash Object - PullRequest
1 голос
/ 23 марта 2011

Я пытаюсь отправить нажатие на объект Flash.По сути, у меня есть экземпляр Win32Com Internet Explorer, и у меня есть Flash-объект, взятый из загруженного документа Internet Explorer.

Есть ли способ отправить нажатия клавиш на этот Flash-объект без фактического нажатия клавиш?

Пожалуйста, позвольте мне уточнить: это не мое приложение Flash, это приложение Flash, опубликованное в Интернете в форме .swf.

Ответы [ 3 ]

1 голос
/ 23 марта 2011

Вы можете симулировать нажатия клавиш, просто отправив KeyboardEvent в ваше приложение:

public function Main() 
{
    // add a listener to our stage
    this.stage.addEventListener( KeyboardEvent.KEY_DOWN, this._onKeyDown );

    // mimics an event for an 'a' key press
    var e:KeyboardEvent = new KeyboardEvent( KeyboardEvent.KEY_DOWN, true, false, 97, 65 );
    this.dispatchEvent( e );
}

// called when a key is pressed
private function _onKeyDown( e:KeyboardEvent ):void
{
    trace( "Key pressed! " + e.keyCode );
    trace( e.keyCode + " = keycode" );
    trace( e.keyLocation + " = key location" );
    trace( e.charCode + " = char code" );
}

Проверьте класс KeyboardEvent для получения дополнительной информации: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/KeyboardEvent.html

Если вы хотите запустить это из своего браузера, то вы можете настроить вызов ExternalInterface для вызова вашей флеш-функции, которая будет запускать событие. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

0 голосов
/ 23 марта 2011

*** ОБНОВЛЕНИЕ ... СНОВА *** Итак, я думаю, что у меня есть реальный ответ на ваш вопрос здесь. Проверьте эту документацию:

http://livedocs.adobe.com/flex/3/html/help.html?content=19_External_Interface_10.html

Вы захотите использовать интерфейс axShockwaveFlash.FlashCall.

*** UPDATE *** Нашел эту ссылку:

Получить экземпляр приложения Excel с C # по дескриптору

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

*** ОРИГИНАЛЬНЫЙ ПОЧТА *** Я согласен с alxx, это то, что вам придется делать изначально, и я не знаю, что это будет так просто сделать. Вам придется каким-то образом захватить экземпляр flash, и я не уверен, насколько это будет сложно, так как есть множество переменных, которые нужно учитывать. Тем не менее, я могу сказать, что это можно сделать, и вот некоторая документация о том, как сделать это с различными языками (C #, VC ++ и т. Д.):

http://msdn.microsoft.com/en-us/library/ms171548.aspx

А вот мое сообщение в блоге о том, как взаимодействовать с управлением вспышкой в ​​C # (по крайней мере, чтобы дать вам представление):

http://blog.ascensionsystems.ca/?p=153

Ссылка на исходный код также доступна в SVN. Это не самый лучший ответ, потому что я не предлагаю какой-либо точный метод, но я надеюсь, что это хорошее начало для вас.

0 голосов
/ 23 марта 2011

В Windows вы можете создавать входные данные и отправлять их в ОС с помощью функции SendInput .Ввод генерируется на системном уровне, как будто пользователь нажимает клавиши или использует мышь, поэтому браузер должен быть в фокусе, чтобы получить ввод.

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