c\c++ windows自动打开cmd并进入mysql

每次不用可视化工具查看数据库的时候饭都要win+r->cmd->mysql -u root -p->密码

虽然不麻烦但是多少也得消耗你几秒钟,秉承着时间就是金钱的观念

我决定通过windows模拟输入实现快速通过命令行查看mysql数据库

涉及到的知识:

windows拉起进程,windows模拟输入,全部用的C/C++

上代码:

cpp 复制代码
#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void RunExe()
{
    TCHAR cmdPath[] = _T("C:\\Windows\\System32\\cmd.exe");
    STARTUPINFO strStartupInfo;
    memset(&strStartupInfo, 0, sizeof(strStartupInfo));
    strStartupInfo.cb = sizeof(strStartupInfo);
    PROCESS_INFORMATION szProcessInformation;
    memset(&szProcessInformation, 0, sizeof(szProcessInformation));
    TCHAR szCommandLine[] = _T("mysql -u root -p");

    int iRet = CreateProcess(
        cmdPath,
        NULL,
        NULL,
        NULL,
        false,
        CREATE_NEW_CONSOLE,
        NULL,
        NULL,
        &strStartupInfo,
        &szProcessInformation
    );

    if (iRet)
    {
        // 创建成功
        printf_s("Create Success iRet = %d\n", iRet);

        // 等待命令行进程启动完毕
        WaitForInputIdle(szProcessInformation.hProcess, 5000);
        INPUT input;
       
        // 模拟输入回车
     
        memset(&input, 0, sizeof(input));
        input.type = INPUT_KEYBOARD;
        input.ki.wVk = VK_RETURN;
        input.ki.dwFlags = 0;
        SendInput(1, &input, sizeof(INPUT));

        // 等待命令行处理完回车
        Sleep(1000);

        //模拟输入"mysql -u root -p"
        TCHAR szToMysql[] = _T("mysql -u root -p");
        for (int i = 0; i < _tcslen(szToMysql); i++)
        {
            memset(&input, 0, sizeof(input));
            input.type = INPUT_KEYBOARD;
            input.ki.wVk = 0;
            input.ki.dwFlags = KEYEVENTF_UNICODE;
            input.ki.wScan = szToMysql[i];
            SendInput(1, &input, sizeof(INPUT));
            input.ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
            SendInput(1, &input, sizeof(INPUT));
        }

      //  Sleep(1000);

        // 模拟输入回车

        memset(&input, 0, sizeof(input));
        input.type = INPUT_KEYBOARD;
        input.ki.wVk = VK_RETURN;
        input.ki.dwFlags = 0;
        SendInput(1, &input, sizeof(INPUT));

        // 等待命令行处理完回车
       // Sleep(1000);

        // 模拟输入密码 
        TCHAR szPassword[] = _T("你的数据库的密码");
        for (int i = 0; i < _tcslen(szPassword); i++)
        {
            memset(&input, 0, sizeof(input));
            input.type = INPUT_KEYBOARD;
            input.ki.wVk = 0;
            input.ki.dwFlags = KEYEVENTF_UNICODE;
            input.ki.wScan = szPassword[i];
            SendInput(1, &input, sizeof(INPUT));

            input.ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
            SendInput(1, &input, sizeof(INPUT));
        }

        // 模拟输入回车
        memset(&input, 0, sizeof(input));
        input.type = INPUT_KEYBOARD;
        input.ki.wVk = VK_RETURN;
        input.ki.dwFlags = KEYEVENTF_UNICODE;
        input.ki.wScan = VK_RETURN;
        SendInput(1, &input, sizeof(INPUT));

      //  Sleep(1000);

        // 关闭进程句柄和线程句柄
        CloseHandle(szProcessInformation.hProcess);
        CloseHandle(szProcessInformation.hThread);
    }
    else
    {
        printf_s("Create Failure iRet = %d\n", iRet);
        printf_s("Error code = %d\n", GetLastError());
    }
}

int main()
{
    printf("This is Bingo\n");
    RunExe();
    return 0;
}

演示效果:

相关推荐
HRTOS15 分钟前
HRTOS 4.0 驱动库:06_Storage 存储设备驱动——24C02 EEPROM与I²C驱动开发
c语言·驱动开发·嵌入式硬件·51单片机
寺中人1 小时前
MySQL 8.0 Windows 完整安装教程:环境配置、密码重置与常见报错排查
数据库·windows·mysql·环境搭建·mysql 安装
爱吃巧克力的程序媛2 小时前
main.cpp注册 C++ 类到 QML 元对象系统
c++·qt
YYYing.2 小时前
【C++进阶系列 (二)】关于线程堆栈的那些事——函数调用过程
开发语言·c++·函数·线程堆栈
en.en..2 小时前
Linux exec函数族
windows
键盘会跳舞3 小时前
【C++多线程】死锁诊断工具实战:从 Windows 到 Linux 的全链路排查
linux·c++·windows·死锁
HugoStudio_SWAN4 小时前
洛谷 P10719 \[GESP202406 五级] 黑白格——暴力美学与图像处理的最小外接矩形
c++·图像处理·人工智能·学习·程序人生·算法·目标跟踪
jimy14 小时前
C++ 的 “移动语义”——Move Semantics
开发语言·c++
雨田言炎4 小时前
2026/9/5 C复习笔记(一)
c语言·笔记
wuyk5555 小时前
从零吃透 MQTT 通信|第 5 章 MQTT 心跳保活机制深度优化,断线检测与智能自动重连
c语言·开发语言·stm32·学习