VB怎么用API函数获得其他窗口的宽高和屏幕位置
时间: 2024-10-07 22:08:24 浏览: 14
在VB (Visual Basic) 中,你可以使用 `Win32 API` 函数来获取其他窗口的宽度、高度以及屏幕位置。以下是一些相关的函数示例:
1. 获取窗口大小 (`GetWindowRect` 或 `GetClientRect`):
```vbnet
Public Declare Function GetWindowRect Lib "user32.dll" (ByVal hWnd As Integer, ByRef lpRect As RECT) As Boolean
' RECT 结构体定义了窗口的左上角和右下角坐标
Private Structure RECT
Public Left As Long
Public Top As Long
Public Right As Long
Public Bottom As Long
End Structure
Dim rect As RECT
If GetWindowRect(hWndToCheck, rect) Then
Dim width As Long = rect.Right - rect.Left
Dim height As Long = rect.Bottom - rect.Top
' Do something with width and height
End If
```
2. 获取窗口相对于屏幕的位置 (`GetWindowPlacement`):
```vbnet
Public Declare Function GetWindowPlacement Lib "user32.dll" (ByVal hWnd As Integer, lpwndpl As WINDOWPLACEMENT) As Integer
Private Structure WINDOWPLACEMENT
Public length As Integer
Public flags As Integer
Public showCmd As Integer
' hwndInsertAfter 和 ptMinTrackPos 不用于此场景
Public ptMaxTrackSize As POINT
Public ptMaximizedScreenSize As POINT
Public ptMinTrackSize As POINT
Public ptPosition As POINT
End Structure
Dim wp As WINDOWPLACEMENT
If GetWindowPlacement(hWndToCheck, wp) And wp.showCmd <> SW_HIDE Then
Dim left As Integer = wp.ptPosition.X
Dim top As Integer = wp.ptPosition.Y
' Do something with left and top
End If
```
其中 `hWndToCheck` 是你要查询的窗口句柄。记得引用 "user32.dll" 库,并确保程序有相应的权限访问其他窗口的信息。