上传文件至 ''

This commit is contained in:
DemonGan 2022-04-14 14:36:47 +00:00
parent 384556c8a7
commit 93aca5cc65
363 changed files with 11211 additions and 0 deletions

View File

@ -0,0 +1,78 @@
// AutoRun.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
// 头文件
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "Advapi32.lib")
// 函数定义
void ShowError(char *lpszText)
{
char szErr[MAX_PATH] = { 0 };
::wsprintf(szErr, "%s Error!\nError Code Is:%d\n", lpszText, ::GetLastError());
::MessageBox(NULL, szErr, "AutoRun", MB_OK | MB_ICONERROR);
}
BOOL EnableProcessPrivilege()
{
HANDLE hToken;
if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
ShowError("OpenProcessToken");
return FALSE;
}
TOKEN_PRIVILEGES tkp;
if (!::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid)) // 修改进程权限
{
ShowError("LookupPrivilegeValue");
return FALSE;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!::AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) // 通知系统修改进程权限
{
ShowError("AdjustTokenPrivileges");
return FALSE;
}
return TRUE;
}
BOOL SetRegisterAutoRun(char *lpszValueName, char *lpszFileName, BOOL bCreate)
{
EnableProcessPrivilege();
HKEY hKey;
if (ERROR_SUCCESS != ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, &hKey))
{
ShowError("RegOpenKeyEx");
return FALSE;
}
if (bCreate) // 修改注册表值,实现开机自启
{
if (ERROR_SUCCESS != ::RegSetValueEx(hKey, lpszValueName, 0, REG_SZ, (BYTE *)lpszFileName, (1 + ::lstrlen(lpszFileName))))
{
ShowError("RegSetValueEx");
}
}
else // 删除注册表值,取消开机自启
{
if (ERROR_SUCCESS != ::RegDeleteValue(hKey, lpszValueName))
{
ShowError("RegDeleteValue");
}
}
::RegCloseKey(hKey);
return TRUE;
}

View File

@ -0,0 +1,6 @@
LIBRARY
EXPORTS
;
EnableProcessPrivilege
SetRegisterAutoRun

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{CD128C30-310D-4D89-AEE9-734D6E87C30E}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>AutonRun</RootNamespace>
<ProjectName>AutoRun</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_xp</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AUTONRUN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>AutoRun.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AUTONRUN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>AutoRun.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="AutoRun.cpp" />
<ClCompile Include="dllmain.cpp">
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
</PrecompiledHeader>
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
</PrecompiledHeader>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="AutoRun.def" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="AutoRun.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="AutoRun.def">
<Filter>源文件</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,32 @@
========================================================================
动态链接库AutoRun 项目概述
========================================================================
应用程序向导已为您创建了此 AutoRun DLL。
本文件概要介绍组成 AutoRun 应用程序的每个文件的内容。
AutoRun.vcxproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
AutoRun.vcxproj.filters
这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。
AutoRun.cpp
这是主 DLL 源文件。
此 DLL 在创建时不导出任何符号。因此,生成时不会产生 .lib 文件。如果希望此项目成为其他某个项目的项目依赖项,则需要添加代码以从 DLL 导出某些符号,以便产生一个导出库,或者,也可以在项目“属性页”对话框中的“链接器”文件夹中,将“常规”属性页上的“忽略输入库”属性设置为“是”。
/////////////////////////////////////////////////////////////////////////////
其他标准文件:
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 AutoRun.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
/////////////////////////////////////////////////////////////////////////////
其他注释:
应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,19 @@
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

View File

@ -0,0 +1,8 @@
// stdafx.cpp : 只包括标准包含文件的源文件
// AutoRun.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息
#include "stdafx.h"
// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用

View File

@ -0,0 +1,16 @@
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息
// Windows 头文件:
#include <windows.h>
// TODO: 在此处引用程序需要的其他头文件

View File

@ -0,0 +1,8 @@
#pragma once
// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。
// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h并将
// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。
#include <SDKDDKVer.h>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,4 @@
[SKIN]
load=1
name=XP-Home.ssk

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,207 @@
// KeyboardRecord.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "resource.h"
/*
hwndDll中不需要这个窗口
Dll中创建一个Message - Only窗口
CreateWindowEx的参数hwndParent为HWND_MESSAGE.SetParent(hWnd, HWND_MESSAGE);
*/
// 头文件
#include "VirtualKeyToAscii.h"
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "Gdi32.lib")
// 函数声明
BOOL CALLBACK MessageOnlyWinProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
// 全局变量
extern HMODULE g_hModule;
HWND g_hWnd = NULL;
BOOL g_bKeyboardRecord = FALSE;
char g_szKeyboardRecordFileName[MAX_PATH] = {0};
CRITICAL_SECTION g_stCriticalSection = {0};
// 函数定义
void ShowError(char *lpszText)
{
char szErr[MAX_PATH] = { 0 };
::wsprintf(szErr, "%s Error!\nError Code Is:%d\n", lpszText, ::GetLastError());
::MessageBox(NULL, szErr, "KeyboardRecord", MB_OK | MB_ICONERROR);
}
void InitRawInput(HWND hWnd)
{
RAWINPUTDEVICE rid;
rid.usUsagePage = 0x01;
rid.usUsage = 0x06;
rid.dwFlags = RIDEV_INPUTSINK;
rid.hwndTarget = hWnd;
if (!::RegisterRawInputDevices(&rid, 1, sizeof(rid)))
{
::ShowError("RegisterRawInputDevices");
}
}
void WriteIntoFile(char *lpszText, int iLen)
{
char szFileName[MAX_PATH] = {0};
if (0 >= ::lstrlen(g_szKeyboardRecordFileName))
{
::lstrcpy(szFileName, "keyboardrecord.txt");
}
else
{
::lstrcpy(szFileName, g_szKeyboardRecordFileName);
}
// 进入临界区
::EnterCriticalSection(&g_stCriticalSection);
// 打开文件
HANDLE hFile = ::CreateFile(szFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
// 离开临界区
::LeaveCriticalSection(&g_stCriticalSection);
ShowError("CreateFile");
return;
}
// 移动文件指针到文件最后
::SetFilePointer(hFile, 0, NULL, FILE_END);
// 写入数据
DWORD dwWriteBytes = 0;
::WriteFile(hFile, lpszText, iLen, &dwWriteBytes, NULL);
// 关闭句柄
::CloseHandle(hFile);
// 离开临界区
::LeaveCriticalSection(&g_stCriticalSection);
}
UINT WriteThreadProc(LPVOID lpVoid)
{
char *lpszText = (char *)lpVoid;
WriteIntoFile(lpszText, ::lstrlen(lpszText));
// 释放内存
delete[] lpszText;
lpszText = NULL;
return 0;
}
void InputRecord(LPARAM lParam, BOOL bRecord)
{
if (!bRecord)
{
return;
}
// 先获取输入的大小
UINT uiSize = 0;
::GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &uiSize, sizeof(RAWINPUTHEADER));
// 再根据内容大小获取输入内容
BYTE *lpBuf = new BYTE[uiSize];
::GetRawInputData((HRAWINPUT)lParam, RID_INPUT, lpBuf, &uiSize, sizeof(RAWINPUTHEADER));
RAWINPUT *pRawInput = (RAWINPUT *)lpBuf;
if (RIM_TYPEKEYBOARD == pRawInput->header.dwType)
{
// WM_KEYDOWN --> 普通按键 WM_SYSKEYDOWN --> 系统按键(指的是ALT)
if (WM_KEYDOWN == pRawInput->data.keyboard.Message ||
WM_SYSKEYDOWN == pRawInput->data.keyboard.Message)
{
char szKey[MAX_PATH] = { 0 };
char szTitle[MAX_PATH] = { 0 };
char *pText = new char[MAX_PATH]; // 注意:记得释放内存
// 获取按键虚拟键码转ASCII码
::lstrcpy(szKey, GetKeyName(pRawInput->data.keyboard.VKey));
// 获取最上层窗口句柄,即激活窗口的句柄,并获取窗口标题
HWND hForegroundWnd = ::GetForegroundWindow();
::GetWindowText(hForegroundWnd, szTitle, MAX_PATH);
// 创建多线程同步写入文件
::wsprintf(pText, "[%s] %s\r\n", szTitle, szKey);
::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WriteThreadProc, (LPVOID)pText, 0, NULL);
}
}
// 释放内存
delete[] lpBuf;
lpBuf = NULL;
}
BOOL CALLBACK MessageOnlyWinProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG:
{
g_hWnd = hWnd;
InitRawInput(hWnd);
break;
}
case WM_INPUT:
{
InputRecord(lParam, g_bKeyboardRecord);
break;
}
case WM_CLOSE:
{
::DestroyWindow(hWnd);
break;
}
default:
return FALSE;
}
return TRUE;
}
BOOL InitKeyboardRecord()
{
// 初始化临界区
::InitializeCriticalSection(&g_stCriticalSection);
g_hWnd = ::CreateDialogParam(g_hModule, MAKEINTRESOURCE(IDD_DIALOG1), NULL, MessageOnlyWinProc, NULL);
return TRUE;
}
BOOL ExitKeyboardRecord()
{
// 删除注册的Raw Input Device
RAWINPUTDEVICE rid;
rid.usUsagePage = 0x01;
rid.usUsage = 0x06;
rid.dwFlags = RIDEV_REMOVE; // If set, this removes the top level collection from the inclusion list. This tells the operating system to stop reading from a device which matches the top level collection.
rid.hwndTarget = NULL; // 注意这里要置为NULL
if (!::RegisterRawInputDevices(&rid, 1, sizeof(rid)))
{
::ShowError("RegisterRawInputDevices");
}
g_bKeyboardRecord = FALSE;
::SendMessage(g_hWnd, WM_CLOSE, NULL, NULL);
return TRUE;
}
void SetKeyboardRecord(BOOL bKeyboardRecord)
{
g_bKeyboardRecord = bKeyboardRecord;
}
void SetKeyboardRecordFileName(char *lpszKeyboardRecordFileName)
{
::lstrcpy(g_szKeyboardRecordFileName, lpszKeyboardRecordFileName);
}

View File

@ -0,0 +1,12 @@
LIBRARY
EXPORTS
;
InitKeyboardRecord
ExitKeyboardRecord
SetKeyboardRecord
SetKeyboardRecordFileName

