如何获取UWP中的当前ProcessID?

时间:2016-09-15 01:13:10

标签: c# uwp

使用.Net Framework,可以在此处实现:How to get the current ProcessID?

但是如何在UWP中获得当前的PorcessId? System.Diagnostics甚至没有Process类。

2 个答案:

答案 0 :(得分:5)

using Windows.System.Diagnostics;
var processId = ProcessDiagnosticInfo.GetForCurrentProcess().ProcessId;

答案 1 :(得分:0)

由于UWP允许使用win32 api GetCurrentProcessId,因此可以从c#中调用它。我以前是从c ++ / winrt uwp项目中调用它的。

using System.Runtime.InteropServices;
class public xxx{
        [DllImport("Kernel32.dll", EntryPoint = "GetCurrentProcessId")]
        static extern UInt32 GetCurrentProcessId();

   public void xxx(){
            var processId = GetCurrentProcessId();
            Debug.WriteLine("my process Id:"+ processId.ToString());
   }
}

Ps1:

Windows.System.Diagnostics.ProcessDiagnosticInfo.GetForCurrentProcess()有时在我的uwp c#项目中崩溃(并非总是崩溃)。获得“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”

Ps2:

System.Diagnostics.Process.GetCurrentProcess()在我的uwp c#项目中不存在。 https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.getcurrentprocess?view=netframework-4.8