252 lines
6.2 KiB
C++
252 lines
6.2 KiB
C++
|
|
// adddevice.cpp : Defines the entry point for the console application.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
|
|||
|
|
#include <windows.h>
|
|||
|
|
|
|||
|
|
#include <initguid.h>
|
|||
|
|
#include <setupapi.h>
|
|||
|
|
#include <stdio.h>
|
|||
|
|
#include ".\..\common\common.h"
|
|||
|
|
#include ".\..\common\hidmapper.h"
|
|||
|
|
#include ".\..\common\driverapi.h"
|
|||
|
|
|
|||
|
|
#pragma comment(lib,"setupapi.lib")
|
|||
|
|
|
|||
|
|
#define LEDSHOWTEST
|
|||
|
|
|
|||
|
|
int main(int argc, char* argv[])
|
|||
|
|
{
|
|||
|
|
HANDLE hDevice;
|
|||
|
|
BOOLEAN bRet = FALSE;
|
|||
|
|
int count = 0;
|
|||
|
|
HIDKEYCODE HKeyCode = { 0, }; // <20>迭<EFBFBD><E8BFAD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>°͵<C2B0> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
|||
|
|
HIDMOUSECODE HMouseCode = { 0, }; // <20>迭<EFBFBD><E8BFAD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>°͵<C2B0> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
|||
|
|
|
|||
|
|
_HK_ClientDriverApiInitialize();
|
|||
|
|
|
|||
|
|
hDevice = _HK_ClientDriverApiFindDriverName();
|
|||
|
|
if (hDevice == (HANDLE)-1)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifdef LEDEVENTTEST
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD> Ű<><C5B0><EFBFBD><EFBFBD> LED <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>
|
|||
|
|
HANDLE hLED_Event = 0;
|
|||
|
|
hLED_Event = CreateEvent(NULL, FALSE, FALSE, NULL);
|
|||
|
|
bRet = _HK_ClientDriverApiSetLEDEvent(hDevice, hLED_Event);
|
|||
|
|
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x53; // NUMLOCK<43><4B>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
Sleep(100);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
// <20>ü<EEBFB5><C3BC><EFBFBD><EFBFBD> LED<45><44> <20>Ѷ<EFBFBD><D1B6><EFBFBD> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>Ѵ<EFBFBD>
|
|||
|
|
WaitForSingleObject(hLED_Event, INFINITE);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD><CCB9>κ<EFBFBD><CEBA><EFBFBD> Ű<><C5B0><EFBFBD><EFBFBD> LED <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>о<D0BE><EEBABB>
|
|||
|
|
HIDLED HidLedData = { 0, };
|
|||
|
|
_HK_ClientDriverApiQueryIndicators(hDevice, &HidLedData);
|
|||
|
|
|
|||
|
|
if (hLED_Event)
|
|||
|
|
CloseHandle(hLED_Event);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifdef LEDSHOWTEST
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
for (count = 0; count < 1000; count++)
|
|||
|
|
{
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x53;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0x39;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0x47;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
}*/
|
|||
|
|
|
|||
|
|
Sleep(2000);
|
|||
|
|
for (count = 0; count < 10; count++)
|
|||
|
|
{
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x13; // NUMLOCK<43><4B>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
Sleep(1000);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
for (count = 0; count < 10; count++)
|
|||
|
|
{
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x53; // NUMLOCK<43><4B>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
Sleep(100);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(100);
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x39; // CAPSLOCK<43><4B>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
Sleep(100);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(100);
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x47; // SCROLLLOCK<43><4B>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
Sleep(100);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(100);
|
|||
|
|
|
|||
|
|
HKeyCode.u.Modifier.LWINDOW = 1; // Window Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(100);
|
|||
|
|
|
|||
|
|
HKeyCode.u.Modifier.LWINDOW = 0; // Window Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(100);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (count = 0; count < 1000; count++)
|
|||
|
|
{
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x53;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0x39;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0x47;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (count = 0; count < 10; count++)
|
|||
|
|
{
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
// NUMLOCK, CAPSLOCK, SCROLLLOCK<43><4B>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
HKeyCode.Key[0] = 0x53;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(10);
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x39;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(10);
|
|||
|
|
HKeyCode.Key[0] = 0x47;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(10);
|
|||
|
|
|
|||
|
|
HKeyCode.u.Modifier.LWINDOW = 1; // Window Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(10);
|
|||
|
|
|
|||
|
|
HKeyCode.u.Modifier.LWINDOW = 0; // Window Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20>غ<EFBFBD><D8BA><EFBFBD>
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
|
|||
|
|
Sleep(10);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for (count = 0; count < 1000; count++)
|
|||
|
|
{
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LED<45><44> <20>Ѻ<EFBFBD><D1BA><EFBFBD>
|
|||
|
|
memset(&HKeyCode, 0, sizeof(HIDKEYCODE));
|
|||
|
|
|
|||
|
|
HKeyCode.Key[0] = 0x53;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0x39;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0x47;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
HKeyCode.Key[0] = 0;
|
|||
|
|
_HK_ClientDriverApiSimulateKey(hDevice, &HKeyCode);
|
|||
|
|
}
|
|||
|
|
*/
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#ifdef MOUSETEST
|
|||
|
|
|
|||
|
|
srand(GetTickCount());
|
|||
|
|
|
|||
|
|
for (count = 0; count < 500; count++)
|
|||
|
|
{
|
|||
|
|
memset(&HMouseCode, 0, sizeof(HIDMOUSECODE));
|
|||
|
|
int z = rand();
|
|||
|
|
if (z%4 == 0)
|
|||
|
|
{
|
|||
|
|
HMouseCode.X = rand()%40;
|
|||
|
|
HMouseCode.Y = rand() % 40;
|
|||
|
|
}
|
|||
|
|
if (z%4 == 1)
|
|||
|
|
{
|
|||
|
|
HMouseCode.X = (rand() % 40) * -1;
|
|||
|
|
HMouseCode.Y = rand() % 40;
|
|||
|
|
}
|
|||
|
|
if (z%4 == 2)
|
|||
|
|
{
|
|||
|
|
HMouseCode.X = rand() % 40;
|
|||
|
|
HMouseCode.Y = (rand() % 40) * -1;
|
|||
|
|
}
|
|||
|
|
if (z%4 == 3)
|
|||
|
|
{
|
|||
|
|
HMouseCode.X = (rand() % 40) * -1;
|
|||
|
|
HMouseCode.Y = (rand() % 40) * -1;
|
|||
|
|
}
|
|||
|
|
_HK_ClientDriverApiSimulateMouse(handle, &HMouseCode);
|
|||
|
|
Sleep(8);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
_HK_ClientDriverApiCloseHandle( hDevice );
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|