Apache flex 如何从AdobeAIR应用程序在本地计算机上执行.bat文件?

Apache flex 如何从AdobeAIR应用程序在本地计算机上执行.bat文件?,apache-flex,air,window,adobe,Apache Flex,Air,Window,Adobe,我正在使用flex4.6,我想从ma air应用程序运行一个.bat文件,有什么帮助吗?您可以使用NativeProcess类。 您可以使用NativeProcess类。 试试这个 这个类可能会对您有所帮助my_command.bat echo“Hello Native Process” 在运行应用程序(Projectname app.xml)之前,请检查supportedProfiles标记 桌面扩展桌面移动设备扩展移动设备 到 扩展桌面 package { import flash.d

我正在使用flex4.6,我想从ma air应用程序运行一个.bat文件,有什么帮助吗?

您可以使用
NativeProcess
类。

您可以使用
NativeProcess
类。 试试这个

这个类可能会对您有所帮助my_command.bat echo“Hello Native Process”

在运行应用程序(Projectname app.xml)之前,请检查supportedProfiles标记

桌面扩展桌面移动设备扩展移动设备

扩展桌面

package
{

  import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
import flash.events.ProgressEvent;
import flash.filesystem.File;

import mx.controls.Alert;

public class PlatformPackaging
{
    private var nativeProcess:NativeProcess;
    private var isErrorOccured:Boolean;

    private var batFile:File;
    private var cmdFile:File;

    private function get isWindows():Boolean
    {
        return true;
    }

    public function PlatformPackaging()
    {
    }

    public function start(targetPlatform:String):void
    {
        if(isWindows)
        {
            batFile = File.applicationDirectory.resolvePath("publish/my_command.bat");
            cmdFile = new File("c:\\Windows\\System32\\cmd.exe");
        } 

        proceedToPackaging();
    }


    private function proceedToPackaging():void {

        var processArgs:Vector.<String> = new Vector.<String>;

        processArgs.push("/c");
        processArgs.push(batFile.nativePath);

        var workingDirectory:File = File.applicationDirectory.resolvePath("publish/");
        var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();

        nativeProcessStartupInfo.arguments = processArgs;
        nativeProcessStartupInfo.executable = cmdFile;
        nativeProcessStartupInfo.workingDirectory = workingDirectory;

        nativeProcess = new NativeProcess();
        nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA,onStandardErrorOutputDataHandler);
        nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA,onStandardOutputDataHandler);
        nativeProcess.start(nativeProcessStartupInfo);
    }

    private function onStandardErrorOutputDataHandler(event:ProgressEvent) : void
    {
        var certResponse:String = nativeProcess.standardError.readUTFBytes(nativeProcess.standardError.bytesAvailable);

        trace(certResponse);
        nativeProcess.removeEventListener(ProgressEvent.STANDARD_ERROR_DATA,onStandardOutputDataHandler);
        nativeProcess.exit();
    }

    Alert.show(certResponse,'Error');
}

protected function onStandardOutputDataHandler(event:ProgressEvent):void
{
    var status:String = nativeProcess.standardOutput.readUTFBytes(nativeProcess.standardOutput.bytesAvailable);

    Alert.show(status)
}
 }
}
包
{
导入flash.desktop.NativeProcess;
导入flash.desktop.NativeProcessStartupInfo;
导入flash.events.ProgressEvent;
导入flash.filesystem.File;
导入mx.controls.Alert;
公共类平台封装
{
私有var nativeProcess:nativeProcess;
私有变量ISErrorOccursed:布尔值;
私有文件:文件;
私有var cmdFile:File;
私有函数get isWindows():布尔值
{
返回true;
}
公共功能平台包装()
{
}
公共函数启动(targetPlatform:String):无效
{
如果(iWindows)
{
batFile=File.applicationDirectory.resolvePath(“publish/my_command.bat”);
cmdFile=新文件(“c:\\Windows\\System32\\cmd.exe”);
} 
proceedToPackaging();
}
私有函数proceedToPackaging():void{
var processArgs:Vector.=新向量。;
进程参数推送(“/c”);
push(batFile.nativePath);
var workingDirectory:File=File.applicationDirectory.resolvePath(“publish/”);
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
nativeProcessStartupInfo.arguments=processArgs;
nativeProcessStartupInfo.exe=cmdFile;
nativeProcessStartupInfo.workingDirectory=工作目录;
nativeProcess=新的nativeProcess();
nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_数据,标准ErrorRoutPutDataHandler);
nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_数据,标准OutputDataHandler);
nativeProcess.start(nativeProcessStartupInfo);
}
标准ErrorRoutPutDataHandler上的私有函数(事件:ProgressEvent):void
{
var certResponse:String=nativeProcess.standardError.readUTFBytes(nativeProcess.standardError.bytesAvailable);
跟踪(证书响应);
nativeProcess.removeEventListener(ProgressEvent.STANDARD_ERROR_数据,标准输出数据处理器);
nativeProcess.exit();
}
显示(certResponse,'Error');
}
标准输出数据处理程序上受保护的函数(事件:ProgressEvent):void
{
变量状态:String=nativeProcess.standardOutput.readUTFBytes(nativeProcess.standardOutput.bytesAvailable);
警报。显示(状态)
}
}
}
请让我知道任何澄清。

