我想获取旺旺聊天窗口的句柄,但尝试了几种方法都没找到。
试过的方法:
A.遍历旺旺聊天的所有子窗口,发现找不到“发送”按钮窗口。
B.用spy++查看,也没观察到“发送”按钮,不知为何。同时发现旺旺聊天主窗口是的类型是:StandardFrame,而不是一般的StandardWindow。希望:
1.找到发送按钮的Hwnd
2.向发送按钮发送WM_CLICK消息,可以让旺旺回复一条消息。
3.以上代码可通过C#的验证。能解决问题者,可以给更多的分,1000-2000都可以的。
谢谢大家的回复,再补充一下,
旺旺版本是6.30.17,早期的版本是可以的,但这个最新版的确找不到了。
Spy++Lite(2.4) 找不到的句柄的。EnumChildWindows,EnumWindows也试过,窗口中的文本输入框可以找到,就是找不到“发送”按钮。

解决方案 »

  1.   

    他们使用的应该是DirectUI技术吧。整个聊天窗口只有一个窗口句柄。发送按钮是没有窗口句柄的
      

  2.   

    聊天窗口,对话记录窗口,是有Hwnd的。
      

  3.   

    spy++没有发现说明这个窗口就是没有句柄的。
    不过你可以使用Spy++检测按钮点击时,消息发送到那个窗口了
      

  4.   

    直接获取整个窗口的句柄。然后找到按钮在整个窗口的X、Y轴的坐标。最后模拟鼠标动作,在对应的位置上点击就可以了。我对SAP做外挂的时候就是这么做的。如果你仅仅就是想让他自动发送的话这样做就没问题
      

  5.   

    在 猪八械发了个任务,300元,可以去拿任务。http://www.zhubajie.com/task/iv/344425欢迎大家。如果通过X,y定位发送按钮,用户调整了,窗口大小,会有影响么?
      

  6.   

    给你个提示,查看一下,你会发现AliIM.exe中有一个Riched20.DLL模块。往下该知道怎么做了吧。
      

  7.   

    这个问题,哥完全能解决的。按钮的句柄,你是找不到的,因为你的旺旺是最新版本。输入文本的句柄相信你能找到,你只需要再keybd_event(VK_RETURN ,NULL,NULL,NULL);
    keybd_event(VK_RETURN ,NULL,KEYEVENTF_KEYUP,NULL);模拟一下键盘就行啦,就发送啦,不用去找那按钮的句柄。
      

  8.   

    分多的是,你能帮我写一个实用的代码片段就行.发布的任伤可是真金300RMB,你可以试一下,谢谢.
      

  9.   

    C#还没用过,不过我是用VC6.0的,不知可以不
      

  10.   

    C#我不用,所以没法给你代码,不过给你个思路
    1、无法找到按钮窗口句柄,所以你也不要找了,因为他就是为了不让发才做的这个动作。
    2、按钮的位置与聊天对话框的右边框距是不变的,你可以先用
    CRect rect;
    GetWindowRect(&rect);
    int nright = rect.right;
    取得右边的数置

    int nbottom = rect.bottom;
    取得下边框的位置
    3、int xx=nright-x; int yy=nbottom-y;就是按钮的位置,x是指右边框到按钮位置的距离,y是指下边框到按钮的位置你用网页尺量一下就知道
    4、提到位置后再取得整个对话框的窗口句柄ghwnd
    5、
    ::PostMessage(b1hwnd,   WM_LBUTTONDOWN,00000001,MAKELPARAM(   xx,   yy) );
    ::PostMessage(b1hwnd,   WM_LBUTTONUP,00000000,MAKELPARAM(   xx,   yy) );
    6、也可以用mouse_event

    CPoint point;
    GetCursorPos(&point);
    SetCursorPos( xx,yy);
    mouse_event( MOUSEEVENTF_LEFTDOWN, 0,0,0,NULL);
    mouse_event( MOUSEEVENTF_LEFTUP, 0,0,0,NULL);
    SetCursorPos(point.x,point.y);
      

  11.   

    Re:#15楼 输入的指针的确可以拿到,也可以发送 sendkey{enter} 消息.
    但不明确你说的是什么方法.另外,sendkey{enter}这种方法,好象有时会丢消息.Re:vjeymyf 这的确是一个办法.
      

  12.   

    我怎么用spy++能看到句柄和窗口名啊?
      

  13.   

    只能用 9 楼的方法了。通过 某些 特定的坐标 定位到 按钮的 坐标区域。然后模拟鼠标了。
    新款的旺旺 是用 directUI 技术做的 。。你找不到 句柄的 
      

  14.   

    问题已经解决,谢谢大家关心.
    方法:向文本输入框中发送"enter"
      

  15.   

        鼓捣不了了,请教各位大哥哥,大姐姐,当用SPY++捕获窗口句柄的时候,到了查找窗口的时候,怎么没有窗口标题了,而且有好几个窗口的类名相同都是StandardWindow,没有窗口标题,怎么才能定位到”会员名:“后面的那个文本框啊?????