Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2008, 19:09   #1
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию Получить содержимое Memo в чужой программе.

Вообщем, есть многострочное текстовое поле. Причем в этом текстовом поле(в конце текста) мигает индекатор курсора, хотя редактировать и как-то менять его нельзя. Подскажите, как получить содержимое этого поля? Или, хотя бы, последнюю строчку.

Последний раз редактировалось Иллидан; 25.04.2008 в 19:32.
Иллидан вне форума Ответить с цитированием
Старый 25.04.2008, 19:25   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

memo1.Lines - содержимое твоего поля
memo1.Lines[memo1.Lines.Count-1] - последняя строчка
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 25.04.2008, 19:29   #3
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Цитата:
memo1.Lines - содержимое твоего поля
memo1.Lines[memo1.Lines.Count-1] - последняя строчка
Не моего многострочного поля, чужого. В смысле, поля какой-нибудь сторонней программы. Извиняюсь, что не уточнил.
Иллидан вне форума Ответить с цитированием
Старый 26.04.2008, 13:37   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Тема уже обсуждалась.
Если вам это нужно один раз, то воспользуйтесь программой http://s0m.narod.ru/iws.html
Или смотрите здесь http://www.programmersforum.ru/showthread.php?t=9066 был готовый пример
_Dmitry вне форума Ответить с цитированием
Старый 26.04.2008, 19:05   #5
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Обсуждалось не совсем то. Мне надо получить текст Memo, в котором мигает курсор. Больше ничего о нем неизвестно.
Иллидан вне форума Ответить с цитированием
Старый 26.04.2008, 19:09   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Иллидан Посмотреть сообщение
Обсуждалось не совсем то. Мне надо получить текст Memo, в котором мигает курсор. Больше ничего о нем неизвестно.
Значит надо получить его HWND через GetFocus.
B_N вне форума Ответить с цитированием
Старый 26.04.2008, 21:46   #7
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Цитата:
Значит надо получить его HWND через GetFocus.
А как это работает?

А почему у меня по таймеру не работает такой код?
label1.caption:=inttostr(GetFocus);
Как только окно моей программы теряет фокус ввода(я открываю файл блокнотом -курсор стоит в нем), у меня caption становится равным нулю, а не хандлу окна блокнота?
Иллидан вне форума Ответить с цитированием
Старый 26.04.2008, 21:50   #8
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Потому, что мышка уже какбы не принадлежит к твоей форме. Это тоже самое, что вводить текст в другую форму и получить этот текст в первой без Hook'a.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 26.04.2008, 22:37   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Иллидан Посмотреть сообщение
А как это работает?

А почему у меня по таймеру не работает такой код?
label1.caption:=inttostr(GetFocus);
Как только окно моей программы теряет фокус ввода(я открываю файл блокнотом -курсор стоит в нем), у меня caption становится равным нулю, а не хандлу окна блокнота?
Потому, что я не заметил Ваш предыдущий пост
Цитата:
В смысле, поля какой-нибудь сторонней программы.

GetFocus возвращает что-то разумное только если окно с фокусом принадлежит данному потоку. Сделайте так:
Код:
	HWND hFocusWnd = ::GetFocus();
	if(!hFocusWnd){
		GUITHREADINFO ti;
		HWND hFGWindow = ::GetForegroundWindow();
		DWORD dwFGThread = GetWindowThreadProcessId(hFGWindow, NULL);
		if(dwFGThread){
			RtlZeroMemory(&ti, sizeof GUITHREADINFO);
			ti.cbSize = sizeof GUITHREADINFO;
			GetGUIThreadInfo(dwFGThread, &ti);
			hFocusWnd = ti.hwndFocus;
		}
	}
B_N вне форума Ответить с цитированием
Старый 29.04.2008, 14:16   #10
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

А можно это по дельфийский переписать? Просто, не очень я разбираюсь в API и не знаю, что такое GUITHREADINFO.
Иллидан вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление компонентами(видимыми и невидиммыми) в чужой программе(любой) Alter Win Api 21 13.05.2009 23:13
как получить чужой комп в свои руки zetrix Безопасность, Шифрование 7 13.11.2008 16:32
Как имея хендл на Memo получить выделенный в нем текст? hoza_syl Помощь студентам 2 23.05.2008 17:06
Как получить содержимое папки ? - fenix - Помощь студентам 4 19.04.2008 06:25
открытие документа в чужой программе joker Win Api 2 22.10.2007 16:59