他のアプリケーションのフォーカスがあるウィンドウのハンドルを取得
タイトルの通り、他のアプリケーションのフォーカスがあるウィンドウ(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はさわったことも無いです(爆)