Programok indítását könnyedén elvégezhetjük ha a Process osztály Start függvényét hívjuk. Ennek azonban több változata is létezik, így nem csak arra van lehetőségünk, hogy sztringként megadjuk az indítandó program nevét, elérési útvonalát, hanem úgy is hívhatjuk a Start-ot, hogy paraméterként egy ProcessStartInfo típusú változót adunk át számára.
A ProcessStartInfo osztály property-jein keresztül megadhatjuk, hogy milyen alkalmazás, miképp induljon el.
protected void button1_Click (object sender, System.EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo();
Az első példánál a Windows jegyzettömb alkalmazását indítjuk el. Ehhez a ProcessStartInfo osztály FileName property-jébe kell írnunk a futtatandó EXE-t, szükség esetén a teljes elérési útvonallal együtt.
psi.FileName = "notepad.exe";
Lehetőségünk van arra is, hogy parancssori paramétert adjunk át. Ehhez a paramétereket egyetlen sztringként az Arguments property-ben kell megadnunk. A mellékelt példában a c:\\autoexec.bat állományt adjuk meg, így a jegyzettömb induláskor rögtön megnyitja ezt az állományt. Amennyiben nem lenne ilyen állomány a gépen, akkor javítsa az alábbi sort a mellékelt példában egy olyan állományra, mely létezik.
psi.Arguments = "c:\\autoexec.bat";
A WindowStyle property-ben megadhatjuk, hogy a futtatandó alkalmazás miképp induljon el. Erre az alábbi lehetőségeink vannak:
- Maximized – teljes képernyő méretben jelenik meg az alkalmazás
- Minimized – minimalizált állapotban jelenik meg az alkalmazás
- Normal – alaphelyzetben jelenik meg az alkalmazás
- Hidden – az elindított alkalmazás a felhasználó elől rejtve marad
psi.WindowStyle = ProcessWindowStyle.Maximized;
Végül nincs más teendőnk, mint meghívni a Process Start függvényét és átadni neki a beállított ProcessStartInfo osztályból létrehozott változót.
Ha olyan alkalmazást próbálunk meg elindítani, mely nem létezik, akkor ebből egy futási hiba keletkezik. Ha azt szeretnénk elérni, hogy erről a hibáról a felhasználó is értesüljön egy dialóg ablakban és ne csak a programunk, akkor célszerű a ProcessStartInfo osztály ErrorDialog property-jét igazra állítani.
protected void button2_Click (object sender, System.EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "abcdefg.exe";
psi.ErrorDialog = true;
Process.Start(psi);
}
Harmadik példánál kinyomtatjuk az autoexec.bat-ot a Windows jegyzettömb alkalmazás segítségével, de mindezt úgy tesszük, hogy a felhasználó észre sem veszi, hogy elindítottuk a jegyzettömböt.
protected void button3_Click (object sender, System.EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "notepad.exe";
Paraméterként most nem elegendő az állomány nevet átadni, hanem a /p kapcsolóra is szükségünk lesz, hogy a nyomtatás automatikusan megtörténjen.
psi.Arguments = "/p c:\\autoexec.bat";
Mivel most nem kell megjelenni a jegyzettömbnek, ezért a Hidden érték alkalmazásával elrejtjük a programot a felhasználó elől.
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.ErrorDialog = true;
Process.Start(psi);
}
Ha az alapértelmezett böngészőt szeretnénk elindítani és ott rögtön egy általunk megadott linkre ugrani, akkor erre is igen egyszerű lehetőségünk van.
protected void button4_Click (object sender, System.EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo();
A teendő csupán annyi, hogy a FileName property-be most a kérdéses web címet adjuk meg.
psi.FileName = "http://www.SoftwareOnline.hu";
Process.Start(psi);
}
Ha a FileName property-be egy dokumentumot adunk meg, akkor a futtatáskor a kiterjesztéséhez hozzárendelt alapértelmezett alkalmazás indul el, mely rögtön be is tölti a megadott dokumentumot. Ha például egy TXT állományt adunk meg a FileName property-ben, akkor valószínűleg a jegyzettömb indul el. Persze bármilyen egyéb kiterjesztéssel rendelkező állományt is megadhatunk itt, nem csak TXT-t.
protected void button5_Click (object sender, System.EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "c:\\netlog.txt";
Process.Start(psi);
}
Az egyes dokumentumokhoz nem csak az őket kezelő program van hozzárendelve, hanem sok esetben különféle parancsok is. Ilyen parancs például a Print, mely az adott dokumentum nyomtatását írja elő. Ekkor a FileName property-ben a kérdéses dokumentum nevét kell megadni, majd a Verb property-ben a végrehajtandó parancsot.
protected void button6_Click (object sender, System.EventArgs e)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "c:\\netlog.txt";
psi.Verb = "print";
psi.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(psi);
}
Ez esetben a következő történik: a megadott TXT kiterjesztéshez a Windows regisztrációs adatbázisában a .txt kulcs a HKEY_CLASSES_ROOT alatt található. Ehhez tartozik a txtfile. A HKEY_CLASSES_ROOT\txtfile\shell\print\command alatt találjuk a %SystemRoot%\system32\NOTEPAD.EXE /p %1 bejegyzést, mely arra utal, hogy a Windows jegyzettömbjét kell indítani a /p kacsolóval. A %1 érték helyére kerül behelyettesítésre az adott dokumentum neve.