Wednesday, January 9, 2013

System Shutdown and Restart through C# Code


In this article, I am going to show how we can shutdown, restart, Lock, Logoff, Sleep etc. through C# Code.
Suppose your app needs to perform operations such as shutdown, restart, Logoff, Lock, Hibernation, Sleep through code, then you need to call a process that runs specific executable file (already stored in our system) along with their required arguments.  Here I made a Utility Application ‘PC Controller’ that allows you to do these kind of such operations. A sample code is attached with this article.

After going through this article, we will get to know following points:
 Adding items in ListView Control and showing them as Small Icons
 Shutting Down, restarting, Locking , logging off operation through code

When we run this application, we get following Screen where each operation is showing as an icon in the ListView Control.

Figure-1
Let us see the above application in more detail. On this GUI designing, here a ListView Control is being used.  Just follow the steps below to design GUI:
• To show item as icons, Click the arrow on the right side of the ListViewControl in designer mode and set the View to “SmallIcon”. (See Figure-2)
• Then drop an ImageList Control and add all your icon images in the ImageList Control by setting the “Images” property to folder path where we store our all icons.
• After associating images with ImageList Control, we will see ‘imageList1’ in combo box of “SmallImageList” property. Now set the Small image List property to  ‘imageList1’.
• Now attach event handler for “SelectedIndexChanged” event.


Figure-2
In the “SelectedIndex_Changed” event handler, add the following code. In which we basically call a process by giving the executable file name and its command line arguments.
---------------------------------------------------------------------------------------------------------------
ProcessStartInfo startinfo = new ProcessStartInfo(filename, arguments);
Process.Start(startinfo);
----------------------------------------------------------------------------------------------------------------
Here is the full Code:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DoOperation(listView1.SelectedItems[0].Text);
        }
 
 
        private void DoOperation(string oparation)
        {
            string filename = string.Empty;
            string arguments = string.Empty;
 
            switch (oparation)
            {
                case "Shut Down":
                    filename = "shutdown.exe";
                    arguments = "-s";
                    break;
 
                case "Restart":
 
                    filename = "shutdown.exe";
                    arguments = "-r";
                    break;
 
                case "Logoff":
 
                    filename = "shutdown.exe";
                    arguments = "-l";
                    break;
 
                case "Lock":
 
                    filename = "Rundll32.exe";
                    arguments = "User32.dll, LockWorkStation";
                    break;
                case "Hibernation":
 
                    filename = @"%windir%\system32\rundll32.exe";
                    arguments = "PowrProf.dll, SetSuspendState";
                    break;
                case "Sleep":
 
                    filename = "Rundll32.exe";
                    arguments = "powrprof.dll, SetSuspendState 0,1,0";
                    break;
            }
 
            ProcessStartInfo startinfo = new ProcessStartInfo(filename, arguments);
            Process.Start(startinfo);
 
     this.Close();
 
        }
    }

No comments:

Post a Comment