Entwickler-Ecke

Sonstiges (.NET) - In die Prozesse von Windows eingreifen


shil - Mi 06.06.07 08:45
Titel: In die Prozesse von Windows eingreifen
Hallo Ihr,
ich weiss leider nicht genau unter welchen topic mein problem passt, deshalb leg ich es hier mal an.

zu meinem problem:
ich habe ein lauffähiges programm das ich nur maximal 1 mal zur gleichen zeit laufen lassen will. da ich aber keine ahnung habe wie ich festellen kann ob das programm schon läuft und somit nicht nochmal gestartet werden kann, frage ich hier mal danach.
kann ich vieleicht irgendwie auf die momentan laufenden prozesse zugreifen, um nachzusehen ob das program schon läuft?
mfg shil


Christian S. - Mi 06.06.07 10:12

Schau mal hier: http://www.c-sharp-library.de/topic_quotNur+eine+Instanz+pro+Anwendungquot+featuring+IPC_53550.html

Das mit dem IPC kannste ja dann weglassen.


shil - Fr 08.06.07 10:15

danke für den link, jedoch versteh ich da nur bahnhof :<


Christian S. - Fr 08.06.07 10:16

Wie soll man Dir bei der Aussage denn jetzt weiterhelfen? :nixweiss:

Wo hakt es denn? Hast Du Dir das Demo angeschaut, welches dabei ist?


shil - Fr 08.06.07 10:28

also wenn ich das richtig verstehe müsste ich in meinen code mit einbauen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 
bool creatNew
Mutex m = new Mutex(true"keine Ahnung was hier genau stehen soll"out creatNew);
if(creatNew)
{
 Apllication.Run(new Form1());
}
else
{
Messagebox.Show("Ich lauf schon!!!");
}


Christian S. - Fr 08.06.07 16:33

Nein, das reicht so nicht. Du musst den Mutex auch wieder freigeben, wenn das Programm fertig gelaufen ist. Das ist die Zeile m.ReleaseMutex(); in der Demo.

Wie Dir die Hilfe zum Konstruktor vom Mutex sagt, ist der String in dessen Konstruktor sein Name. Um einen möglichst eindeutigen Namen zu haben, benutze ich eine GUID, welche man sich im Visual Studio mittels "Menü: Tools" -> "Create GUID" erzeugen lassen kann.


shil - Di 12.06.07 15:19

edit* danke soweit jedoch hab ich noch immer das eine oder andere Problem. hab aber mal einen neuen threat gemacht :)