Structure GUITHREADINFO
Public cbSize As Integer
Public flags As Integer
Public hwndactive As Integer
Public hwndFocus As Integer
Public hwndCapture As Integer
Public hwndMenuOwner As Integer
Public hwndMoveSize As Integer
Public hwndcaret As Integer
Public rcCaret As RECT
End Structure
Structure RECT
Public Left As Integer
Public Top As Integer
Public Right As Integer
Public Bottom As Integer
End Structure
Public Declare Function GetGuiThreadInfo Lib "user32" Alias "GetGUIThreadInfo" (ByVal idThread As Integer, ByRef lpgui As GUITHREADINFO) As Integer
Public Declare Function GetWindowRect Lib "User32" Alias "GetWindowRect" (ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Integer
' получение структуры активного окна
Dim gui As New GUITHREADINFO
gui.cbSize = Marshal.SizeOf(gui)
GetGuiThreadInfo(0, gui)
MsgBox(gui.rcCaret.Left & "-" & gui.rcCaret.Top) ' получение координат в поле ввода
Dim hk As IntPtr = gui.hwndcaret
Dim r As New RECT
GetWindowRect(hk, r)
MsgBox(r.Left & "-" & r.Top) ' получение экранных координат самой каретки
Shurrik писал(а):Она дает номер строки и номер символа в строке, которые нельзя перевести в координаты экрана, потому что текст не обязательно пропорциональный, плюс вертикальный и горизонтальный бегунки.
Shurrik писал(а):На функцию GetCaretPos наталкивался, но она не дает координат на экране.
Shurrik писал(а):Жаль, что автору проблему не удалось решить в VB.NET.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7