获得屏幕上光标(不是鼠标)的位置,窗口句柄等信息

void get()
{

	while (1)
	{
//第一种方法
		HWND wnd;//窗口句柄
		wnd = GetForegroundWindow();//获得当前激活的窗口句柄
		DWORD SelfThreadId = GetCurrentThreadId();//获取本身的线程ID
		DWORD ForeThreadId = GetWindowThreadProcessId(wnd, NULL);//根据窗口句柄获取线程ID
		AttachThreadInput(ForeThreadId, SelfThreadId, true);//附加线程
		wnd = GetFocus();//获取具有输入焦点的窗口句柄
		AttachThreadInput(ForeThreadId, SelfThreadId, false);//取消附加的线程
		SendMessage(wnd, WM_CHAR, WPARAM('a'), 0);//发送一个字消息
		//SendMessage(wnd, WM_CHAR, WPARAM('3'), 0);//发送一个字消息
		//SendMessage(wnd, WM_CHAR, WPARAM('-'), 0);//发送一个字消息
		//SendMessage(wnd, WM_CHAR, WPARAM('\r'), 0);//发送换行
		//SendMessage(wnd, WM_CHAR, WPARAM('\n'), 0);//发送换行
		//::SendMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);//发送回车键
		//::SendMessage(wnd, WM_KEYUP, VK_RETURN, 0);//发送回车键
//第二种方法:
		HWND hwnd;
		GUITHREADINFO pg;
		POINT point;//光标位置 
		pg.cbSize = 48;
		::GetGUIThreadInfo(NULL, &pg);
		hwnd = pg.hwndCaret;
		if (pg.hwndCaret)
		{
			
			SendMessage(hwnd, WM_CHAR, WPARAM('H'), 0);//发送一个字消息
			SendMessage(hwnd, WM_CHAR, WPARAM('3'), 0);//发送一个字消息
			SendMessage(hwnd, WM_CHAR, WPARAM('-'), 0);//发送一个字消息
			point.x = pg.rcCaret.right;
			point.y = pg.rcCaret.bottom;
			::ClientToScreen(pg.hwndCaret, &point);
			cout << point.x << endl;
			cout << point.y << endl;
		}
//第三种方法,直接判断有无输入光标在闪烁;
		if (GetCaretPos(&point))//这个函数判断是否有光标,有光标返回真,得到光标所在窗口的窗口左上位置
			::ClientToScreen(pg.hwndCaret, &point);
			cout << point.x << endl;
		Sleep(1000);
	}

}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值