In this article, I am going to show how to shutdown, restart, Lock, Logoff, Sleep etc. through C# Code.

Suppose your app needs to perform operations such as Shutdown, Restart, Logoff, Lock, Hibernate or Sleep through code. Then you need to call a process that runs a 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 kinds of operations. A sample code is attached with this article.

After going through this article, we will get to know the following points:

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

PCController-1.png

Figure 1

Let us see the application in more detail. In this GUI design, there is a ListView Control being used. Just use the following to design the GUI:

PCController-2.jpg

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();
    }
}