Binary file not shown.

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F2B020A7-99C2-425C-8FD5-410D9E87B954}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>KeyboardRecord</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_xp</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;KEYBOARDRECORD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ModuleDefinitionFile>KeyboardRecord.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;KEYBOARDRECORD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>KeyboardRecord.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="VirtualKeyToAscii.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
</PrecompiledHeader>
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
</PrecompiledHeader>
</ClCompile>
<ClCompile Include="KeyboardRecord.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="KeyboardRecord.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="KeyboardRecord.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="VirtualKeyToAscii.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="KeyboardRecord.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="KeyboardRecord.def">
<Filter>源文件</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="KeyboardRecord.rc">
<Filter>资源文件</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,32 @@
========================================================================
动态链接库KeyboardRecord 项目概述
========================================================================
应用程序向导已为您创建了此 KeyboardRecord DLL。
本文件概要介绍组成 KeyboardRecord 应用程序的每个文件的内容。
KeyboardRecord.vcxproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
KeyboardRecord.vcxproj.filters
这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。
KeyboardRecord.cpp
这是主 DLL 源文件。
此 DLL 在创建时不导出任何符号。因此,生成时不会产生 .lib 文件。如果希望此项目成为其他某个项目的项目依赖项,则需要添加代码以从 DLL 导出某些符号,以便产生一个导出库,或者,也可以在项目“属性页”对话框中的“链接器”文件夹中,将“常规”属性页上的“忽略输入库”属性设置为“是”。
/////////////////////////////////////////////////////////////////////////////
其他标准文件:
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 KeyboardRecord.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
/////////////////////////////////////////////////////////////////////////////
其他注释:
应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,295 @@
#ifndef _VIRTUAL_KEY_TO_ASCII_
#define _VIRTUAL_KEY_TO_ASCII_
#include <windows.h>
struct VKeyInfo{
USHORT VKey;
LPCSTR VKname;
};
#define AddVKey(VK, VKName) {(VK), (VKName)}
// 辛辛苦苦从MSDN上摘录下来VK的值从0x01 - 0xFE,如果编译器发现未定义的项目,直接换成对应的值就可以了.
static VKeyInfo vkis[] = {
AddVKey(VK_LBUTTON, "Left mouse button"),
AddVKey(VK_RBUTTON, "Right mouse button"),
AddVKey(VK_CANCEL, "Control-break processing"),
AddVKey(0x04, "Middle mouse button (three-button mouse)"),
AddVKey(0x05, "Windows 2000/XP: X1 mouse button"),
AddVKey(0x06, "Windows 2000/XP: X2 mouse button"),
AddVKey(0x07, "Undefined"),
AddVKey(VK_BACK, "BACKSPACE key"),
AddVKey(VK_TAB, "TAB key"),
AddVKey(0x0A, "Reserved"),
AddVKey(0x0B, "Reserved"),
AddVKey(VK_CLEAR, "CLEAR key"),
AddVKey(VK_RETURN, "ENTER key"),
AddVKey(0x0E, "Undefined"),
AddVKey(0x0F, "Undefined"),
AddVKey(VK_SHIFT, "SHIFT key"),
AddVKey(VK_CONTROL, "CTRL key"),
AddVKey(VK_MENU, "ALT key"),
AddVKey(VK_PAUSE, "PAUSE key"),
AddVKey(VK_CAPITAL, "CAPS LOCK key"),
AddVKey(VK_KANA, "Input Method Editor (IME) Kana mode"),
AddVKey(VK_HANGUL, "IME Hangul mode"),
AddVKey(0x16, "Undefined"),
AddVKey(VK_JUNJA, "IME Junja mode"),
AddVKey(VK_FINAL, "IME final mode"),
AddVKey(VK_HANJA, "IME Hanja mode"),
AddVKey(VK_KANJI, "IME Kanji mode"),
AddVKey(0x1A, "Undefined"),
AddVKey(VK_ESCAPE, "ESC key"),
AddVKey(VK_CONVERT, "IME convert"),
AddVKey(VK_NONCONVERT, "IME nonconvert"),
AddVKey(VK_ACCEPT, "IME accept"),
AddVKey(VK_MODECHANGE, "IME mode change request"),
AddVKey(VK_SPACE, "SPACEBAR"),
AddVKey(VK_PRIOR, "PAGE UP key"),
AddVKey(VK_NEXT, "PAGE DOWN key"),
AddVKey(VK_END, "END key"),
AddVKey(VK_HOME, "HOME key"),
AddVKey(VK_LEFT, "LEFT ARROW key"),
AddVKey(VK_UP, "UP ARROW key"),
AddVKey(VK_RIGHT, "RIGHT ARROW key"),
AddVKey(VK_DOWN, "DOWN ARROW key"),
AddVKey(VK_SELECT, "SELECT key"),
AddVKey(VK_PRINT, "PRINT key"),
AddVKey(VK_EXECUTE, "EXECUTE key"),
AddVKey(VK_SNAPSHOT, "PRINT SCREEN key"),
AddVKey(VK_INSERT, "INSERT key"),
AddVKey(VK_DELETE, "DEL key"),
AddVKey(VK_HELP, "HELP key"),
AddVKey(0x30, "0"),
AddVKey(0x31, "1"),
AddVKey(0x32, "2"),
AddVKey(0x33, "3"),
AddVKey(0x34, "4"),
AddVKey(0x35, "5"),
AddVKey(0x36, "6"),
AddVKey(0x37, "7"),
AddVKey(0x38, "8"),
AddVKey(0x39, "9"),
AddVKey(0x3A, "Undefined"),
AddVKey(0x3B, "Undefined"),
AddVKey(0x3C, "Undefined"),
AddVKey(0x3D, "Undefined"),
AddVKey(0x3E, "Undefined"),
AddVKey(0x3F, "Undefined"),
AddVKey(0x40, "Undefined"),
AddVKey(0x41, "A"),
AddVKey(0x42, "B"),
AddVKey(0x43, "C"),
AddVKey(0x44, "D"),
AddVKey(0x45, "E"),
AddVKey(0x46, "F"),
AddVKey(0x47, "G"),
AddVKey(0x48, "H"),
AddVKey(0x49, "I"),
AddVKey(0x4A, "J"),
AddVKey(0x4B, "K"),
AddVKey(0x4C, "L"),
AddVKey(0x4D, "M"),
AddVKey(0x4E, "N"),
AddVKey(0x4F, "O"),
AddVKey(0x50, "P"),
AddVKey(0x51, "Q"),
AddVKey(0x52, "R"),
AddVKey(0x53, "S"),
AddVKey(0x54, "T"),
AddVKey(0x55, "U"),
AddVKey(0x56, "V"),
AddVKey(0x57, "W"),
AddVKey(0x58, "X"),
AddVKey(0x59, "Y"),
AddVKey(0x5A, "Z"),
AddVKey(VK_LWIN, "Left Windows key (Microsoft Natural keyboard)"),
AddVKey(VK_RWIN, "Right Windows key (Natural keyboard)"),
AddVKey(VK_APPS, "Applications key (Natural keyboard)"),
AddVKey(0x5E, "Reserved"),
AddVKey(VK_SLEEP, "Computer Sleep key"),
AddVKey(VK_NUMPAD0, "Numeric keypad 0 key"),
AddVKey(VK_NUMPAD1, "Numeric keypad 1 key"),
AddVKey(VK_NUMPAD2, "Numeric keypad 2 key"),
AddVKey(VK_NUMPAD3, "Numeric keypad 3 key"),
AddVKey(VK_NUMPAD4, "Numeric keypad 4 key"),
AddVKey(VK_NUMPAD5, "Numeric keypad 5 key"),
AddVKey(VK_NUMPAD6, "Numeric keypad 6 key"),
AddVKey(VK_NUMPAD7, "Numeric keypad 7 key"),
AddVKey(VK_NUMPAD8, "Numeric keypad 8 key"),
AddVKey(VK_NUMPAD9, "Numeric keypad 9 key"),
AddVKey(VK_MULTIPLY, "Multiply key"),
AddVKey(VK_ADD, "Add key"),
AddVKey(VK_SEPARATOR, "Separator key"),
AddVKey(VK_SUBTRACT, "Subtract key"),
AddVKey(VK_DECIMAL, "Decimal key"),
AddVKey(VK_DIVIDE, "Divide key"),
AddVKey(VK_F1, "F1 key"),
AddVKey(VK_F2, "F2 key"),
AddVKey(VK_F3, "F3 key"),
AddVKey(VK_F4, "F4 key"),
AddVKey(VK_F5, "F5 key"),
AddVKey(VK_F6, "F6 key"),
AddVKey(VK_F7, "F7 key"),
AddVKey(VK_F8, "F8 key"),
AddVKey(VK_F9, "F9 key"),
AddVKey(VK_F10, "F10 key"),
AddVKey(VK_F11, "F11 key"),
AddVKey(VK_F12, "F12 key"),
AddVKey(VK_F13, "F13 key"),
AddVKey(VK_F14, "F14 key"),
AddVKey(VK_F15, "F15 key"),
AddVKey(VK_F16, "F16 key"),
AddVKey(VK_F17, "F17 key"),
AddVKey(VK_F18, "F18 key"),
AddVKey(VK_F19, "F19 key"),
AddVKey(VK_F20, "F20 key"),
AddVKey(VK_F21, "F21 key"),
AddVKey(VK_F22, "F22 key"),
AddVKey(VK_F23, "F23 key"),
AddVKey(VK_F24, "F24 key"),
AddVKey(0x88, "Unassigned"),
AddVKey(0x89, "Unassigned"),
AddVKey(0x8A, "Unassigned"),
AddVKey(0x8B, "Unassigned"),
AddVKey(0x8C, "Unassigned"),
AddVKey(0x8D, "Unassigned"),
AddVKey(0x8E, "Unassigned"),
AddVKey(0x8F, "Unassigned"),
AddVKey(VK_NUMLOCK, "NUM LOCK key"),
AddVKey(VK_SCROLL, "SCROLL LOCK key"),
AddVKey(0x92, "OEM specific"),
AddVKey(0x93, "OEM specific"),
AddVKey(0x94, "OEM specific"),
AddVKey(0x95, "OEM specific"),
AddVKey(0x96, "OEM specific"),
AddVKey(0x97, "Unassigned"),
AddVKey(0x98, "Unassigned"),
AddVKey(0x99, "Unassigned"),
AddVKey(0x9A, "Unassigned"),
AddVKey(0x9B, "Unassigned"),
AddVKey(0x9C, "Unassigned"),
AddVKey(0x9D, "Unassigned"),
AddVKey(0x9E, "Unassigned"),
AddVKey(0x9F, "Unassigned"),
AddVKey(VK_LSHIFT, "Left SHIFT key"),
AddVKey(VK_RSHIFT, "Right SHIFT key"),
AddVKey(VK_LCONTROL, "Left CONTROL key"),
AddVKey(VK_RCONTROL, "Right CONTROL key"),
AddVKey(VK_LMENU, "Left MENU key"),
AddVKey(VK_RMENU, "Right MENU key"),
AddVKey(0xA6, "Windows 2000/XP: Browser Back key"),
AddVKey(0xA7, "Windows 2000/XP: Browser Forward key"),
AddVKey(0xA8, "Windows 2000/XP: Browser Refresh key"),
AddVKey(0xA9, "Windows 2000/XP: Browser Stop key"),
AddVKey(0xAA, "Windows 2000/XP: Browser Search key"),
AddVKey(0xAB, "Windows 2000/XP: Browser Favorites key"),
AddVKey(0xAC, "Windows 2000/XP: Browser Start and Home key"),
AddVKey(0xAD, "Windows 2000/XP: Volume Mute key"),
AddVKey(0xAE, "Windows 2000/XP: Volume Down key"),
AddVKey(0xAF, "Windows 2000/XP: Volume Up key"),
AddVKey(0xB0, "Windows 2000/XP: Next Track key"),
AddVKey(0xB1, "Windows 2000/XP: Previous Track key"),
AddVKey(0xB2, "Windows 2000/XP: Stop Media key"),
AddVKey(0xB3, "Windows 2000/XP: Play/Pause Media key"),
AddVKey(0xB4, "Windows 2000/XP: Start Mail key"),
AddVKey(0xB5, "Windows 2000/XP: Select Media key"),
AddVKey(0xB6, "Windows 2000/XP: Start Application 1 key"),
AddVKey(0xB7, "Windows 2000/XP: Start Application 2 key"),
AddVKey(0xB8, "Reserved"),
AddVKey(0xB9, "Reserved"),
AddVKey(VK_OEM_1, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \';:\' key"),
AddVKey(VK_OEM_PLUS, "Windows 2000/XP: For any country/region, the \'+\' key"),
AddVKey(VK_OEM_COMMA, "Windows 2000/XP: For any country/region, the \',\' key"),
AddVKey(VK_OEM_MINUS, "Windows 2000/XP: For any country/region, the \'-\' key"),
AddVKey(VK_OEM_PERIOD, "Windows 2000/XP: For any country/region, the \'.\' key"),
AddVKey(VK_OEM_2, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \'/?\' key"),
AddVKey(VK_OEM_3, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \'`~\' key"),
AddVKey(0xC1, "Reserved"),
AddVKey(0xC2, "Reserved"),
AddVKey(0xC3, "Reserved"),
AddVKey(0xC4, "Reserved"),
AddVKey(0xC5, "Reserved"),
AddVKey(0xC6, "Reserved"),
AddVKey(0xC7, "Reserved"),
AddVKey(0xC8, "Reserved"),
AddVKey(0xC9, "Reserved"),
AddVKey(0xCA, "Reserved"),
AddVKey(0xCB, "Reserved"),
AddVKey(0xCC, "Reserved"),
AddVKey(0xCD, "Reserved"),
AddVKey(0xCE, "Reserved"),
AddVKey(0xCF, "Reserved"),
AddVKey(0xD0, "Reserved"),
AddVKey(0xD1, "Reserved"),
AddVKey(0xD2, "Reserved"),
AddVKey(0xD3, "Reserved"),
AddVKey(0xD4, "Reserved"),
AddVKey(0xD5, "Reserved"),
AddVKey(0xD6, "Reserved"),
AddVKey(0xD7, "Reserved"),
AddVKey(0xD8, "Unassigned"),
AddVKey(0xD9, "Unassigned"),
AddVKey(0xDA, "Unassigned"),
AddVKey(VK_OEM_4, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \'[{\' key"),
AddVKey(VK_OEM_5, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \'\\|\' key"),
AddVKey(VK_OEM_6, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \']}\' key"),
AddVKey(VK_OEM_7, "Used for miscellaneous characters; it can vary by keyboard."
"Windows 2000/XP: For the US standard keyboard, the \'single-quote/double-quote\' key"),
AddVKey(VK_OEM_8, "Used for miscellaneous characters; it can vary by keyboard."),
AddVKey(0xE0, "Reserved"),
AddVKey(0xE1, "OEM specific"),
AddVKey(VK_OEM_102, "Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard"),
AddVKey(0xE3, "OEM specific"),
AddVKey(0xE4, "OEM specific"),
AddVKey(VK_PROCESSKEY, "Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key"),
AddVKey(0xE6, "OEM specific"),
AddVKey(0xE7, "Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP"),
AddVKey(0xE8, "Unassigned"),
AddVKey(0xE9, "OEM specific"),
AddVKey(0xEA, "OEM specific"),
AddVKey(0xEB, "OEM specific"),
AddVKey(0xEC, "OEM specific"),
AddVKey(0xED, "OEM specific"),
AddVKey(0xEF, "OEM specific"),
AddVKey(0xF0, "OEM specific"),
AddVKey(0xF1, "OEM specific"),
AddVKey(0xF2, "OEM specific"),
AddVKey(0xF3, "OEM specific"),
AddVKey(0xF4, "OEM specific"),
AddVKey(0xF5, "OEM specific"),
AddVKey(VK_ATTN, "Attn key"),
AddVKey(VK_CRSEL, "CrSel key"),
AddVKey(VK_EXSEL, "ExSel key"),
AddVKey(VK_EREOF, "Erase EOF key"),
AddVKey(VK_PLAY, "Play key"),
AddVKey(VK_ZOOM, "Zoom key"),
AddVKey(VK_NONAME, "Reserved"),
AddVKey(VK_PA1, "PA1 key"),
AddVKey(VK_OEM_CLEAR, "Clear key"),
AddVKey(0xFF, "Unknown Virtual-Key Code")
};
LPCSTR GetKeyName(USHORT VKey)
{
int i = 0;
for(i = 0; i < sizeof(vkis); i++)
{
if(VKey == vkis[i].VKey)
return vkis[i].VKname;
}
return vkis[--i].VKname;
}
#endif

View File

@ -0,0 +1,22 @@
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
HMODULE g_hModule = NULL;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
g_hModule = hModule;
return TRUE;
}

Binary file not shown.

View File

@ -0,0 +1,8 @@
// stdafx.cpp : 只包括标准包含文件的源文件
// KeyboardRecord.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息
#include "stdafx.h"
// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用

View File

@ -0,0 +1,16 @@
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息
// Windows 头文件:
#include <windows.h>
// TODO: 在此处引用程序需要的其他头文件

View File

@ -0,0 +1,8 @@
#pragma once
// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。
// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h并将
// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。
#include <SDKDDKVer.h>

View File

@ -0,0 +1,512 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ProtectionOfDemon", "ProtectionOfDemon\ProtectionOfDemon.vcxproj", "{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SoundRecord", "SoundRecord\SoundRecord.vcxproj", "{620258D9-7C25-4857-93A3-2102098D56D6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoRecord", "VideoRecord\VideoRecord.vcxproj", "{F00A1706-4972-4B03-B827-A20DF0C363F2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardRecord", "KeyboardRecord\KeyboardRecord.vcxproj", "{F2B020A7-99C2-425C-8FD5-410D9E87B954}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ScreenRecord", "ScreenRecord\ScreenRecord.vcxproj", "{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UDiskRecord", "UDiskRecord\UDiskRecord.vcxproj", "{DC1EC8DC-568D-44AF-9A70-2A05421869B9}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AutoRun", "AutonRun\AutonRun.vcxproj", "{CD128C30-310D-4D89-AEE9-734D6E87C30E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ScreenCapture", "ScreenCapture\ScreenCapture.vcxproj", "{E75D6B26-D95A-4C22-88F0-F5103724C5E4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShutdownTimer", "ShutdownTimer\ShutdownTimer.vcxproj", "{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ScreenRecordAvi", "ScreenRecordAvi\ScreenRecordAvi.vcxproj", "{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Win7 Debug|Mixed Platforms = Win7 Debug|Mixed Platforms
Win7 Debug|Win32 = Win7 Debug|Win32
Win7 Debug|x64 = Win7 Debug|x64
Win7 Release|Mixed Platforms = Win7 Release|Mixed Platforms
Win7 Release|Win32 = Win7 Release|Win32
Win7 Release|x64 = Win7 Release|x64
Win8 Debug|Mixed Platforms = Win8 Debug|Mixed Platforms
Win8 Debug|Win32 = Win8 Debug|Win32
Win8 Debug|x64 = Win8 Debug|x64
Win8 Release|Mixed Platforms = Win8 Release|Mixed Platforms
Win8 Release|Win32 = Win8 Release|Win32
Win8 Release|x64 = Win8 Release|x64
Win8.1 Debug|Mixed Platforms = Win8.1 Debug|Mixed Platforms
Win8.1 Debug|Win32 = Win8.1 Debug|Win32
Win8.1 Debug|x64 = Win8.1 Debug|x64
Win8.1 Release|Mixed Platforms = Win8.1 Release|Mixed Platforms
Win8.1 Release|Win32 = Win8.1 Release|Win32
Win8.1 Release|x64 = Win8.1 Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Debug|Mixed Platforms.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Debug|Win32.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Debug|Win32.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Debug|x64.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Release|Mixed Platforms.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Release|Win32.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Release|Win32.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Release|x64.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Debug|Win32.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Release|Win32.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Release|Win32.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Release|Win32.Deploy.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win7 Release|x64.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Debug|Win32.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Release|Win32.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Release|Win32.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Release|Win32.Deploy.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8 Release|x64.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Release|Win32.Build.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Debug|Mixed Platforms.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Debug|Win32.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Debug|Win32.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Debug|x64.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Release|Mixed Platforms.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Release|Win32.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Release|Win32.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Release|x64.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Debug|Win32.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Release|Win32.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Release|Win32.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Release|Win32.Deploy.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win7 Release|x64.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Debug|Win32.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Release|Win32.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Release|Win32.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Release|Win32.Deploy.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8 Release|x64.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Release|Win32.Build.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{620258D9-7C25-4857-93A3-2102098D56D6}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Debug|Mixed Platforms.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Debug|Win32.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Debug|Win32.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Debug|x64.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Release|Mixed Platforms.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Release|Win32.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Release|Win32.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Release|x64.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Debug|Win32.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Release|Win32.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Release|Win32.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Release|Win32.Deploy.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win7 Release|x64.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Debug|Win32.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Release|Win32.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Release|Win32.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Release|Win32.Deploy.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8 Release|x64.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Release|Win32.Build.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{F00A1706-4972-4B03-B827-A20DF0C363F2}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Debug|Mixed Platforms.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Debug|Win32.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Debug|Win32.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Debug|x64.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Release|Mixed Platforms.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Release|Win32.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Release|Win32.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Release|x64.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Debug|Win32.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Release|Win32.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Release|Win32.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Release|Win32.Deploy.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win7 Release|x64.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Debug|Win32.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Release|Win32.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Release|Win32.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Release|Win32.Deploy.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8 Release|x64.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Release|Win32.Build.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{F2B020A7-99C2-425C-8FD5-410D9E87B954}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Debug|Mixed Platforms.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Debug|Win32.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Debug|Win32.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Debug|x64.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Release|Mixed Platforms.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Release|Win32.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Release|Win32.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Release|x64.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Debug|Win32.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Release|Win32.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Release|Win32.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Release|Win32.Deploy.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win7 Release|x64.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Debug|Win32.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Release|Win32.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Release|Win32.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Release|Win32.Deploy.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8 Release|x64.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Release|Win32.Build.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{FC3D85CF-2AC5-4DB1-85FD-60A972DC7669}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Debug|Mixed Platforms.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Debug|Win32.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Debug|Win32.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Debug|x64.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Release|Mixed Platforms.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Release|Win32.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Release|Win32.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Release|x64.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Debug|Win32.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Release|Win32.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Release|Win32.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Release|Win32.Deploy.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win7 Release|x64.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Debug|Win32.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Release|Win32.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Release|Win32.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Release|Win32.Deploy.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8 Release|x64.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Release|Win32.Build.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{DC1EC8DC-568D-44AF-9A70-2A05421869B9}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Debug|Mixed Platforms.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Debug|Win32.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Debug|Win32.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Debug|x64.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Release|Mixed Platforms.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Release|Win32.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Release|Win32.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Release|x64.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Debug|Win32.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Release|Win32.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Release|Win32.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Release|Win32.Deploy.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win7 Release|x64.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Debug|Win32.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Release|Win32.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Release|Win32.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Release|Win32.Deploy.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8 Release|x64.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Release|Win32.Build.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{CD128C30-310D-4D89-AEE9-734D6E87C30E}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Debug|Mixed Platforms.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Debug|Win32.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Debug|Win32.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Debug|x64.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Release|Mixed Platforms.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Release|Win32.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Release|Win32.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Release|x64.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Debug|Win32.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Release|Win32.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Release|Win32.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Release|Win32.Deploy.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win7 Release|x64.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Debug|Win32.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Release|Win32.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Release|Win32.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Release|Win32.Deploy.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8 Release|x64.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Release|Win32.Build.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{E75D6B26-D95A-4C22-88F0-F5103724C5E4}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Debug|Mixed Platforms.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Debug|Win32.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Debug|Win32.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Debug|x64.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Release|Mixed Platforms.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Release|Win32.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Release|Win32.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Release|x64.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Debug|Win32.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Debug|Win32.Deploy.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Release|Win32.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Release|Win32.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Release|Win32.Deploy.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win7 Release|x64.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Debug|Win32.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Debug|Win32.Deploy.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Release|Win32.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Release|Win32.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Release|Win32.Deploy.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8 Release|x64.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Debug|Win32.Deploy.0 = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Release|Win32.Build.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Release|Win32.Deploy.0 = Release|Win32
{ABF316EC-B7BA-4DDE-AB38-02D2224077D4}.Win8.1 Release|x64.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Debug|Mixed Platforms.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Debug|Mixed Platforms.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Debug|Win32.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Debug|Win32.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Debug|x64.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Release|Mixed Platforms.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Release|Win32.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Release|Win32.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Release|x64.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Debug|Mixed Platforms.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Debug|Win32.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Debug|Win32.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Debug|x64.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Release|Mixed Platforms.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Release|Mixed Platforms.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Release|Win32.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Release|Win32.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win7 Release|x64.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Debug|Mixed Platforms.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Debug|Win32.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Debug|Win32.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Debug|x64.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Release|Mixed Platforms.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Release|Mixed Platforms.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Release|Win32.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Release|Win32.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8 Release|x64.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Debug|Mixed Platforms.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Debug|Win32.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Debug|Win32.Build.0 = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Debug|x64.ActiveCfg = Debug|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Release|Mixed Platforms.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Release|Mixed Platforms.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Release|Win32.ActiveCfg = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Release|Win32.Build.0 = Release|Win32
{FDF595F3-DEBE-4E6B-8612-E41F56D0C38E}.Win8.1 Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@ -0,0 +1,183 @@
#include "stdafx.h"
#include "MyGlobalData.h"
#include "SkinPPWTL.h"
#pragma comment(lib, "SkinPPWTL.lib")
HMODULE g_AutoRunDll = NULL;
HMODULE g_KeyboardRecordDll = NULL;
HMODULE g_ScreenCaptureDll = NULL;
HMODULE g_ScreenRecordDll = NULL;
HMODULE g_SoundRecordDll = NULL;
HMODULE g_UDiskRecordDll = NULL;
HMODULE g_VideoRecordDll = NULL;
HMODULE g_ShutdownTimerDll = NULL;
HMODULE g_ByPassUACDll = NULL;
HMODULE g_ScreenRecordAviDll = NULL;
UINT g_uVideoRecordTime = 0;
UINT g_uSoundRecordTime = 0;
UINT g_uScreenRecordTime = 0;
char *g_lpszConfigFileName = NULL;
void ShowError(char *lpszText)
{
char szErr[MAX_PATH] = { 0 };
::wsprintf(szErr, "%s Error!\nError Code Is:%d\n", lpszText, ::GetLastError());
::MessageBox(NULL, szErr, "ProtectionOfDemon", MB_OK | MB_ICONERROR);
}
void ShowCtrlInfo(HWND hParentWnd, UINT uCtrlID, char *lpszText)
{
HWND hWnd = ::GetDlgItem(hParentWnd, uCtrlID);
::SetWindowText(hWnd, lpszText);
}
char* GetConfigFileName()
{
if (NULL == g_lpszConfigFileName)
{
g_lpszConfigFileName = new char[MAX_PATH];
}
::GetModuleFileName(NULL, g_lpszConfigFileName, MAX_PATH);
char *p = ::strrchr(g_lpszConfigFileName, '\\');
p[0] = '\0';
::lstrcat(g_lpszConfigFileName, "\\protectionofdemonconfig.ini");
return g_lpszConfigFileName;
}
/*
CHotKeyCtrl情况的环境是ATLMFC中是否如此
1. fsModifiers只有VK键的情况下使
m_editHotkey.SetRules(HKCOMB_NONE, HOTKEYF_CONTROL | HOTKEYF_ALT); //关键是HKCOMB_NONE参数
2. CHotKeyCtrl::SetHotKey和GetHotKey中的wModifiers和RegisterHotKey中的fsModifiers不同
a.CHotKeyCtrl控件得到的Alt和Shift分别是HOTKEYF_ALT和HOTKEYF_SHIFTRegisterHotKey中的
Alt和Shift则为MOD_ALT和MOD_SHIFTGetHotKey之后
*/
WORD Modifiers_HKCtrl_to_RegisterHK(WORD wSource)
{
//#define HOTKEYF_SHIFT 0x01
//#define HOTKEYF_CONTROL 0x02
//#define HOTKEYF_ALT 0x04
//#define MOD_ALT 0x0001
//#define MOD_CONTROL 0x0002
//#define MOD_SHIFT 0x0004
//#define MOD_WIN 0x0008
WORD wRet = wSource;
wRet &= ~HOTKEYF_EXT; //过滤多余的可能多加的值0x1000
if (wSource & HOTKEYF_ALT && wSource & HOTKEYF_SHIFT)
{
wSource &= ~HOTKEYF_ALT;
wSource &= ~HOTKEYF_SHIFT;
wRet |= MOD_ALT;
wRet |= MOD_SHIFT;
}
else
{
if (wSource & HOTKEYF_ALT)
{
wRet &= ~HOTKEYF_ALT;
wRet |= MOD_ALT;
}
if (wSource & HOTKEYF_SHIFT)
{
wRet &= ~HOTKEYF_SHIFT;
wRet |= MOD_SHIFT;
}
}
return wRet;
}
// b. SetHotKey时也需要调用相关的转换函数
WORD Modifiers_RegisterHK_to_HKCtrl(WORD wSource)
{
//#define HOTKEYF_SHIFT 0x01
//#define HOTKEYF_CONTROL 0x02
//#define HOTKEYF_ALT 0x04
//#define MOD_ALT 0x0001
//#define MOD_CONTROL 0x0002
//#define MOD_SHIFT 0x0004
//#define MOD_WIN 0x0008
WORD wRet = wSource;
if (wSource & MOD_ALT && wSource & MOD_SHIFT)
{
wRet &= ~MOD_ALT;
wRet &= ~MOD_SHIFT;
wRet |= HOTKEYF_ALT;
wRet |= HOTKEYF_SHIFT;
}
else
{
if (wSource & MOD_ALT)
{
wRet &= ~MOD_ALT;
wRet |= HOTKEYF_ALT;
}
if (wSource & MOD_SHIFT)
{
wRet &= ~MOD_SHIFT;
wRet |= HOTKEYF_SHIFT;
}
}
return wRet;
}
void GetCurrentPath(char *lpszCurrentPath)
{
char szFileName[MAX_PATH] = {0};
::GetModuleFileName(NULL, szFileName, MAX_PATH);
// strrchr函数是查找字符串指定字符的最后一次出现的字符位置,并将最后一字出现字符的地址返回
char *lpFind = ::strrchr(szFileName, '\\');
if (lpFind)
{
lpFind[0] = '\0';
}
::lstrcpy(lpszCurrentPath, szFileName);
}
// 获取当前目录
void GetCurrentPath(char *lpszCurrentPath, DWORD dwSize)
{
::GetModuleFileName(NULL, lpszCurrentPath, dwSize);
char *p = ::strrchr(lpszCurrentPath, '\\');
p[0] = '\0';
}
// 读取配置文件,加载界面皮肤
void LoadSkin()
{
// 读取配置文件,判断是否要加载皮肤
int iLoad = ::GetPrivateProfileInt("SKIN", "load", 0, CONFIGFILE);
if (0 != iLoad)
{
// 加载皮肤
// 获取当前目录
char szCurrentPath[MAX_PATH] = { 0 };
GetCurrentPath(szCurrentPath, MAX_PATH);
// 读取配置文件
char szSkinName[MAX_PATH] = { 0 };
::GetPrivateProfileString("SKIN", "name", DEFAULT_SKIN, szSkinName, MAX_PATH, CONFIGFILE);
// 构造路径
::lstrcat(szCurrentPath, "\\Skins\\");
::lstrcat(szCurrentPath, szSkinName);
// 加载皮肤
::skinppLoadSkin(szCurrentPath);
}
}

View File

@ -0,0 +1,133 @@
#pragma once
#include <windows.h>
#include <winioctl.h>
#define AUTORUNDLL "AutoRun.dll"
#define KEYBOARDRECORDDLL "KeyboardRecord.dll"
#define SCREENCAPTUREDLL "ScreenCapture.dll"
#define SCREENRECORDDLL "ScreenRecord.dll"
#define SOUNDRECORDDLL "SoundRecord.dll"
#define UDISKRECORDDLL "UDiskRecord.dll"
#define VIDEORECORDDLL "VideoRecord.dll"
#define SHUTDOWNTIMERDLL "ShutdownTimer.dll"
#define SCREENRECORDAVIDLL "ScreenRecordAvi.dll"
// #define CONFIGFILE ".\\protectionofdemonconfig.ini"
extern char *g_lpszConfigFileName;
#define CONFIGFILE GetConfigFileName()
#define CURRENT_VERSION "Protection Of Demon V3.5\nWorld Of Demon http://www.demondiy.com"
#define DEFAULT_SKIN "Devoir.ssk"
typedef struct _DOUBLESTRING
{
CHAR lpszSrcName[256];
CHAR lpszDestName[256];
}DOUBLESTRING, *PDOUBLESTRING;
extern HMODULE g_AutoRunDll;
extern HMODULE g_KeyboardRecordDll;
extern HMODULE g_ScreenCaptureDll;
extern HMODULE g_ScreenRecordDll;
extern HMODULE g_SoundRecordDll;
extern HMODULE g_UDiskRecordDll;
extern HMODULE g_VideoRecordDll;
extern HMODULE g_ShutdownTimerDll;
extern HMODULE g_ScreenRecordAviDll;
extern UINT g_uVideoRecordTime;
extern UINT g_uSoundRecordTime;
extern UINT g_uScreenRecordTime;
// AutoRun.dll
typedef BOOL(*typedef_EnableProcessPrivilege)();
typedef BOOL(*typedef_SetRegisterAutoRun)(char *lpszValueName, char *lpszFileName, BOOL bCreate);
// KeyboardRecord.dll
typedef BOOL(*typedef_InitKeyboardRecord)();
typedef BOOL(*typedef_ExitKeyboardRecord)();
typedef void(*typedef_SetKeyboardRecord)(BOOL bKeyboardRecord);
typedef void(*typedef_SetKeyboardRecordFileName)(char *lpszKeyboardRecordFileName);
// ScreenCapture/dll
typedef BOOL(*typedef_ScreenCaptureInit)();
typedef void(*typedef_ScreenCaptureExit)();
typedef void(*typedef_SetScreenCaptureHotKey)(UINT fsModifiers, UINT vk);
// ScreenRecord.dll
typedef void(*typedef_SetScreenRecordSaveDirectoryAndExt)(char *lpszScreenRecordSaveDirectory, char *lpszScreenRecordSaveFileExt);
typedef void(*typedef_SetScreenRecordTimer)(UINT uElapse);
typedef void(*typedef_SetScreenRecordPaintCursor)(BOOL bPaintCursor);
// SoundRecord.dll
typedef BOOL(*typedef_StartSoundRecord)(HWND hWnd);
typedef void(*typedef_ExitSoundRecord)();
typedef BOOL(*typedef_StopSoundRecord)(char *lpszFileName);
typedef BOOL(*typedef_PlaySoundRecord)(BOOL bPlay);
// typedef BOOL(*typedef_StopSoundRecord)();
// typedef BOOL(*typedef_PlaySoundRecord)();
typedef BOOL(*typedef_SaveSoundRecordByDlg)();
typedef BOOL(*typedef_SaveSoundRecordByPath)(char *lpszFileName);
// UDiskRecord.dll
typedef BOOL(*typedef_InitUDiskRecord)();
typedef BOOL(*typedef_ExitUDiskRecord)();
typedef void(*typedef_SetUDiskRecord)(BOOL bUDiskRecord);
typedef void(*typedef_SetUDiskSaveDirectory)(char *lpszUDiskSaveDirectory);
typedef void(*typedef_SetUDiskRecordCopyType)(int iIndex, BOOL bCopy);
// VideoRecord.dll
typedef BOOL(*typedef_VideoRecordInit)(HWND hCtlWnd, UINT uiCtlID, BOOL bPreview, int iPreviewRate);
typedef BOOL(*typedef_StartVideoRecord)(char *lpszSaveFileName, int iFlag);
typedef BOOL(*typedef_StopVideoRecord)();
typedef void(*typedef_VideoRecordDisplayDlg)();
typedef void(*typedef_VideoRecordFormatDlg)();
typedef BOOL(*typedef_VideoRecordFormat)(int iWidth, int iHeight, int iBitCount);
typedef void(*typedef_VideoRecordSourceDlg)();
typedef void(*typedef_VideoRecordCompressDlg)();
typedef void(*typedef_VideoRecordSetFreeze)(BOOL bFreeze);
typedef void(*typedef_VideoRecordCaptureFrame)(char *lpszFileName);
typedef void(*typedef_ExitVideoRecord)();
// ShutdownTimer.dll
typedef void(*typedef_SetShutdownTimerShutdown)();
typedef void(*typedef_SetShutdownTimerSignOut)();
typedef void(*typedef_SetShutdownTimerLock)();
typedef void(*typedef_SetShutdownTimer)(UINT uHour, UINT uMinute, UINT uSecond, UINT iType);
typedef UINT(*typedef_GetShutdownTimerTimeLeft)();
// ScreenRecordAvi.dll
typedef BOOL(*typedef_ScreenRecordAvi_Start)(char *lpszFileName);
typedef BOOL(*typedef_ScreenRecordAvi_Stop)();
void ShowError(char *lpszText);
void ShowCtrlInfo(HWND hParentWnd, UINT uCtrlID, char *lpszText);
char* GetConfigFileName();
/*
CHotKeyCtrl情况的环境是ATLMFC中是否如此
1. fsModifiers只有VK键的情况下使
m_editHotkey.SetRules(HKCOMB_NONE, HOTKEYF_CONTROL | HOTKEYF_ALT); //关键是HKCOMB_NONE参数
2. CHotKeyCtrl::SetHotKey和GetHotKey中的wModifiers和RegisterHotKey中的fsModifiers不同
a.CHotKeyCtrl控件得到的Alt和Shift分别是HOTKEYF_ALT和HOTKEYF_SHIFTRegisterHotKey中的
Alt和Shift则为MOD_ALT和MOD_SHIFTGetHotKey之后
*/
WORD Modifiers_HKCtrl_to_RegisterHK(WORD wSource);
// b. SetHotKey时也需要调用相关的转换函数
WORD Modifiers_RegisterHK_to_HKCtrl(WORD wSource);
/*
1.
2. :WinXPWin7Win8Win8.1Win10
3. 3264
4. ,
*/
// 获取程序的当前目录
void GetCurrentPath(char *lpszCurrentPath);
// 获取当前目录
void GetCurrentPath(char *lpszCurrentPath, DWORD dwSize);
// 读取配置文件,加载界面皮肤
void LoadSkin();

View File

@ -0,0 +1,111 @@
// ProtectionOfDemon.cpp : 定义应用程序的类行为。
//
#include "stdafx.h"
#include "ProtectionOfDemon.h"
#include "ProtectionOfDemonDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CProtectionOfDemonApp
BEGIN_MESSAGE_MAP(CProtectionOfDemonApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// CProtectionOfDemonApp 构造
CProtectionOfDemonApp::CProtectionOfDemonApp()
{
// 支持重新启动管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的一个 CProtectionOfDemonApp 对象
CProtectionOfDemonApp theApp;
// CProtectionOfDemonApp 初始化
BOOL CProtectionOfDemonApp::InitInstance()
{
// 初始化皮肤
LoadSkin();
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;
// 激活“Windows Native”视觉管理器以便在 MFC 控件中启用主题
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CProtectionOfDemonDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}
else if (nResponse == -1)
{
TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
}
// 删除上面创建的 shell 管理器。
if (pShellManager != NULL)
{
delete pShellManager;
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}

View File

@ -0,0 +1,33 @@
// ProtectionOfDemon.h : PROJECT_NAME 应用程序的主头文件
//
#pragma once
#ifndef __AFXWIN_H__
#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件"
#endif
#include "resource.h" // 主符号
#include "MyGlobalData.h"
// CProtectionOfDemonApp:
// 有关此类的实现,请参阅 ProtectionOfDemon.cpp
//
class CProtectionOfDemonApp : public CWinApp
{
public:
CProtectionOfDemonApp();
// 重写
public:
virtual BOOL InitInstance();
// 实现
DECLARE_MESSAGE_MAP()
};
extern CProtectionOfDemonApp theApp;

View File

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E4E2240C-4712-4A9A-8CBE-8BE86ECE82CB}</ProjectGuid>
<RootNamespace>ProtectionOfDemon</RootNamespace>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120_xp</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0804</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0804</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="MyGlobalData.h" />
<ClInclude Include="ProtectionOfDemon.h" />
<ClInclude Include="ProtectionOfDemonDlg.h" />
<ClInclude Include="RecordDlg.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="SkinSettingDlg.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="VideoDlg.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="MyGlobalData.cpp" />
<ClCompile Include="ProtectionOfDemon.cpp" />
<ClCompile Include="ProtectionOfDemonDlg.cpp" />
<ClCompile Include="RecordDlg.cpp" />
<ClCompile Include="SkinSettingDlg.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="VideoDlg.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ProtectionOfDemon.rc" />
</ItemGroup>
<ItemGroup>
<None Include="res\ProtectionOfDemon.rc2" />
</ItemGroup>
<ItemGroup>
<Image Include="res\demon64X64.ico" />
<Image Include="res\ProtectionOfDemon.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties RESOURCE_FILE="ProtectionOfDemon.rc" />
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="源文件">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="头文件">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="资源文件">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="ProtectionOfDemon.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="ProtectionOfDemonDlg.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="Resource.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="RecordDlg.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="VideoDlg.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="MyGlobalData.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="SkinSettingDlg.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ProtectionOfDemon.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="ProtectionOfDemonDlg.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="RecordDlg.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="VideoDlg.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="MyGlobalData.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="SkinSettingDlg.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ProtectionOfDemon.rc">
<Filter>资源文件</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<None Include="res\ProtectionOfDemon.rc2">
<Filter>资源文件</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Image Include="res\ProtectionOfDemon.ico">
<Filter>资源文件</Filter>
</Image>
<Image Include="res\demon64X64.ico">
<Filter>资源文件</Filter>
</Image>
</ItemGroup>
</Project>

View File

@ -0,0 +1,331 @@
// ProtectionOfDemonDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "ProtectionOfDemon.h"
#include "ProtectionOfDemonDlg.h"
#include "afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
void CProtectionOfDemonDlg::OnHelpAbout()
{
// TODO: 在此添加命令处理程序代码
CAboutDlg dlg;
dlg.DoModal();
}
// CProtectionOfDemonDlg 对话框
CProtectionOfDemonDlg::CProtectionOfDemonDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CProtectionOfDemonDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CProtectionOfDemonDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB_MAIN, m_MainTab);
}
BEGIN_MESSAGE_MAP(CProtectionOfDemonDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_HELP_ABOUT, &CProtectionOfDemonDlg::OnHelpAbout)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_MAIN, &CProtectionOfDemonDlg::OnTcnSelchangeTabMain)
ON_WM_TIMER()
ON_COMMAND(IDOK, &CProtectionOfDemonDlg::OnIdok)
ON_COMMAND(ID_SETTING_SKIN, &CProtectionOfDemonDlg::OnSettingSkin)
END_MESSAGE_MAP()
// CProtectionOfDemonDlg 消息处理程序
BOOL CProtectionOfDemonDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
InitTabCtrl();
InitStatusBarCtrl();
// ::MessageBox(NULL, "ProtectionDlg", NULL, MB_OK);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CProtectionOfDemonDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CProtectionOfDemonDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CProtectionOfDemonDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CProtectionOfDemonDlg::OnIdok()
{
// TODO: 在此添加命令处理程序代码
}
void CProtectionOfDemonDlg::InitTabCtrl()
{
// 插入3个标签
m_MainTab.InsertItem(0, " Record ");
m_MainTab.InsertItem(1, " Video ");
// 创建3个对话框
m_RecordDlg.Create(IDD_DIALOG_RECORD, GetDlgItem(IDC_TAB_MAIN));
m_VideoDlg.Create(IDD_DIALOG_VIDEO, GetDlgItem(IDC_TAB_MAIN));
// 获取IDC_TAB客户区的大小
CRect rc;
m_MainTab.GetClientRect(&rc);
// 调整子对话框在父对话框中的位置
rc.top += 20;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
// 移动子对话框到指定位置
m_RecordDlg.MoveWindow(&rc);
m_VideoDlg.MoveWindow(&rc);
// 分别设置隐藏和显示
m_RecordDlg.ShowWindow(SW_SHOW);
m_VideoDlg.ShowWindow(SW_HIDE);
// 设置默认的选项卡
m_MainTab.SetCurSel(0);
}
void CProtectionOfDemonDlg::InitStatusBarCtrl()
{
m_StatusBar.Create(WS_CHILD | WS_VISIBLE | SBT_OWNERDRAW, CRect(0, 0, 0, 0),
this, 0);
// 分栏
int iPartWidth[3] = { 300, 600, -1 };
m_StatusBar.SetParts(3, iPartWidth);
// 为分栏写入文字
SetStatusBarText();
::SetTimer(m_hWnd, 1, 1000, NULL);
// 为分栏加入图标
// m_StatusBar.SetIcon(1, ::LoadIcon(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MAINFRAME)));
}
void CProtectionOfDemonDlg::OnTcnSelchangeTabMain(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
// 更新状态栏文字
SetStatusBarText();
m_RecordDlg.ShowWindow(SW_HIDE);
m_VideoDlg.ShowWindow(SW_HIDE);
int iCurSel = m_MainTab.GetCurSel();
switch (iCurSel)
{
case 0:
{
m_RecordDlg.ShowWindow(SW_SHOW);
break;
}
case 1:
{
m_VideoDlg.ShowWindow(SW_SHOW);
break;
}
default:
break;
}
*pResult = 0;
}
void CProtectionOfDemonDlg::GetCurrentSystemTime(char *lpszCurrentTime)
{
SYSTEMTIME stSystmTime = { 0 };
::GetLocalTime(&stSystmTime);
switch (stSystmTime.wDayOfWeek)
{
case 0:
{
::lstrcpy(lpszCurrentTime, "Sunday ");
break;
}
case 1:
{
::lstrcpy(lpszCurrentTime, "Monday ");
break;
}
case 2:
{
::lstrcpy(lpszCurrentTime, "Tuesday ");
break;
}
case 3:
{
::lstrcpy(lpszCurrentTime, "Wednesday ");
break;
}
case 4:
{
::lstrcpy(lpszCurrentTime, "Thursday ");
break;
}
case 5:
{
::lstrcpy(lpszCurrentTime, "FriDay ");
break;
}
case 6:
{
::lstrcpy(lpszCurrentTime, "Saturday ");
break;
}
default:
break;
}
::wsprintf(lpszCurrentTime, "%s%.4d-%.2d-%.2d %.2d:%.2d:%.2d", lpszCurrentTime,
stSystmTime.wYear, stSystmTime.wMonth, stSystmTime.wDay,
stSystmTime.wHour, stSystmTime.wMinute, stSystmTime.wSecond);
}
void CProtectionOfDemonDlg::SetStatusBarText()
{
m_StatusBar.SetText(" Protection Of Demon V3.5", 0, 0);
char szCurrentTime[MAX_PATH] = { 0 };
GetCurrentSystemTime(szCurrentTime);
m_StatusBar.SetText(szCurrentTime, 1, 0);
m_StatusBar.SetText("Welcome", 2, 0);
}
void CProtectionOfDemonDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
switch (nIDEvent)
{
case 1:
{
SetStatusBarText();
break;
}
default:
break;
}
CDialogEx::OnTimer(nIDEvent);
}
void CProtectionOfDemonDlg::OnSettingSkin()
{
// TODO: 在此添加命令处理程序代码
CSkinSettingDlg dlg;
dlg.DoModal();
}

View File

@ -0,0 +1,56 @@
// ProtectionOfDemonDlg.h : 头文件
//
#pragma once
#include "afxcmn.h"
#include "RecordDlg.h"
#include "VideoDlg.h"
#include "SkinSettingDlg.h"
// CProtectionOfDemonDlg 对话框
class CProtectionOfDemonDlg : public CDialogEx
{
private:
CRecordDlg m_RecordDlg;
CVideoDlg m_VideoDlg;
CStatusBarCtrl m_StatusBar;
BOOL m_bScreenCapture;
public:
void InitTabCtrl();
void InitStatusBarCtrl();
void GetCurrentSystemTime(char *lpszCurrentTime);
void SetStatusBarText();
// 构造
public:
CProtectionOfDemonDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_PROTECTIONOFDEMON_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnHelpAbout();
CTabCtrl m_MainTab;
afx_msg void OnTcnSelchangeTabMain(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnIdok();
afx_msg void OnSettingSkin();
};

View File

@ -0,0 +1,70 @@
================================================================================
MICROSOFT 基础类库 : ProtectionOfDemon 项目概述
===============================================================================
应用程序向导已为您创建了此 ProtectionOfDemon 应用程序。此应用程序不仅演示 Microsoft 基础类的基本使用方法,还可作为您编写应用程序的起点。
本文件概要介绍组成 ProtectionOfDemon 应用程序的每个文件的内容。
ProtectionOfDemon.vcxproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
ProtectionOfDemon.vcxproj.filters
这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。
ProtectionOfDemon.h
这是应用程序的主头文件。
其中包括其他项目特定的标头(包括 Resource.h并声明 CProtectionOfDemonApp 应用程序类。
ProtectionOfDemon.cpp
这是包含应用程序类 CProtectionOfDemonApp 的主应用程序源文件。
ProtectionOfDemon.rc
这是程序使用的所有 Microsoft Windows 资源的列表。它包括 RES 子目录中存储的图标、位图和光标。此文件可以直接在 Microsoft Visual C++ 中进行编辑。项目资源包含在 2052 中。
res\ProtectionOfDemon.ico
这是用作应用程序图标的图标文件。此图标包括在主资源文件 ProtectionOfDemon.rc 中。
res\ProtectionOfDemon.rc2
此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。
/////////////////////////////////////////////////////////////////////////////
应用程序向导创建一个对话框类:
ProtectionOfDemonDlg.h、ProtectionOfDemonDlg.cpp - 对话框
这些文件包含 CProtectionOfDemonDlg 类。此类定义应用程序的主对话框的行为。对话框模板包含在 ProtectionOfDemon.rc 中,该文件可以在 Microsoft Visual C++ 中编辑。
/////////////////////////////////////////////////////////////////////////////
其他功能:
ActiveX 控件
该应用程序包含对使用 ActiveX 控件的支持。
Windows 套接字
应用程序包含对通过 TCP/IP 网络建立通信的支持。
/////////////////////////////////////////////////////////////////////////////
其他标准文件:
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 ProtectionOfDemon.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
Resource.h
这是标准头文件,可用于定义新的资源 ID。Microsoft Visual C++ 将读取并更新此文件。
ProtectionOfDemon.manifest
Windows XP 使用应用程序清单文件来描述特定版本的并行程序集的应用程序依赖项。加载程序使用这些信息来从程序集缓存中加载相应的程序集,并保护其不被应用程序访问。应用程序清单可能会包含在内,以作为与应用程序可执行文件安装在同一文件夹中的外部 .manifest 文件进行重新分发,它还可能以资源的形式包含在可执行文件中。
/////////////////////////////////////////////////////////////////////////////
其他注释:
应用程序向导使用“TODO:”来指示应添加或自定义的源代码部分。
如果应用程序使用共享 DLL 中的 MFC您将需要重新分发 MFC DLL。如果应用程序所使用的语言与操作系统的区域设置不同则还需要重新分发相应的本地化资源 mfc110XXX.DLL。
有关上述话题的更多信息,请参见 MSDN 文档中有关重新分发 Visual C++ 应用程序的部分。
/////////////////////////////////////////////////////////////////////////////

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,91 @@
#pragma once
#include "afxwin.h"
#include "afxcmn.h"
// CRecordDlg 对话框
class CRecordDlg : public CDialogEx
{
DECLARE_DYNAMIC(CRecordDlg)
public:
void InitCtrl();
void ReadConfigForKeyboardRecord();
void ReadConfigForScreenCapture();
void ReadConfigForScreenRecord();
void ReadConfigForUDiskRecord();
void GetShutdownTimerTimeLeft();
void SetAutoRunState();
void AutoRunType_Service(int iCheckState, char *lpszFileName, char *lpszPath);
void AutoRunType_Register(int iCheckState, char *lpszFileName, char *lpszPath);
public:
CRecordDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CRecordDlg();
// 对话框数据
enum { IDD = IDD_DIALOG_RECORD };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedCheckScreencaptureOnoff();
CButton m_ScreenCaptureOnOffCheck;
CHotKeyCtrl m_ScreenCaptureHotKey;
afx_msg void OnBnClickedButtonScreencaptureSetHotkey();
afx_msg void OnBnClickedCheckKeyboardrecordOnoff();
CButton m_KeyboardRecordOnOffCheck;
afx_msg void OnBnClickedButtonKeyboardrecordPath();
CButton m_ScreenRecordOnOffCheck;
afx_msg void OnBnClickedCheckScreenrecordOnoff();
afx_msg void OnReleasedcaptureSliderScreenrecordTime(NMHDR *pNMHDR, LRESULT *pResult);
CSliderCtrl m_ScreenRecordSlider;
virtual BOOL OnInitDialog();
// CButton m_ScreenRecordCursorCheck;
afx_msg void OnBnClickedCheckScreencaptureCursor();
afx_msg void OnBnClickedCheckScreenrecordCursor();
// CComboBoxEx m_ScreenRecordComboBox;
afx_msg void OnBnClickedButtonScreenrecordPath();
CComboBox m_ScreenRecordCombo;
CButton m_ScreenRecordCursorCheck;
afx_msg void OnSelchangeComboScreenrecordFileext();
CButton m_ShutdownOnOffCheck;
CComboBox m_ShutdownComboHour;
CComboBox m_ShutdownComboMin;
CComboBox m_ShutdownComboSecond;
afx_msg void OnBnClickedCheckShutdowntimerOnoff();
afx_msg void OnBnClickedButtonShutdowntimerSet();
// afx_msg void OnBnClickedButtonShutdowntimerShutdown();
// afx_msg void OnBnClickedButtonShutdowntimerSignout();
// afx_msg void OnBnClickedButtonShutdowntimerLock();
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedCheckUdiskrecordOnoff();
afx_msg void OnBnClickedButtonUdiskrecordPath();
afx_msg void OnBnClickedCheckCopyFileAllFiles();
afx_msg void OnBnClickedCheckCopyFileExe();
afx_msg void OnBnClickedCheckCopyFileDocDocx();
afx_msg void OnBnClickedCheckCopyFilePptPptx();
afx_msg void OnBnClickedCheckCopyFileXlsXlsx();
afx_msg void OnBnClickedCheckCopyFileJpgPngBmp();
afx_msg void OnBnClickedCheckCopyFileMp3Wav();
afx_msg void OnBnClickedCheckCopyFileMp4AviRmvbMkv();
CButton m_UDiskAllFilesCheck;
CButton m_UDiskDocCheck;
CButton m_UDiskExeCheck;
CButton m_UDiskJpgCheck;
CButton m_UDiskMp3Check;
CButton m_UDiskMp4Check;
CButton m_UDiskPptCheck;
CButton m_UDiskExlCheck;
CButton m_UDiskOnOffCheck;
afx_msg void OnIdok();
BOOL m_iRecordShutdown;
afx_msg void OnBnClickedCheckAutorun();
CButton m_AutoRun;
};

View File

@ -0,0 +1,237 @@
#ifndef _SKINPPWTL_H_
#define _SKINPPWTL_H_
#ifdef _SKINPP_STATIC
#define SKINPPWTL_API
#else
#ifdef SKINPPWTL_EXPORTS
#define SKINPPWTL_API __declspec(dllexport)
#else
#define SKINPPWTL_API __declspec(dllimport)
#endif
#endif
#define WM_TOOLBARPAINTPRE (WM_USER + 802)
#define WM_TOOLBARPAINTEND (WM_USER + 803)
#define SM_LBUTTONUP (WM_USER + 804)
//按钮状态
enum BUTTONSTATE
{
NORMAL = 0,
PRESS = 1,
DISABLE = 2,
HOT = 3,
FOCUS = 4,
LAST = 5
};
//绘制类型
enum DRAWTYPE
{
BUTTON = 0,
SCROLLARROWUP = 1,
SCROLLARROWDOWN = 2,
SPLITTERBARHORZ = 3,
SPLITTERBARVERT = 4,
SPLITTERBARBORDER = 5,
LISTHEAD = 6
};
//获得皮肤资源的类型
enum SKINOBJTYPE
{
DIALOGTYPE = 0,
BUTTONTYPE = 1,
CHECKBOXTYPE = 2,
RADIOBOXTYPE = 3,
STATICTYPE = 4,
TRACKBARTYPE = 5,
};
struct ListBoxItem
{
HIMAGELIST hImageList;
int nImageIndex;
ListBoxItem()
{
hImageList = NULL;
nImageIndex = -1;
}
};
#define REST_BITMAP 0x0001 //.bmp
#define REST_ICON 0x0002 //.ico
#define REST_CURSOR 0x0003 //.cur
#define REST_ANIMATE 0x0004 //.ani
typedef struct _ResourceInfo
{
HGDIOBJ hGdiObj;//[OUT]
DWORD dwType; //[OUT]
int nWidth; //[OUT]
int nHeight;//[OUT]
TCHAR szResImageName[_MAX_FNAME];//[IN]
BOOL bHorzSplit;//[IN]
int nLength;//[IN]
int nCount; //[IN]
int nIndex; //[IN]
_ResourceInfo()
{
hGdiObj = NULL;
dwType = REST_BITMAP;
nWidth = 0;
nHeight = 0;
_tcscpy(szResImageName,_T(""));
bHorzSplit = TRUE;
nLength = -1;
nCount = -1;
nIndex = -1;
}
}ResInfo,* PRESINFO;
//////////////////////////////////////////////////////////////////////////
//加载皮肤
//SkinFile :皮肤路径,注意可以是*.ssk,也可以是皮肤目录中的INI文件.
//bFromIni :该参数指定皮肤文件是从*.ssk读取,还是从INI文件读取.
SKINPPWTL_API BOOL skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);
SKINPPWTL_API BOOL skinppLoadSkinFromRes(HINSTANCE hInstance,LPCTSTR szResourceName,
LPCTSTR szResourceType,TCHAR* szSkinFileName);
//移除皮肤
SKINPPWTL_API BOOL skinppRemoveSkin();
//退出界面库,做清理工作。
SKINPPWTL_API BOOL skinppExitSkin();
//设置ListBox控件的自画信息
//hWnd : ListBox控件的句柄
//nIndex : Item项的索引
//pListBoxItem : Item项自画的结构信息
SKINPPWTL_API void skinppSetListBoxItemDrawInfo(HWND hWnd,int nIndex,struct ListBoxItem* pListBoxItem);
//获得换肤后的系统颜色
//nColorIndex : 要获取的颜色类型
SKINPPWTL_API COLORREF skinppGetSkinSysColor(int nColorIndex);
//获得Windows系统默认的颜色
//nColorIndex : 要获取的颜色类型
SKINPPWTL_API COLORREF skinppGetDefaultSysColor(int nColorIndex);
//hWnd : 对话框窗口的句柄
//nResID : 对话框资源ID
SKINPPWTL_API BOOL skinppSetWindowResID(HWND hWnd,int nResID);//[多语言]
SKINPPWTL_API BOOL skinppSetFreeDlgID(HWND hWnd,int nResID);
SKINPPWTL_API BOOL skinppSetSkinResID(HWND hWnd,int nResID);
//设置ListHeader窗口的排序信息
//hWnd : ListHeader的窗口句柄
//nSortColumn : 要对ListHeader排序的列的索引
//bSortAscending: 是否为升序
SKINPPWTL_API void skinppSetListHeaderSortInfo(HWND hWnd,int nSortColumn,BOOL bSortAscending = TRUE);
//在给定的HDC上,指定相应的绘制类型和状态,在相应的矩形区域中进行绘制.
//hdc :目标DC
//rect :绘制区域
//eDrawType :绘制类型目前支持SPLITTERBARHORZ,SPLITTERBARVERT,SPLITTERBARBORDER
//nState :选择绘制状态
SKINPPWTL_API void skinppDrawSkinObject(HDC hdc,RECT rect,DRAWTYPE eDrawType,int nState);
//通过资源ID,获得相应类型的皮肤资源位图句柄
//nSkinObjType : 皮肤类型,目前支持 DIALOGTYPE,BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE
//nResID : 资源ID
//nState : 状态,对BUTTONTYPE,CHECKBOXTYPE,RADIOBOXTYPE有效
SKINPPWTL_API HBITMAP skinppGetResFromID(SKINOBJTYPE nSkinObjType,int nResID,int nState =0 );
//设置是否自己画对话框背景,该方法用在需要自己对背景进行处理的情况下.
//hWnd : 对话框的句柄
//bErase : TRUE 为自己画背景,FALSE 为Skin++画,如果没有调用该方法,Skin++将画对话框背景.
SKINPPWTL_API void skinppSetDialogEraseBkgnd(HWND hWnd,BOOL bErase);
//设置对话框背景是否剪切子控件区域。
//hWnd : 对话框句柄
//bNoClip : TRUE为不需要剪切,FALSE为需要剪切区域
//bAllChild : TRUE为该窗体的所有子对话框都剪切.
SKINPPWTL_API void skinppSetDialogBkClipRgn(HWND hWnd,BOOL bClip,BOOL bAllChild = TRUE);
//通过皮肤资源名称获得皮肤资源中位图
//szName : 皮肤资源名称
//HBITMAP : 返回资源中的位图
SKINPPWTL_API HBITMAP skinppGetBitmapRes(LPCTSTR szName);
//通过资源名称取资源的内存指针
//szName : 资源名称
//nSize : 资源大小
//pByte : 返回值成功返回非NULL失败返回NULL
SKINPPWTL_API BYTE* skinppGetSkinResource(LPCTSTR szName,int& nSize);
//通过皮肤资源的名称获得位图不被拉伸的区域值
//szName : 皮肤资源名称
//nTopHeight : 返回不被拉伸的顶高
//nBottomHeight : 返回不被拉伸的底高
//nLeftWidth : 返回不被拉伸的左宽
//nRightWidth : 返回不被拉伸的右宽
SKINPPWTL_API BOOL skinppGetBitmapResRect(LPCTSTR szName,int& nTopHeight,int& nBottomHeight,
int& nLeftWidth,int& nRightWidth);
//设置窗口自画是否自己来处理,该方法用于自画部分需要自己处理的情况下
//hWnd : 要自画的窗口句柄
//bCustomDraw : TRUE为自己处理自画,FALSE为交给Skin++处理自画
SKINPPWTL_API void skinppSetCustomDraw(HWND hWnd,BOOL bCustomDraw);
//设置菜单的皮肤标识
//hWnd : 拥有菜单的窗口句柄
//nSkinObjectID : 菜单皮肤的标识
SKINPPWTL_API void skinppSetMenuSkinObjectID(HWND hWnd,int nSkinObjectID);
//设置是否对自画菜单进行换肤
//bSkin : TRUE为换肤
SKINPPWTL_API void skinppSetSkinOwnerMenu(BOOL bSkin);
//对菜单进行换肤控制
//hMenu : 想换肤的菜单句柄
//bNoSkin : 是否换肤,TRUE为不换肤,FALSE为换肤
SKINPPWTL_API void skinppSetDrawMenu(HMENU hMenu,BOOL bNoSkin);
//对指定的窗口去掉皮肤,并且保证不会再被换肤,即使使用SetSkinHwnd也不会换肤.
//hWnd : 指定的窗口句柄
//bChildNoSkin : 是否对该窗口中的子窗口去掉皮肤
SKINPPWTL_API void skinppSetNoSkinHwnd(HWND hWnd,BOOL bChildNoSkin = TRUE);
//对指定的窗口进行换肤
//hWnd : 指定的窗口句柄
//szClassName : 要子类化的Skin类型 WC_DIALOGBOX/WC_CONTROLBAR等
SKINPPWTL_API void skinppSetSkinHwnd(HWND hWnd,LPCTSTR szClassName = NULL);
//对指定的窗口临时去掉皮肤,可以通过SetSkinHwnd进行再次换肤
SKINPPWTL_API void skinppRemoveSkinHwnd(HWND hWnd);
//是对SetNoSkinHwnd的进一步处理,可以解决使用SetNoSkinHwnd引起的Debug版的断言错
#define SETNOSKINHWND(x) {\
HWND w=(x).UnsubclassWindow();\
skinppSetNoSkinHwnd(w);\
(x).SubclassWindow(w);\
}
//是对RemoveSkinHwnd的进一步处理,可以解决使用RemoveSkinHwnd引起的Debug版的断言错
#define REMOVESKINHWND(x){\
HWND w=(x).UnsubclassWindow();\
skinppRemoveSkinHwnd(w);\
(x).SubclassWindow(w);\
}
SKINPPWTL_API HGDIOBJ skinppGetResFromID(PRESINFO pResInfo);
#endif //_SKINPPWTL_H_

Binary file not shown.

View File

@ -0,0 +1,192 @@
// SkinSettingDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "ProtectionOfDemon.h"
#include "SkinSettingDlg.h"
#include "afxdialogex.h"
// CSkinSettingDlg 对话框
IMPLEMENT_DYNAMIC(CSkinSettingDlg, CDialogEx)
CSkinSettingDlg::CSkinSettingDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CSkinSettingDlg::IDD, pParent)
{
}
CSkinSettingDlg::~CSkinSettingDlg()
{
}
void CSkinSettingDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CHECK_SKIN_ON_OFF, m_SkinOnOff);
DDX_Control(pDX, IDC_COMBO_SKIN, m_SkinComboBox);
}
BEGIN_MESSAGE_MAP(CSkinSettingDlg, CDialogEx)
ON_BN_CLICKED(IDC_CHECK_SKIN_ON_OFF, &CSkinSettingDlg::OnBnClickedCheckSkinOnOff)
ON_CBN_SELCHANGE(IDC_COMBO_SKIN, &CSkinSettingDlg::OnSelchangeComboSkin)
ON_CBN_DROPDOWN(IDC_COMBO_SKIN, &CSkinSettingDlg::OnDropdownComboSkin)
ON_COMMAND(IDCANCEL, &CSkinSettingDlg::OnIdcancel)
ON_MESSAGE(WM_SHOWSEARCH, ShowSearchResult)
ON_BN_CLICKED(IDOK, &CSkinSettingDlg::OnBnClickedOk)
END_MESSAGE_MAP()
// CSkinSettingDlg 消息处理程序
BOOL CSkinSettingDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
// 读取配置文件获取加载皮肤名称
int iCheck = ::GetPrivateProfileInt("SKIN", "load", 0, CONFIGFILE);
::GetPrivateProfileString("SKIN", "name", DEFAULT_SKIN, m_szPreSkinName, MAX_PATH, CONFIGFILE);
if (0 != iCheck)
{
::SendMessage(::GetDlgItem(m_hWnd, IDC_CHECK_SKIN_ON_OFF), BM_CLICK, NULL, NULL);
HWND hWnd = ::GetDlgItem(m_hWnd, IDC_COMBO_SKIN);
::SetWindowText(hWnd, m_szPreSkinName);
}
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CSkinSettingDlg::OnBnClickedCheckSkinOnOff()
{
// TODO: 在此添加控件通知处理程序代码
HWND hWnd = ::GetDlgItem(m_hWnd, IDC_COMBO_SKIN);
HWND hBntWnd = ::GetDlgItem(m_hWnd, IDOK);
int iCheck = m_SkinOnOff.GetCheck();
if (0 == iCheck)
{
// 未勾选
// 写入配置文件
::WritePrivateProfileString("SKIN", "load", "0", CONFIGFILE);
// 设置灰化
::EnableWindow(hWnd, FALSE);
::EnableWindow(hBntWnd, FALSE);
}
else
{
// 勾选
// 写入配置文件
::WritePrivateProfileString("SKIN", "load", "1", CONFIGFILE);
// 设置灰化
::EnableWindow(hWnd, TRUE);
::EnableWindow(hBntWnd, TRUE);
}
}
void CSkinSettingDlg::SearchSkinFile(char *lpszSrc)
{
// 搜索指定类型文件
char *lpszFileName = new char[2 * MAX_PATH];
::wsprintf(lpszFileName, "%s\\*.ssk", lpszSrc);
WIN32_FIND_DATA FileData;
HANDLE hHandle = ::FindFirstFile(lpszFileName, &FileData);
if (INVALID_HANDLE_VALUE != hHandle)
{
do
{
// 不知为何,会出现 . 字符,一定要过滤掉,否则会进入死循环里
if ('.' == FileData.cFileName[0])
{
continue; // 过滤这两个目录
}
// 判断是否是目录,若是目录,则进行递归遍历
char *pTempSrc = new char[2 * MAX_PATH];
::wsprintf(pTempSrc, "%s\\%s", lpszSrc, FileData.cFileName);
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 目录
{
continue;
}
else // 文件
{
// 显示
::SendMessage(m_hWnd, WM_SHOWSEARCH, (WPARAM)FileData.cFileName, NULL);
}
delete pTempSrc;
pTempSrc = NULL;
} while (::FindNextFile(hHandle, &FileData));
}
::FindClose(hHandle);
delete lpszFileName;
lpszFileName = NULL;
}
LRESULT CSkinSettingDlg::ShowSearchResult(WPARAM wParam, LPARAM lParam)
{
// 获取文件名
char *lpszFileName = (char *)wParam;
// 显示
m_SkinComboBox.AddString(lpszFileName);
return 0;
}
void CSkinSettingDlg::OnDropdownComboSkin()
{
// TODO: 在此添加控件通知处理程序代码
// 遍历Skins文件夹获取.ssk文件并显示
// 清空原有数据
m_SkinComboBox.ResetContent();
// 获取Skins文件夹路径
GetCurrentPath(m_szSkinFilePath, MAX_PATH);
::lstrcat(m_szSkinFilePath, "\\Skins");
// 遍历
SearchSkinFile(m_szSkinFilePath);
}
void CSkinSettingDlg::OnSelchangeComboSkin()
{
// TODO: 在此添加控件通知处理程序代码
// 获取ComboBox控件信息并调用LoadSkin全局函数加载皮肤
// 获取选中的信息
char szText[MAX_PATH] = { 0 };
int iCurSel = m_SkinComboBox.GetCurSel();
m_SkinComboBox.GetLBText(iCurSel, szText);
// 写入配置文件
::WritePrivateProfileString("SKIN", "name", szText, CONFIGFILE);
// 加载皮肤
LoadSkin();
}
void CSkinSettingDlg::OnIdcancel()
{
// TODO: 在此添加命令处理程序代码
// 写入配置文件
::WritePrivateProfileString("SKIN", "name", m_szPreSkinName, CONFIGFILE);
// 加载皮肤
LoadSkin();
CDialog::OnCancel();
}
void CSkinSettingDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK();
}

View File

@ -0,0 +1,37 @@
#pragma once
#include "afxwin.h"
#define WM_SHOWSEARCH (WM_USER + 101)
// CSkinSettingDlg 对话框
class CSkinSettingDlg : public CDialogEx
{
DECLARE_DYNAMIC(CSkinSettingDlg)
public:
char m_szPreSkinName[MAX_PATH];
char m_szSkinFilePath[MAX_PATH];
void SearchSkinFile(char *lpszSrc);
LRESULT ShowSearchResult(WPARAM wParam, LPARAM lParam);
public:
CSkinSettingDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CSkinSettingDlg();
// 对话框数据
enum { IDD = IDD_DIALOG_SKINSETTING };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
CButton m_SkinOnOff;
CComboBox m_SkinComboBox;
afx_msg void OnBnClickedCheckSkinOnOff();
afx_msg void OnSelchangeComboSkin();
afx_msg void OnDropdownComboSkin();
virtual BOOL OnInitDialog();
afx_msg void OnIdcancel();
afx_msg void OnBnClickedOk();
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More