Как получить имя исполняемого файла при доступе к ресурсам программы через HTML? - PullRequest
1 голос
/ 04 ноября 2010

У меня есть HtmlView внутри моей программы MFC, где я отображаю некоторые данные в форме HTML.HTML использует некоторые ресурсы, включенные в исполняемый файл, поэтому, как правило, мои HTML-файлы включают в себя некоторые вещи, такие как:

<script language="javascript" type="text/javascript" src="res://MyProgram.exe/JS/IDR_JQUERY"></script>

или

<img src="res://MyProgram.exe/JPG/PROGRAMLOGO"/>

Проблема в том, что еслипользователь меняет имя программы с MyProgram.exe на что-то другое, HTML больше не работает должным образом.

Я использую CHtmlView::LoadFromResource для загрузки файла HTML.Я уже смог изменить HTML во время выполнения для раздела body, используя эту функцию:

BOOL DHtmlView::PutBodyContent(LPSTR lpstrContent)
{
 //check if HtmlDocument initialized
 if( m_pHtmlDoc2)
 {
  HRESULT hr = S_OK;
  IHTMLElement *pBodyElement;
  //get body element
  hr=m_pHtmlDoc2->get_body( &pBodyElement);
  //put content to body element
  _bstr_t pbBody( lpstrContent);
  hr=pBodyElement->put_innerHTML( pbBody);

  if( hr==S_FALSE) return FALSE;
  else return TRUE;
 }
 else return FALSE;
}

, но я не могу найти способ сделать то же самое с разделом head.

У вас есть какие-нибудь подсказки?

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

Получите имя исполняемого файла с помощью вызова API ::GetModuleFileName() и удалите путь.

Ссылка на имя исполняемого файла в вашем HTML с использованием некоторой escape-последовательности, такой как "$ (FileName)":

<img src="res://$(FileName)/JPG/PROGRAMLOGO"/>

Перед настройкой содержимого документа HTML замените все вхождения escape-последовательности на результат вызова API GetModuleFileName ().

0 голосов
/ 05 ноября 2010

После некоторого времени, вмешиваясь с IHTMLElement, я нашел гораздо более простой способ сделать это.Поскольку мой HTML-файл находится внутри ресурсов программы, я обнаружил, что могу просто делать относительные ссылки.Поэтому мои примеры превратились в:

<script language="javascript" type="text/javascript" src="../JS/IDR_JQUERY"></script>

<img src="../JPG/PROGRAMLOGO"/>
...