将静默键发送到Flash对象

时间:2011-03-23 01:45:48

标签: flash activex keypress

我基本上是在尝试将按键发送到Flash对象。基本上我有一个Internet Explorer的Win32Com实例,我从我加载的Internet Explorer文档中获取了一个Flash对象。

有没有办法在不实际按键的情况下向这个Flash对象发送击键?

请允许我澄清一下: 这不是我的Flash应用程序,它是以.swf格式发布到Web上的Flash应用程序。

3 个答案:

答案 0 :(得分:1)

您只需在应用中调度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

答案 1 :(得分:0)

在Windows上,您可以生成输入并将其发送到具有SendInput功能的操作系统。输入是在系统级别生成的,就像用户按键或使用鼠标一样,因此浏览器必须处于焦点以获得输入。

答案 2 :(得分:0)

***更新...再次*** 好的,所以我想我在这里对你的问题有真正的答案。查看此文档:

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

您需要使用axShockwaveFlash.FlashCall接口。

*** *** UPDATE 找到此链接:

Get instance of Excel application with C# by Handle

说明如何获取对活动应用程序实例的引用。

***原创邮政*** 我同意alxx这是你必须做的本地事情,我不知道这将是多么容易做到。你不得不以某种方式获取flash实例,而且我不确定有多少变量可以解决这个问题。但是,我可以说这是可能的,这里有一些关于如何使用各种语言(C#,VC ++等)的文档:

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

以下是关于如何与C#中的flash控件进行交互的博客文章(至少可以给你一个想法):

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

SVN上有一个源代码链接。这不是最好的答案,因为我没有提供任何确切的方法,但我希望这对你来说是一个好的开始。