每次不用可视化工具查看数据库的时候饭都要win+r->cmd->mysql -u root -p->密码
虽然不麻烦但是多少也得消耗你几秒钟,秉承着时间就是金钱的观念
我决定通过windows模拟输入实现快速通过命令行查看mysql数据库
涉及到的知识:
windows拉起进程,windows模拟输入,全部用的C/C++
上代码:
#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;
}
演示效果: