gpt4 book ai didi

windows - 为 GET_WHEEL_DELTA_WPARAM 创建 wParam

转载 作者:行者123 更新时间:2023-12-04 18:00:25 26 4
gpt4 key购买 nike

如果我使用计算机鼠标滚动窗口,我会得到以下 Spy++ 结果:

fwKeys: 0, zDelta: -120

我需要通过代码模拟鼠标滚轮事件,所以我像这样使用 PostMessage:
Public Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long) As Long

PostMessage lHwnd, WM_MOUSEWHEEL, MakeWParam(0, -120), 0

Public Function MakeWParam(ByVal uHigh As Long, ByVal uLow As Long) As Long

Dim foo(0 To 1) As Integer
Dim lRet As Long

foo(0) = uHigh
foo(1) = uLow

Call CopyMemory(lRet, VarPtr(foo(0)), Len(lRet))

MakeWParam = lRet

End Function

然而,这导致 Spy++ 告诉我以下内容:
fwKeys: 3C40, zDelta: 8996

我看不出我哪里做错了。

根据 MSDN,可以使用 GET_WHEEL_DELTA_PARAM 从 wParam 中提取 zDelta,但我没有看到任何有关如何从 fwKeys 和 zDelta 实际创建此 wParam 的信息。显然我的方法是不正确的。

我也试过 SendMessage 而不是 PostMessage,但结果是一样的。

感谢您的帮助!

最佳答案

由于您没有 ByValpSource , 你要么不应该使用 VarPtrfoo(0) ,或者你应该明确地传递它 ByVal :CopyMemory lRet, ByVal VarPtr(foo(0)) ... 或 CopyMemory lRet, foo(0) ...

另外,您还有 foo() As Integer ,但您分配 Long其内容的变量。你确定这是你想要的吗?

关于windows - 为 GET_WHEEL_DELTA_WPARAM 创建 wParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688228/

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