Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

Работа с текстом в чужих окнах   Найти похожие ветки 

 
Ajax ©   (2003-07-30 09:42) [0]

Пишу плагин к своей проге, который будет исправлять неправильно введенный текст (вУДЗРШ-Delphi). Написал функцию, которая получает выделенный текст из активного окна.

Function GetTextSelected(Wnd:hwnd):string;
var P: PChar;
StartPos, EndPos, x, NumOfEnter: Integer;
begin
NumOfEnter:=0;
Result:="";
SendMessage(Wnd, EM_GETSEL, Longint(@StartPos), Longint(@EndPos));
if EndPos-StartPos<=0 then exit;
P:= StrAlloc(SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0) + 1);
SendMessage(wnd, WM_GETTEXT,StrBufSize(P), Longint(p));
if length(p)<=0 then exit;
for x:=1 to StartPos do
if (p[x]=chr(13)) or (p[x]=chr(10)) then inc(NumOfEnter);
Result:=copy(p,StartPos+NumOfEnter,EndPos-StartPos+NumOfEnter);
StrDispose(P);
end;

Проблема в том, что это работает только для Edit"ов, а допустим в том же Word"е - нет. Вот и думаю, как с этим справится? Можно еще использовать wm_copy-wm_paste, но тогда нужно сохранять и восстанавливать буфер обмена, а этим заниматься как-то лень.

Что посоветуете?


 
chs2r ©   (2003-07-30 10:10) [1]

перехватывай нажатия клавиш, сохраняй в буфер, потом по пробелу там или по Enter сверяй


 
Ajax ©   (2003-07-30 11:38) [2]

>chs2r © (30.07.03 10:10)
>перехватывай нажатия клавиш, сохраняй в буфер, потом по пробелу там или по Enter сверяй

Либо я тебя не понимаю, либо ты меня...


 
XAMLO   (2003-07-31 01:30) [3]

Он тебя не понимает. Я понял но как это сделать не знаю.
самому бы было интересно


 
Ajax ©   (2003-07-31 09:05) [4]

Сейчас разбираюсь с вариантом использования буфера обмена... Кажется на "красивость" решения можно даже не надеятся :-(



Страницы: 1 вся ветка

Текущий архив: 2003.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
14-4094
KPY
2003-09-14 07:10
2003.10.02
Примеры занимательных алгоритмов


3-3708
vidiv
2003-08-28 14:01
2003.10.02
Если ли компонент для работы с MySql?


1-3856
Брат
2003-09-19 09:53
2003.10.02
Как активизировать открытое дочернее окно?


1-3974
dataMaster
2003-09-19 10:53
2003.10.02
Как (или где) поймать изменение вводимых Items


14-4105
Knight
2003-09-13 21:06
2003.10.02
& n b s p ; и другие...