2013-01-03 3 views
2

제목으로 어떤 명령/클래스를 사용할 수 있습니까? 함수가 존재하는지 여부는 commandshell에서 콜백을 가져 오는 함수인지 여부Usinc 명령 프롬프트/셸 실행 스크립트 3

+0

소켓 연결을 사용하여 cmd.exe와 통신 할 수 있습니다. 따라서 CMD와 통신하고 싶다면 요구 사항의 cmd/shell의 모든 작업을 호출하는 하나의 c/C++/visual-C++ 프로젝트를 만들어야합니다. 그러면이 프로젝트의 실행 파일과 통신 할 수 있고 프로젝트에 결과가있을 때 ao/p를 소켓 연결로 되돌립니다. 해당 Documentaion에서 소켓에 대해 자세히보기 => http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html –

답변

2

this article에 따라 AIR의 다른 프로세스를 실행하고 통신 할 수 있습니다.

Windows 명령 프롬프트를 실행하려면 "% windir % \ system32 \ cmd.exe"인 cmd.exe 위치를 입력해야합니다. 안타깝게도 AIR은 % windir %를 이해하지 못하기 때문에 Windows 디렉토리 (일반적으로 C :에 대한 전체 경로)를 실제로 제공해야하지만 C가 아닌 경우를 처리하는 방법을 찾아야합니다.

Annoyingly, 명령 프롬프트는 일반적인 입력 스트림처럼 작동하지 않는 것 같습니다. 쓰기를 시도 할 때 오류가 발생합니다. 그 주위에 내가 그것에 대해 모르는 어떤 방법이있을 수 있습니다. 대신 인수를 사용하여 명령 프롬프트를 시작할 수 있습니다.

예를 들어, 다음 코드는 명령 프롬프트를 시작하고 (Windows가 C 인 경우), "hello"를 인쇄하고 출력을 추적합니다 (이 경우 "hello"가됩니다).

var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
var file:File = File.applicationDirectory.resolvePath("C:\\Windows\\System32\\cmd.exe"); 
nativeProcessStartupInfo.executable = file; 
var processArgs:Vector.<String> = new Vector.<String>(); 
processArgs.push("/C echo 'hello'"); 
nativeProcessStartupInfo.arguments = processArgs; 
process = new NativeProcess(); 
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 
process.start(nativeProcessStartupInfo); 

public function onOutputData(event:ProgressEvent):void 
{ 
    trace("Got: ", NativeProcess(event.target).standardOutput.readUTFBytes(process.standardOutput.bytesAvailable)); 
} 
관련 문제