每次不用可视化工具查看数据库的时候饭都要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;
}
演示效果: