Private Declare Function GetForegroundWindow Lib "user32" () As Long
'可以通過查看前景窗口是否為指定窗口判斷
hwd1 = FindWindow("#32770", "QQ用戶登錄")
'獲得指定窗口句柄
hwd2 = GetForegroundWindow
'獲得前景窗口句柄
If hwd1 = hwd2 Then MsgBox "指定窗口為活動狀態!"
'判斷是否相同
'可以通過ModifyMenu修改系統菜單來禁止移動,但並不適用所有窗體,有的窗體不具有系統菜單(BorderStyle=0)
'但通過子類化仍可以實現系統菜單具有的功能,新建窗體,添加command1,復制粘貼下段代碼
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Any) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const SC_MOVE = &HF010&
Private Const MF_BYCOMMAND = &H0&
Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Sub Command1_Click()
hwind = FindWindow("#32770", "QQ用戶登錄")
'獲取窗體句柄
hMenu = GetSystemMenu(hwind, False)
'獲取該窗體系統菜單句柄
ModifyMenu hMenu, SC_MOVE, MF_BYCOMMAND Or MF_GRAYED, -10, "禁止移動"
'設置移動菜單項不可用,並指定新ID為小於0的-10以防止系統重新加載該菜單,新標題為“禁止移動”,成功返回非0,失敗0
'ModifyMenu hMenu, -10, MF_BYCOMMAND + MF_ENABLED, SC_MOVE, "移動(&M)" '恢復移動菜單
SendMessage hwind, WM_NCACTIVATE, True, 0
'發送WM_NCACTIVE消息到指定窗體刷新非客戶區(標題欄)
End Sub