WINLOCKDLL.H文件:
WINLOCKDLL.C文件:
/***********************************************************************
* WinLockDLL - Library containing functions to Lock Desktop, Taskbar, *
* and disable Ctrl+Alt+Del and task switching keys. *
* *
* (c) A. Miguel Feij鉶, 1/12/2004 *
***********************************************************************/
#ifndef WINLOCKDLL_H
#define WINLOCKDLL_H
typedef struct _THREAD_DATA
{
HDESK hDesk;
char szDesktopName[20];
} THREAD_DATA;
#ifdef _DLL_
#define DLL_EXP_IMP __declspec(dllexport)
#else
#define DLL_EXP_IMP extern "c"__declspec(dllimport)
#endif
DLL_EXP_IMP int WINAPI Desktop_Show_Hide(BOOL bShowHide);
DLL_EXP_IMP int WINAPI StartButton_Show_Hide(BOOL bShowHide);
DLL_EXP_IMP int WINAPI Taskbar_Show_Hide(BOOL bShowHide);
DLL_EXP_IMP int WINAPI Clock_Show_Hide(BOOL bShowHide);
DLL_EXP_IMP int WINAPI Keys_Enable_Disable(BOOL bEnableDisable);
DLL_EXP_IMP int WINAPI AltTab1_Enable_Disable(BOOL bEnableDisable);
DLL_EXP_IMP int WINAPI AltTab2_Enable_Disable(HWND hWnd, BOOL bEnableDisable);
DLL_EXP_IMP int WINAPI TaskSwitching_Enable_Disable(BOOL bEnableDisable);
DLL_EXP_IMP int WINAPI TaskManager_Enable_Disable(BOOL bEnableDisable);
DLL_EXP_IMP int WINAPI CtrlAltDel_Enable_Disable(BOOL bEnableDisable);
DLL_EXP_IMP int WINAPI Thread_Desktop(LPTHREAD_START_ROUTINE ThreadFunc, THREAD_DATA *td);
DLL_EXP_IMP int WINAPI Process_Desktop(char *szDesktopName, char *szPath);
#endif
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdlib.h>
#include "winlockdll.h"
#include "inject.h"
#define PROGRAM_MANAGER "Program Manager" // Program manager window name
#define TASKBAR "Shell_TrayWnd" // Taskbar class name
#define ID_STARTBUTTON 0x130 // Start button ID
#define ID_TRAY 0x12F // System tray ID
#define ID_CLOCK 0x12F // System clock ID
HHOOK hHook; // Mouse hook
HINSTANCE hInst; // Instance handle
/*************************
* Mouse Hook procedure. *
* (Win 9x) *
*************************/
LRESULT CALLBACK MouseHookProc(int nCode, WORD wParam, DWORD lParam)
{
if(nCode >= 0)
{
if (wParam == WM_LBUTTONDBLCLK)
{
if (((MOUSEHOOKSTRUCT *)lParam)->hwnd == GetDesktopWindow())
{
return 1;
}
}
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
/***********************************
* Low Level Mouse Hook procedure. *
* (Win NT4SP3+) *
***********************************/
LRESULT CALLBACK LowLevelMouseHookProc(int nCode, WORD wParam, DWORD lParam)
{
PMSLLHOOKSTRUCT p = (PMSLLHOOKSTRUCT)lParam;
HWND hWnd = WindowFromPoint(p->pt);
if(nCode >= 0)
{
if ((wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN) && hWnd == GetDesktopWindow())
{
return 1;
}
}