获取外部窗口的客户端大小的vb.net

时间:2014-08-12 15:38:48

标签: vb.net winapi

我目前正在使用GetWindowRect来获取外部窗口的大小和位置(一个不在我的vb.net应用程序中),因为我希望在此外部窗口上覆盖我的应用程序,但是,我不会&#39 ;我希望我的应用程序覆盖外部窗口的标题栏或边框。我会为此使用静态值,但如果用户使用不同的主题,则不再有效。

如何找到外部窗口的边框大小和标题栏大小?

我目前正在使用此代码覆盖我的应用程序(这也会覆盖标题栏)

<DllImport("user32.dll")> _
Private Shared Function GetWindowRect(ByVal hWnd As HandleRef, ByRef lpRect As RECT) As Boolean
End Function

Dim hr As New HandleRef(Process.GetProcessById(HS), Process.GetProcessById(HS).MainWindowHandle)
Dim Size As RECT
GetWindowRect(hr, Size)
Me.SetDesktopLocation(Size.X, Size.Y)
Me.Size = New Size(290, Size.Height)

1 个答案:

答案 0 :(得分:2)

使用GetClientRect()代替GetWindowRect()获取窗口客户区(不包含标题栏和边框的区域)的相对坐标,然后使用{{3}将这些相对坐标转换为绝对屏幕坐标,然后您可以根据需要定位应用程序。