VBMAN.ToolsWindow - 窗口操作对象
概述
VBMAN.ToolsWindow 提供了 Windows 窗口操作功能,包括窗口置顶、切换、激活等。
方法
TopMost
设置窗口置顶状态
vb
Public Sub TopMost(ByVal hWnd As Long, Optional Cancel As Boolean)参数:
hWnd- 窗口句柄Cancel- 是否取消置顶(默认 False,即设置为置顶)
示例:
vb
' 设置当前窗体置顶
VBMAN.ToolsWindow.TopMost Me.hWnd
' 取消置顶
VBMAN.ToolsWindow.TopMost Me.hWnd, TrueSwitchToThis
切换到指定窗口
vb
Public Sub SwitchToThis(ByVal hWnd As Long, Optional IsAltTab As Boolean = True)参数:
hWnd- 窗口句柄IsAltTab- 是否模拟 Alt+Tab 切换(默认 True)
示例:
vb
' 切换到记事本
Dim hWnd As Long
hWnd = FindWindow("Notepad", vbNullString)
If hWnd <> 0 Then
VBMAN.ToolsWindow.SwitchToThis hWnd
End IfActiveForm
强制激活窗口(模拟 Alt 键绕过限制)
vb
Public Sub ActiveForm(ByVal hWnd As Long)参数:
hWnd- 窗口句柄
说明:
- 通过模拟 Alt 键按下绕过系统限制
- 建议在
Form_LostFocus事件中使用,可实现永不失焦效果
示例:
vb
' 在 Form_LostFocus 事件中强制保持焦点
Private Sub Form_LostFocus()
VBMAN.ToolsWindow.ActiveForm Me.hWnd
End Sub
' 激活指定窗口
VBMAN.ToolsWindow.ActiveForm hWnd综合示例
示例1: 置顶窗口
vb
Private Sub CheckTopMost_Click()
If CheckTopMost.Value = vbChecked Then
VBMAN.ToolsWindow.TopMost Me.hWnd
CheckTopMost.Caption = "取消置顶"
Else
VBMAN.ToolsWindow.TopMost Me.hWnd, True
CheckTopMost.Caption = "窗口置顶"
End If
End Sub示例2: 切换并激活窗口
vb
Private Sub BringWindowToFront()
' 查找窗口(需要声明 FindWindow API)
Dim targetHwnd As Long
targetHwnd = FindWindow(vbNullString, "目标窗口标题")
If targetHwnd <> 0 Then
' 先切换
VBMAN.ToolsWindow.SwitchToThis targetHwnd
' 再激活
VBMAN.ToolsWindow.ActiveForm targetHwnd
Else
MsgBox "未找到目标窗口"
End If
End Sub示例3: 模态窗口效果
vb
Private Sub ShowModalEffect()
' 禁用主窗体
Me.Enabled = False
' 显示子窗体
Form2.Show
' 确保子窗体在最前
VBMAN.ToolsWindow.TopMost Form2.hWnd
End Sub
' 在 Form2 关闭时恢复
Private Sub Form2_Unload(Cancel As Integer)
Form1.Enabled = True
VBMAN.ToolsWindow.TopMost Form1.hWnd, True
End Sub最佳实践
- 慎用强制激活:
ActiveForm会强制夺取焦点,可能影响用户体验 - 检查句柄: 操作前检查窗口句柄是否有效
- 置顶使用: 置顶窗口应提供明显的取消置顶方式
- 资源释放: 程序退出前取消置顶,避免残留状态