Сейчас на форуме: asfa (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Помогите плиз, копаюсь в чужих окнах.
Посл.ответ Сообщение

Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 июля 2010 04:58
· Личное сообщение · #1

Мы имеем чужое окно, я нахожу в его хендл, нахожу хендл панельки в этом окне, и нахожу на нем такой компонет как TRichViewEdit.

теперь мне нужно считать текст который там находиться...

трюки подобные SendMessage(h4,WM_GETTEXT,255,integer(@buffer[1]));
никак не проходят, в buffer помещается пустая строчка...

вот скрин


После хендлов TRichViewEdit (отмечены желтым) должны идти строчки с этих компонентов, но как видно там одни тире...

помогите плиз...

Если вы отвечаете на эту тему, пожалуйста, не пишите:
"Такое уже задавалось много раз"
"это было в другой теме"
"гугль в помощь"

Если это было в другой теме, в ней содержиться ответ на данный вопрос, и автор темы сказал "ура, работает" тогда можно обозвать меня и тыкнуть на эту тему. но если эта тема умерла без ответа, то ненадо меня отправлять на нее. нужен ответ который работает





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 07 июля 2010 10:14 · Поправил: Coderess
· Личное сообщение · #2

Приведи весь код, проверяешь результат? верно ли находятся дескрипторы?

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 июля 2010 13:16
· Личное сообщение · #3

Code:
  1. h1:=FindWindow ('TTestMenu', nil);
  2. h2:= FindWindowEx(h1, 0, 'TCnvsPanel', nil);
  3. h3:= FindWindowEx(h2, 0, 'TBrdrPanel', nil);
  4. repeat
  5. h3:= FindWindowEx(h2, h3, 'TBrdrPanel', nil);
  6. h5:= FindWindowEx(h3, 0, 'TRichViewEdit', nil);
  7.  //SendMessage(h5,WM_LBUTTONDOWN,0,0); // это для проверки, все TRichViewEdit, реагируют на эти сообщения.
  8.  //SendMessage(h5,WM_LBUTTONUP,0,0);
  9.  edit6.Text:=inttostr(h4);
  10.  edit7.Text:=inttostr(h5);
  11.  SendMessage(h5,WM_GETTEXT,255,integer(@buffer[1]));
  12.  memo1.Lines.add(inttostr(h4)+'-'+inttostr(h5)+'-'+buffer);
  13. until h5=0;


Вот код



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 07 июля 2010 15:18
· Личное сообщение · #4

Сообщениями выделяй весь текст в TRichViewEdit и кидай его в буфер обмена



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 июля 2010 17:11
· Личное сообщение · #5

tihiy_grom, я недопонял =)) как?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 07 июля 2010 17:24
· Личное сообщение · #6

А лень сорцы погуглить? В сторону EM_SETSEL и вообще сообщений и работы с RichView?



Ранг: 40.4 (посетитель), 3thx
Активность: 0.080
Статус: Участник

Создано: 07 июля 2010 20:33
· Личное сообщение · #7

Значит так, проверить, пойман ли RichEdit проверяем функцией EnableWindow(handle, false), если вырубится, то все ок. А получить текст оттуда, SendMessage(handle,WM_GETTEXT, 0, Cardinal(PChar(StringValue)); должно помочь



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 июля 2010 03:45
· Личное сообщение · #8

Archer, я гуглил все что можно, но как правило, там везде тоже отправляют в гугл, никто четкого ответа не дает.
ZLOvar, EnableWindow(handle, false) отлично работает, а вот SendMessage(handle,WM_GETTEXT, 0, Cardinal(PChar(StringValue)); не хочет реагировать никак...




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 июля 2010 08:41
· Личное сообщение · #9

Надо отправить пару несчастных сообщений, 1 из которых я дал как ключевое слово. На первой же странице в гугле можно найти ответы, если есть голова на плечах, тем более, что ключевые слова уже дали.
Хотя бы www.delphipages.com/forum/showthread.php?t=50807&page=3
В следующий раз за такие приколы буду банить и надолго.



Ранг: 40.4 (посетитель), 3thx
Активность: 0.080
Статус: Участник

Создано: 08 июля 2010 10:54
· Личное сообщение · #10

А зачем тебе, собственно, SendMessage? Есть ведь отличная функция-заглушка GetWindowText или GetDlgItemText.



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 июля 2010 14:56
· Личное сообщение · #11

Archer спасибо конечно, но с выделением текста, и копированием его в буфер, это не вариант. Извини, забыл упамянуть, что этот Rich не позволяет выделять и редактировать текст. он выступает скорее как лейбл, на который можно только нажимать.

и сколько раз я не пытался с выделением, не получается. единственное что работало, это когда я открывал эту прогу через олю, затирал проверочку на возможность редактирования, потом, сам в ручную
(EM_SETSEL что-то и тогда не хотел работать) выделял текст, и вот тогда WM_COPY срабатывало. но меня это никак не устраивает... тогда уж лучше PrintScreen + fineReader =))

ZLOvar, вот это интересненько, можно по подробней? =))




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 09 июля 2010 15:10
· Личное сообщение · #12

