public static string GetActiveProcessFileName()
{
try
{
IntPtr hwnd = GetForegroundWindow();
uint pid;
GetWindowThreadProcessId(hwnd, out pid);
Process p = Process.GetProcessById((int)pid);
CommandLine = GetMainModuleFilepath((int)pid);
catch (Exception ex)
{
ErrorLog.ErrorLog.Log(ex);
return "Explorer";
}
}
public static string GetMainModuleFilepath(int processId)
{
try
{
wmiQueryString = "SELECT * FROM Win32_Process WHERE ProcessId = " + processId;
using (searcher = new ManagementObjectSearcher(wmiQueryString))
{
using (results = searcher.Get())
{
mo = results.Cast<ManagementObject>().FirstOrDefault();
if (mo != null)
{
return ((object)mo["CommandLine"]).ToString();
}
}
}
//Process testProcess = Process.GetProcessById(processId);
return null;
}
catch (Exception ex)
{
ErrorLog.ErrorLog.Log(ex);
return null;
}
}
在这里,我得到ProcessID
并且它正在运作。但我希望我找到应用程序名称和ID。
如何使用ID
获取正在运行的应用程序名称以及如何将Id
传递给`Win32_Process表。
我为获取processid添加了win32_proceess,但是我们跟踪了应用程序ID
答案 0 :(得分:2)
您可以使用流程类的方法获取应用程序ID和名称:
System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess();
int id = p.Id;
string name = p.ProcessName;
答案 1 :(得分:0)
投票给Jonathan,但想添加另一种方式(只要你不使用点击一次)
System.AppDomain.CurrentDomain.FriendlyName