Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.144.197] |
|
Сообщ.
#1
,
|
|
|
Как в ЧУЖОМ окне найти, например, компонент типа TEDIT, прочитать из него текст и записать в файл?
Если это возможно и вы знаете как это сделать, прошу помочь мне... |
Сообщ.
#2
,
|
|
|
что бы найти почитай про EnumChildWindows, ну или можно и без него, подумай....
ну или если влом то попробуй вот так (просматриваем все дочерние окна рекурсивно, если нашли класс у которого в имени есть edit, то подключаем поток этого окна и читаем оттуда текст.... вот и все) вызываеться надо с handle родителького окна <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> ну вот нашли...... ...удачи |
Сообщ.
#3
,
|
|
|
а да самое главное забыл....т.е. вырезал
текст получили после sendMessage..... его можно помотреть как string(buf) ....... |
Сообщ.
#4
,
|
|
|
Найти дочернее окно - FindWindowEx(), GetWindow()
Прочитать: WM_GETTEXT, WM_COPY Показать: ShowMessage(String(Buf)); |