我有一个检索光标位置的方法,并使用GetCursorPos()和ScreenToClient()获取特定窗口上的坐标。除了一件奇怪的事外,一切都很完美。
如果目标窗口是在管理员权限下运行的,而我的应用程序是在当前用户权限下运行的,则直到应用程序窗口超过目标时才能获得坐标。
如果我以管理员身份运行我的应用程序,并且目标在当前用户下运行,也会发生同样的情况。
为什么?
编辑:
问题不是获得光标的坐标,而是当窗口和我的应用程序的权限不同时获得坐标。
发现问题(未解决):原因是“用户界面特权隔离(UIPI)"
发布于 2012-06-25 13:32:57
您可以获得窗口的工作区矩形(GetClientRect),并从鼠标位置减去工作区的左上角位置,这与ScreenToClient()基本相同
代码:
POINT screen_cursor_pos;
RECT client_rect;
int cursor_x,cursor_y;
GetCursorPos(&screen_cursor_pos);
GetClientRect(hwnd,&client_rect);
cursor_x=screen_cursor_pos.x-client_rect.left;
cursor_y=screen_cursor_pos.y-client_rect.top;https://stackoverflow.com/questions/11181659
复制相似问题