<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2928992</guid>
        <pubDate>Wed, 06 Jul 2011 15:26:13 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2928992</link>
        <description><![CDATA[Krid: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924693'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2011-07-01T09:55:56+04:00">01.07.11, 05:55</time></span><div class='quote '>Какой смысл пробовать вызывать GetWindowText для эдита чужого приложения, если он 100% вернет не реальный&#092;текущий текст эдита, а лишь то, что попало в WindowName при его создании?&#33;</div></div><br>
Да, sorry. Брал кусок из одной своей ф-ции и лишний код зацепил. Конечно, GetWindowText тут не нужна.<br>
Код поправил.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924704'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>WinApi &#064; <time class="tag-quote__quoted-time" datetime="2011-07-01T06:11:43+00:00">01.07.11, 06:11</time></span><div class='quote '>смотри ка, работает </div></div><br>
Работает, если чужая прога не зависла. А если зависла, то зависнет и твоя, потому как будет до посинения ждать возврата из SendMessage. Так что тут лучше юзай SendMessageTimeOut (как в посте #4).]]></description>
        <author>Krid</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2925412</guid>
        <pubDate>Fri, 01 Jul 2011 18:22:24 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2925412</link>
        <description><![CDATA[Rouse_: <div class="tag-ex"><div class="tag-ex__prefix">!</div><div class="tag-ex__body">По поводу упомянутой &#34;горячей дискуссии&#34; - не советую обоим, особенно товарищу <strong class='tag-b'>kero_xmemor</strong> продолжать общение в том-же духе, как было в изначальной теме.<br>
Пока что устное предупреждение.</div></div>]]></description>
        <author>Rouse_</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924735</guid>
        <pubDate>Fri, 01 Jul 2011 07:19:56 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924735</link>
        <description><![CDATA[kero_xmemor: leo<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>см.&quot;горячую&quot; дискуссию на тему &quot;чего не договаривает мсдн, или как ее читать между строк&quot;</div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Spy++ юзает GetWindowText и соотв-но всегда показывает текст из WindowName, который для дельфийских эдитов = тому, что было задано в инспекторе объектов. А вот вызов SendMessage(..,WM_GETTEXT,..) для обычного&#092;нормального эдита должен выдавать его текущий текст</div></div><br>
упомянутая <em class='tag-i'>&quot;горячая&quot; дискуссия</em> подсказывает, что у вас 6 версия Spy++, - это так? :)<br>
ибо после 6 (7...10) - Spy++ использует именно SendMessage(WM_GETTEXT)<br>
<br>
попутно и насчет &quot;чего не договаривает мсдн, или как ее читать между строк&quot;: <br>
случай Джефри Рихтера (поначалу выбрал для Spy++ GetWindowText) вполне иллюстрирует ситуацию с мсдн :)]]></description>
        <author>kero_xmemor</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924704</guid>
        <pubDate>Fri, 01 Jul 2011 06:11:43 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924704</link>
        <description><![CDATA[WinApi: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>А вот вызов SendMessage(..,WM_GETTEXT,..) для обычного&#092;нормального эдита должен выдавать его текущий текст </div></div><br>
смотри ка, работает ))  :good:]]></description>
        <author>WinApi</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924693</guid>
        <pubDate>Fri, 01 Jul 2011 05:55:56 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924693</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924667'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Krid &#064; <time class="tag-quote__quoted-time" datetime="2011-07-01T02:15:54+00:00">01.07.11, 02:15</time></span><div class='quote '>-- GetWindowText вообще читает текст окна из какой-то своей (одной ей известной) области памяти. Туда же, кстати SetWindowText пишет. Соотв-но, можно получить совсем не то, что ожидается.</div></div><br>
