需要在一个进程中访问另外一个进程的登录窗口,并且自动输入用户名和密码,自动点击登录按钮,以下是程序代码,供大家参考:
在windows系统中查看是否有title为Login ERROR的窗口
bool checkV5billalive()
{
//获取windows的异常窗口
while(true){
char* errorWinName ="Login ERROR";
HWND hwnd=::FindWindow(NULL,errorWinName); //隐藏"ddd"窗口
if(hwnd==NULL)
{
break;
}
Sleep(2);
//ID = 3
::SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(3,BN_CLICKED),NULL);
}
Sleep(2);
bool isFind = checkProcess(m_v5billProcessName);
return isFind;
}
//获取用户登录的窗口,并自动发送用户名和密码,自动登录
char* loginName ="用户登录";
HWND hwnd=::FindWindow(NULL,loginName); //获取窗口句柄
if(hwnd==NULL)
{
return false;
}
//给UserName赋值 ID为1024
//ID = 3
::SetDlgItemText(hwnd,1024,"username"); //向窗口中ID为1024的输入框发送内容username
::SetDlgItemText(hwnd,1025,"password");//向窗口中ID为1025的输入框发送内容password
HWND userhwnd = GetDlgItem(hwnd,1024);
::SendMessage(userhwnd, WM_SETTEXT, 0, (LPARAM)"username"); //向窗口中ID为1024的输入框发送内容username
userhwnd = GetDlgItem(hwnd,1025);
::SendMessage(userhwnd, WM_SETTEXT, 0, (LPARAM)"password");//向窗口中ID为1025的输入框发送内容password
::SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(1,BN_CLICKED),NULL);向窗口中ID为1的按钮发送CLICKED事件
//获取窗口的父句柄
HWND parent = ::GetParent(hwnd);
//将父窗口最大化
SendMessage(parent, WM_SYSCOMMAND, SC_MAXIMIZE, NULL) ;