Вы можете получить процессы из консольного приложения C # и выбрать процесс, который использует ваше flex-приложение. Я сделал пример этого:
GetProcesses.cs:
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GetProcesses
{
class Program
{
static void Main(string[] args)
{
Process[] processes = System.Diagnostics.Process.GetProcesses();
String processesXml = "";
processesXml += "<processes>\n";
foreach (Process process in processes)
{
processesXml += "\t<process id='" + process.Id + "' name='" + process.ProcessName + "' />\n";
}// end foreach
processesXml += "</processes>";
Console.WriteLine(processesXml);
}// end method
}// end class
}// end namespace
Main.as:
package
{
import flash.desktop.NativeProcess;
import flash.desktop.NativeProcessStartupInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.filesystem.File;
import flash.utils.ByteArray;
public class Main extends Sprite
{
private var _nativeProcess:NativeProcess;
private var _nativeProcessSUI:NativeProcessStartupInfo;
private var _processes:XML;
public function Main():void
{
_nativeProcess = new NativeProcess();
_nativeProcessSUI = new NativeProcessStartupInfo();
_nativeProcessSUI.executable = File.applicationDirectory.resolvePath("GetProcesses.exe");
_nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onNativeProcessSOD);
_nativeProcess.addEventListener(Event.STANDARD_OUTPUT_CLOSE, onNativeProcessSOC);
_nativeProcess.start(_nativeProcessSUI);
}// end function
private function onNativeProcessSOD(e:ProgressEvent):void
{
_processes = XML(_nativeProcess.standardOutput.readUTFBytes(_nativeProcess.standardOutput.bytesAvailable));
}// end function
private function onNativeProcessSOC(e:Event):void
{
trace(_processes.process.(@name == "GetProcesses").@id); // 7192
}// end function
}// end class
}// end package
Консольное приложение C # «GetProcesses.cs» создает XML-процессы с использованием метода GetProcesses()
, а гибкое приложение получает этот XML-файл. В этом примере я использую
trace(_processes.process.(@name == "GetProcesses").@id); // 7192
для получения идентификатора процесса консольного приложения C #, но очевидно, что вы измените имя процесса в запросе xml на имя процесса, которое использует ваше flex-приложение.