4

私はここで機能していますが、確かに間違った方法で行っています。

私のプログラムは FindWindow を使用して正しいウィンドウを見つけます。このウィンドウの特定の場所をダブルクリックする必要があります。

ウィンドウを常に画面上の同じ場所に配置して機能させましたが、ウィンドウを移動すると、プログラムは提供したハードコードされた場所をクリックしようとし、機能しませんでした。

関数は次のとおりです。

void lobbyWindow(HWND main_client)
{
  //RECT arect;

   // GetWindowRect(main_client, &arect); 

    SetCursorPos(748,294);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

}

ご覧のとおり、マウスを 748,294 に移動してダブルクリックします。私がやりたいことは、main_client ウィンドウでマウスを 100,100 に設定することです。したがって、main_client ウィンドウを移動しても、マウスは正しい場所をクリックします。

4

3 に答える 3

2

SetCursor()には画面座標が必要なので、ダブルクリックがウィンドウの現在の画面位置を基準とした画面座標のどこにあるかを計算する必要があります。次のいずれかでそれを行うことができます。

  1. を使用GetWindowRect()してウィンドウの現在の画面座標を取得し、それを意図した相対座標でオフセットします。

  2. ClientToScreen()またはを使用MapWindowPoints()して、相対座標を画面座標に変換します。

意図した画面座標を取得したら、それらを に渡すことができますSetCursor()

于 2013-08-04T21:05:13.537 に答える