有时在系统里打开记事本,有一个光标,打开百度网页,在搜索栏也有一个光标在闪烁请问怎样获得系统内任何一个窗口或网页上的的光标位置?

解决方案 »

  1.   

    这段代码或许对你有帮助...
    HWND hWnd = ::GetFocus();
    int iID = ::GetDlgCtrlID(hWnd);
    //判断edit的句柄
    if(iID == IDC_EDIT1)
    {
        POINT point;
        //取得光标所在的位置
        ::GetCaretPos(&point);
        //取得光标所在的字符index
        long lr = ::SendMessage(hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(point.x, point.y));
        char data[256];
        //取得edit的内容
        ::SendMessage(hWnd, WM_GETTEXT, (WPARAM)256, (LPARAM)data);
        char *result = new char[lr + 1];
        //取得edit中光标之前的字符串
        memcpy(result, data, lr);
        result[lr] = '\0';
        ::MessageBox(NULL, result, "Test", 0);
        delete result;
        result = NULL;
        lr = 0;
    }
      

  2.   

    研究一下autohotkey,听说里面有你想要的东西
      

  3.   

    在公司同事的帮助下,终于搞定:
    HWND hwnd;                                                                                                         
    GUITHREADINFO pg;                                                                                                  
    POINT point;                                                                                                       
    pg.cbSize=48;                                                                                                      
    ::GetGUIThreadInfo(NULL,&pg);//GetGUIThreadInfo功能检索有关的活动窗口或指定的图形用户界面(GUI)线程的信息。       
    hwnd=pg.hwndCaret;//显示插入符的窗口句柄                                                                           
    if (pg.hwndCaret)                                                                                                  
    {                                                                                                                  
    point.x=pg.rcCaret.right;//rcCaret:一个RECT结构,描述插入符的边界矩形,在客户区坐标,相对hwndCaret成员指定的窗口 
    point.y=pg.rcCaret.bottom;                                                                                       
    ::ClientToScreen(pg.hwndCaret,&point);//转换成相对于屏幕的坐标                                                   
    }    point即是光标在屏幕上的坐标。