新版的qq登陆窗口的标题乱七八糟不能用FindWindow
怎么办。

解决方案 »

  1.   

    HWND FindWindowEx(
      HWND hwndParent,      // handle to parent window
      HWND hwndChildAfter,  // handle to a child window
      LPCTSTR lpszClass,    // pointer to class name
      LPCTSTR lpszWindow    // pointer to window name
    );use lpszClass to identify the window handle.
      

  2.   

    to leizhengdeng 
     类名是什么::如下
    #32770(对话框)
      

  3.   

    HWND hWnd = ::FindWindow(NULL,"QQ用户登陆");
      

  4.   

    spy++
    示例:
    找到"任务栏和开始菜单"的"自动隐藏"按钮
    HWND hTaskBar = FindWindow(TEXT("#32770"),"任务栏和开始菜单 属性");
    HWND hTab1 = FindWindowEx(hTaskBar,NULL,TEXT("#32770"),NULL);
    HWND hAutoHide= FindWindowEx(hTab1,NULL,"Button","自动隐藏(&U)");
      

  5.   

    qq本身就有自动登陆
    你把放到”启动“里不就OK了?
    FAINT
      

  6.   

    在”系统参数“里选上”不出现登陆提示框“不就OK了?或者在登陆的时候选上”记住密码“也可以!FAINT
    FAINT
      

  7.   

    哦,我知道了,谢谢。
    现在我想知道怎么得到它的HWND.
      

  8.   

    HWND hQQ = FindWindow(TEXT("#32770"),"QQ用户登录");
    HWND hButton1= FindWindowEx(hQQ,NULL,"Button",NULL);
    char sz[100];
    GetWindowText(hButton1,sz,100);
    if(IsWindow(hButton1))
        MessageBox(NULL,sz,NULL,NULL);//弹出“记住密码”
      

  9.   

    笨方法,逐一找HWND hDlg;
    HWND hButton1;
    char sz[100];
    hDlg=FindWindow(TEXT("#32770"),NULL);
    hButton1= FindWindowEx(hDlg,NULL,"Button",NULL);
    GetWindowText(hButton1,sz,100);if(!strcmp("记住密码",sz))
    {
    MessageBox(NULL,sz,"QQ已经运行",MB_OK|MB_ICONINFORMATION);
    return 0;
    }while(hDlg!=0)
    {
    hDlg = FindWindowEx(NULL,hDlg,TEXT("#32770"),NULL);
    if(IsWindow(hDlg))
    {
    hButton1= FindWindowEx(hDlg,NULL,"Button",NULL);
    GetWindowText(hButton1,sz,100); if(!strcmp("记住密码",sz))
    {
    MessageBox(NULL,sz,"QQ已经运行",MB_OK|MB_ICONINFORMATION);
    return 0;
    }
    }
    }
      

  10.   

    腾讯的新版本QQ中的窗口标题是不能获得的,可以在SPY++中看到为乱码。
    要获得它的窗口句柄,可以用钩子来实现。
    LRESULT __declspec(dllexport)__stdcall  CALLBACK CallWndProc(int nCode,WPARAM wParam,LPARAM lParam)
    {
    PCWPSTRUCT pcw=(PCWPSTRUCT) lParam;

    if(nCode>=0 && pcw && pcw->hwnd)
    {
    if(pcw->message==WM_SHOWWINDOW)
    {
    HWND hwnd=(HWND)pcw->hwnd;
                               CString strApplication;
    CString strCommand=GetCommandLine();
    int nnum=strCommand.ReverseFind('\\');
    if(nnum!=-1)
    {
    strApplication=strCommand.Mid(nnum+1);
    strApplication.TrimRight();
    strApplication.TrimRight("\"");
    }
             if(strApplication == _T("QQ2000b.exe"))
                   HWND hwndtarget=hwnd;//get it now;
    }
      

  11.   

    HWND hWnd = ::FindWindow(NULL,"QQ用户登陆");
    并不全对,有些qq登陆的时候"QQ用户登陆“这个东西可能会不见了
    那时HWND hWnd = ::FindWindow(NULL,"");
    到能找到一些,然后用里面的button来进行判断,
    这样就万无一失了!!
      

  12.   

    实际上现在的QQ版本的登陆对话框的WINDOWTEXT都为"xxxxxx",即6个x,我用键盘钩子试过的。
    代码如下:
    HWND hFocus = GetFocus(); //键盘焦点
    HWND glhTargetWnd = hWnd; //取目标窗口
    HWND glhParentWnd = glhTargetWnd;
    while(glhParentWnd != NULL)
    {
    glhTargetWnd = glhParentWnd;
    glhParentWnd = GetParent(glhTargetWnd);
    }

    GetWindowText(glhTargetWnd,szCaption,100);
    其中szCaption的内容就是"xxxxx".
      

  13.   

    HWND WindowFromPoint(POINT)就可解决.
      

  14.   

    WindowFromPoint(POINT)怎么用;
    to mrh123() GetWindowText不能找出qq的caption
      

  15.   

    void CPwdSpyDlg::OnLButtonDown(UINT nFlags, CPoint point)
    {
        HWND hWnd = ::WindowFromPoint(point);
    }
      

  16.   

    你用程序的方法得到的窗口标题和在Spy++中看到的一样,是乱码。
    得到hwnd就足够了