1

我在网上找到了这段代码,但我不知道如何使用它。我只想构建一个在所需窗口处于活动状态时将执行的代码。

这是我读到的关于我的研究的 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 个窗口打开的情况下,如果记事本获得焦点,它将在消息框上显示记事本,当用户将焦点更改到另一个窗口时,消息框将自动显示非记事本消息。

4

0 回答 0