Это что же у тебя за софт такой волшебный, где ничего не работает? Выкладывай тогда софтину.



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 июля 2010 15:43
· Личное сообщение · #13

Вот программа: www.multiupload.com/85ZVBJO38F
Мне нужно читать вопросы + ответы, в режиме тестирования =))




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 09 июля 2010 16:13
· Личное сообщение · #14

StanisLove пишет:
Мне нужно читать вопросы + ответы, в режиме тестирования =))

[16:04:45] <@BoRoV> хотя в таких случаях дучше отреверсить сам алго чтения файдов-вопросов, или базы с результатами
[16:05:50] <@BoRoV> я такую прогу на правктике в этом году от реверсил, в очень многих школах по всеё стране у нас проводят на ней тестирование, я ради интереса решил глянуть...
[16:06:22] <@BoRoV> написал читалку файлов-вопросов, с выводом правильных ответов, и редактор базы результатов


тебе лучше в эту сторону копать

-----
Лучше быть одиноким, но свободным © $me




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 июля 2010 16:20
· Личное сообщение · #15

BoRoV спасибо за советы, но проблем с правильными ответами нет =))

мне нужно вытаскивать вопросы во время тестирования =)



Ранг: 40.4 (посетитель), 3thx
Активность: 0.080
Статус: Участник

Создано: 09 июля 2010 20:44
· Личное сообщение · #16

StanisLove пишет:
вот это интересненько, можно по подробней? =))

Это стандартные АПИ функции для работы с текстом из чужих окон. Пример:
GetWindowText(handle, 'Text', 1);, GetDlgItemText(handle, int_nIDDlgItem, lpString, 1);




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 09 июля 2010 22:06 · Поправил: BoRoV
· Личное сообщение · #17

ZLOvar пишет:
GetWindowText(handle, 'Text', 1);

Во-первых, как ты прочтешь в константу
во-вторых, с длниой 1 ты ничего не прочтешь вообще, кроме нультерминируещего символа

з.ы. ZLOvar какая-то бредовая у тебя статья!

-----
Лучше быть одиноким, но свободным © $me




Ранг: 40.4 (посетитель), 3thx
Активность: 0.080
Статус: Участник

Создано: 10 июля 2010 00:06
· Личное сообщение · #18

BoRoV пишет:
Во-первых, как ты прочтешь в константуво-вторых, с длниой 1 ты ничего не прочтешь вообще, кроме нультерминируещего символа

Я просто привел пример.

BoRoV пишет:
ZLOvar какая-то бредовая у тебя статья!

Кому как, она ведь на новичков была ориентирована. Я её щас сам читаю, немного не то конечно.



Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2010 11:21
· Личное сообщение · #19

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




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 10 июля 2010 11:26
· Личное сообщение · #20

забить?!

если ты говоришь, что ответы знаешь, тогда зачем это тебе?

-----
Лучше быть одиноким, но свободным © $me




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2010 11:49
· Личное сообщение · #21

Что бы искался вопрос в базе, и правильные ответы помечались =))




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 10 июля 2010 11:52
· Личное сообщение · #22

пропатч базу, чтоб все ответы были правильные

-----
Лучше быть одиноким, но свободным © $me




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2010 11:57
· Личное сообщение · #23

не, база моя, с правильными ответами =)) суть такова, запускаем тест, он выдает нам вопрос, мы его прогой считываем с Rich, ищем в базе на него ответ, и правильные ответы в тесте помечаем =))




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 10 июля 2010 12:00
· Личное сообщение · #24

так ты выступаешь в роли проверяющего, или в роли сдающего?

-----
Лучше быть одиноким, но свободным © $me




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2010 12:08
· Личное сообщение · #25

в данный момент в роли сдающего.
это как подсказка в тесте. не знаю я ответ на вопрос. запустил программку свою, она считала вопрос, и показала ответы =)




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 10 июля 2010 12:20
· Личное сообщение · #26

как варианты:

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

2) ну предположительно там вопросы выбираются по рандому, если он инициализируется не через рандомайз, а какой-то конкретной переменой, то можешь перехватить её, и можешь сделать прогу помощника, которая будет выбирать по такой же схеме вопросы с базы, и при надобности выводить правильный ответ

-----
Лучше быть одиноким, но свободным © $me




Ранг: 2.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 июля 2010 13:23
· Личное сообщение · #27

BoRoV заинжекти длл - мммм. для меня такое рано
ну на счет 2 варианта, можно попробовать. Спасибо за советы, благодарен.

надеюсь еще кто-нибудь откликнется, поможет кодом, вопрос всё еще открыт.




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 10 июля 2010 14:25
· Личное сообщение · #28

Попробуй поставить хук на оконную процедуру нужного TRichViewEdit. Проверяй в нём сообщения EM_SETSEL, WM_COPY, WM_GETTEXT и отпровляй их на стандартную обработку. Далее всё как описывалось выше.

-----
Следуй за белым кроликом



 eXeL@B —› Вопросы новичков —› Помогите плиз, копаюсь в чужих окнах.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати