如果语句在 vb6 中不起作用
If statement not working in vb6
我想制作一个程序,可以在 vb6 中关闭标题为 "Personalization" 的 window。问题是if语句不是working.Here的我的代码(它只找到一个名为"Personalization"的window而不关闭它):
Option Explicit
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub
Private Sub Timer1_Timer()
Dim hwnd As Long, lenght As Long
Dim title As String
hwnd = GetForegroundWindow
lenght = GetWindowTextLength(hwnd)
title = Space$(lenght + 1)
GetWindowText hwnd, title, lenght + 1
title = Mid(title, 1, lenght + 1)
t.Text = title
t.SelStart = Len(t.Text)
If title = "Personalization" Then End
End Sub
虽然我点击了 "Personlization" window 并且我可以在文本框中看到它的标题,但最后一个条件不起作用。
以下是 if 语句的工作原理:
if t.text="Personalization" then end
那么为什么第一个示例中的 if 语句不起作用?对不起我的错误(这不是我的原始语言)。
您的 Mid()
陈述是错误的。第三个参数需要是 length - 1
而不是 length + 1
以去除空终止符:
title = Mid(title, 1, length - 1)
由于您没有去除空终止符,因此您的 title
变量本身实际上并不包含 "Personalization"
,因此您的比较失败了。您的文本框看起来是正确的,因为分配 Text
属性 最终会导致文本框接收 WM_SETTEXT
消息,该消息将空终止字符串作为输入,因此忽略任何额外的空值。
更好的选择是使用 GetWindowText()
的 return 值代替,即 true 长度复制到 title
minus空终止符:
Private Sub Timer1_Timer()
Dim hwnd As Long, lenght As Long
Dim title As String
hwnd = GetForegroundWindow
lenght = GetWindowTextLength(hwnd) + 1
title = Space$(lenght)
lenght = GetWindowText(hwnd, title, lenght)
title = Mid(title, 1, lenght)
t.Text = title
t.SelStart = Len(t.Text)
If title = "Personalization" Then
' ...
End If
End Sub
我想制作一个程序,可以在 vb6 中关闭标题为 "Personalization" 的 window。问题是if语句不是working.Here的我的代码(它只找到一个名为"Personalization"的window而不关闭它):
Option Explicit
Private Sub Command1_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub
Private Sub Timer1_Timer()
Dim hwnd As Long, lenght As Long
Dim title As String
hwnd = GetForegroundWindow
lenght = GetWindowTextLength(hwnd)
title = Space$(lenght + 1)
GetWindowText hwnd, title, lenght + 1
title = Mid(title, 1, lenght + 1)
t.Text = title
t.SelStart = Len(t.Text)
If title = "Personalization" Then End
End Sub
虽然我点击了 "Personlization" window 并且我可以在文本框中看到它的标题,但最后一个条件不起作用。
以下是 if 语句的工作原理:
if t.text="Personalization" then end
那么为什么第一个示例中的 if 语句不起作用?对不起我的错误(这不是我的原始语言)。
您的 Mid()
陈述是错误的。第三个参数需要是 length - 1
而不是 length + 1
以去除空终止符:
title = Mid(title, 1, length - 1)
由于您没有去除空终止符,因此您的 title
变量本身实际上并不包含 "Personalization"
,因此您的比较失败了。您的文本框看起来是正确的,因为分配 Text
属性 最终会导致文本框接收 WM_SETTEXT
消息,该消息将空终止字符串作为输入,因此忽略任何额外的空值。
更好的选择是使用 GetWindowText()
的 return 值代替,即 true 长度复制到 title
minus空终止符:
Private Sub Timer1_Timer()
Dim hwnd As Long, lenght As Long
Dim title As String
hwnd = GetForegroundWindow
lenght = GetWindowTextLength(hwnd) + 1
title = Space$(lenght)
lenght = GetWindowText(hwnd, title, lenght)
title = Mid(title, 1, lenght)
t.Text = title
t.SelStart = Len(t.Text)
If title = "Personalization" Then
' ...
End If
End Sub