我在网上找到了这个代码,但我不知道如何使用它。我只想构建一个代码,如果所需的窗口处于活动状态,它将执行。
这是关于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的标题。
例如,
If "title of the window on focus" = "notepad" Then
MsgBox("notepad")
Else
MsgBox("not notepad")
End If
如果有2个窗口打开,如果记事本被聚焦,它将在消息框上显示记事本,当用户将其焦点更改为另一个窗口时,消息框将自动显示非记事本消息。