VB 屏蔽窗体的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 20:40:51
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) 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

Const WM_Close = &H10
Dim mhwnd As Long, str As String

Private Sub Timer1_Timer()
str = Space(255)
mhwnd = GetForegroundWindow()

GetWindowText mhwnd, str, 256

If str = "QQ用户登录" Then
SendMessage mhwnd, WM_Close, 0, 0
End If
End Sub
我想屏蔽QQ登录窗体,但我这些程序不知道是哪里错了。我想了好一半天还不找不出来哪里错了,望高手指点,谢谢~!!!!

只要修改一处就行:
Private Sub Timer1_Timer()
str = Space(256)
mhwnd = GetForegroundWindow()
GetWindowText mhwnd, str, 256
str = Replace(Trim(str), Chr(0), "")'修改部分
If str = "QQ用户登录" Then
SendMessage mhwnd, WM_Close, 0, 0
End If
End Sub

给你几个参考问题设想:同时交给你几个调试方法!
1.问题可能出在str与"QQ用户登陆"不符合。一般这样子的代码不要过于绝对,要有一点模糊程度。(注意 有空格问题,因为str是定长的 所以一定长度为256,其余部分空格填充)。这个是设想,那么调试代码(注意:是调试代码不是最终代码,这个代码只是为了找出问题所在)就是这样的:
Private Sub Timer1_Timer()
str = Space(255)
mhwnd = GetForegroundWindow()

GetWindowText mhwnd, str, 256
debug.print "Now ForeWindow Title is """";str;""""
If str = "QQ用户登录" Then
SendMessage mhwnd, WM_Close, 0, 0
End If
End Sub

这样运行后你可以看到标题其实有空格。
所以解决代码如下:
if instr(1,str,"QQ用户登陆")<>0 then '找到有关内容了
SendMessage mhwnd, WM_Close, 0, 0
End If