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);
}
}