Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов скрипта в отдельном потоке 
:(
    Опции темы
SL555
Дата 18.10.2006, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.7.2006

Репутация: нет
Всего: нет



Здравствуйте есть такая проблем пытаюсь вызвать скрип на html страничке вот код вызова скрипта

Код

void CDHTMLSpyView::OnCallscript2(OLECHAR* name,char *param) 
{        
        
    HRESULT hr;
    LPDISPATCH pDispatch = GetHtmlDocument();        
    if( pDispatch == NULL ) return; 
       
    IHTMLDocument* pHtmlDoc;
    hr = pDispatch->QueryInterface( __uuidof( IHTMLDocument ), (void**)&pHtmlDoc );

    LPDISPATCH pScript;    
    pHtmlDoc->get_Script( &pScript);
    
    pScript->AddRef();
    if (SUCCEEDED(hr))
    {
        // Получаем DISPID интересуемой функции
      
        OLECHAR* szMember=name; 
        DISPID dispid;

        HRESULT hr = pScript->GetIDsOfNames(IID_NULL, &szMember, 1,
            LOCALE_SYSTEM_DEFAULT, &dispid);

        if (SUCCEEDED(hr))
        {
            // Выполняем
            COleVariant vtResult;
            static BYTE parms[] = VTS_BSTR;

            COleDispatchDriver dispDriver(pScript);    
         dispDriver.InvokeHelper(dispid, DISPATCH_METHOD, VT_VARIANT,
                (void*)&vtResult, parms,   
                param);
              
            
        }
    }
    pScript->Release();
    pHtmlDoc->Release();
    pDispatch->Release();

}




Если вызов происходит в основном приложении то все вызываеться и выполняеться, а если я создаю поток и в нем пытаюсь вызвать скрипт то происходит ошибка такого типа
Debug Assertion Failed!
File: viewhtml.cpp
Line: 796
врт код на который он ругаеться

Код

LPDISPATCH CHtmlView::GetHtmlDocument() const
{
    ASSERT(m_pBrowserApp != NULL);<-----------Вот на эту строку

    LPDISPATCH result;
    HRESULT hr = m_pBrowserApp->get_Document(&result);
    if(FAILED(hr))
    {
        ASSERT(FALSE);
        return NULL;
    }
    
    return result;
}



Функция потока у меня такая

Код

DWORD WINAPI  CDHTMLSpyView::Enter_Summ(LPVOID lpv){
     СDHTMLSpyView ret;
    ret.OnCallscript2(L"Enter_Sum","500")
    return 0;
}



Вызываю поток через функцию 
[code=cpp]
CreateThread(NULL,0, &CDHTMLSpyView::Enter_Summ,0,0,NULL)
Код



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0709 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.