JD2022-TU1/main/extern/Camcam/Tools/Keyboard.cpp

83 lines
No EOL
1.6 KiB
C++

#define _WIN32_WINNT 0x0500
#include "Windows.h"
#include "SCENE.h"
const int scanCode [] = {
30,48,46,32,18,33,34,35,23,36,37,38,50,49,24,25,16,19,31,20,22,47,17,45,21,44
};
void SendKeyMessage(DWORD code, int isScanCode, int isUp)
{
INPUT input;
KEYBDINPUT keybInput;
UINT result;
BOOL letterCode = 0;
BOOL numberCode = 0;
memset(&keybInput, 0, sizeof(keybInput));
keybInput.dwFlags = KEYEVENTF_SCANCODE;
if (isUp)
keybInput.dwFlags |= KEYEVENTF_KEYUP;
if (isScanCode)
keybInput.wScan = code;
else
{
if(code >= 'A' && code <= 'Z') { letterCode = 1; code -= 'A'; }
if(code >= 'a' && code <= 'z') { letterCode = 1; code -= 'a'; }
if(code >= '0' && code <= '9') { numberCode = 1; code -= '0'; }
if (letterCode)
keybInput.wScan = scanCode [code];
else {
if (numberCode)
keybInput.wScan = code+1;
else
return;
}
}
/*
keybInput.dwFlags = KEYEVENTF_UNICODE;
keybInput.wScan = code;
*/
input.type = INPUT_KEYBOARD;
input.ki = keybInput;
result = SendInput(1, &input, sizeof(input));
if (result == 0)
{
DWORD err = GetLastError();
}
}
void SendMouseMessage(int x, int y, DWORD status)
{
INPUT input;
MOUSEINPUT mouseInput;
UINT result;
memset(&mouseInput, 0, sizeof(mouseInput));
mouseInput.dx = x;
mouseInput.dy = y;
mouseInput.mouseData = XBUTTON1;
if (status & 1)
mouseInput.dwFlags = MOUSEEVENTF_XDOWN;
if (status & 2)
mouseInput.dwFlags = MOUSEEVENTF_XUP;
mouseInput.dwFlags |= MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
input.type = INPUT_MOUSE;
input.mi = mouseInput;
result = SendInput(1, &input, sizeof(input));
if (result == 0)
{
DWORD err = GetLastError();
}
}