我有一个Web应用程序,用于处理从专用麦克风接收到的事件和音频。音频由网页中运行的Java小应用程序处理,但其他事件(麦克风连接,麦克风断开连接,按下麦克风按钮)由ActiveX对象处理。在Applet中加载ActiveX对象
中的ActiveX对象捕获这些事件,并调用JavaScript代码来处理它们
<!-- Load the ActiveX control -->
<object id="PhilipsSpeechMikeCtrl" width="0" height="0" tabindex="-1"
classid="CLSID:AAA44754-CC81-4692-91AF-7064E58EB22A"
standby="Loading Philips SpeechMike component..."
type="application/x-oleobject">
</object>
<script type="text/javascript">
// This is Microsofts javascript way of trapping ActiveX object events.
function PhilipsSpeechMikeCtrl::SPMEventDeviceConnected(deviceID) {
// Call JavaScript code to handle the microphone connected event
}
function PhilipsSpeechMikeCtrl::SPMEventDeviceDisconnected(deviceID) {
// Call JavaScript code to handle the microphone disconnected event
}
function PhilipsSpeechMikeCtrl::SPMEventButton(deviceID, eventId) {
// Call JavaScript code to handle the microphone button pressed event
}
</script>
当然这种方法的一个问题是,它完全依赖于IE。我更喜欢在applet中加载ActiveX对象,将事件捕获到那里并处理applet中的事件或从applet调用的JavaScript代码。这应该使我能够在任何支持applet的浏览器中运行该应用程序。
我不完全确定如何去执行我上面提出的解决方案,有什么建议吗?
更新:我意识到我上面提出的解决方案仍然依赖于IE,这很好。我的直接目标是支持Windows上的所有浏览器。
有人建议,不要使用ActiveX,我可以使用JNI(或JNA)来访问基于ActiveX对象的DLL。但是,我实际上并不想调用DLL中的函数,我希望DLL可以调用我,即注册一个事件处理程序。
谢谢, 唐
其他浏览器不支持ActiveX,但Java是。您可以从Java调用ActiveX。 – 2009-05-01 19:55:27
如何从Java调用ActiveX控件(带有图形组件)? – GreatDane 2014-10-08 11:02:34