čtvrtek 28. února 2008

.NET a C#: Zavření cizí aplikace

Spíše praktická ukázka, jak programově zavřít cizí aplikaci z našeho kódu.

Nejdříve si zadefinujeme pole, do kterého později uložíme odkazy(Process je odkazový typ, proto odkaz) na všechny běžící procesy. Dále si zadefinujeme jméno procesu, který chceme zavřít (pro jednoduchost budeme chtít zavřít Notepad).
private Process[] beziciProcesy;
private string jmenoProcesu = "Notepad";

Získání a uložení všech běžících procesů aplikace jménem jmenoProcesu:
beziciProcesy = Process.GetProcessesByName(jmenoProcesu );
Problém může nastat, když máme otevřeno více instancí jedné aplikace. Název procesu bude stejný, proto musíme instance nějak rozlišit. Pokud známe Id procesu (je to jedna z jeho vlastností - property), nebude to větší problém.
Process tempProc = Process.GetProcessById(idProcesu);
tempProc.CloseMainWindow;
tempProc.WaitForExit();
Pokud checeme zavřít všechny instance aplikace, jednoduše projdeme přes všechny procesy, které jsme získali metodou GetProcessesByName, a zavřeme je obdobným způsobem.
foreach (Process jedenProces in beziciProcesy)
{
jedenProces.CloseMainWindow();
jedenProces.WaitForExit();
}
Metoda CloseMainWindow() funguje pouze pro okenní aplikace, pro aplikace, které nemají okno (např. konzolové), slouží metoda Kill().

Tento příklady je jen výcucem z této stránky, kde je více podrobností.

Žádné komentáře:

Okomentovat