Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
1-1079385275
Маришка
2004-03-16 00:14
2004.04.04
IE Toolbar


3-1078237098
marik
2004-03-02 17:18
2004.04.04
Нужна помощь по Fast Report


1-1079075042
Asdor
2004-03-12 10:04
2004.04.04
Некорректное поведение Delphi IDE или руки кривые?


14-1078940345
Тимохов
2004-03-10 20:39
2004.04.04
Где в электронном виде можно почитать книгу


7-1072072538
Ilkhom
2003-12-22 08:55
2004.04.04
Лицинзионные программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский