📄 keyboardtestreg.cpp
字号:
#include "stdafx.h"
#include "KeyBoardTestReg.h"
#include <Afxwin.h>
//加载驱动代码
void LoadKeyboardDriver()
{
LONG nErr ;
DWORD dwDisp ;
//创建注册表键
nErr = RegCreateKeyEx(HKEY_LOCAL_MACHINE, szRegKeyboard, 0, L"", 0, 0, NULL, &KeyboardhDrvKey, &dwDisp) ;
if(nErr != ERROR_SUCCESS)
{
// MessageBox(NULL, _T("Register Keyboard driver Failed!"), NULL, MB_OK) ;
RETAILMSG(1, (TEXT("LoadKeyboardDriver: RegCreateKeyEx failed!\r\n")));
return ;
}
else
{
//往注册表中添加内容
WRITE_REG_SZ(L"Prefix", szKeyboardPrefix) ; //写入"Prefix"="LED"
WRITE_REG_SZ(L"Dll", szKeyboardDll) ; //写入"Dll"="L"LedDriver.dll" "
WRITE_REG_SZ(L"FriendlyName", szKeyboardFriendlyName) ;
WRITE_REG_DWORD(L"Order", KeyboardDriverOrder) ;
WRITE_REG_DWORD(L"Index", KeyboardDriverIndex) ;
}
KeyBoardHandleDriver = ActivateDeviceEx(szRegKeyboard, NULL, 0, NULL) ;
if(KeyBoardHandleDriver == INVALID_HANDLE_VALUE)
RETAILMSG(1, (TEXT("LoadKeyboardDriver: ActivateDeviceEx failed!\r\n")));
else
RETAILMSG(1, (TEXT("LoadKeyboardDriver: LoadKeyboardDriver Success!\r\n")));
}
//卸载驱动代码
void UnLoadKeyboardDriver()
{
if(KeyBoardHandleDriver != INVALID_HANDLE_VALUE)
{
CloseKeyboardDriver();
BOOL ret = DeactivateDevice(KeyBoardHandleDriver) ;
if(ret == TRUE)
{
RegCloseKey(KeyboardhDrvKey) ;
RegDeleteKey(HKEY_LOCAL_MACHINE, szRegKeyboard) ;
KeyBoardHandleDriver = INVALID_HANDLE_VALUE ;
RETAILMSG(1, (TEXT("UnLoadKeyboardDriver: DeactivateDevice Success!\r\n")));
}
else
{
RETAILMSG(1, (TEXT("UnLoadKeyboardDriver: DeactivateDevice failed!\r\n")));
}
}
}
//打开驱动代码
void OpenKeyboardDriver(HWND hWnd)
{
DWORD IDThread;
HANDLE hReadKeyThread;
KeyBoardhFile = CreateFile(_T("KEY1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ;
// RETAILMSG(1, (TEXT("ReadKeyBoardThread: KeyBoardhFile is 0x%x.\r\n"),KeyBoardhFile));
if(KeyBoardhFile == INVALID_HANDLE_VALUE)
{
RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateFile failed!\r\n")));
return ;
}
else RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateFile Success!\r\n")));
//创建读KEY1状态线程
hReadKeyThread = CreateThread(0, 0, ReadKeyBoardThread, NULL, 0, &IDThread);
if(hReadKeyThread == NULL)
{
RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateThread failed!\r\n")));
CloseHandle(KeyBoardhFile) ;
KeyBoardhFile = INVALID_HANDLE_VALUE ;
return ;
}
RETAILMSG(1, (TEXT("OpenKeyboardDriver: CreateThread Success!\r\n")));
CloseHandle(hReadKeyThread) ;
}
//关闭驱动代码
void CloseKeyboardDriver()
{
if(KeyBoardhFile != INVALID_HANDLE_VALUE)
{
RETAILMSG(1, (TEXT("CloseKeyboardDriver: CloseKeyboardDriver Success!\r\n")));
CloseHandle(KeyBoardhFile) ;
KeyBoardhFile = INVALID_HANDLE_VALUE ;
}
}
//写入驱动代码
void WriteKeyboard()
{
return ;
}
//读出字节 WINAPI
DWORD WINAPI ReadKeyBoardThread (PVOID pParam)
{
int status=0; //为从底层驱动传来的值
DWORD actlen;
LPVOID lpInBuffer;
while(1)
{
if(KeyBoardhFile == INVALID_HANDLE_VALUE) //检查驱动是否已打开
break;
if(ReadFile(KeyBoardhFile, &status, 1, &actlen, NULL) == TRUE)
{
// RETAILMSG(1, (TEXT("ReadKeyBoardThread: status is 0x%x.\r\n"),status));
if(status)
{
RETAILMSG(1, (TEXT("ReadKeyboardThread: ReadFile Success two!\r\n")));
if(status == Key1Value)
{
KeyCount += 16;
WriteFile(KeyBoardhFile, &status, 1, &actlen, NULL) ;
}
if(status == Key2Value)
{
KeyCount ++;
//if(KeyCount%3)
DeviceIoControl(KeyBoardhFile, 10, &lpInBuffer, 1, NULL, 0, NULL, NULL) ;
}
//TCHAR buffer[50];
//wsprintf(buffer, TEXT("the counts of button pushed %d."), KeyCount);
//MessageBox(NULL, buffer, TEXT("Data Report"), MB_OK | MB_ICONASTERISK);
RETAILMSG(1, (TEXT("ReadKeyBoardThread: KeyCount is 0x%x.\r\n"),status));
}
else break;
}
else break;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -