C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Блокировка машины
Fialochka
Отправлено: 24.05.2004, 09:04


Ученик-кочегар

Группа: Участник
Сообщений: 8



Подскажите пожалуйста, как можно блокировать клиентовский комп полностью (клавиатуры, мыши) по команде сервера.


Спасибо.
Gedeon
Отправлено: 24.05.2004, 09:30


Ветеран

Группа: Модератор
Сообщений: 1742



Ух злобная Fialochka, где-то я на это натыкался, пороюсь в мсдн, уточните надо отключить клаву и мышь или добиться эффекта к-рый происходит при нажатии Win + L?
gauldot
Отправлено: 26.05.2004, 00:36


Ученик-кочегар

Группа: Участник
Сообщений: 22



Клавиатуру вместе с мышью можно включить\отключить так:
CODE

// Отключить...10сек...включить
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   // BlockAll (true) — отключить.
   // BlockAll (false) — включить.

   HINSTANCE Hnd;
   DWORD Result;
   DWORD __stdcall (*BlockAll)(bool Status); // прототип ф-ии

   Hnd = LoadLibrary("User32.dll");
   BlockAll = (DWORD __stdcall (*)(bool Status))GetProcAddress(Hnd,"BlockInput");

   if(!BlockAll)
   {   FreeLibrary(Hnd);
       return;
   }

   if(BlockAll(true)) Sleep(10000);

   BlockAll(false);
   FreeLibrary(Hnd);
}


Мышь ещё можно и так отключить (эмуляция так сказать smile.gif ):
CODE

void BlockMouse (bool Status)
{
   if (Status)
   {   TPoint P;
       tagRECT LR;
       GetCursorPos(&P);
       LR.left   = P.x;
       LR.top    = P.y;
       LR.right  = P.x+1;
       LR.bottom = P.y+1;
       ClipCursor(&LR);
   }   else ClipCursor(NULL);
}

/////////////////////////////////////////////////////
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   BlockMouse (true);
   Sleep(10000);
   BlockMouse (false);
}


А если WIN-L:
CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   keybd_event(VK_LWIN, 0, 0 ,0);
   keybd_event('L', 0, 0 ,0);
   keybd_event('L', 0, KEYEVENTF_KEYUP,0);
   keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
}

Вернуться в Вопросы программирования в C++Builder