Эта &quot;область&quot; хранит название (заголовок&#092;caption&#092;title) окна - lpWindowName, переданное в CreateWindow(Ex). Поэтому, если бы не &quot;притянутые за уши&quot; эдит-контролы, хранящие свой текст отдельно от названия окна, то указанные функции (или хотя бы ф-ю <a class='tag-url' href='http://msdn.microsoft.com/en-us/library/ms633523(v=VS.85).aspx' target='_blank'>InternalGetWindowText</a>) было бы правильнее назвать Get&#092;SetWindowName (или Caption&#092;Title) - см.&quot;горячую&quot; <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=293473&view=findpost&p=2492712' target='_blank'>дискуссию</a> на тему &quot;чего не договаривает мсдн, или как ее читать между строк&quot;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924667'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Krid &#064; <time class="tag-quote__quoted-time" datetime="2011-07-01T02:15:54+00:00">01.07.11, 02:15</time></span><div class='quote '>Попробуй так</div></div><br>
Какой смысл пробовать вызывать GetWindowText для эдита чужого приложения, если он 100% вернет не реальный&#092;текущий текст эдита, а лишь то, что попало в WindowName при его создании?&#33;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924566'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>WinApi &#064; <time class="tag-quote__quoted-time" datetime="2011-06-30T15:47:37+00:00">30.06.11, 15:47</time></span><div class='quote '>но если я в процессе работы программы что-то напишу в этит spy++ все равно показывает то что было изначально и WM_GETTEXT тоже</div></div><br>
Spy++ юзает GetWindowText и соотв-но всегда показывает текст из WindowName, который для дельфийских эдитов = тому, что было задано в инспекторе объектов. А вот вызов SendMessage(..,WM_GETTEXT,..) для обычного&#092;нормального эдита должен выдавать его текущий текст]]></description>
        <author>leo</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924667</guid>
        <pubDate>Fri, 01 Jul 2011 02:15:54 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924667</link>
        <description><![CDATA[Krid: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924587'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Fr0sT &#064; <time class="tag-quote__quoted-time" datetime="2011-06-30T16:30:40+00:00">30.06.11, 16:30</time></span><div class='quote '>Она используется, только если диалог загружен из ресурса</div></div><br>
:no: <br>
Вообще, нет никакой разницы между окнами, загруженными из ресурса и созданными динамически. Все они в итоге создаются одинаково - регистрация класса с оконной процедурой + CreateWindow(Ex) + цикл обработки сообщений. Включая всяких &quot;зверей&quot; типа суперклассированных и message-only окон. <br>
<br>
Получить текст (он же заголовок) окна можно через WM_GETTEXT или GetWindowText. А для дочерних (не top-level) окон - ещё и через GetDlgItemText, поскольку любое такое окно имеет свой CtrlID (тот самый &quot;идентификатор элемента управления&quot;), получаемый через GetDlgCtrlID.<br>
<br>
Но часто бывает (особенно для Edit&#39;ов), что взять текст окна, который отображается на экране просто не получится:<br>
-- обработчик WM_GETTEXT в оконной процедуре может по запросу отослать совсем другой текст (скажем, пустую строку).<br>
-- GetWindowText вообще читает текст окна из какой-то своей (одной ей известной) области памяти. Туда же, кстати SetWindowText пишет. Соотв-но, можно получить совсем не то, что ожидается. <br>
-- GetDlgItemText тоже часто возвращает только то, что получила от SetDlgItemText (т.е., опять получаем не то, что хотим).<br>
<br>
Подробности <a class='tag-url' href='http://blogs.msdn.com/b/oldnewthing/archive/2003/08/21/54675.aspx' target='_blank'>тут</a>.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924602'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>WinApi &#064; <time class="tag-quote__quoted-time" datetime="2011-06-30T16:54:50+00:00">30.06.11, 16:54</time></span><div class='quote '>а как же тогда получить текст? </div></div><br>
Попробуй так<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">function WindowGetText(wnd:HWND):string;</div><div class="code_line">var</div><div class="code_line">&nbsp;szText:array[0..MAX_PATH-1] of Char;</div><div class="code_line">&nbsp;dw:Cardinal;</div><div class="code_line">begin</div><div class="code_line">&nbsp;Result:=&#39;&#39;;</div><div class="code_line">&nbsp;if ((SendMessageTimeOut(wnd,WM_GETTEXT,MAX_PATH,Cardinal(@szText),SMTO_ABORTIFHUNG,5000,dw) &#60;&#62; 0)</div><div class="code_line">&nbsp;and (dw&#60;&#62;0)) then Result:=szText;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Krid</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924602</guid>
        <pubDate>Thu, 30 Jun 2011 16:54:50 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924602</link>
        <description><![CDATA[WinApi: а как же тогда получить текст?]]></description>
        <author>WinApi</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924587</guid>
        <pubDate>Thu, 30 Jun 2011 16:30:40 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924587</link>
        <description><![CDATA[Fr0sT: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=335130&view=findpost&p=2924566'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>WinApi &#064; <time class="tag-quote__quoted-time" datetime="2011-06-30T15:47:37+00:00">30.06.11, 15:47</time></span><div class='quote '>GetDlgItemText</div></div><br>
Она используется, только если диалог загружен из ресурса, это не твой случай]]></description>
        <author>Fr0sT</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924566</guid>
        <pubDate>Thu, 30 Jun 2011 15:47:37 +0000</pubDate>
        <title>Получить текст из Edit в чужом окне</title>
        <link>https://forum.sources.ru/index.php?showtopic=335130&amp;view=findpost&amp;p=2924566</link>
        <description><![CDATA[WinApi: мне нужно получить текст из edit в чужом окне. Попытаюсь объяснить, к примеру я кидаю на форму эдит в объект инспекторе в свойство text что-то пишу, компилирую, смотрю spy++ текст из этита видно его так же можно получить например посылая сообщения WM_GETTEXT, но если я в процессе работы программы что-то напишу в этит spy++ все равно показывает то что было изначально и WM_GETTEXT тоже. А мне надо именно возможность получить тот текст который на данный момент в эдите. Погуглил наткнулся на функцию GetDlgItemText, возможно это то что я ищу, но я не пойму что мне передать вторым параметром? что за идентификатор элемента управления, где его взять?]]></description>
        <author>WinApi</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      </channel>
      </rss>
	