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() 并实际发送控制键的 keydown。也很好伪造鼠标滚轮输入。不要忘记 keyup 来恢复键盘状态。

于 2012-06-03T18:57:28.680 回答