Monikers and CHM storages
От: Nikolas  
Дата: 18.08.01 12:14
Оценка:
Hello All!

Есть "маленький" вопрос.

Имеется *.chm файл. Как известно доступ к некоторому объекту этого
файла, например из IE, осуществляется так:
ms-its:G:\Samples.chm:/mainpage.html

Программно до него можно достучаться следующим образом:

HRESULT hr = S_OK; OLECHAR szwName[256];

MultiByteToWideChar(CP_ACP, 0, "ms-its:G:\\Samples.chm:/mainpage.html", -1, szwName, 256);

// Ask the system for a URL Moniker
IMoniker* pIMoniker;
hr= CreateURLMoniker(NULL, (LPWSTR)szwName, &pIMoniker);
if (SUCCEEDED(hr))
{
// Get the IPersistMoniker interface
IPersistMoniker* pPMk;
hr= m_pObj->QueryInterface(IID_IPersistMoniker,(void **)&pPMk);
if (SUCCEEDED(hr))
{
IBindCtx *pBCtx;
hr = CreateBindCtx(0, &pBCtx);
if (SUCCEEDED(hr))
{
// Call Load on the IPersistMoniker
hr= pPMk->Load(FALSE, pIMoniker, pBCtx, STGM_READ);
pBCtx->Release();
}
ReleaseInterface(pPMk);
}
ReleaseInterface(pIMoniker);
}

m_pObj — это instance CLSID_TriEditDocument.

Вопрос в следующем, каким образом можно поместить назад в Samples.chm измененные
данные объекта mainframe.html? И возможно ли это вообще?

Заранее признателен.

С Уважением, Николай.
Re: Monikers and CHM storages
От: al Россия  
Дата: 16.06.05 08:54
Оценка: 27 (1)
Если еще интересно:

http://www.codeproject.com/winhelp/htmlhelp.asp?df=100&forumid=14268&select=1137358

Это описание нативного API для работы с CHM (через ISorage и IStream)

Интересно, что информацию о IITStorage "нарыли" (судя по датам) до кражи исходников Windows.


Re[2]: Monikers and CHM storages
От: al Россия  
Дата: 16.06.05 09:05
Оценка: 1 (1)
Я думаю, что эта информация о CHM теперь (после вторничных обновлений от MS) будет интересна всем, кто использует этот формат в своих программах. А проблема в том, что теперь CHM файлы не открываются на сетевых дисках, только на локальных дисках компютера (http://www.microsoft.com/technet/security/bulletin/MS05-026.mspx). Т.е. если у кого, например,зашарем старый (до VS.Net) MSDN в сети, он больше работать не будет.
Для моей программы это тоже печальная новость — все документы сидят в CHM, и у многих клиентов зашарены на серверах. Даже свой IInternetSecurityManager не помогает! По моему доступ к шарам отрубили где-то в самой реализации IInternetProtocol, т.к. не работает ни кто — ни XML парсер, ни FlashPlayer.

Буду писаьт свой протокол.


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.