如何找到聚焦窗口高度&宽度..
它可能是任何窗口,如记事本,mspaint等... 我可以借助这段代码获得焦点窗口
[DllImport("user32")]
public static extern IntPtr GetForegroundWindow();
你好f3lix它正在工作,但它的返回值只取决于位置..如果我改变位置它会返回一些其他值
Kunal它的返回错误消息....像对象引用未设置
答案 0 :(得分:7)
我认为你必须通过PInvoke使用user32.dll函数。我不确定,但我会这样做:
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", SetLastError = true)]
static extern bool GetWindowRect(IntPtr hWnd, out Rectangle lpRect);
Rectangle rect = new Rectangle();
GetWindowRect(GetForegroundWindow(), out rect);
注意:我没有尝试这段代码,因为我目前没有在Windows上工作......
修改强>: Rory向我指出(见注释)我们不能在这里使用标准的Rectangle,我们需要定义自己的RECT。
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int Left;
public int Top;
public int Right;
public int Bottom;
}
不要忘记在第一段代码中用 RECT 替换 Rectangle 。
答案 1 :(得分:1)
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
public static Size GetControlSize(IntPtr hWnd)
{
RECT pRect;
Size cSize = new Size();
// get coordinates relative to window
GetWindowRect(hWnd, out pRect);
cSize.Width = pRect.Right - pRect.Left;
cSize.Height = pRect.Bottom - pRect.Top;
return cSize;
}
答案 2 :(得分:0)
如果您正在构建MDI应用程序,则可以使用:
parentForm.ActiveMDIChild.Size
答案 3 :(得分:0)
你究竟是什么问题?
如果问题2,请使用Window.ActualWidth
和Window.ActualHeight
答案 4 :(得分:0)
本文将帮助您找到活动的应用程序窗口:
答案 5 :(得分:0)
如果你的窗口在你的应用程序中,有一个MDI应用程序,你可以使用它, 有
public static extern IntPtr GetForegroundWindow();
和你一起试试这个
int wHeight = Control.FromHandle(GetForegroundWindow()).Height;
int wWidth = Control.FromHandle(GetForegroundWindow()).Width;