Apache flex 如何从Flash/Flex/AIR运行EXE文件?
我想从我的Flash/Flex/AIR应用程序运行一个.exe文件,怎么可能呢 我需要的是构建一个接口来打开xls文件并将其转换为swf,当我运行Apache flex 如何从Flash/Flex/AIR运行EXE文件?,apache-flex,flash,actionscript-3,air,Apache Flex,Flash,Actionscript 3,Air,我想从我的Flash/Flex/AIR应用程序运行一个.exe文件,怎么可能呢 我需要的是构建一个接口来打开xls文件并将其转换为swf,当我运行convert.exe infle.xls outFile.swf时,我有一个exe文件。 转换完成后,我需要显示应用程序中的所有SWF 我知道动作脚本3.0。我认为这可能是用AIR完成的,因为2.0版本使用了。我不知道你是否可以运行一个.exe文件(因为安全问题),但我知道你可以运行python脚本(我已经完成了),这样你就可以创建一个调用你的.ex
convert.exe infle.xls outFile.swf
时,我有一个exe文件。
转换完成后,我需要显示应用程序中的所有SWF
我知道动作脚本3.0。我认为这可能是用AIR完成的,因为2.0版本使用了。我不知道你是否可以运行一个.exe文件(因为安全问题),但我知道你可以运行python脚本(我已经完成了),这样你就可以创建一个调用你的.exe文件的python脚本 以下是来自以下帮助的(注释)示例:
/。。。
//包装和进口报关单
// ...
公共类NativeProcessExample扩展了Sprite
{
//这就是过程
公共var过程:NativeProcess;
公共函数NativeProcessExample()
{
//我们必须知道是否可以运行NativeProcess
if(NativeProcess.isSupported)
setupAndLaunch();
其他的
跟踪(“不支持NativeProcess”);
}
公共函数setupAndLaunch():void
{
//我们创建一个NativeProcessStartupInfo,它将告诉您要运行的进程
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
var file:file=file.applicationDirectory.resolvePath(“test.py”);
nativeProcessStartupInfo.executable=文件;
//现在创建参数向量,将其传递给可执行文件
变量processArgs:Vector.=新向量。();
processArgs[0]=“foo”;
nativeProcessStartupInfo.arguments=processArgs;
//创建流程
进程=新的NativeProcess();
//侦听事件中的I/O和错误
process.addEventListener(ProgressEvent.STANDARD_输出数据,onOutputData);
process.addEventListener(ProgressEvent.STANDARD_ERROR_数据,onErrorData);
process.addEventListener(nativeProcessExiteEvent.EXIT,onExit);
process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR,onIOError);
process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR,onIOError);
//快跑!
进程启动(nativeProcessStartupInfo);
}
//事件处理程序
公共函数onOutputData(事件:ProgressEvent):无效
{
跟踪(“get:,process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable));
}
公共函数onErrorData(事件:ProgressEvent):无效
{
跟踪(“错误-”,process.standardError.readUTFBytes(process.standardError.bytesAvailable));
}
公共函数onExit(事件:NativeProcessExiteEvent):无效
{
跟踪(“进程已退出”,事件.exitCode);
}
公共函数错误(事件:IOErrorEvent):无效
{
跟踪(event.toString());
}
}
我希望这有帮助您可以运行.exe文件,但无法运行.bat文件。此外,为了使用NativeProcess,.air安装程序必须转换为本机安装程序(.exe、.dmg等),这可以通过使用ADT来完成。用户可以从flash player访问本地驱动器上的文件。这不是直接的安全问题,因为必须首先提示用户。因此,所需的提示或按钮的按下就像一个沙箱(在软意义上)。我看不出本地文件访问与在播放器中执行.exe文件有什么不同。为什么不接受答案?我看到了你的一些问题,很多问题都有很好的答案(比如回答问题),但你不接受。为什么?
// ...
// package and imports declarations
// ...
public class NativeProcessExample extends Sprite
{
// this is the process
public var process:NativeProcess;
public function NativeProcessExample()
{
// we have to know if we can run NativeProcess
if(NativeProcess.isSupported)
setupAndLaunch();
else
trace("NativeProcess not supported.");
}
public function setupAndLaunch():void
{
// we create a NativeProcessStartupInfo, this will tell the what process do you want to run
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("test.py");
nativeProcessStartupInfo.executable = file;
// now create the arguments Vector to pass it to the executable file
var processArgs:Vector.<String> = new Vector.<String>();
processArgs[0] = "foo";
nativeProcessStartupInfo.arguments = processArgs;
// create the process
process = new NativeProcess();
// listen to events for I/O and Errors
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData);
process.addEventListener(NativeProcessExitEvent.EXIT, onExit);
process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError);
process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError);
// run it!
process.start(nativeProcessStartupInfo);
}
// event handlers
public function onOutputData(event:ProgressEvent):void
{
trace("Got: ", process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable));
}
public function onErrorData(event:ProgressEvent):void
{
trace("ERROR -", process.standardError.readUTFBytes(process.standardError.bytesAvailable));
}
public function onExit(event:NativeProcessExitEvent):void
{
trace("Process exited with ", event.exitCode);
}
public function onIOError(event:IOErrorEvent):void
{
trace(event.toString());
}
}