информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Что-то этот очевидный кусок кода не работает... 21.05.01 00:44  
Автор: ARB Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Импортируем классы Application, Range, Workbooks, Worksheets для работы с Excel из библиотеки типов xl5en32.olb. Далее приводится кусок кода, который приводится абсолютно одинаково во всех источниках (лишнее я выбросил).

void CEx24dView::OnExceloleLoad()
{ // if Excel is already running, attach to it, otherwise start it
LPDISPATCH pDisp;
LPUNKNOWN pUnk;
CLSID clsid;
TRACE("Entering CEx24dView::OnExcelLoad\n");
BeginWaitCursor();
::CLSIDFromProgID(L"Excel.Application", &clsid); // from registry
if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK) {
TRACE("attaching\n");
VERIFY(pUnk->QueryInterface(IID_IDispatch,
(void**) &pDisp) == S_OK);
m_app.AttachDispatch(pDisp);
pUnk->Release();
}
else {
TRACE("creating\n");
VERIFY(m_app.CreateDispatch("Excel.Application") == TRUE);
}
EndWaitCursor();
}

К этой функции замечаний нет и выполняется она корректно. Excel загружается в память.

void CEx24dView::OnExceloleExecute()
{
LPDISPATCH pRange, pWorkbooks;

CWnd* pWnd = CWnd::FindWindow("XLMAIN", NULL);
if (pWnd != NULL) {
TRACE("Excel window found\n");
pWnd->ShowWindow(SW_SHOWNORMAL);
pWnd->UpdateWindow();
pWnd->BringWindowToTop();
}

pWorkbook = *((m_app.GetActiveWorkbook()).ppdispVal);
const CString m_str("blaha.xls");
Workbook m_workbook(pWorkbook);
m_workbook.Close(COleVariant((short)0), COleVariant(m_str) , COleVariant((short)0) ); ошибка в этой функции

}


Порядок действий такой: я сам запускаю Excel с созданной Workbook (указатель pWorkbook получается корректно). Почему эта открытая Workbook не закрывается?

Помогите pls, если знаете в чем тут дело
Thanks
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach