VC 如何访问另外一个进程的窗口

来源:互联网 发布:苹果手机画图软件 编辑:程序博客网 时间:2024/04/28 11:53

需要在一个进程中访问另外一个进程的登录窗口,并且自动输入用户名和密码,自动点击登录按钮,以下是程序代码,供大家参考:

在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) ;