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のタイトルが知りたいです。

例えば、

If "title of the window on focus" = "notepad" Then
   MsgBox("notepad")
Else
   MsgBox("not notepad")
End If

また、2 つのウィンドウが開いている場合、メモ帳がフォーカスされている場合はメッセージ ボックスにメモ帳が表示され、ユーザーがフォーカスを別のウィンドウに変更すると、メッセージ ボックスにメモ帳ではないというメッセージが自動的に表示されます。

4

0 に答える 0