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

Вниз

Работа с МЕМО чужого окна и имитация клика или 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.013 c
1-1155732581
TAS
2006-08-16 16:49
2006.10.01
Проблема с RichEdit


2-1158056617
dest81
2006-09-12 14:23
2006.10.01
*.odb


15-1157989615
Cyrax
2006-09-11 19:46
2006.10.01
Тонкости языка C++


2-1157883999
_Vitaly_
2006-09-10 14:26
2006.10.01
Почта


15-1157952168
Ega23
2006-09-11 09:22
2006.10.01
С Днём рождения! 11 сентября





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский