Я использую некоторые DllImports
в приложении wpf
для захвата экрана.Я звоню GetWindowRect
в user32.dll
.Для этого требуется структура rect
, переданная ему.Расположение структуры имеет значение, так как это собственный вызов.
Я пробую VS 2019 Предварительный просмотр 2, который дает мне предупреждения, которых я раньше не видел.Все поля в rect
генерируют одно и то же предупреждение:
CA1051 Do not declare visible instance fields
В остальной части кода я исправил это, превратив поле в свойство, добавив {get; set;} к этому.Я не знаю, смогу ли я безопасно сделать это в структуре, где макет имеет значение.
Rect также дает мне предупреждение, что я должен переопределить Equals.
CA1815 Rect should override Equals.
CA1815 Rect should override the equality (==) and inequality (!=) operators.
Я никогда не сравниваю это, хотя и определенноне нужно, я просто хочу исправить предупреждение.
public static class NativeMethods
{
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
public static IntPtr _GetForegroundWindow()
{
return GetForegroundWindow();
}
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetDesktopWindow();
public static IntPtr _GetDesktopWindow()
{
return GetDesktopWindow();
}
//Am unable to get code analysis to shut up about this.
[DllImport("user32.dll")]
private static extern int GetWindowRect(IntPtr hWnd, ref Rect rect);
public static IntPtr _GetWindowRect(IntPtr hWnd, ref Rect rect)
{
return (IntPtr)GetWindowRect(hWnd, ref rect);
}
}
[StructLayout(LayoutKind.Sequential)]
public struct Rect
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
Как я могу исправить эти предупреждения?