תהליכים
לפעמים אנו רוצים להפעיל אפליקציה אחרת מהתוכנית שלנו, למטרה זאת ניתן להשתמש במחלקה Process. המחלקה מקבלת את הנתיב לתוכנית שאנו רוצים להריץ, ופרמטרים שונים כגון
ProcessStartInfo psI = new ProcessStartInfo("myprog.exe");
Process mainForm = new Process();
psI.Arguments = "a=3";
psI.UseShellExecute = false;
psI.WindowStyle = ProcessWindowStyle.Normal;
mainForm.StartInfo = psI;
mainForm.Start();
הפרמטר Arguments יקבע איזה מידע יקבל התהליך מאיתנו כשהוא יופעל - כמו שמריצים תוכנה בדוס ונותנים פרמטרים לאחר שם התוכנית. אם אנו רוצים להעביר מספר פרמטרים לתהליך זוהי הדרך המהירה והקלה.
הפרמטר CreateNoWindow מציין האם אנו רוצים שהתהליך ירוץ עם חלון או ללא חלון
פרמטר נוסף שקשור הוא WindowStyle שבעצם אומר באיזה מצב להתחיל את החלון - מוגדל/מוקטן וכו.
את הפרמטר UseShellExecute עדיף לשים על false, אלא אם כן אתם מתכוונים להריץ מסמך כלשהו או קובץ שאינו exe בעצמו אלא משתמש בקובץ אחר כדי לפתוח אותו (כמו קובץ pdf וכדומה).
אנו יכולים גם לקרוא/לכתוב לקלט/פלט של התהליך הזה על ידי הפרמטר RedirectStandardOutput , שאומר בעצם שהקובץ יקבל נתונים מאיפה שאנחנו נגיד לא ולא מהקונסול לדוגמא, שזו ברירת המחדל של כל תוכנית קונסול )Console.ReadLine לדוגמה, יקרא את המידע ממה שאנחנו נכתוב לו, ולא ממה שכותבים במסך השחור הקטן שנפתח שם...) ואז לאחר שהתחלנו את התהליך יש לנו בעצם את הקלט/פלט שלו וניתן להסיט אותם על ידי הפקודה mainForm.StandardOutput/ mainForm.StandardInput
StreamWriter sw= mainForm.StandardInput;
ולסיום, אם אנו רוצים לסגור את התהליך בעצמנו, ולא לחכות שהמשתמש יסגור אותו או שהוא יסגר בסיום המלאכה, למשל אם הרצתי חלון חדש ואני רוצה לסגור אותו מהתוכנית הראשית, נעשה זאת בצורה פשוטה ביותר:
mainForm.Kill();
עדיף להקיף ב try catch ליתר ביטחון...
לסיכום, לאחר כל הנתונים המשעממים, אם אנחנו רק רוצים להריץ דפדפן לאיזה דף באינטרט נריץ את הפקודה הבאה וזהו:
Process.Start("IExplore.exe", "www.google.com/search/q=life");