0

Ctrl+マウスホイールを使用してズーム機能を実装しようとしています。このコードを使用すると、アクティブ ウィンドウはスクロールしますが、ズームはしません。このメッセージを受け取るすべてのアプリが MK_CONTROL フラグを認識しないようです。私が何か間違ったことをしているかどうか誰かに教えてもらえますか?

#include "stdafx.h"
#include<Windows.h>
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
while(true)
    {
    WORD wLow=MK_CONTROL;
    WORD wHigh=240;
    WPARAM par= MAKEWPARAM(wLow, wHigh);
    HWND WindowToScroll =  GetForegroundWindow();
    SendMessage(WindowToScroll, WM_MOUSEWHEEL,par,NULL);
    Sleep(1000);
    cout<<WindowToScroll<<endl;
    }
return 0;
}
4

1 に答える 1

4

プログラムが MK_CONTROL フラグを使用するとします。ただし、これは一般的ではなく、プログラムは実際のキーボードの状態をチェックして修飾子をチェックすることがよくあります。GetKeyState() 関数。

これは問題です。SendMessage() を使用して別のプロセスのキーボードの状態を偽造することはできません。代わりに SendInput() を使用し、実際にコントロール キーのキーダウンを送信する必要があります。マウス ホイール入力を偽造するのにも適しています。キーボードの状態を復元するために keyup を忘れないでください。

于 2012-06-03T18:57:28.680 に答える