Я пытаюсь получить высоту и ширину окна, используя это:
[DllImport("User32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
private static extern bool GetWindowRect(IntPtr handle, out Rectangle rect);
private void timer1_Tick(object sender, EventArgs e)
{
Rectangle bonds = new Rectangle();
GetWindowRect(GetForegroundWindow(), out bonds);
Bitmap bmp = new Bitmap(bonds.Width, bonds.Height);
Graphics memoryGraphics = Graphics.FromImage(bmp);
IntPtr dc = memoryGraphics.GetHdc();
PrintWindow(GetForegroundWindow(), dc, 0x1);
memoryGraphics.ReleaseHdc(dc);
bmp.Save("C:\\Test.gif", ImageFormat.Gif);
}
, но bond.width и height больше, чем реальное окно.
Пример: мое окно имеет размер 100x150, bond.height составляет 400, а bond.width - как 500. Я получаю изображение размером 400x500, которое состоит из окна в углу изображенияхорошо), а остальное чёрное, так как картинка намного больше окна (что плохо)
ПРИМЕЧАНИЕ: мне все равно, что окно без аэродинамики, это хорошо для меня.* Таким образом, любое предложение, или, возможно, лучший способ получить регион?