Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net获取外部窗口的客户端大小_Vb.net_Winapi - Fatal编程技术网

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

vb.net获取外部窗口的客户端大小,vb.net,winapi,Vb.net,Winapi,我目前正在使用GetWindowRect获取外部窗口(不在我的vb.net应用程序中)的大小和位置,因为我希望将我的应用程序覆盖在此外部窗口上,但是,我不希望我的应用程序覆盖在外部窗口的标题栏或边框上。我会为此使用静态值,但如果用户使用不同的主题,这将不再有效 如何查找外部窗口的边框大小和标题栏大小 我目前正在使用此代码覆盖我的应用程序(也覆盖标题栏) _ 私有共享函数GetWindowRect(ByVal hWnd作为HandleRef,ByRef lpRect作为RECT)作为布尔值 端函数

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

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

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

_
私有共享函数GetWindowRect(ByVal hWnd作为HandleRef,ByRef lpRect作为RECT)作为布尔值
端函数
将hr设置为新句柄ref(Process.GetProcessById(HS)、Process.GetProcessById(HS).MainWindowHandle)
变暗尺寸为矩形
GetWindowRect(小时、大小)
Me.SetDesktopLocation(大小.X,大小.Y)
Me.Size=新尺寸(290,尺寸.高度)
使用而不是
GetWindowRect()
获取窗口客户端区域(不包括标题栏和边框的区域)的相对坐标,然后使用将这些相对坐标转换为绝对屏幕坐标,然后根据需要将应用程序定位在其中

<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)