Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Координаты" вводимого текста 
V
    Опции темы
SanLLIer
Дата 2.11.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



собственно стал вопрос определения "места" вводимого пользователем текста. т.е. мне надо отрисовать окошко рядом с введенным словом. но ввод происходит не в моей программе. т.е. пользователь может вводить текст в браузере/редакторе/еще где-то, а мне надо знать координаты теста, чтобы рядом вывести форму. 
буду рад идеям/подсказкам/куску кода smile
PM MAIL   Вверх
Amphiluke
Дата 2.11.2010, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: нет
Всего: 112



Киньте на форму таймер (Interval ≈ 100—500) с таким обработчиком:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Wnd: HWND;
  tId, pId: Cardinal;
  rc: TRect;
  pt: TPoint;
begin
  Wnd := GetForegroundWindow();
  if Wnd = Handle then Exit;
  tId := GetWindowThreadProcessId(Wnd, pId);
  AttachThreadInput(GetCurrentThreadId(), tId, True);
  Wnd := GetFocus();
  if Wnd = 0 then Exit;
  if not GetWindowRect(Wnd, rc) then Exit;
  if not GetCaretPos(pt) then Exit;
  Left := rc.Left + pt.X;
  Top := rc.Top + pt.Y + 15;
  AttachThreadInput(GetCurrentThreadId(), tId, False);
end;

Это лишь грубый пример. Если подойдет, доработайте сами. smile

Добавлено через 57 секунд
P.S. У формы, конечно, должно быть FormStyle:=fsStayOnTop.

Добавлено через 6 минут и 37 секунд
P.P.S. Если не нравится с таймером, можно установить Hook на «клаву» (домашнее задание  smile ).
PM   Вверх
SanLLIer
Дата 2.11.2010, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Спасибо. Работает) более того - то, что нужно.
PM MAIL   Вверх
SanLLIer
Дата 7.11.2010, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



Дабы не плодить темы напишу сюда, тем более тема является логическим продолжением предыдущего вопроса.
Собственно сабж: как удалить текст в "чужой" программе? Собственно нужно что-то на подобие Punto Switcher (замена текста). как реализовать? опять же буду рад  любым подсказкам  smile 
PM MAIL   Вверх
Snowy
Дата 9.11.2010, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



пунто просто стирает текст, эмулируя нажатие BackSpace, затем переключает язык и вводит его заново.
Эмуляцию нажатия клавиш найти не сложно - ключевое слово - keybd_event
PM MAIL   Вверх
SanLLIer
Дата 9.11.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 9.7.2008

Репутация: нет
Всего: нет



хех. так и хотел сделать, но думал, что есть более "умное" решение. спс
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.