0

当我在浏览器中运行某些 Flash 应用程序时,我被要求找出一种方法来关闭主机上正在运行的应用程序,这是一项看似困难的任务,但我已经想到了一些可能的方法来实现这一点,我想询问哪种方法是最好的。

在我看来,这些是我的可能性

  1. 让 Flash 应用程序创建另一个程序检查的 cookie,如果检测到,计算机上运行的该程序将关闭其他应用程序。
  2. 在主机上运行一个程序,侦听特定端口,并在发送正确的字符串时进行 fx。通过使用 actionscript 套接字,程序将暂时关闭应用程序。
  3. 创建一个嗅探网络流量的程序,如果正在下载有问题的 swf,请暂时关闭其他应用程序(在我看来,这似乎是最不可行的方法,甚至不确定是否可以有效地做到这一点)

我需要这样做的原因是,flash 应用程序需要访问主机的网络摄像头,它兼作运动检测摄像头,这意味着摄像头将在运动检测软件运行时被锁定。所以我需要关闭运动检测软件,在flash中抓一张图片,保存图片并重新启动运动检测。

我错过了一些超级简单的方法吗?你将如何实现这一目标?提前感谢您的回答。

4

2 回答 2

0

您还可以使用 fscommand() 函数将消息传递给 Director 或 Visual Basic、Visual C++ 和其他可以承载 ActiveX 控件的程序。

FSCommand

于 2013-05-03T10:01:59.300 回答
0

TBH 我不认为你会在这方面取得成功,除非你将它创建为一个 Air 应用程序(当然,我没有花费太多脑力来思考解决方案)。Flash 播放器非常限制您可以做什么和不能做什么。ExternalInterface是 FSCommand 的替换,它被认为是过时的,顺便说一句。它允许您从 AS 与 swf 容器进行通信。JS(也许是 VBScript?)。

但是,如果您需要创建一个 Air 应用程序,您可以使用NativeProcess它允许您在主机上运行应用程序。例如,如果你想运行一个 java .jar 你可以这样做:

var javaExecutable : File = new File();
javaExecutable.nativePath = '/path/to/java/';

var processArguments : Vector.<String> = Vector.<String>([
    '-jar',
    '/path/to/jar/',
    'foo'
]);

var process : NativeProcessStartupInfo = new NativeProcessStartupInfo();
process.executable = javaExecutable;
process.arguments = processArguments; 

var shell : NativeProcess = new NativeProcess();
shell.addEventListener(NativeProcessExitEvent.EXIT, onExitEvent);
shell.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onStdOutputDataEvent);
shell.start(process);

非常重要的注意事项:(强调我的)

NativeProcess 类及其功能仅适用于使用本机安装程序安装的AIR 应用程序(扩展桌面配置文件应用程序)。

于 2013-05-03T11:07:18.473 回答