![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Найти позицию каретки в системеDelphi , ОС и Железо , Мышка и КурсорНайти позицию каретки в системе
Оформил: DeeCo function GetCaretPosition(var APoint: TPoint): Boolean; var w: HWND; aID, mID: DWORD; begin Result:= False; w:= GetForegroundWindow; if w <> 0 then begin aID:= GetWindowThreadProcessId(w, nil); mID:= GetCurrentThreadid; if aID <> mID then begin if AttachThreadInput(mID, aID, True) then begin w:= GetFocus; if w <> 0 then begin Result:= GetCaretPos(APoint); Windows.ClientToScreen(w, APoint); end; AttachThreadInput(mID, aID, False); end; end; end; end; //Small demo: set cursor to active caret position procedure TForm1.Timer1Timer(Sender: TObject); var Pt: TPoint; begin if GetCaretPosition(Pt) then begin ListBox1.Items.Add(Format('Caret position is %d %d', [Pt.x, Pt.y])); SetCursorPos(Pt.X, Pt.Y); end; end; Программный код на Delphi, предназначенный для обнаружения текущей позиции курсора (т.е., местоположения курсора) в системе Windows и отображения ее в списке. Вот разбивка того, что код делает:
В процедуре демонстрации ( Альтернативное решение могло бы быть использовать функцию
В этом случае вам не нужно было бы привязывать и отключать потоки, потому что функция В статье описывается функция GetCaretPosition для определения позиции каретки в системе, а также пример ее использования в приложении на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Мышка и Курсор ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |