Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何在Flex桌面应用程序中获取自进程id_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex 如何在Flex桌面应用程序中获取自进程id

Apache flex 如何在Flex桌面应用程序中获取自进程id,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我用Flex builder 4创建了一个Flex桌面应用程序 我想将一些调试信息记录到一个以进程id命名的文件中 //var pid:int = NativeApplication.nativeApplication.getPid() ?? var logFile:String = "/var/log/MyApp_"+pid+".log"; 这些是Flex/ActionScript3中获取pid的API吗?我认为您无法找到当前运行的应用程序的pid。唯一可以获取应用程序相关信息的地方是 如果

我用Flex builder 4创建了一个Flex桌面应用程序

我想将一些调试信息记录到一个以进程id命名的文件中

//var pid:int = NativeApplication.nativeApplication.getPid() ??
var logFile:String = "/var/log/MyApp_"+pid+".log";

这些是Flex/ActionScript3中获取pid的API吗?

我认为您无法找到当前运行的应用程序的pid。唯一可以获取应用程序相关信息的地方是

如果您真的需要pid,您可以创建第二个应用程序,其作用类似于启动器。这个新应用程序启动并为您已经使用创建的实际应用程序创建一个新流程。这样,您就拥有了有关流程的所有信息

请记住,如果使用NativeProcess launching,则会有一些限制(例如,不能使用web安装)


希望这有帮助,我不认为这包括在内,因为每个操作系统都有不同的获取进程id的方法。您可以尝试对进行NativeProcess调用,但我不确定它是否有效。

您可以从C#console应用程序获取进程,并选择flex应用程序正在使用的进程。我举了一个例子:

getprocesss.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
C#console应用程序“GetProcesses.cs”使用
GetProcesses()
方法创建一个进程的xml,flex应用程序检索该xml。在这个例子中,我使用

trace(_processes.process.(@name == "GetProcesses").@id); // 7192

要获取C#控制台应用程序的进程ID,但显然需要将xml查询中的进程名称更改为flex应用程序正在使用的进程名称

它只适用于Air应用程序(因为NativeProcess不能仅在Flex中完成),我的意思是,它不会工作,因为新启动的流程将有自己的PID,而不是Air应用程序的PID。对于Flex应用程序,PID可能毫无意义——它们可能在浏览器进程中执行,而不是在自己的进程中执行。啊,有意义。谢谢你的澄清:)谢谢。我为此编写了一个python应用程序。
trace(_processes.process.(@name == "GetProcesses").@id); // 7192