Eventuali duplicati:
SendInput and 64bitsSendInput non riesce a 64bit
sto usando SendInput dal codice .NET (PInvoke).
codice utilizzato per funzionare correttamente su sistema operativo a 32 bit, ma ora su WIN7 SendInput restituisce 0 e l'ultimo errore è impostato su 57 (ERROR_INVALID_PARAMETER).
Non riesco a compilare il mio codice come x86 mentre sono caricato in un host a 64 bit. Inoltre, ho provato varie soluzioni per quanto riguarda le dimensioni della struttura e gli offset di campo, nessuno ha funzionato.
Queste sono le importazioni PInvoke e tipi:
[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);
e l'uso di codice è:
uint result = SendInput(
(uint)inputs.Count,
inputs.ToArray(),
Marshal.SizeOf(inputs[0]));
cui ingressi array contiene 1 KEYBOARD_INPUT struct.
questo produce in risultato = 0 e quando controllo l'ultimo errore, ottengo che l'ultimo errore è impostato su 57 (ERROR_INVALID_PARAMETER, Il parametro non è corretto).
C'è un modo per farlo funzionare con l'host a 64 bit in SO Windows a 64 bit? questo funziona in XP ...
grazie
Grande , questo ha risolto il problema – Oren