我基本上是在尝试将按键发送到Flash对象。基本上我有一个Internet Explorer的Win32Com实例,我从我加载的Internet Explorer文档中获取了一个Flash对象。
有没有办法在不实际按键的情况下向这个Flash对象发送击键?
请允许我澄清一下: 这不是我的Flash应用程序,它是以.swf格式发布到Web上的Flash应用程序。
答案 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上有一个源代码链接。这不是最好的答案,因为我没有提供任何确切的方法,但我希望这对你来说是一个好的开始。