问题标题: 编程自动换行器

0
0
已解决
苏烨城
苏烨城
中级守护
中级守护

#include <windows.h>
#include <iostream>
using namespace std;

// 模拟键盘按下输入字符
void SendKey(WORD key, bool isExtended = false)
{
    INPUT input[2] = {};

    input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = key;
    if(isExtended) input[0].ki.dwFlags = KEYEVENTF_EXTENDEDKEY;

    input[1].type = INPUT_KEYBOARD;
    input[1].ki.wVk = key;
    if(isExtended) input[1].ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
    else input[1].ki.dwFlags = KEYEVENTF_KEYUP;

    SendInput(2, input, sizeof(INPUT));
}

int main()
{
    cout << "===== 代码自动换行器 =====" << endl;
    cout << "按下 ;  自动输入; 并换行" << endl;
    cout << "ESC 退出程序\n" << endl;

    bool triggerLock = false; // 防重复连续触发

    while (true)
    {
        // ESC退出
        if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)
        {
            cout << "程序退出!" << endl;
            break;
        }

        // 检测分号键 VK_OEM_1 美式键盘 ;: 键
        if ((GetAsyncKeyState(VK_OEM_1) & 0x8000) && !triggerLock)
        {
            triggerLock = true;

            // 先释放当前按下的;(防止重复输入)
            INPUT upKey{};
            upKey.type = INPUT_KEYBOARD;
            upKey.ki.wVk = VK_OEM_1;
            upKey.ki.dwFlags = KEYEVENTF_KEYUP;
            SendInput(1, &upKey, sizeof(INPUT));
            Sleep(10);
            SendKey(VK_RETURN);   // 按下回车换行

            Sleep(150); // 冷却时间
            triggerLock = false;
        }

        Sleep(10);
    }

    system("pause");
    return 0;
}


0
0
我要回答