📄 unitrest.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UnitRest.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
int myTime = 10 ;
TRestForm *RestForm ;
HHOOK OldHook ;
/*
Private Type KBDLLHOOKSTRUCT '低级键盘钩子的索引值
vkCode As Long '虚拟按键码(1--254)
scanCode As Long '硬件按键扫描码
flags As Long '键按下:128 抬起:0
time As Long '消息时间戳间
dwExtraInfo As Long '额外信息
End Type
*/
//---------------------------------------------------------------------------
__fastcall TRestForm::TRestForm(TComponent* Owner)
: TForm(Owner)
{
}
//-----------------------------------------------------------------------------
//功能:屏蔽系统快捷键
long CALLBACK KeyProc(int code,WPARAM wParam,LPARAM lParam)
{
HHOOK OldHook ;
KBDLLHOOKSTRUCT *pkbhs; //键盘钩子索引值
if ( code < 0 )
{
return CallNextHookEx(OldHook,code,wParam,lParam);
}
pkbhs = (KBDLLHOOKSTRUCT*)lParam;
if ( pkbhs->vkCode == 91 || pkbhs->vkCode == VK_RWIN ) //封锁win键
{
return 1;
}
if ( pkbhs->vkCode == VK_F4 && pkbhs->flags&LLKHF_ALTDOWN ) //封锁alt+f4键
{
return 1;
}
if ( pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)<0 ) //封锁 CTRL+ESC
{
return 1;
}
if ( pkbhs->vkCode == VK_TAB && pkbhs->flags&LLKHF_ALTDOWN ) //封锁 ALT+TAB
{
return 1;
}
if ( pkbhs->vkCode == VK_ESCAPE && pkbhs->flags&LLKHF_ALTDOWN ) //封锁 ALT+ESC
{
return 1;
}
if ( pkbhs->vkCode == VK_SPACE && GetAsyncKeyState(VK_CONTROL)<0 ) //封锁 CTRL+' '
{
return 1;
}
return CallNextHookEx(OldHook,code,wParam, lParam);
}
//---------------------------------------------------------------------------
void __fastcall TRestForm::FormShow(TObject *Sender)
{
Timer->Enabled = true ;
Tips->Top = ( Screen->Height - Tips->Height ) / 2 - 100 ;
Tips->Left = ( Screen->Width - Tips->Width ) / 2 ;
LeftTime->Top = Tips->Top - 100 ;
LeftTime->Left = Tips->Left + 15 ;
HWND hWnd1 = FindWindow("Progman",NULL) ; //隐藏桌面
ShowWindow(hWnd1,SW_HIDE);
HWND hWnd2 = FindWindow("Shell_TrayWnd",NULL) ;
ShowWindow(hWnd2,SW_HIDE);
OldHook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyProc,HInstance,0); //reg the hook
}
//---------------------------------------------------------------------------
void __fastcall TRestForm::TimerTimer(TObject *Sender)
{
if ( myTime == 0 )
RestForm->Hide();
else
{
LeftTime->Caption = "剩余时间 " + IntToStr(myTime) + " 秒 " ;
myTime--;
}
if ( myTime < 0 )
myTime = 10 ;
}
//---------------------------------------------------------------------------
void __fastcall TRestForm::FormHide(TObject *Sender)
{
myTime = 10 ;
UnhookWindowsHookEx(OldHook); //取消钩子
Timer->Enabled = false ;
HWND hWnd1 = FindWindow("Progman",NULL) ; //显示桌面
ShowWindow(hWnd1,SW_SHOW);
HWND hWnd2 = FindWindow("Shell_TrayWnd",NULL) ;
ShowWindow(hWnd2,SW_SHOW);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -