thể trùng lặp:
SendInput and 64bitsSendInput không thành công trên 64bit
Tôi đang sử dụng SendInput từ mã NET (PInvoke).
mã được sử dụng để hoạt động tốt trên hệ điều hành 32 bit, nhưng bây giờ trên WIN7 SendInput trả về 0 và lỗi cuối cùng được đặt thành 57 (ERROR_INVALID_PARAMETER).
Tôi không thể biên dịch mã của mình dưới dạng x86 khi tôi được tải vào máy chủ lưu trữ 64 bit. Ngoài ra, tôi đã thử các giải pháp khác nhau liên quan đến kích thước cấu trúc và bù trừ trường, không có hiệu quả nào.
Đây là hàng nhập khẩu của tôi PInvoke và các loại:
[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);
và mã sử dụng là:
uint result = SendInput(
(uint)inputs.Count,
inputs.ToArray(),
Marshal.SizeOf(inputs[0]));
nơi đầu vào mảng chứa 1 KEYBOARD_INPUT struct.
sản lượng này trong kết quả = 0 và khi tôi kiểm tra lỗi cuối cùng tôi nhận được lỗi cuối cùng được đặt thành 57 (ERROR_INVALID_PARAMETER, Thông số không chính xác).
Có cách nào để thực hiện công việc này dưới máy chủ 64 bit trong WIN7 64bit OS không? công trình này trong XP ...
nhờ
lớn đã giải quyết được vấn đề – Oren