我在网上找到了这段代码,但我不知道如何使用它。我只想构建一个在所需窗口处于活动状态时将执行的代码。
这是我读到的关于我的研究的 API,
<DllImport("USER32.DLL", EntryPoint:="GetActiveWindow", SetLastError:=True,
CharSet:=CharSet.Unicode, ExactSpelling:=True,
CallingConvention:=CallingConvention.StdCall)>
Public Shared Function GetActiveWindowHandle() As System.IntPtr
End Function
<DllImport("USER32.DLL", EntryPoint:="GetWindowText", SetLastError:=True,
CharSet:=CharSet.Unicode, ExactSpelling:=True,
CallingConvention:=CallingConvention.StdCall)>
Public Shared Function GetActiveWindowText(ByVal hWnd As System.IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
End Function
他用这个来获取文本,
Dim caption As New System.Text.StringBuilder(256)
Dim hWnd As IntPtr = GetActiveWindowHandle()
GetActiveWindowText(hWnd, caption, caption.Capacity)
MsgBox(caption.ToString)
我把那个代码放进去,form_load()
但它没有显示任何东西。就像什么都没发生一样。我应该把它放在哪里或如何使它工作。我想获取窗口标题并将其放在If
语句中。我还发现了一些使用此代码的程序员:
Dim hWnd As IntPtr = GetForegroundWindow()
我只想确定焦点窗口,获取文本并将其放入If
语句中。您能否进一步简化此代码。FOCUS 窗口和 ACTIVE 窗口有什么区别?我猜 ACTIVE 是打开的窗口,但 FOCUS 是用户唯一使用的窗口。我想知道FOCUS one的标题。
例如,
If "title of the window on focus" = "notepad" Then
MsgBox("notepad")
Else
MsgBox("not notepad")
End If
在有 2 个窗口打开的情况下,如果记事本获得焦点,它将在消息框上显示记事本,当用户将焦点更改到另一个窗口时,消息框将自动显示非记事本消息。