[VC++]Как открыть документ приложением, которое должно его открывать?

vertyal17

По ассоциации файла?
Предполагается, необходимость открывать из программы файлы .html, и .chm.
CreateProcess(NULL,"g.html",NULL,NULL,FALSE,l_creation_flags,NULL,NULL,&si,&pi);
не очень результативно
Пока работаю
CreateProcess(NULL,"explorer.exe g.html",NULL,NULL,FALSE,l_creation_flags,NULL,NULL,&si,&pi);
Но это я так понимаю, не лучший вариант.
Возможно для открытия .chm есть какието более простые способы?

vertyal17

Была еще мысль открывать cmd.exe, пренаправлять ввод, и пихать ему "g.html\n", но идея была отброшена

otets-mihail

тебе shell api нужен

gopnik1994

HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);

vertyal17

Ок спасибо поботаю!

naska79

Мне больше нравится system(const char * sCmd) из стандартной библиотеки

vertyal17

Для хелпа вот что я нашел
О нем уже я упоминал в MSDN: "Uniform Resource Location - URL" и MFC:"Шаг 157 - Немного про
HTMLHelp". Но там не описывался метод как подключить его к нашей программе на MFC. Основу справки составляет Hhctrl.ocx, который поставляется вместе с HTML Help Workshop. Вместе с ним поставляется заголовочный и два библиотечных файла.
..:\Program Files\HTML Help Workshop\Lib библиотеки
hhctrl.lib
htmlhelp.lib
..:\Program Files\HTML Help Workshop\Include заголовочный файл
htmlhelp.h
Скопируйте файлы в соответствующие папочки VC. Для дальнейшего использования. Основу составляет функция HtmlHelp.
HWND HtmlHelp
(
HWND hwndCaller, // Дескриптор вызывающего окна
LPCSTR pszFile, // расположение CHM файла
UINT uCommand, // команда
DWORD dwData // данные для команды
) ;
Ну что, пробуем создать проект MFC на базе диалогового окна с именем TestHtml. На диалоговую панель помещаем кнопку, по которой и будем вызывать помошь. Привяжем к ней событие нажатия кнопки. Подключим Lib и H файлы:
// TestHtmlDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TestHtml.h"
#include "TestHtmlDlg.h"
#include "HtmlHelp.h"
#pragma comment(lib,"hhctrl.lib")
#pragma comment(lib,"htmlhelp.lib")
Ну и сама функция нажатия. Кстати, я взял CHM файл из поставки Windows.
void CTestHtmlDlg::OnButton1
{
HWND help=NULL;
help=HtmlHelp(NULL,"C:\\WINDOWS\\HELP\\Ieeula.chm",HH_DISPLAY_TOPIC,NULL);
}
А вот так выглядит результат:
Оставить комментарий
Имя или ник:
Комментарий: