using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Taskbar_CS
{
    public partial class Form1 : Form
    {
        /// <summary>
        /// Скрывает окно и активирует другое
        /// </summary>
        private const int SW_HIDE = 0;

        /// <summary>
        /// Активирует окно
        /// </summary>
        private const int SW_SHOW = 5;

        [DllImport("coredll.dll")]
        private static extern IntPtr FindWindow(string ClassName, 
        string WindowName);

        [DllImport("coredll.dll")]
        private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);

        [DllImport("coredll.dll", EntryPoint = "EnableWindow")]
        private static extern bool EnableWindow(IntPtr hwnd, bool fEnable);
        
        public Form1()
        {
            InitializeComponent();

            #if DEBUG
                MinimizeBox = false;
            #else       
                MinimizeBox = true;
            #endif
        }

        /// <summary>
        /// Прячем панель задач, чтобы пользователь не мог
        /// нажать на кнопку Пуск
        /// </summary>
        public static void HideTaskbar()
        {
            IntPtr h = FindWindow("HHTaskBar", "");
            ShowWindow(h, SW_HIDE);
        }

        /// <summary>
        /// Показывает панель задач
        /// </summary>
        public static void ShowTaskBar()
        {
            IntPtr h = FindWindow("HHTaskBar", "");
            ShowWindow(h, SW_SHOW);
        }

        /// <summary>
        /// Блокируем панель задач, чтобы пользователь не мог
        /// нажать на кнопку Пуск
        /// </summary>
        public static void DisableTaskbar()
        {
            IntPtr h = FindWindow("HHTaskBar", null);
            EnableWindow(h, false);
         }

        /// <summary>
        /// Снимаем блокировку с панели задач
        /// </summary>
        public static void EnableTaskBar()
        {
            IntPtr h = FindWindow("HHTaskBar", null);
            EnableWindow(h, true);
        }

        private void butHideTaskbar_Click(object sender, EventArgs e)
        {
            HideTaskbar();
        }

        private void butShowTaskbar_Click(object sender, EventArgs e)
        {
            ShowTaskBar();
        }

        private void butDisableTaskbar_Click(object sender, EventArgs e)
        {
            DisableTaskbar();
        }

        private void butEnableTaskbar_Click(object sender, EventArgs e)
        {
            EnableTaskBar();
        }
    }
}