Avatar billede Slettet bruger
28. april 2007 - 20:58 Der er 13 kommentarer og
2 løsninger

Lukke specifik app

Hej eksperter!

Hvordan kan jeg få en C#-app til at lukke en anden app (som f.eks. msnmsg.exe for Windows Messenger)?
Avatar billede skov_p Praktikant
29. april 2007 - 13:16 #1
Med Process[] allProcs = Process.GetProcesses(); kan du finde navnet med
foreach(Process thisProc in allProcs)
{
  if(thisProc.ProcessName.Equals("msnmsg.exe"))
    thisProc.Kill();//eller noget i den retning
   
}
Avatar billede Slettet bruger
29. april 2007 - 19:38 #2
Okaj, tester det lige...
Avatar billede Slettet bruger
29. april 2007 - 19:49 #3
Hmm, hvad skal der inkluderes?
Avatar billede Slettet bruger
29. april 2007 - 19:49 #4
(Refferencer)
Avatar billede thesurfer Nybegynder
29. april 2007 - 19:53 #5
Du skal huske at tilføje dette i toppen af din fil:

using System.Diagnostics;

Du kan også højreklikke på "Porcess" og vælge "Resolve" i menuen, og derefter "using System.Diagnostics;".
Avatar billede Slettet bruger
29. april 2007 - 20:20 #6
Den er allerede tilføjet.
Avatar billede Slettet bruger
29. april 2007 - 20:21 #7
Den kan ikke finde ud af hvad 'allProcs' er.
Avatar billede Slettet bruger
29. april 2007 - 20:21 #8
Hmm vent lige lidt... Tror jeg har sat det forkert op...
Avatar billede Slettet bruger
29. april 2007 - 20:30 #9
Så virker det :)
Men kan du ikke hjælpe mig og finde den rigtige funtion for 'Kill'?
Avatar billede Slettet bruger
29. april 2007 - 20:31 #10
Og lige en ting: Den skal søge efter processen men UDEN .exe efter.
Avatar billede thesurfer Nybegynder
29. april 2007 - 21:06 #11
Eksempel:

        private void btnLukProgram_Click(object sender, EventArgs e)
        {
            string returbesked = Luk("msnmsg.exe");
            if (returbesked != "ok")
            {
                // Af en eller anden grund, lykkes det ikke at lukke programmet.. vis beskeden:
                MessageBox.Show(returbesked);
            }
        }

        private string Luk(string filnavn)
        {
            string status = "Programmet '" + filnavn + "' er ikke i listen.";
            filnavn = filnavn.ToLower(); // lav alle bogstaver til små bogstaver (til sammenligningen)
            filnavn = filnavn.Replace(".exe", ""); // fjern .exe
           
            Process[] alleprocesser = Process.GetProcesses();
            foreach (Process p in alleprocesser)
            {
                if (p.ProcessName.ToLower().Equals(filnavn))
                {
                    try
                    {
                        p.Kill();
                        status = "ok";
                    }
                    catch (Exception ex)
                    {
                        status = ex.Message;
                    }
                    break;
                }
            }
            return status;
        }


Metoden kaldes sådan her: Luk("filnavn.exe")

Man får en streng (string) retur.
Hvis alt er ok, og programmet er blevet lukket ned, får man "ok" retur.

Hvis man ikke får "ok" retur, er det fordi der opstod en fejl.. så vises fejlbeskeden..

Hvis programmet ikke findes i listen, betragtes det også som en fejl..

Det kan nemt kodes om, så det ikke betragets som en fejl..
Avatar billede thesurfer Nybegynder
29. april 2007 - 21:08 #12
Eksempel hvor "programmet ikke findes i listen" ikke betragets som en fejl:

        private void btnLukProgram_Click(object sender, EventArgs e)
        {
            string returbesked = Luk("msnmsg.exe");
            if (returbesked.Substring(0,2) != "ok")
            {
                // Af en eller anden grund, lykkes det ikke at lukke programmet.. vis beskeden:
                MessageBox.Show(returbesked);
            }
        }

        private string Luk(string filnavn)
        {
            string status = "okProgrammet '" + filnavn + "' er ikke i listen.";
            filnavn = filnavn.ToLower(); // lav alle bogstaver til små bogstaver (til sammenligningen)
            filnavn = filnavn.Replace(".exe", ""); // fjern .exe
           
            Process[] alleprocesser = Process.GetProcesses();
            foreach (Process p in alleprocesser)
            {
                if (p.ProcessName.ToLower().Equals(filnavn))
                {
                    try
                    {
                        p.Kill();
                        status = "ok";
                    }
                    catch (Exception ex)
                    {
                        status = ex.Message;
                    }
                    break;
                }
            }
            return status;
        }
Avatar billede thesurfer Nybegynder
29. april 2007 - 21:09 #13
Læg mærke til, at jeg har indsat en knap med navnet "btnLukProgram", der kalder metoden Luk("msnmsg.exe") ...
Avatar billede Slettet bruger
29. april 2007 - 21:37 #14
Takker, bare smid nogel svar. :)
Avatar billede thesurfer Nybegynder
29. april 2007 - 23:46 #15
Jeg har allerede smidt 2 svar.. :-)
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