【问题标题】:Get a process window size without borders获取无边框的进程窗口大小
【发布时间】:2012-03-04 19:37:01
【问题描述】:

使用 WinApi GetWindowRect() 它返回完整的窗口大小,但我想获得没有边框和标题栏的大小,类似于红色方块:

有什么功能可以做到这一点?

谢谢

【问题讨论】:

    标签: c# winapi


    【解决方案1】:

    您要查找的 Windows API 函数是 GetClientRect。如果您随后需要将这些坐标转换为屏幕相对坐标,请致电ClientToScreen

    【讨论】:

    • 我尝试调用 ClientToScreen,但它返回一个 Point,我需要获取 Rect 值,所以我可以看到它从顶部/底部/右侧/左侧开始的坐标,GetClientRect 只返回高度/宽度,而不是真正的 Rect
    • 一个矩形被定义为两个点。左上角和右下角。对于客户端矩形,左上角始终为 (0,0)。调用ClientToScreen 两次,对定义矩形的两个点各调用一次,您现在拥有在屏幕坐标中定义矩形的两个点。
    • 所以基本上我必须计算值并设置一个 Rect 以供使用? ClientToScreen 正在返回一个疯狂的值,例如 X=1.18831764296032E-312 和 Y=0,窗口句柄是正确的,因为它已用于其他运行良好的功能,我是否应该做一些不同的事情来使用 ClientToScreen 获得这一点?
    • 您的代码显然是错误的。坐标是整数。这里应该没有浮点值。
    • 是的,我的错,我创建的是 Windows.Point 而不是 Drawing.Point。无论如何,它返回左上角,但我怎样才能得到右下角?调用 ClientToScreen 两次只会将我的点值增加 2 倍
    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多