Davs.
Jeg har et lille problem.
Jeg er i gang med at lave et macroprogram som skal kunne modtage taste tryk og sende taste tryk og musse bevægelser.
Jeg har følgende kode til at modtage tryk med:
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <fstream>
#include <windows.h>
#include <stdlib.h>
#include <ctype.h>
#include <map>
#include <string>
HHOOK KeyboardHook;
std::map<DWORD, std::string>MyTextMap;
std::string skinke;
LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if((nCode==HC_ACTION) && (wParam==WM_KEYDOWN))
{
KBDLLHOOKSTRUCT *HookStruct = (KBDLLHOOKSTRUCT *)lParam;
std::ofstream outfile;
outfile.open ("logfile.txt", std::ofstream::out | std::ofstream::app);
std::map<DWORD, std::string>::const_iterator it = MyTextMap.find(HookStruct->vkCode);
if(it != MyTextMap.end())
{
outfile << it->second;
skinke = it->second;
}
else if(HookStruct->vkCode >= 0x20 && HookStruct->vkCode < 0x80)
{
outfile << (char)HookStruct->vkCode;
skinke = (char)HookStruct->vkCode;
}
else
{
outfile << "[" << HookStruct->vkCode << "]";
skinke = "["+HookStruct->vkCode+"]";
}
MessageBox(0, "char: "+skinke, "Keylogger", MB_OK);
outfile.close();
}
return CallNextHookEx(KeyboardHook, nCode, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lpCmdLine,INT nCmdShow)
{
MyTextMap[VK_F1] = "{F1}";
MyTextMap[VK_RETURN] = "{Enter}";
KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC )LowLevelKeyboardProc, GetModuleHandle(0), 0);
if(!KeyboardHook)
MessageBox(0, "Hook fejlede", "Keylogger", MB_OK);
MSG msg;
while(GetMessage(&msg, 0, 0, 0xFFFF))
{}
return EXIT_SUCCESS;
}
Og jeg har følgende kode til at sende tryk med:
void SendKeys(BYTE skinke)
{
// Simulate a key press
keybd_event(skinke,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event(skinke,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
De virker egentlig meget godt. Men mit problem er at jeg godt vil have dem til at arbejde med ASCII tal. Det gør denne kode ikke (den vil kun arbejde med tegn eller noget nær VK_RETURN).
Der vil jeg i stedet have den til at arbejde i ASCII da det er noget nemmere at arbejde med.
Nogen der har en ide til at få den til at gøre det?