83 lines
No EOL
1.6 KiB
C++
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();
|
|
}
|
|
} |