2012-08-03 1 views
2

나는 분명히 HTMLHELP에서이 버그로 실행, 2001 년에서 (그들은 아직 고정하지 않은,하지만 적어도 그들은 그것을 문서화.) 한잘못된 CHM 파일을로드하는 HTMLHelp에 대한 가능한 해결 방법은 무엇입니까?

"BUG : HTMLHELP()는 잘못된 도움말 파일을 엽니 다" 내 CHM 파일의 이름을 변경하는 http://support.microsoft.com/kb/267962/en-us

그들의 제안 "수정"입니다. 그러나 나는 정말로 그렇게하고 싶지 않습니다.

여기에 대한 자세한있다 : http://kb.helpwaregroup.com/ms-html-help/hh-faq#TOC-The-Same-CHM-Opens-Bug

"가장 쉬운 수정은 각 CHM를 열기 전에 HHCTRL.OCX 도서관에 FreeLibrary를() 다음을 LoadLibrary()를 호출하는 것입니다"같은 CHM 버그를 엽니 다 "

.

이 두 번째 솔루션은 응용 프로그램이 LoadLibrary를 사용하여 HH API (HHCtrl.OCX)를 동적으로로드하는 경우에만 작동하며 정적으로 API를로드하는 VB와 같은 언어로 작성된 응용 프로그램은이 작업을 수행 할 수 없습니다. "

내 프로그램은 .Net이고 System.Windows.Form.Help.ShowHelp()를 사용하고 있습니다. 여하튼 HHCtrl.OCX를 언 로딩하여 속임수를 쓸 수 있습니까? 예를 들어 p/Invoke? 다른 제안?

편집 :

정교하게하려면 : Microsoft는 2001 년에 인정하지만, 고정 주위에 없었어 것을 HTMLHELP의 알려진 문제가 있습니다. 내 경우

나는 "... \ 덴마크어 \ Help.chm"와 "... \ 영어 \ Help.chm"두 개의 도움말 파일을했다. 내 프로그램은 사용자가 선택한 언어에 따라 하나 또는 다른 언어를 엽니 다. 문제는 사용자가 도움말 정보를 표시 한 다음 언어를 전환하고 F1을 다시 누르면 프로그램이 다른 도움말 파일을 열려고 시도하지만 도움말 지원 코드가 이전에 열었던 도움말 파일을 다시 열어야한다는 것입니다.

이 알려진 해결 방법은하지만 C++ 프로그램에만 적용하고, 내 프로그램은 닷넷처럼 나에게 보인다. 그래서 그 해결 방법이나 다른 수정 프로그램을 .Net 프로그램에 적용하는 방법을 아는 사람이 있는지 묻습니다.

+0

Dint는 정확하게 – Shrivallabh

+0

@Shri : 깨진 링크를 수정하고 더 많은 정보를 추가했습니다. 관심을 가져 주셔서 감사합니다. – RenniePet

답변

0

다소 과감 할 수도 있지만 CHM 도움말 파일을 표시하려면 새로운 Windows 프로세스를 시작해야합니다. 작은 프로세스 프로그램은 WinForms 프로그램이지만 폼을 표시하지는 않습니다. 여기에는 "Help.ShowHelp (this, chmFileName);" 문을 생성자에 넣습니다. (파일 이름은 작은 도움말 파일 처리 프로그램에 인수로 전달됩니다.) 불행한 부작용으로

, 프로세스는 사용자가 도움말 창을 닫은 후에도에 살고있다. 하지만 새로운 프로그램을 시작하기 전에 프로세스를 종료하고 내 프로그램이 종료 될 때