Ошибка записи данных в нативный процесс из эфирного приложения - PullRequest
3 голосов
/ 16 ноября 2011

Я пишу приложение 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 голосов
/ 12 декабря 2011

Посмотрите комментарии @ MartinL в этом разговоре . Точно так же я не думаю, что WordPad можно управлять с помощью StdIn / StdOut, что означает, что вы не можете передавать его входные данные с помощью NativeProcess API AIR.

Однако вы можете написать консольное приложение на C #, которое будет использоваться в качестве промежуточного программного обеспечения, которое вы сможете открыть с помощью NativeProcess, отправлять входы через StdIn и которое будет передавать ваши входы в WordPad. Платформа .Net имеет класс SendKeys , который может это сделать, хотя некоторые легкие исследования оставили у меня болезненное впечатление об этом.

Хотя это должно сработать, это звучит как клудж. Не могли бы вы при желании создать новый файл .rtf, заполнить его текстом, а затем программно открыть новый файл, используя метод AIR FileSystem.openWithDefaultApplication () ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...