gpt4 book ai didi

c++ - 如何为当前打开的窗口模拟鼠标滚动?

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:48 25 4
gpt4 key购买 nike

我目前正在尝试在当前打开的窗口上模拟鼠标滚动事件。我正在使用 Visual C++ 中的 setscrollpos() 函数实现它。

    SetScrollPos(hwnd,SB_VERT,0,TRUE);

UpdateWindow(hwnd);

如何将当前打开的窗口名称传递给参数hwnd?

最佳答案

一百万年前,我编写了一个可以为我玩 WinMine(Windows 的扫雷游戏)的程序。

这涉及

  • (a) 获取标题为“Minesweeper”的窗口的 HWND
  • (b) 对其调用 setWindowForeground
  • (c) 打开进程的内存并读取一些数据对应当前游戏状态。
  • (d) 检查这段内存以确定地雷
  • (e) 在发送之前将鼠标移动到每个“安全”图 block 的中心按下左键,然后按下左键消息

游戏可以在不到 1 秒的时间内 100% 成功完成 - 高分的剩余时间部分始终与解决问题的可用总时间相同。对于踢球,我还添加了将运动场设置为 1 位图像的代码 - 即每个单元格是否安全。

无论如何,以下代码对我有用:它只是将这个后输入框滚动了 4 行。

如果它在 Debug模式下运行,或者有一个可见的控制台窗口 - 事件会被它吞没,因为它是前台窗口。我在没有窗口的情况下运行了这段代码。编辑代码,然后点击构建,然后在构建代码时切换回此窗口导致此输入框滚动。

#include <windows.h>
#include <winuser.h>

const int minWheelMovement = 120;

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
{

HWND foregroundWindow;
foregroundWindow = GetForegroundWindow();
mouse_event(MOUSEEVENTF_WHEEL, 0,0,4*minWheelMovement, 0);
}

关于c++ - 如何为当前打开的窗口模拟鼠标滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com