トップにゃ〜てく>VB-1

他のアプリケーションのフォーカスがあるウィンドウのハンドルを取得
タイトルの通り、他のアプリケーションのフォーカスがあるウィンドウ(Formモジュールでなく、キャレットのあるTextbox等)のウィンドウハンドルを取得します
使い道としては SendMessage API と組み合わせて内容を書き換える事が出来ますが、私が実験してみた結果、Webページのフォームで作成されたテキストボックス (<INPUY TYPE="TEXT">)等は取得出来ませんでした(これが一番やりたかったのに…)

'標準モジュールにコピーして下さい
Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function GetFocus Lib "user32" () As Long
Declare Function GetForegroundWindow Lib "user32" () As Long

Function GetFocusWindow() As Long
  Dim ActiveThreadID
  Dim ActiveProcessID
  ActiveThreadID = GetWindowThreadProcessId(GetForegroundWindow, ActiveProcessID)
  If (AttachThreadInput(GetCurrentThreadId, ActiveThreadID, True)) Then
    GetFocusWindow = GetFocus
    AttachThreadInput GetCurrentThreadId, ActiveThreadID, False
  Else
    GetFocusWindow = GetFocus
  End If
End Function

このコードは細川@IMさんがDelphiで作成したものを私がVBに変えたものです
原文はここにあります。変数定義と代入部分しか変更してませんけど(^^;
ちなみにDelphiはさわったことも無いです(爆)

このページのトップへ