Текущий архив: 2004.05.30;
Скачать: CL | DM;
Внизвыделенный текст в чужом окне Найти похожие ветки
← →
esVer © (2004-04-15 14:04) [0]Не подскажет ли уважаемое сообщество, как получить выделенный текст в чужом окне?
Найти активное окно и в нем активное дочернее окно - получается. А вот получить выделенный текст в нём - проблема :((
← →
BlackTr (2004-04-15 14:16) [1]WM_GETTEXT
← →
Игорь Шевченко © (2004-04-15 14:26) [2]EM_GETSELTEXT ?
← →
esVer © (2004-04-15 14:49) [3]Это всё опробовано.
Вариант 1)
var
h : hWnd;
st : string;
...
SetLength(st, SendMessage(h, WM_GETTEXTLENGTH, 0, 0)+1);
SendMessage(h, WM_GETTEXT, length(st), Integer(PChar(st)));
SetLength(st, lStrLen(PChar(st)));
Получаем текст из простых TEdit и TMemo, но пролетаем со всякими нестандартными контролами :(
Вариант 2)
var
h : hWnd;
st : string;
CharRange: TCharRange;
i : integer;
...
SendMessage(h, EM_EXGETSEL, 0, Longint(@CharRange));
SetLength(st, CharRange.cpMax - CharRange.cpMin + 1);
i:=SendMessage(h, EM_GETSELTEXT, 0, Longint(PChar(st)));
SetLength(st, i);
Тут вообще засада... Ничего не получаю, а иногда вылазит "Out of memory" :(
Вариант 3)
Использовать WM_COPY, в этом случае можно получить текст из некоторых нестандартных контролов, но не всех :(, да и к тому же буфер затирается...
← →
BlackTr (2004-04-15 15:06) [4]А с нестандартных вообще по идее нельзя получить.
Вариант 4) Делать снимок экрана и разбирать графику :))
← →
Игорь Шевченко © (2004-04-15 15:10) [5]esVer © (15.04.04 14:49)
Так никто не говорит, что из любого окна можно получить выделенный текст...
← →
esVer © (2004-04-15 15:14) [6]Ребята, я всё понимаю, но есть программы (всякие разные там перекодировщики), которые этот текст таки получают, из тех самых окон, из которых я получить не могу :(
Значит как-то можно?
И еще про вариант 2: код вроде бы брал из richedit.pas, а работать не хочет. Где я не прав?
← →
BlackTr (2004-04-15 16:18) [7]А эти перекодировщики, скорее всего работают по методу Copy&Paste.
Вар 2 как бы только для RichEdit :)
MSDN:The EM_EXGETSEL message retrieves the starting and ending character positions of the selection in a rich edit control.
← →
esVer © (2004-04-15 16:25) [8]
> А эти перекодировщики, скорее всего работают по методу Copy&Paste.
возможно, но буфер обмена не портится, хотя, может они его восстанавливают.
> Вар 2 как бы только для RichEdit :)
м.б., но при проверке на редакторе Bred, класс окна RichEdit, а срабатывает вариант EM_GETSEL + WM_GETTEXT и никаких EM_EXGETSEL не надо...
← →
VMcL © (2004-04-15 16:28) [9]>>esVer © (15.04.04 15:14) [6]
Они глобальный хук WH_KEYBOARD ставят.
Страницы: 1 вся ветка
Текущий архив: 2004.05.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.037 c