Страница: 1 |
Есть работающая программа с определеным интерфейсом, из которого надо получить различные надписи. Ранее я легко делал это с помощью API зная hwnd окна. Public Function GetText(wHwnd As Long) As String Сейчас столкнулся с такой проблемой, что с помощью этого вижу все про нужное окно Thread, TaskID, Hwnd, Class, ParentClass и Hwnd кроме свойства Text . Проще говоря, я не могу узнать программно, что на этом окне написано. Класс этого окна TPanel. Про TPanel есть информация тут http://scrooge.donetsk.ua/CHMHelp/SC_TAL/tPanel.htm и там упоминается GetCaption. Тут, как я понимаю, надо иметь под рукой этот самый объект, инстанс класса TPanel. Только, как вот его захватить, если он находится в другой работающей программе. Или может есть другие, более продвинутые функции API для определения Text объектов класса NPanel?
Страница: 1 |
Вопрос: Помогите с API
Добавлено: 02.06.04 09:18
Автор вопроса: Malyav | Web-сайт:
Dim retval As Long
Dim TrimSpace As String
retval = SendMessageByNum(wHwnd, WM_GETTEXTLENGTH, 0&, 0&)
TrimSpace = Space$(retval)
retval = SendMessageByString(wHwnd, WM_GETTEXT, retval + 1, TrimSpace)
GetText = TrimSpace
End Function
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 03.06.04 00:45
Поищи в прошлом форума... там это должно быть... LamerOnLine отвечал... там кажись что надо...
Хотя что тут надо лично мне понять сложно
Номер ответа: 2
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #2
Добавлено: 03.06.04 05:10
Скорее всего там содержится текст по другому адресу чем в стандартных контролах. И получить его можно используя его внутренние API.
Номер ответа: 3
Автор ответа:
Malyav
ICQ: 8440085
Вопросов: 15
Ответов: 117
Web-сайт:
Профиль | | #3
Добавлено: 03.06.04 09:39
Первый раз слышу про внутренние API. Что за такие? Где про них почитать можно?
Номер ответа: 4
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #4
Добавлено: 05.06.04 17:11
SendMessageByNum и SendMessageByString <- а вот этого делать не надо. Зачем мксорить? SendMessage она и в Африке SendMessage.
retval = SendMessageByString(wHwnd, WM_GETTEXT, retval + 1, TrimSpace)
Я думаю что у этого контрола есть свой аналог WM_GETTEXT. Какой нибудь TPanel_GETTEXT.
К примеру сообщение WM_GETTEXT не возвращаяет текст для списков. Для него нужно использовать сообщение LB_GETTEXT. То есть текст получается не стандартным, а специфичным для контрола сообщением.
Хотя и это может быть не верно. Потому как TPanel это средство отображение TTable, то и искать текст нужно в его списках.
А вообще, лучше поспрашивай в форумах по Delphi. Здесь мало кто его знает.