解决方案:
1、CreateProcess创建进程
2、找到QQ窗口
3、设置鼠标位置至账号编辑框,点击聚焦
4、模拟键盘输入账号
5、设置鼠标位置至密码编辑框,点击聚焦
6、模拟键盘输入密码
7、设置鼠标位置至密码编辑框,点击聚焦
8、模拟鼠标单击登录
这里从简,QQ打开以后,账号密码都记住了,所以免去了步骤3到步骤6。
其中,模拟鼠标的函数时mouse_event。模拟键盘的函数是keybd_event,自己百度一下就可以了。
示例代码
#include <windows.h>
#include <TCHAR.h>
//隐藏控制台
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main()
{
STARTUPINFO si = { 0 };
PROCESS_INFORMATION pi;
si.cb = sizeof(si);
BOOL res = CreateProcess(
TEXT("D:\\Program Files (x86)\\Tecent\\Tecent QQ\\Bin\\QQ.exe"),
NULL,
NULL,
NULL,
FALSE,
CREATE_NEW_CONSOLE,
NULL,
NULL, &si, &pi);
TCHAR szTitle[MAX_PATH] = { 0 };
HWND hwnd = FindWindow(TEXT("TXGuiFoundation"), TEXT("QQ"));
BOOL bOpened = FALSE;
DWORD i = 0;
for (i = 0; i < 100; i++)
{
if (hwnd != NULL)
{
bOpened = TRUE;
RECT r;
GetWindowRect(hwnd, &r);
//鼠标聚焦到输入密码编辑框
// ::SetCursorPos(r.left + 170, r.top + 295);
// mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //点下左键
// mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //松开左键
// keybd_event(97, 0, 0, 0);
// keybd_event(97, 0, KEYEVENTF_KEYUP, 0);
// Sleep(50);
SetCursorPos(r.left + 170, r.top + 350);
//鼠标聚焦以后停3s等待QQ窗口弹出在点击登录按钮
Sleep(3000);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //点下左键
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //松开左键
break;
}
else
{
hwnd = FindWindow(TEXT("TXGuiFoundation"), TEXT("QQ"));
Sleep(5);
}
}
return 0;
}