I need to use "CreateTimerQueueTimer" to create a timer.
The parameter must be pass as pointer.
Here my code:
void sendKey(int vk, ) {
KEYBDINPUT kb = { 0 };
INPUT Input = { 0 };
int scan = MapVirtualKey(vk, 0);
/* Generate a "key down" */
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
Input.ki.wScan = scan;
SendInput(1, &Input, sizeof(Input));
/* Generate a "key up" */
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
Input.ki.wScan = scan;
SendInput(1, &Input, sizeof(Input));
return;
}
void CALLBACK ProcessRequests(PVOID lpParameter, BOOLEAN TimerOrWaitFired)
{
sendKey((int)lpParameter, true);
}
void myfunc()
{
int VirtualKey=50;
CreateTimerQueueTimer(&m_hTimer, nullptr, &ProcessRequests, &VirtualKey, 100, 0, WT_EXECUTEONLYONCE);
}
Inside "ProcessRequests" there is the function "sendKey" that accept integer as parameter but lpParameter is a pointer. How I can pass the value of "lpParameter" and convert it in integer ?
Thanks !