简体   繁体   English

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

[英]How to run an EXE file from Flash/Flex/AIR?

I want to run an .exe file from my Flash/Flex/AIR Application, How is it possible? 我想从我的Flash / Flex / AIR应用程序运行.exe文件,怎么可能?

What I need is to build an Interface to open a xls file and convert it into swf, I have the converter file which is an exe file, when I run convert.exe infile.xls outFile.swf . 我需要的是构建一个接口来打开一个xls文件并将其转换为swf,当我运行convert.exe infile.xls outFile.swf时,我有一个转换文件,它是一个exe文件。 once the conversion is done, I need to show all swfs inside my Application. 转换完成后,我需要在我的应用程序中显示所有swfs。

I know Action Script 3.0. 我知道动作脚本3.0。

I think this may be done with AIR since 2.0 version using NativeProcess . 我认为这可以使用AIR自2.0版本使用NativeProcess I don't know if you can run a .exe file (because of the security issues) but I know you can run python scripts (I've done it) so you can make a python script who calls your .exe file 我不知道你是否可以运行.exe文件(因为安全问题),但我知道你可以运行python脚本(我已经完成了)所以你可以创建一个调用.exe文件的python脚本

Here is the (commented) example from the Help of NativeProcess : 以下是NativeProcess帮助中的(注释)示例:

// ...
// 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());
    }
}

I hope this helps 我希望这有帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM