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

Вниз

Работа с МЕМО чужого окна и имитация клика или popup   Найти похожие ветки 

 
snikers ©   (2006-05-26 16:11) [0]

Привет мастера. Подскажите как можно в чужой программе найти мемо и считать с него все строки. Ответы "через handle " пожалуйста поясните... :-)
+ можно ли как-то зная компонент в чужом приложении сделать так, чтоб при двойном нажатии мыши на него DO SOMETHING.
Или может как-нибудь создать popup меню в чужой проге. Если есть хоть какие решения, поделитесь, пожалуйста.


 
snikers ©   (2006-05-27 02:27) [1]

неужели никто не может помочь хоть по одному вопросу?


 
n0name   (2006-05-27 05:47) [2]

Я писал вчера, но что то не отправилось :\

> Привет мастера. Подскажите как можно в чужой программе найти
> мемо и считать с него все строки.

Если мемо одно то FindWindow по классу и WM_GETTEXT.

> можно ли как-то зная компонент в чужом приложении сделать
> так, чтоб при двойном нажатии мыши на него DO SOMETHING.
>  

Сабклассинг, твой обработчик в контексте целевого процесса.


 
GrayFace ©   (2006-05-27 06:27) [3]

1) Handle родитель Memo получить с помощью FindWindow, само мемо - FindWndowEx или GetDlgItem или EnumChildWindows. Все нужное для этого получается из Spy++ (в комплекте с Visual Studio) или того чо с Delphi идет - не помню название. Если ID Memo не мняется от запуска к запуску, то можно GetDlgItem.
2) Слово для поиска - внедрение. Затем подменять оконную процедуру - SetWindowLong - и реагировать на WM_LBUTTONDBLCLK.


 
begin...end ©   (2006-05-27 06:35) [4]

> GrayFace ©   (27.05.06 06:27) [3]

> Handle родитель Memo получить с помощью FindWindow

А может, GetParent?


 
GrayFace ©   (2006-05-27 06:59) [5]

Нет, я о том, что вначале надо получить Handle родителя, чтобы добраться до Memo.


 
GrayFace ©   (2006-05-27 07:21) [6]

Popup создавать как всегда, далать то должна внедряемая dll.


 
snikers ©   (2006-05-27 10:44) [7]

[2]

> Сабклассинг, твой обработчик в контексте целевого процесса.

"сабклассинг", "в контексте целевого процесса" - если можно поподробнее, а то для меня это загадка..(пока что надеюсь):-)


> GrayFace ©   (27.05.06 06:27) [3]
если будет время - хоть немного кода на 2-й пункт


Ноя так и не понял, можно ли, зная handle мемо, записать в него весь текст(например из другого мемо, которое находится в моей проге). я в Api слабоват, пользуюсь просто DRKB и то мало чего понимаю, так что  извиняйте за непонимание.


 
n0name   (2006-05-27 11:18) [8]


> "сабклассинг"

MSDN, subclassing

> "в контексте целевого процесса"

Выделяешь память в чужом процессе(VirtualAllocEx) и записываешь туда свою WndProc(WruiteProcessMemory).


 
GrayFace ©   (2006-05-27 12:54) [9]

n0name   (27.05.06 11:18) [8]
> Выделяешь память в чужом процессе(VirtualAllocEx) и записываешь
> туда свою WndProc(WruiteProcessMemory).

Нет, это не для слабонервных.

http://www.soft32.ru/literature.shtml?topic=visual&book=1&page=head22.htm

Полный текст книги - http://mmp.flat-design.ru/rihter.zip

snikers ©   (27.05.06 10:44) [7]
> Ноя так и не понял, можно ли, зная handle мемо, записать
> в него весь текст(например из другого мемо, которое находится
> в моей проге). я в Api слабоват, пользуюсь просто DRKB и
> то мало чего понимаю, так что  извиняйте за непонимание.

Да. Это можно сделать после внедрения.


 
snikers ©   (2006-05-27 14:18) [10]

читал я статью... вобщем понял, что я это "внедрение" никогда не сделаю.
многому еще нужно учиться. может и нагло звучит, но может кто-нить сможет как-то попроще пояснить(а лучше написать:-))) функцию которая бы могла заменить текст в чужом мемо типа
function WriteText(MyMemo:Tmemo; OtherMemo:HWND):boolean;

жалко если нет способа попроще это сделать.


 
begin...end ©   (2006-05-27 15:20) [11]

Я извиняюсь, но для замены текста в чужом memo внедрения не требуется.


 
snikers ©   (2006-05-27 16:08) [12]


> [11]

класно. а что требуется. разве нельзя както послать собщение другому мемо, чтоб оно текст взяло с моего. ???


 
begin...end ©   (2006-05-27 16:14) [13]

> snikers ©   (27.05.06 16:08) [12]

Можно, конечно.

SendMessage(OtherMemo, WM_SETTEXT, 0, Integer(PChar(MyMemo.Text)))


 
snikers ©   (2006-05-27 18:33) [14]

а как ПРАВИЛЬНО организовать поиск мемо?
Тоесть искать все окна активного или неактивного приложения и как только найдено Tmemo и форма называется "Main" тогда [13]


 
n0name   (2006-05-27 18:36) [15]

Можешь по ID.
GetDlgItemID, если ему присвевается ID при создании(ему - дочернему окну).



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

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

Наверх




Память: 0.5 MB
Время: 0.054 c
3-1153825860
tomkat
2006-07-25 15:11
2006.10.01
FireBird Embeded в реализации


3-1153966630
Leshiy
2006-07-27 06:17
2006.10.01
Использование связки "таблица+ХП"


15-1157446949
Skier
2006-09-05 13:02
2006.10.01
9/11


15-1157893292
Колдун
2006-09-10 17:01
2006.10.01
Файловый менеджер


15-1157781176
syte_ser78
2006-09-09 09:52
2006.10.01
непонятное поведение sql запроса