当我将以下行添加到代码中时
[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo);
并根据Microsoft 基本正确性规则运行代码分析,我收到 CA1901 警告。 基本上,它提示第四个参数 int extraInfo 在 32 位平台上工作正常,但在 64 位平台上需要 64 位整数类型。
当我将代码修改为 long extraInfo 时,满足了 64 位平台要求,但 32 位平台需要 32 位整数。
如何在不抑制警告的情况下解决这个困境?
最佳答案
通过使用 IntPtr这是特定于平台的类型,用于表示指针或句柄:
[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, IntPtr extraInfo);
关于.NET 可移植性警告 : CA1901 PInvoke Declarations Should Be Portable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784082/