gpt4 book ai didi

c# - 获取窗口的区域

转载 作者:行者123 更新时间:2023-11-30 12:34:57 26 4
gpt4 key购买 nike

我正在尝试使用此获取窗口的高度和宽度:

    [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);
}

但 bonds.width 和 height 比真正的窗口要多。

示例:我的窗口是 100x150,bond.height 是 400,bond.width 是 500。我得到一张大小为 400x500 的图片,其中包含图片一角的窗口(很好)和其余的是黑色的,因为图片比窗口大得多(这很糟糕)

注意:我不在乎窗口是无空气的,这对我有好处。

那么有什么建议,或者更好的获取区域的方法吗?

最佳答案

您需要使用 ScreenToClient并翻译坐标。

GetWindowRect 返回相对于屏幕左上角的窗口区域 ( 0, 0 )。

关于c# - 获取窗口的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6418413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com