비슷한 프로그램을 생각하시면 뒤통수조심해가 있겠네요. 생각보다 간단한 프로젝트입니다.

[DllImport("user32")]
public static extern int ShowWindow(int hwnd, int nCmdShow);
private const int SW_HIDE = 0;
private const int SW_SHOW = 5;

ArrayList handleArray = null;
public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    handleArray = new ArrayList();
    initProcessList();
}

private void initProcessList()
{
    Process[] processlist = Process.GetProcesses();

    listView1.Items.Clear();
    handleArray.Clear();
    foreach (Process process in processlist)
    {
        if (!String.IsNullOrEmpty(process.MainWindowTitle))
        {
            IntPtr mhandle = process.MainWindowHandle;
            handleArray.Add(mhandle.ToInt32());
            listView1.Items.Add(process.MainWindowTitle);
        }
    }
}

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < listView1.Items.Count; i++)
    {
        if (listView1.Items[i].Checked == true)
        {
            ShowWindow((int)handleArray[i], SW_HIDE);
        }
    }
}

private void button2_Click(object sender, EventArgs e)
{
    for (int i = 0; i < handleArray.Count; i++)
    {
        ShowWindow((int)handleArray[i], SW_SHOW);
    }
}

private void button3_Click(object sender, EventArgs e)
{
    initProcessList();
}