字符串明明相等,为什么不对呢????????????????
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 GetForegroundWindow Lib "user32" () As Long
Dim strTitle As String * 255 '用来存储窗口的标题
Private Sub Command1_Click() '第一种
GetWindowText hwnd, strTitle, Len(strTitle)
Print strTitle
If strTitle = "Form1" Then
MsgBox "相等"
End If
End Sub
明明 strTitle = Form1 为什么不相等?
如果我改为下面的例子就相等,怎么回事???????
Private Sub Command1_Click() '第二种
GetWindowText hwnd, strTitle, Len(strTitle)
Print strTitle
If strTitle = "Form1" Then
MsgBox "相等"
End If
Text1.Text = strTitle
Text2.Text = "Form1"
If Text1.Text = Text2.Text Then
MsgBox "相等2"
End If
End Sub
[解决办法]
Form1 当然不等于 "Form1"
类型都不一样
[解决办法]
应为你的strTitle 是定长字符串
其实实际里面的内容为 "Form1" & chr(0)... & chr(0) & chr(0) 而已
但你的 Text2.Text 却是 "Form1" ,没有后面的 chr(0)
所以通常处理这种东西需要这样处理
GetWindowText hwnd, strTitle, Len(strTitle)
rd = GetWindowTextLength(hwnd)
strTitle=Left(strTitle,rd)
[解决办法]
看你自己的定义: Dim strTitle As String * 255
"Form1"才5个字符, 当然不会相等.
[解决办法]
问题在于你都strTitle是255长度的定长字符串,而"Form1"不是,两者长度都不相等,那又何来相等?