1

現在、開いている現在のウィンドウでマウス スクロール イベントをエミュレートしようとしています。Visual C++ で setscrollpos() 関数を使用して実装しています。

    SetScrollPos(hwnd,SB_VERT,0,TRUE);

    UpdateWindow(hwnd);

開いている現在のウィンドウの名前をパラメーター hwnd に渡すにはどうすればよいですか?

4

1 に答える 1

1

100 万年前、WinMine (Windows の MineSweeper) を再生するプログラムを作成しました。

これには

  • (a) 「マインスイーパ」というタイトルのウィンドウの HWND を取得します。
  • (b) その上で setWindowForeground を呼び出す
  • (c) プロセスのメモリを開き、現在のゲームの状態に対応するいくつかのデータを読み取ります。
  • (d) この記憶を調べて地雷の数と位置を決定する
  • (e) 左ボタンを押した後、左ボタンを押したメッセージを送信する前に、マウスを各「安全な」タイルの中央に移動します。

ゲームは 100% の確率で 1 秒未満で成功裏に完了することができました。ハイスコアの残り時間の要素は、問題を解決するために使用できる合計時間と常に同じでした。キックのために、競技場を 1 ビット イメージに設定するコードも追加しました。つまり、各セルが安全かどうかです。

とにかく、次のコードは私にとってはうまくいきます: このポストエントリボックスを 4 行スクロールしただけです。

デバッグ モードで実行されている場合、またはコンソール ウィンドウが表示されている場合は、フォアグラウンド ウィンドウであるため、イベントが飲み込まれます。ウィンドウなしでこのコードを実行しました。コードを編集してからビルドを押し、コードのビルド中にこのウィンドウに戻ると、この入力ボックスがスクロールされました。

#include <windows.h>
#include <winuser.h>

const int minWheelMovement = 120;

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nCmdShow)
{

    HWND foregroundWindow;
    foregroundWindow = GetForegroundWindow();
    mouse_event(MOUSEEVENTF_WHEEL, 0,0,4*minWheelMovement, 0);
}
于 2013-09-30T08:22:34.917 に答える