Как я могу обнаружить прокрутку мыши и событие перемещения на окнах из приложения c ++, даже если само приложение неактивно (я имею в виду свернутый или скрытый), я могу получить события клавиатуры
for (int i = 8; i <= 190; i++)
{
if (GetAsyncKeyState(i) == -32767){
SaveLogs(i, "log.txt");
wcout << (wchar_t)i;
}
}
/// …
int SaveLogs(int key_stroke, char *file){
if ((key_stroke == 1) || (key_stroke == 2))
return 0; FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+"); /*cout << key_stroke << endl;*/
if (key_stroke == 8) // The numbers stands for the ascii value of a character
fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]");
else if (key_stroke == VK_MENU) ////
fprintf(OUTPUT_FILE, "%s", "[ALT]");
else if (key_stroke == VK_PAUSE) ////
fprintf(OUTPUT_FILE, "%s", "[PAUSE]");
else if (key_stroke == VK_CAPITAL) ////
fprintf(OUTPUT_FILE, "%s", "[CAPSLOCK]");
else if (key_stroke == VK_PRIOR) ////
fprintf(OUTPUT_FILE, "%s", "[PAGEUP]");
else if (key_stroke == VK_NEXT) ////
fprintf(OUTPUT_FILE, "%s", "[PAGEDOWN]");
и так далее…
и я также могу обнаружить щелчки мыши
switch (CheckMouseButtons()){
case 1:wcout << L"[l]";
output << L"[LMB]";
break;
case 2:wcout << L"[r]";
output << L"[RMB]";
break;
case 3:wcout << L"[m]";
output << L"[MMB]";
break;
default: break;
}
а также
int CheckMouseButtons(){
if ((GetKeyState(VK_LBUTTON) & 0x80) != 0)
{
if (((GetTickCount() - lastclicktime) / 100) > 1)
{
lastclicktime = GetTickCount();
lastclick = 1;
return 1;
}
}
if ((GetKeyState(VK_RBUTTON) & 0x80) != 0)
{
if (((GetTickCount() - lastclicktime) / 100) > 1)
{
lastclicktime = GetTickCount();
lastclick = 2;
return 2;
}
}
if ((GetKeyState(VK_MBUTTON) & 0x80) != 0)
{
if (((GetTickCount() - lastclicktime) / 100) > 1)
{
lastclicktime = GetTickCount();
lastclick = 3;
return 3;
}
}
return 0;
}
но я не могу получить событие прокрутки мыши. Мне нужно только определить, была ли она прокручена (Вверх или Вниз менее важны)
Задача ещё не решена.