MK_CONTROL我WM_MOUSEWHEEL

时间:2012-06-03 18:38:49

标签: c++ winapi

我尝试使用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;
}

1 个答案:

答案 0 :(得分:4)

您认为该程序使用MK_CONTROL标志。然而,这不是典型的,程序通常检查实际的键盘状态以检查修改器。 GetKeyState()函数。

这是一个问题,你不能用SendMessage()伪造另一个进程的键盘状态。您需要使用SendInput()来实际发送控制键的keydown。伪造鼠标滚轮输入也不错。不要忘记恢复键盘状态的键盘。