[C#]Frage: Prozess Pfad anderer Anwendungen

dann zieh den Code doch weiter auseinander!
C#:
Process[] processes = Process.GetProcessesByName("explorer.exe");
if (processes.Length > 0)
{
    Console.WriteLine(processes[0].MainModule.FileName);
}
else
{
    Console.WriteLine("no process with this name found");
}
 
Nee das mein ich so nicht das geht ja alles nur (ich hab jetz ma dein source genommen)
Process[] explorer = Process.GetProcessesByName("explorer");

if (explorer.Length > 0)
{


string exp = explorer[0].MainModule.FileName;
explorer.Kill();
}

else
{

MessageBox.Show("no process with this name found");

}

und außerhalb von if steht dann noch

Process.Start(exp);
tea definiere ich ja in der if schleife nur dann kommt der Fehler

Der Name "exp" ist im aktuellen Kontext nicht vorhanden.

Und das ist mein jetziges problem. Ich möchte, wenn der Process an ist .. den string definieren. Aber das geht ja iwie net und das nen big problem
weil ich die exe erst killen möchte und danach dann starten ^^ ..
 
Zuletzt bearbeitet:
Hi

Der Skope, in dem du die Variable exp definiert hast, existiert nicht mehr. Die Variable ist nur im If-Teil deine If-Else-Anweisung gültig.
Du musst die Variable vor dem Konstrukt definieren und im If-Teil füllen.
Noch besser wäre aber, wenn du Process.Start() mit im If-Teil ausführst. Ansonsten kommst du zu Problem, wenn der Explorer-Prozess nicht exisitert/gefunden wird.
 
naja ich muss sie definieren wenn der prozess existiert... wenn er nicht an is gibt er mir nen fehler , wenn ichs vorher definiere.. weil er ja net an is und start kann ich in der if anweisung net mit einbringen
es muss außerhalb passieren
 
Hi

Kannst du das bitte nochmal schreiben und dich dabei vorallem an die Netiquette halten. Ich hab kein Wort verstanden. Den Aufruf von Prozess.Start() kannst du nur da machen, wo du auch den Pfad zu einer Anwendung hast, ansonsten läufst du in eine Fehler
 
Also: Ich hab den Code so geschrieben wie ich ihn auch brauch ^^.
Das ganze soll ein Updater sein und da Mein Programm mit TeaTimer
probleme hat bzw TeaTimer mit meinem Programm .. kann ich es
wenn TeaTimer läuft net löschen. Deswegen soll es gucken ob TeaTimer läuft,
wenn ja den string definieren tea = sowieso

und nachdem dann mein Programm ersetzt wurde soll Tea Timer wieder gestartet werden.



Process[] processes = Process.GetProcessesByName("TeaTimer");

if (processes.Length > 0)
{

MessageBox.Show(processes[0].MainModule.FileName);
string tea = processes[0].MainModule.FileName;
}

else
{

MessageBox.Show("no process with this name found");

}

Download und löschen von meinem programm (Code lass ich mal raus)

Process.Start(tea);

und am ende soll er halt TeaTimer wieder starten. Hoff das war jetz gut erklärt ^^
 
Wenn der Prozess vorher nicht lief, kommst du über diesen Weg auch nicht an an den Pfad der Exe.
Trotzdem musst du, wenn du die Anwendung außerhalb der IF-Else-Struktur starten willst, die string-Variable "tea" auch außerhalb deklarieren! Du musst sie nur sowohl im If als auch im Else-Teil mit einem gültigen Pfad initialisieren.
Wie du aber an den Pfad kommst, wenn der Prozess nicht läuft, kann ich die nicht sagen, da ich nicht weiß, wie du die Informationen außerhalb dieser Anwendung hälst (ggf. per Setup in die Registry eintragen o.ä.)
 
Wenn er net läuft möcht ich den pfad ja auch net auslesen .. nur wenn er läuft .. damit dieser im nachhinein wieder gestartet werden kann .. gibt es nicht irgendwie eine möglichkeit das in der if schleife definierte auch außerhalb der if schleife zu verwenden ?
denn wenn es den prozess nicht gibt gibt er mir ja nen error aus, deswegen muss ich ja checken ob der prozess läuft und kann erst dann "tea" den pfad zu weisen , den möcht ich jedoch halt außerhalb der if schleife auch verwenden können.
 
Hi

1. Du sollst dich an die Netiquette halten!
2. Nein!
Wie gesagt, mit Verlassen des IF-Teils ist der Skope verlassen, in dem du die Variable deklariert hast. Es gibt nur diese Variante!
C#:
string path = string.Empty;
Process[] processes = Process.GetProcessesByName("explorer.exe");
if (processes.Length > 0)
{
    path = processes[0].MainModule.FileName;
}
if(!String.IsNullOrEmpty(path)
{
    Process.Start(path);
}
 
Zurück