我尝试使用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;
}
答案 0 :(得分:4)
您认为该程序使用MK_CONTROL标志。然而,这不是典型的,程序通常检查实际的键盘状态以检查修改器。 GetKeyState()函数。
这是一个问题,你不能用SendMessage()伪造另一个进程的键盘状态。您需要使用SendInput()来实际发送控制键的keydown。伪造鼠标滚轮输入也不错。不要忘记恢复键盘状态的键盘。