Сегодня 8 мая, среда ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Справочник по C#
Справочник по C#
Голосов: 1
Адрес блога: http://www.csharpcoderr.com/
Добавлен: 2012-11-28 00:46:26
 

Блокируем все запущенные приложения кроме своего

2012-10-23 09:41:15 (читать в оригинале)





      Данная функция позволяет реализовать блокировку всех запускаемых и запущенных приложений кроме вашего, мне данный код пригодился в реализации родительского контроля!

Для работы нам необходимо подключить следующее пространство имен:

using System.Runtime.InteropServices;
Подключаем функции GetDesktopWindow,GetWindow и EnableWindow из библиотеки user32.dll.
[DllImport("user32.dll", SetLastError = false)]
static extern IntPtr GetDesktopWindow();

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
Объявляем необходимы нам флаги для прохода по приложениям
enum GetWindow_Cmd : uint
{
    GW_HWNDFIRST = 0,
    GW_HWNDLAST = 1,
    GW_HWNDNEXT = 2,
    GW_HWNDPREV = 3,
    GW_OWNER = 4,
    GW_CHILD = 5,
    GW_ENABLEDPOPUP = 6
}
Ну и сама функция блокировки приложений:
private void button1_Click(object sender, EventArgs e)
{
    //получаем первое дочернее окно Рабочего стола
    IntPtr hwnd = GetWindow(GetDesktopWindow(), GetWindow_Cmd.GW_CHILD);
    if (hwnd != IntPtr.Zero)
    {
        //перебираем все окна в системе
        while (hwnd != IntPtr.Zero)
        {
            //проверка, что блокируем не свое окно
            if (hwnd != this.Handle)
            {
                //блокируем окно 
                //(вид окна, как будто его блокирует диалоговое окно)           
                EnableWindow(hwnd, false);
            }
            //получаем хендл следующего окна          
            hwnd = GetWindow(hwnd, GetWindow_Cmd.GW_HWNDNEXT);
        }
    }
}
Указывая в EnableWindow(hwnd, false) true или false вы блокируете или разблокируете приложения!

Тэги: application, form, process, system, window

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.