0

カーソル位置を取得するメソッドがあり、GetCursorPos() と ScreenToClient() を使用して特定のウィンドウの座標を取得します。奇妙なことを除いて、すべて完全に機能します。

ターゲット ウィンドウが管理者権限で実行され、アプリケーションが現在のユーザーの権限で実行されている場合、アプリケーション ウィンドウがターゲットを超えるまで座標を取得できません。

アプリケーションを管理者として実行し、ターゲットを現在のユーザーで実行すると、同じことが起こります。

なんで ?

編集 :

問題はカーソルの座標を取得することではなく、ウィンドウとアプリケーションの権限が異なる場合に座標を取得することです。

問題が見つかりました (未解決): 原因は「User Interface Privilege Isolation (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 に答える