Apache flex 如何从AdobeAIR应用程序在本地计算机上执行.bat文件?
我正在使用flex4.6,我想从ma air应用程序运行一个.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
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中显示错误,显示:-受保护的在