На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Найдем в чужом окне?
    Как в ЧУЖОМ окне найти, например, компонент типа TEDIT, прочитать из него текст и записать в файл?
    Если это возможно и вы знаете как это сделать, прошу помочь мне...
      что бы найти почитай про EnumChildWindows, ну или можно и без него, подумай....

      ну или если влом то попробуй вот так

      (просматриваем все дочерние окна рекурсивно, если нашли класс у которого в имени есть edit, то подключаем поток этого окна и читаем оттуда текст.... вот и все)

      вызываеться надо с handle родителького окна

      ExpandedWrap disabled
        <br><br>procedure findEditText(h:HWND);<br>  var<br>     buf:array[0..255] of char;<br>     dwTargetOwner:dword;<br>     dwThreadID:dword;<br>     result:longbool;<br>  begin<br>        h:=getWindow(h,GW_CHILD);<br>        while h<>0 do<br>          begin<br>               getClassName(h,buf,sizeOf(buf));<br>               if pos('EDIT',upperCase(string(buf)))<>0 then<br>                 begin<br>                      dwTargetOwner:=getWindowThreadProcessID(getForegroundWindow,nil);<br>                      dwThreadID:=getCurrentThreadID();<br>                      if (dwTargetOwner<>dwThreadID) then <br>                              result:=attachThreadInput(dwThreadID,dwTargetOwner, TRUE);<br>                      sendMessage(h,WM_GETTEXT,sizeOf(buf),lparam(@buf));<br>                      if result then attachThreadInput(dwThreadID, dwTargetOwner, FALSE);<br>                 end;<br>               findEditText(h);<br>               h:=getWindow(h,GW_HWNDNEXT);<br>          end;<br>   end;<br><br>

      ну вот нашли......
      ...удачи
        а да самое главное забыл....т.е. вырезал :)
        текст получили после sendMessage..... его можно помотреть как string(buf)

        .......
          Найти дочернее окно - FindWindowEx(), GetWindow()
          Прочитать: WM_GETTEXT, WM_COPY
          Показать: ShowMessage(String(Buf));
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0184 ]   [ 16 queries used ]   [ Generated: 2.05.24, 03:29 GMT ]