Какой рейтинг вас больше интересует?
|
Блокируем все запущенные приложения кроме своего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 вы блокируете или разблокируете приложения!
|
Категория «Фотографы»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.