将数据从空中应用程序写入本机进程时出错

时间:2011-11-16 10:14:20

标签: flash actionscript-3 air

我正在编写一个AIR应用程序,我想通过该应用程序打开本机进程“wordpad.exe”,并将AIR应用程序中生成的数据写入文档。

我的代码如下:

   import flash.desktop.*;
   import flash.errors.*;
   import flash.events.*;
   import flash.filesystem.*;
   import flash.utils.*;

   var nativeProcessStartupInfo:NativeProcessStartupInfo=new NativeProcessStartupInfo();
   var executablePath:String="C:/Program Files/Windows NT/Accessories/wordpad.exe";
   var str:String="Hello";
   var file:File=new File(String(executablePath));
   nativeProcessStartupInfo.executable=file;
   var process=new NativeProcess();
   process.start(nativeProcessStartupInfo);
   process.standardInput.writeUTF(str);

wordpad应用程序打开时显示空白文档,但会生成错误 错误#2044:未处理的IOErrorEvent:.text =错误#3128:将数据写入NativeProcess.standardInput时出错。

并且在wordpad文档中没有任何内容。

请帮帮我。

提前致谢

1 个答案:

答案 0 :(得分:0)

this conversation查看@ MartinL的评论。同样,我认为可以使用StdIn / StdOut管理写字板,这意味着您无法使用AIR的NativeProcess API传递输入。

但是,您可以编写一个C#控制台应用程序,作为一个轻型中间件,您可以<{>} 打开NativeProcess,通过StdIn提交输入,并转发您的输入进入写字板。 .Net框架有SendKeys class可以做到这一点,虽然一些轻微的研究给我留下了痛苦的印象。

虽然这应该有用,但它确实听起来像一个kludge。你可以选择创建一个新的.rtf文件,用文本填充它,然后使用AIR的FileSystem.openWithDefaultApplication()方法以编程方式打开新文件吗?