Мар 22

В чужой программе есть несколько хитрых окон.

Первое окно вроде бы стандартного класса ‘Internet Explorer_Server’
Второе окно видимо некого определенного пользовательского класса ‘afx:********’ где вместо звездочек цифры. Суть в том, что в google по имени класса ничего нету.

Нужно программным способом кроме хуков из этих окон вытащить текст.

В первом случае
Текст был вытащен с помощью следующего кода
public static IHTMLDocument2 IHTMLD2FromDescriptor(IntPtr pWnd)
{
UIntPtr lRes;
uint nMsg = RegisterWindowMessage(«WM_HTML_GETOBJECT»);
// получаем Lresult из дискриптора окна
if (SendMessageTimeout(pWnd, nMsg, UIntPtr.Zero, IntPtr.Zero,
SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 1000, out lRes) == IntPtr.Zero)
return null;
return (IHTMLDocument2)ObjectFromLresult(lRes,typeof(IHTMLDocument2).GUID, IntPtr.Zero);
}

Для второго окна данный способ не прокатывает.

Всякие GetWindowText, WM_GETTEXT тоже не катят. Пробовал не работает

Оптическое распознавание текста (англ. optical character recognition, OCR) – в принципе подходит. Но очень ресурсо емко и довольно сложно. Пока продолжаю искать более простой способ.

По описанию второго окошка. Текст в нем не выделяется с помощью мышки. Примерно с периодичностью раз в минуту изменяется.

Сейчас разбираюсь с com. А точнее вокруг AccessibleObjectFromWindow и IAccessible.
Ищу решение задачи. Как вытащить текст из второго окна.

Это данные spy++ по поводу второго окна
windows

Буду признателен за любую помощью

2 комментария на “Окна”

  1. Deimos сказал:

    Поток тупого сознания с грамматическими ошибками

  2. oracul сказал:

    покажи скрин окна

Оставить комментарий