Actionscript 3 如何在Air应用程序中实现NativeProcess
我需要用NativeProcess做一些非常简单的事情,我需要通过cmd行启动一个.exe文件并传递一个参数。我已经找到了NativeProcess示例,但它们都用于更复杂的事情,并且没有显示完整的实现。我有很多使用flash as3的经验,但不是在这个特定的领域。。。如果有人能告诉我这是如何从头到尾完成的,我将不胜感激。以下是Adobe网站上的代码,可以完全按照您的要求执行:Actionscript 3 如何在Air应用程序中实现NativeProcess,actionscript-3,command-line,air,Actionscript 3,Command Line,Air,我需要用NativeProcess做一些非常简单的事情,我需要通过cmd行启动一个.exe文件并传递一个参数。我已经找到了NativeProcess示例,但它们都用于更复杂的事情,并且没有显示完整的实现。我有很多使用flash as3的经验,但不是在这个特定的领域。。。如果有人能告诉我这是如何从头到尾完成的,我将不胜感激。以下是Adobe网站上的代码,可以完全按照您的要求执行: package { public class Main extends Sprite {
package
{
public class Main extends Sprite
{
public var process:NativeProcess;
public function Main()
{
if(NativeProcess.isSupported)
setupAndLaunch();
else
trace("NativeProcess not supported.");
}
public function setupAndLaunch():void
{
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("yourapp.exe");
nativeProcessStartupInfo.executable = file;
var processArgs:Vector.<String> = new Vector.<String>();
processArgs[0] = "the parameter you are passing";
nativeProcessStartupInfo.arguments = processArgs;
process = new NativeProcess();
process.start(nativeProcessStartupInfo);
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);
}
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());
}
}
}
包
{
公共类Main扩展了Sprite
{
公共var过程:NativeProcess;
公共功能Main()
{
if(NativeProcess.isSupported)
setupAndLaunch();
其他的
跟踪(“不支持NativeProcess”);
}
公共函数setupAndLaunch():void
{
var nativeProcessStartupInfo:nativeProcessStartupInfo=new nativeProcessStartupInfo();
var file:file=file.applicationDirectory.resolvePath(“yourapp.exe”);
nativeProcessStartupInfo.executable=文件;
变量processArgs:Vector.=新向量。();
processArgs[0]=“您正在传递的参数”;
nativeProcessStartupInfo.arguments=processArgs;
进程=新的NativeProcess();
进程启动(nativeProcessStartupInfo);
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);
}
公共函数onOutputData(事件:ProgressEvent):无效
{
跟踪(“get:,process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable));
}
公共函数onErrorData(事件:ProgressEvent):无效
{
跟踪(“错误-”,process.standardError.readUTFBytes(process.standardError.bytesAvailable));
}
公共函数onExit(事件:NativeProcessExiteEvent):无效
{
跟踪(“进程已退出”,事件.exitCode);
}
公共函数错误(事件:IOErrorEvent):无效
{
跟踪(event.toString());
}
}
}
重要信息NativeProcess类及其功能仅适用于使用本机安装程序安装的AIR应用程序(扩展桌面配置文件应用程序)。调试时,可以将-profile extendedDesktop参数传递给ADL以启用NativeProcess功能。在运行时,您可以检查NativeProcess.isSupported属性以确定是否支持本机进程通信。
我在Flash Develop中通过将应用程序配置文件设置为Extended Desktop
来测试上述内容,并且它可以正常工作
更多信息。除了Baris Usaki的回答之外,我想补充两个非常重要的问题: