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

Вниз

Получение выделенного участка текста   Найти похожие ветки 

 
pavel_k   (2004-01-19 20:12) [0]

Когда пользователь в чужой программе выделяет фрагмент текста, мне нужно получить его (если пользователь нажал горячие клавиши). Хук на нажатие я поставить могу, а вот как получить выделенный фрагмент текста из чужого приложения???
ЗЫ Была идея просто послать этому чужому окну Ctrl+C и достать из буфера обмена, но это как-то не правильно.


 
ZenAS   (2004-01-19 21:33) [1]

Нужно виртуально нажать контрл-зэд(смотри в месной сравке) и вытащить из буфера обмена(там же).


 
Suntechnic ©   (2004-01-20 07:58) [2]

>ZenAS
Я бы, как пользователь, очень удивился, если бы какое-нибудь приложение без моего ведома начало в буфер обмена "гадить".

>pavel_k  
А сообщение EM_GETSEL использовать не пробовал? Только смотри с адресным пространством ничего не напутай.


 
pavel_k   (2004-01-20 16:29) [3]

>Suntechnic
От буфера обмена я отказался по вами указанной причине.

А как етот EM_GETSEL использовать? Послать активному окну? И как получить текст? В общем нужны подробности, на FAQ на сайте ничего про это сообщение нет, я тут нашел русский Help по WinApi, но он неполный там тоже ничего нет. Подскажите, плз.


 
Suntechnic ©   (2004-01-20 19:01) [4]

>pavel_k   (20.01.04 16:29) [3]
А как етот EM_GETSEL использовать? Послать активному окну? И как получить текст?


Посылать тому окну, где выделенный текст взять надо. Только учти, что это должен быть edit control. Как результат посылки сообщения получаешь начальную и конечную позицию выделения.

An application sends an EM_GETSEL message to get the starting and ending character positions of the current selection in an edit control.

EM_GETSEL  
wParam = (WPARAM) (LPDWORD) lpdwStart; // receives starting position
lParam = (LPARAM) (LPDWORD) lpdwEnd;   // receives ending position


Parameters

lpdwStart

Value of wParam. Points to a 32-bit value that receives the starting position of the selection. This parameter can be NULL.

lpdwEnd

Value of lParam. Points to a 32-bit value that receives the position of the first nonselected character after the end of the selection. This parameter can be NULL.



Return Values

The return value is a zero-based 32-bit value with the starting position of the selection in the low-order word and the position of the first character after the last selected character in the high-order word. If either of these values exceeds 65, 535, the return value is -1.

Remarks

In a rich edit control, if the selection is not entirely contained in the first 64K, use the message EM_EXGETSEL.


Затем получаешь из окна текст (GetWindowTextLength  & GetWindowText) и находишь в нём своё выделение.

Опять же обращаю Ваше внимание на то, что если текст находится в другом адресном пространстве, то необходимо ничего не напутать с передаваемыми адресами.



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
1-1079590631
Tornado
2004-03-18 09:17
2004.04.04
Распечатка Memo


6-1074086073
able
2004-01-14 16:14
2004.04.04
Сокеты


1-1079283255
Andy BitOff
2004-03-14 19:54
2004.04.04
Коммандная строка и/или не запуск второй копии.


6-1074348927
AlexC
2004-01-17 17:15
2004.04.04
Тестирование программ без сети


7-1074269828
Magician
2004-01-16 19:17
2004.04.04
Как ввести программно данные в поля входа в систему(Win2k).