3

Windows7のDelphi3でこのメソッドを呼び出すと、水平スクロールがありません。

const MOUSEEVENTF_HWHEEL = $1000;
mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);

垂直スクロールはMOUSEEVENTF_WHEELうまく機能します。結果はと同じでSendInput、戻り値は成功を示します。私の現在のマウスは水平傾斜をサポートしていますが、水平スクローラーはありません。

使用するには何が必要MOUSEEVENTF_HWHEELですか?

SDKドキュメント: http: //bit.ly/mouse_event

マウスフック

Windows 7で2番目の32ビットexeプログラムを作成したのは、水平ホイールをスクロールしたときにマウスがメッセージを送信するかどうかを確認するためだけです。このフックはVSCROLLを受信しますが、HSCROLLメッセージは受信しません。

MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, hInstance, 0);
4

1 に答える 1

2
int main()
{
    Sleep(20000); // enough time to switch windows and position the mouse pointer
    mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);
    return 0;
}

選択したFirefoxページを右にスクロールしました。ウィンドウを選択し、マウスポインタをページ上に置く必要がありました。私はマウスを有効にしてそれをしました。または、テスト中にマウスをオフにしても(マウス自体のオン/オフスイッチを使用)、結果は同じでした。私のマウスには水平方向の傾きもあり、スクローラーはありません。(ウィンドウズ7アルティメイト)

編集

注意すべき1つのこと:プログラム自体がメッセージを処理する必要があります。たとえばFirefoxはそうです。マウスホイールを傾けるのと同じ動作を示します。ページはそれに応じて左右にスクロールします。IEなどの他のプログラムはこのメッセージを処理しないようであるため、スクロールはまったく行われません。マウス(追加のソフトウェアパッケージなしのLogitech Performance MX)を使用しても、何もスクロールしません。したがって、mouse_eventメッセージを送信するだけでは、この問題を100%解決することはできないようです。

于 2011-11-30T03:00:07.197 に答える