0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 1
1

Не отрабатывают методы IHTMLElement в лямбде

13.07.2015, 14:44. Показов 1027. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
while (cont)
{
    client.request(request).then([&](http_response response)
    {
        if (response.status_code() == status_codes::OK)
        {                   
            buttonUp->click();              
        }
    }).wait();
}
ButtonUp - это указатель на IHTMLElement, полученный через COM объект InternetExplorer.Application. Ни один метод через него не отрабатывает, хотя ошибок никаких не возникает. Все отрабатывает тихо и спокойно, только клика не происходит.

За пределами лямбды отрабатывает на ура. Может я как-т не так передаю этот указатель, или еще что-то нужно передать?

Добавлено через 3 часа 40 минут
UPDATE
Посмотрел что именно возвращает click(). Сначала ничего не возвращал - писал что не вызван CoInitialize. Хотя я его вызываю в самом начале main. После того как добавил еще раз CoInitialize внутрь лямбды появилась вот такая ошибка E_WRONG_THREAD The application called an interface that was marshalled for a different thread. Я так понимаю, что нужно дать понять лямбде, что я уже вызывал CoInitialize, но я понятия не имею как это сделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2015, 14:44
Ответы с готовыми решениями:

Внесение текста в IHTMLElement
Пробовал так: VARIANT varIn; varIn.vt=VT_BSTR; varIn.bstrVal=strText.AllocSysString();...

Вызов сигнала в лямбде
Здравствуйте. Может кто-нибудь объяснить, почему подобный код выполняется без проблем, ...

Обращение к private полю в лямбде
Добрый день, почему лямбда имеет доступ к private полю класса через его константный указатель? ...

Как дождаться завершения IHtmlElement::Click() C#
Появилась следующая проблемка: Загружаю в WebBrowser страничку, заполняю в ней поля логина и...

1
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,413
14.07.2015, 10:22 2
попробуйте
C++
1
CoInitializeEx(0, COINIT_MULTITHREADED)
вроде как инициализация требуется в каждом потоке (хотя у меня проходило и без вызова CoInitialize в функции потока)
как вариант - избавьтесь от блямбы
0
14.07.2015, 10:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2015, 10:22
Помогаю со студенческими работами здесь

Как установить фокус на элементе типа IHTMLElement
Как установить фокус на элементе типа IHTMLElement? Пробовал IHTMLElement.Click(), не помогло....

Как найти в IHTMLElement дочерние элементы по тэгу id
Как найти в IHTMLElement дочерние элементы по тэгу id и тд.. В Windows Forms у HTMLElement был...

FadeIn() и fadeOut() не отрабатывают с Bootstrap
Приветствую знатоки... Столкнулся с такой проблемой. Уже вторые сутки сижу и пытаюсь заставить...

В font-face отрабатывают не все шрифты
Здравствуйте возникла такая проблема, через font-face почему-то отрабатывают не все шрифты. Шрифты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru