获取焦点窗口标题并在if语句中使用它

时间:2013-04-26 00:33:11

标签: vb.net if-statement window

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

这是关于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个窗口打开,如果记事本被聚焦,它将在消息框上显示记事本,当用户将其焦点更改为另一个窗口时,消息框将自动显示非记事本消息。

0 个答案:

没有答案