gpt4 book ai didi

c# - SendInput 在 64 位上失败

转载 作者:太空狗 更新时间:2023-10-29 22:14:35 33 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
SendInput and 64bits

我正在使用 .NET 代码 (PInvoke) 中的 SendInput。
代码过去在 32 位操作系统上运行良好,但现在在 WIN7 上 SendInput 返回 0,最后一个错误设置为 57 (ERROR_INVALID_PARAMETER)。
我无法将我的代码编译为 x86,因为我加载到 64 位主持人。此外,我尝试了各种关于结构大小和字段偏移的解决方案,但都没有奏效。
这些是我的 PInvoke 导入和类型:

[StructLayout(LayoutKind.Sequential)]
struct KEYBOARD_INPUT
{
public uint type;
public ushort vk;
public ushort scanCode;
public uint flags;
public uint time;
public uint extrainfo;
public uint padding1;
public uint padding2;
}

[DllImport("User32.dll", SetLastError=true)]
private static extern uint SendInput(
uint numberOfInputs,
[MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] KEYBOARD_INPUT[] input,
int structSize);

代码用法是:

uint result = SendInput(
(uint)inputs.Count,
inputs.ToArray(),
Marshal.SizeOf(inputs[0]));

其中输入数组包含 1 个 KEYBOARD_INPUT 结构。
这会产生结果 = 0,当我检查最后一个错误时,我发现最后一个错误设置为 57(ERROR_INVALID_PARAMETER,参数不正确)。

有没有办法在 WIN7 64 位操作系统的 64 位主机下工作?这在 XP 中有效...

谢谢

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