Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何从Flash/Flex/AIR运行EXE文件?_Apache Flex_Flash_Actionscript 3_Air - Fatal编程技术网

Apache flex 如何从Flash/Flex/AIR运行EXE文件?

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

我想从我的Flash/Flex/AIR应用程序运行一个.exe文件,怎么可能呢

我需要的是构建一个接口来打开xls文件并将其转换为swf,当我运行
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());
    }
}