zoukankan      html  css  js  c++  java
  • 获取光标位置

    转载:https://blog.csdn.net/qq78442761/article/details/104110482

    (GetCarePos)

    这里有两种方式获取光标的位置!

    本篇博文只能获取有句柄的光标的位置,比如LineEdit,记事本等。

    像VS编辑框,IE里面的输入框,目前是找不到句柄的,获取不到光标

    程序运行截图如下:

    这里要介绍几个API

    GetFocus():获取当前聚焦的句柄;

    GetForegroundWindow():获取当前应用程序的窗口句柄,可以说是聚焦句柄的外部;

    AttachThreadInput():将一个线程的输入处理机制附加或分离到另一个线程的输入处理机制;

    GetCaretPos():获取插入标记的位置;

    ClientToScreen():将位置转为屏幕坐标;

    getGUIThreadInfo():功能检索有关的活动窗口或指定的图形用户界面(GUI)线程的信息。

    源码如下:

     1 #include<iostream>
     2 #include<windows.h>
     3 #include<winuser.h>
     4 using namespace std;
     5  
     6 int main()
     7 {
     8  
     9     while(true) {
    10         
    11         
    12         POINT point;
    13  
    14         HWND hwnd = ::GetFocus();
    15         HWND pHwnd = ::GetForegroundWindow();
    16         if (AttachThreadInput(GetCurrentThreadId(), GetWindowThreadProcessId(pHwnd, NULL), TRUE)) {
    17             
    18             if (GetCaretPos(&point)) {
    19             
    20                 ClientToScreen(hwnd, &point);
    21                 cout << "WAY 1 :    " << "HWND:" << hwnd << "  " << "x:" << point.x << " y:" << point.y << endl;
    22             }
    23         }
    24         Sleep(1000);
    25         
    26  
    27         
    28         GUITHREADINFO pg;
    29         POINT point2;
    30         pg.cbSize = 48;
    31         GetGUIThreadInfo(GetWindowThreadProcessId(pHwnd, NULL), &pg);//GetGUIThreadInfo功能检索有关的活动窗口或指定的图形用户界面(GUI)线程的信息。       
    32         hwnd = pg.hwndCaret;//显示插入符的窗口句柄    
    33         if (pg.hwndCaret)
    34         {
    35             point2.x = pg.rcCaret.right;//rcCaret:一个RECT结构,描写插入符的界限矩形,在客户区坐标,相对hwndCaret成员指定的窗口 
    36             point2.y = pg.rcCaret.bottom;
    37             ::ClientToScreen(pg.hwndCaret, &point2);//转换成相对于屏幕的坐标   
    38             cout << "WAY 2:      " << point2.x << "  " << point2.y << endl;
    39         }
    40         
    41         
    42     }
    43     
    44     return 0;
    45 }
  • 相关阅读:
    Java的 Annotation 新特性
    Java 枚举
    Java 泛型
    Linux kali信息探测以及 Nmap 初体验
    静态导入 ()
    Java foreach循环
    Java 可变参数
    炫酷的CSS3响应式表单
    关于CSS选择器连续性的问题
    简述ECMAScript6新增特性
  • 原文地址:https://www.cnblogs.com/Toya/p/13903894.html
Copyright © 2011-2022 走看看