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;
}

演示效果:

相关推荐
FlightYe9 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎10 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
by2099910 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble11 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长11 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall12 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊12 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
爱聊灵光的维C12 小时前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
共享家952712 小时前
408 操作系统第一章
服务器·数据库·windows
AI+程序员在路上12 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能