0

我有一个检索光标位置的方法,并使用 GetCursorPos() 和 ScreenToClient() 获取特定窗口上的坐标。除了一个奇怪的东西外,它工作得很好。

如果目标窗口在管理员权限下运行并且我的应用程序在当前用户的权限下运行,则在我的应用程序窗口超出目标之前我无法获得坐标。

如果我以管理员身份运行我的应用程序并且目标在当前用户下运行,也会发生同样的事情。

为什么 ?

编辑 :

问题不是获取光标的坐标,而是当窗口的权限和我的应用程序不同时获取坐标。

发现问题(未解决):原因是“用户界面特权隔离(UIPI)”

4

1 回答 1

0

你可以得到窗口的客户区矩形(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;
于 2012-06-25T13:32:57.343 回答