调用API返回GetLastWin32Error错误码 : 183
请教一个问题:如题,我在Win10专业版本,x64的电脑上运行我的软件,我的软件需经常频繁调用以下函数:
[PermissionSet(SecurityAction.Assert, Name = "FullTrust")]
private static void SendMouseInput(int x, int y, int data, NativeMethods.SendMouseInputFlags flags)
{
try
{
PermissionSet permissions = new PermissionSet(PermissionState.Unrestricted);
permissions.Demand();
int intflags = (int)flags;
if ((intflags & (int)NativeMethods.SendMouseInputFlags.Absolute) != 0)
{
// Absolute position requires normalized coordinates.
NormalizeCoordinates(ref x, ref y);
intflags |= NativeMethods.MouseeventfVirtualdesk;
}
NativeMethods.INPUT mi = new NativeMethods.INPUT();
mi.type = NativeMethods.InputMouse;
mi.union.mouseInput.dx = x;
mi.union.mouseInput.dy = y;
mi.union.mouseInput.mouseData = data;
mi.union.mouseInput.dwFlags = intflags;
mi.union.mouseInput.time = 0;
mi.union.mouseInput.dwExtraInfo = new IntPtr(0);
//mi.union.mouseInput.dwExtraInfo = FindWindow("OpusApp", null);
Thread.Sleep(50);
WriteLog.WriteLogPack("mouseInput.dwFlags鼠标事件 : " + intflags);
if (NativeMethods.SendInput(1, ref mi, Marshal.SizeOf(mi)) == 0)
{
WriteLog.WriteLogPack("GetLastWin32Error错误码 : " + Marshal.GetLastWin32Error());
WriteLog.WriteLogPack("SendMouseInput异常信息 : " + new Win32Exception(Marshal.GetLastWin32Error()));
//throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
catch (Exception ex)
{
WriteLog.WriteLogPack("SendMouseInput : " + ex.ToString());
MessageBox.Show(ex.Message);
}
}
有调用API函数如下:
[DllImport("user32.dll", SetLastError = true)]
internal static extern int SendInput(int nInputs, ref INPUT mi, int cbSize);
在360安全卫士没有打开(即已经退出)的时候此API是正常执行的,一旦打开360安全卫士
就NativeMethods.SendInput(1, ref mi, Marshal.SizeOf(mi)) == 0成立,
日志打印的GetLastWin32Error错误码 :183。SendMouseInput异常信息 :System.ComponentModel.Win32Exception
(0x80004005): 当文件已存在时,无法创建该文件。
不知道是什么原因导致的,请大神们解答一下。