Avatar billede thedarkrider Nybegynder
04. juli 2004 - 18:45 Der er 7 kommentarer og
1 løsning

Luk program?

Hej Eksperter.

Hvordan kan jeg i C# tjekke om et program kører, og hvis det gør, lukke det?

Jeg er ny til C# og vil gerne se et eksempel.

På forhånd tak.
TDR
Avatar billede driis Nybegynder
04. juli 2004 - 20:32 #1
Det kan du ved at enumerere alle kørende processer, finde den du vil have lukket, og enten bruge CloseMainWindow eller Kill på den, afhængig af temperament (CloseMainWindow beder proessen om at lukke, hvis den har et hovedvindue, Kill lukker processen øjeblikkeligt). Kill bør kun bruges hvis CloseMainWindow ikke kan bruges, idet programmet ved Kill ikke får en chance for at gemme data og udføre anden oprydning.

Et simpelt eksempel; her findes det program jeg vil lukke ved hjælp af ModuleName som er navnet på .exe filen der har startet processen. Desuden udskrives ModuleName for alle processer til Console. Start calc.exe for at teste (Windows lommeregner):

Process [] procs = Process.GetProcesses();
foreach ( Process p in procs )
{
    try
    {
        Console.WriteLine(p.MainModule.ModuleName);
        if ( p.MainModule.ModuleName.CompareTo("calc.exe") == 0 )
        {
            Console.WriteLine(p.MainModule.FileName);
            p.CloseMainWindow();                   
        }
    }
    catch
    {}
}
Avatar billede driis Nybegynder
04. juli 2004 - 20:34 #2
try ... catch blokken bruges fordi der vil blive kastet en exception, hvis du spørger på en proces som er blevet lukket af systemet, og muligvis også hvis du ikke har fornødne rettigheder til at spørge på en bestemt proces. Du kan jo selv implementere en fornuftig fejlhåndtering, hvis det er nødvendigt til dit brug.
Avatar billede thedarkrider Nybegynder
04. juli 2004 - 21:55 #3
Hmm, jeg kan ikke rigtig få det til at virke. Hvis jeg kopierer det du har skrevet ind i en tom Main-funktion får jeg følgende fejl:

The type or namespace name 'Process' could not be found (are you missing a using directive or an assembly reference?)

The name 'procs' does not exist in the class or namespace 'SteamKiller.Class1'

Hvad gør jeg galt?
Avatar billede thedarkrider Nybegynder
04. juli 2004 - 22:00 #4
Jeg har fundet fejlen. Jeg manglede at tilføje using System.Diagnostics;
Mange tak for hjælpen!
Avatar billede driis Nybegynder
04. juli 2004 - 22:04 #5
Glad for at kunne hjælpe.
Beklager at jeg glemte at Process ligger i System.Diagnostics namespacet, men det fandt du heldigvis ud af :-)
Avatar billede thedarkrider Nybegynder
04. juli 2004 - 22:28 #6
Kan du også fortælle mig hvordan man starter et program, f.eks. calc.exe?
Avatar billede tomjelen Nybegynder
05. juli 2004 - 20:22 #7
Process.Start("calc.exe");
Avatar billede thedarkrider Nybegynder
05. juli 2004 - 21:31 #8
Mange tak. Så får jeg vist heller ikke mere for de 15 point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester