Как найти то окно, которое поле ввода внутри окна верхнего уровня? Активное окно я найду, а как внутри него найти то место, где текстовый курсор, если вообще неизвестно заранее, ни какого он класса, ни ещё чего
Пока ищу просто окно из под курсора:
- Код: Выделить всё
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Const WM_CHAR = &H102
Dim hw2 As Long
Private Sub Form_Click()
SendMessage hw2, WM_CHAR, &H3A9, 0 'условно - посылаю в текстовый редактор нужную букву
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim p As POINTAPI, hw As Long
GetCursorPos p
hw = WindowFromPoint(p.X, p.Y)
If hw <> hwnd Then
Caption = hw
hw2 = hw
End If
End Sub
Но, во-первых, хотелось бы найти автоматически. Ну то есть, получить то окно, в котором был курсор до того, как фокус оказался у меня.
А во-вторых, способ прокатывает на блокноте, но не работает, например, с вордом
(или не то окно находится, или оно этого сообщения не принимает)