Как запустить «ipconfig» и получить вывод в Adobe AIR в Windows? - PullRequest
0 голосов
/ 13 августа 2010
import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;

if (NativeProcess.isSupported) {
    var npsi:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    var processpath:File = File.applicationDirectory.resolvePath("MyApplication.whatever");
    var process:NativeProcess = new NativeProcess();

    npsi.executable = processpath;
    process.start(npsi);
}

Вышесказанное может только запустить подпроцесс, но как запустить независимое приложение (команду) типа ipconfig и получить результат?

Ответы [ 4 ]

3 голосов
/ 25 ноября 2010

Вы на самом деле можете очистить STDOUT и STDERR:

process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onError);
process.addEventListener(ProgressEvent.STANDARD_INPUT_PROGRESS, inputProgressListener);

public function onError(event:ProgressEvent):void
{
    trace(event);
    trace(process.standardError.readUTFBytes(process.standardError.bytesAvailable));
}

public function inputProgressListener(event:ProgressEvent):void
{
    process.closeInput();
}

public function onOutputData(event:ProgressEvent):void
{
    trace(event);
    trace(process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable));
}

Более подробная информация по адресу: http://help.adobe.com/en_US/as3/dev/WSb2ba3b1aad8a27b060d22f991220f00ad8a-8000.html

А: http://www.as3offcuts.com/2010/08/air-2-native-process-example-mouse-screen-position/

Редактировать: понял, может быть, ваш вопрос также, как запустить внешнее приложение? Вот пример того, как запустить 'top' в OSX:

npsi.executable = new File("/usr/bin/top");
0 голосов
/ 25 ноября 2010

Если вы хотите запустить ipconfig.exe, не зная, где он находится, вы можете запустить cmd.exe с аргументами "/ C", "ipconfig.exe ...".Конечно, для этого необходимо знать, где находится cmd.exe.Я только что включил его в свое приложение AIR (версия для Windows).

0 голосов
/ 25 ноября 2010

Если вам нужна информация о конфигурации сети, вы можете использовать NetworkInfo.networkInfo.findInterfaces().Избавит вас от необходимости взаимодействовать с другим процессом, и он также переносим.

http://help.adobe.com/en_US/air/reference/html/flash/net/NetworkInfo.html

0 голосов
/ 13 августа 2010

Я не думаю, что вы можете, это само накладываемое ограничение NativeProcess API. Однако вы можете создать небольшой бинарный файл Windows, который вызывает ipconfig и передает информацию обратно в приложение AIR.

Если создание этого двоичного файла кажется большим делом, взгляните на Haxe и xCross , вы можете сделать это с помощью языка, довольно похожего на ActionScript.

...