试试这个

这个类可能会对您有所帮助my_command.bat echo“Hello Native Process”

在运行应用程序(Projectname app.xml)之前,请检查supportedProfiles标记

桌面扩展桌面移动设备扩展移动设备

扩展桌面

package
{

  import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
import flash.events.ProgressEvent;
import flash.filesystem.File;

import mx.controls.Alert;

public class PlatformPackaging
{
    private var nativeProcess:NativeProcess;
    private var isErrorOccured:Boolean;

    private var batFile:File;
    private var cmdFile:File;

    private function get isWindows():Boolean
    {
        return true;
    }

    public function PlatformPackaging()
    {
    }

    public function start(targetPlatform:String):void
    {
        if(isWindows)
        {
            batFile = File.applicationDirectory.resolvePath("publish/my_command.bat");
            cmdFile = new File("c:\\Windows\\System32\\cmd.exe");
        } 

        proceedToPackaging();
    }


    private function proceedToPackaging():void {

        var processArgs:Vector.<String> = new Vector.<String>;

        processArgs.push("/c");
        processArgs.push(batFile.nativePath);

        var workingDirectory:File = File.applicationDirectory.resolvePath("publish/");
        var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();

        nativeProcessStartupInfo.arguments = processArgs;
        nativeProcessStartupInfo.executable = cmdFile;
        nativeProcessStartupInfo.workingDirectory = workingDirectory;

        nativeProcess = new NativeProcess();
        nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA,onStandardErrorOutputDataHandler);
        nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA,onStandardOutputDataHandler);
        nativeProcess.start(nativeProcessStartupInfo);
    }

    private function onStandardErrorOutputDataHandler(event:ProgressEvent) : void
    {
        var certResponse:String = nativeProcess.standardError.readUTFBytes(nativeProcess.standardError.bytesAvailable);

        trace(certResponse);
        nativeProcess.removeEventListener(ProgressEvent.STANDARD_ERROR_DATA,onStandardOutputDataHandler);
        nativeProcess.exit();
    }

    Alert.show(certResponse,'Error');
}

protected function onStandardOutputDataHandler(event:ProgressEvent):void
{
    var status:String = nativeProcess.standardOutput.readUTFBytes(nativeProcess.standardOutput.bytesAvailable);

    Alert.show(status)
}
 }
}
包
{
导入flash.desktop.NativeProcess;
导入flash.desktop.NativeProcessStartupInfo;
导入flash.events.ProgressEvent;
导入flash.filesystem.File;
导入mx.controls.Alert;
公共类平台封装
{
私有var nativeProcess:nativeProcess;
私有变量ISErrorOccursed:布尔值;
私有文件:文件;
私有var cmdFile:File;
私有函数get isWindows():布尔值
{
返回true;
}
公共功能平台包装()
{
}
公共函数启动(targetPlatform:String):无效
{
如果(iWindows)
{
batFile=File.applicationDirectory.resolvePath(“publish/my_command.bat”);
cmdFile=新文件(“c:\\Windows\\System32\\cmd.exe”);
} 
proceedToPackaging();
}
私有函数proceedToPackaging():void{
var processArgs:Vector.=新向量。;
进程参数推送(“/c”);
push(batFile.nativePath);
var workingDirectory:File=File.applicationDirectory.resolvePath(“publish/”);
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
nativeProcessStartupInfo.arguments=processArgs;
nativeProcessStartupInfo.exe=cmdFile;
nativeProcessStartupInfo.workingDirectory=工作目录;
nativeProcess=新的nativeProcess();
nativeProcess.addEventListener(ProgressEvent.STANDARD_ERROR_数据,标准ErrorRoutPutDataHandler);
nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_数据,标准OutputDataHandler);
nativeProcess.start(nativeProcessStartupInfo);
}
标准ErrorRoutPutDataHandler上的私有函数(事件:ProgressEvent):void
{
var certResponse:String=nativeProcess.standardError.readUTFBytes(nativeProcess.standardError.bytesAvailable);
跟踪(证书响应);
nativeProcess.removeEventListener(ProgressEvent.STANDARD_ERROR_数据,标准输出数据处理器);
nativeProcess.exit();
}
显示(certResponse,'Error');
}
标准输出数据处理程序上受保护的函数(事件:ProgressEvent):void
{
变量状态:String=nativeProcess.standardOutput.readUTFBytes(nativeProcess.standardOutput.bytesAvailable);
警报。显示(状态)
}
}
}

请让我知道任何澄清。

嘿,raja,上面的代码在my.as类n中显示了错误,显示:-受保护的属性只能用于类属性定义。对于StandardOutputDataHandler.Oops!上的最后一个函数!。已更正,请最后放两个大括号。另外,请确保您必须在adobe air项目的src文件夹中创建publish dir(其中包含我们的.bat文件)。如果您遵循上面的类。嘿,raja,上面的代码在my.as类n中显示错误,显示:-受保护的在