Duplicar posible:
SendInput and 64bitsSendInput falla en 64 bits
estoy usando SendInput de código .NET (PInvoke). El código
solía funcionar bien en el sistema operativo de 32 bits, pero ahora en WIN7 SendInput devuelve 0 y el último error se establece en 57 (ERROR_INVALID_PARAMETER).
No puedo compilar mi código como x86 ya que estoy cargado en un host de 64 bits. Además, probé varias soluciones con respecto a los tamaños de estructura y las compensaciones de campo, ninguna funcionó.
Estos son mis importaciones PInvoke y tipos:
[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);
y el uso de código es:
uint result = SendInput(
(uint)inputs.Count,
inputs.ToArray(),
Marshal.SizeOf(inputs[0]));
donde los insumos matriz contiene 1 struct KEYBOARD_INPUT.
esto arroja un resultado = 0, y cuando reviso el último error, obtengo que el último error se establece en 57 (ERROR_INVALID_PARAMETER, el parámetro es incorrecto).
¿Hay alguna manera de hacer que esto funcione en el host de 64 bits en el sistema operativo WIN7 de 64 bits? esto funciona en XP ...
gracias
Gran que resolvió el problema – Oren