Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокировка компьтера [D5, Win95/98]


opoloXAI ©   (2002-11-07 15:53:00) 

Добрый день.
Помогите написать код.
Мне нужно, чтобы моя прога была невидима по Ctr+Alt+Del при запуске и работе, а через определённое время блокировала компьютер до прихода сигнала с ComPort-а.
Спрятать прогу по Ctr+Alt+Del я могу, получить сигнал с порта тоже.
Вопрос:но как заблокировать комп до прихода нужного сообщения - я не знаю.
Я искал по сайту(долго), но не нашёл (скорее всего плохо искал).
Если кто напишет, буду примного благодарен.


Song   (2002-11-14 13:07:00) [1]

Какая ОС?


DVM   (2002-11-14 12:55:00) [2]

Вы обратно монитор включать, выключенный таким образом пробовали, у меня не включается.


Manulo   (2002-11-13 17:17:00) [3]


> Marser ©



> SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER,
> 0);

Тока не 0, а 1 ;)


Marser   (2002-11-12 23:05:00) [4]

to 3223(jab)
Причем очень легко:
uses mask;
...
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
SLEEP(5000);
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
...
// В данном случае на 5 секунд.


3223(jab)   (2002-11-12 00:28:00) [5]

Гдето в FAQ :) я читал о том, что можно программно отключать монитор! :) После такого ничего не придётся блокировать! :)


SeB   (2002-11-08 10:06:00) [6]

Код для Builder:

// Объявляем указатель на функцию
void (__stdcall *pBlockInput) (bool);


HINSTANCE hInstUser;
hInstUser = LoadLibrary ("USER32.DLL"); // Загружаем библиотеку
if (hInstUser) {
// Присваеваем указателю адрес функции
pBlockInput = (void (__stdcall *) (bool))GetProcAddress(hInstUser, "BlockInput");
// Бибилотека нам больше не нужна, освобождаем память
FreeLibrary (hInstUser);
}

Блокировка:
pBlockInput(true);
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, NULL, 0); //block CtlAltDel

Разблокирование:
pBlockInput(false);
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, NULL, 0);
// разблокировать Ctrl-Alt-Del, Alt-Tab, Ctrl-Enter

По NT/XP SystemParametersInfo не действует, и после нажатия CAD блокировка снимается, можно блокировать, например, по таймеру, каждые 2 секунды. Для данного способа количество вызовов функции блокировки не обязательно должно быть равно количеству вызовов функции разблокировки, т.е. можно 100 раз заблокировать, потом 1
раз разблокировать и все будет ОК.


xyz   (2002-11-07 22:34:00) [7]

а можно форму на весь экран и...
обрабатывать онкейпресс...
тогда и распальцовку не надо блокировать....


opoloXAI   (2002-11-07 20:01:00) [8]

не обрабатывать клавиатуру и мышь (ну хотя-бы клавиатуру)


ZZ   (2002-11-07 18:51:00) [9]

А заблокировать - это как выглядит?


Наверх

Титульная страница Поиск, карта сайта Написать письмо