Hallo Leute!
Wie erhalte ich die Start Parameter, wenn mehrere gleichnamige Prozesse mit unterschiedlichen Startparametern laufen?
LG
Josef 🤔
ProcessStartInfo pInfo = myProcess.StartInfo
Ansonsten müsstest du dein Vorhaben etwas näher erläutern.
Hallo punkdevil!
Das ging ja super schnell!!!
Mein Problem:
Beim Start der Applikation ist die Prozessliste zu durchsuchen ob der Prozess nicht schon läuft.
Diese Prozesse unterscheiden sich nicht durch dem Prozessnamen sondern durch deren Parameter.
Process m = Process.GetCurrentProcess();
ProcessStartInfo m = m.StartInfo;
m.StartInfo.Arguments; ="" ???
Leider steht aber nichts in Arguments drinnen 🙁
MSDN
For example, if you use GetProcesses to get an array of processes running on the computer, the StartInfo property of each Process does not contain the original file name or arguments used to start the process.
Die grosse Frage:
Wie kommt man zu den Startparameter von den laufenden Prozessen?
LG
Josef
ungetestet:
System.Diagnostics.Process m = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.ProcessStartInfo ms = m.StartInfo;
string argumente = ms.Arguments;
so vielleicht ???
Hallo ltgwjo,
Wie kommt man zu den Startparameter von den laufenden Prozessen?
wenn Sie nicht in Arguments stehen, vermutlich gar nicht.
herbivore
Nein, die ProcessStartInfo sind wirklich nur Framework intern zum Starten gedacht, d.h. sie reflektieren keine Eigenschaften existierender Prozesse.
Daher: WMI, Klasse: root\CIMV2\Win32_Process, Property: CommandLine
Danke nin!
Der WMICodeCreator ist eine tolle Sache!
Ein Beispiel!
using System;
using System.Management;
namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Process");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("CommandLine: {0}", queryObj["CommandLine"]);
Console.WriteLine("ProcessID: {0}", queryObj["ProcessID"]);
Console.WriteLine("Name: {0}", queryObj["Name"]);
}
while(Console.KeyAvailable == false)
{
System.Threading.Thread.Sleep(100);
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}