Solved

Is it possible to use embedded resource in 'webBrowser'?

Posted on 2014-09-21
4
131 Views
Last Modified: 2015-09-29
Hi experts
I wonder if it is possible to use embedded resource of chm file in 'webBrowser'?

My C# program reads from a chm file ("Help.chm") in my local HD by calling the method
webBrowser.Navigate(url)

Open in new window

.
eg. the url could be:
//"mk:@MSITStore:C:\\Projects\\Tool\\bin\\Debug\\Help.chm::/InfoTab_InfoTab.htm"

But, I would like to use the chm file as an embedded resource. eg. Properties.Resources.Help
And I wonder how I could modify the above.
I'd seen from some Internet article suggesting casting the embedded resource into a string and assign it to webBrowser.DocumentText, but it didn't work for me.

Thanks in advance
0
Comment
Question by:dominicwong
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 7

Accepted Solution

by:
help-info earned 500 total points
ID: 40337400
Form with working webBrowser controlAdding CHM's - example code onlyCopy the CHM file(s) to a subdirectory e.g. /help of your Project and always copy this file(s) to the release folder .

You need to know about the internal CHM web structure e.g. topic garden.htm

Add code:
private const string sHTMLHelpFileName_ShowWithoutAutoSync = "/help/CHM-example.chm";

Open in new window


..
    public static string GetChmUrl(string fileName, string page)
    {
      StringBuilder url = new StringBuilder();
      url.AppendFormat("mk:@MSITStore:{0}::", fileName);
      if (page.IndexOf('/') != 0) url.Append('/');
      url.Append(page);
      return url.ToString();
    }

Open in new window


..
    private void frmMain_Load(object sender, EventArgs e)
    {
      // example: System.Diagnostics.Process.Start(Application.StartupPath + sHTMLHelpFileName_ShowWithoutAutoSync);
      webBrowser1.Navigate(new Uri(GetChmUrl(Application.StartupPath + sHTMLHelpFileName_ShowWithoutAutoSync, "Garden/garden.htm")));
    }

Open in new window

0
 
LVL 7

Expert Comment

by:help-info
ID: 40337428
Please note you can show a single topic only. CHM files have their own Help Viewer coming with Windows. The CHM Help Viewer of the operating system includes a web browser control the "Content pane".
For calling the Help Viewer use e.g. following code or other solutions

// example: System.Diagnostics.Process.Start(Application.StartupPath + sHTMLHelpFileName_ShowWithoutAutoSync);

Open in new window

0
 

Author Comment

by:dominicwong
ID: 40338065
Thanks help-info for your detailed explanation and with all the nice screenshot. I appreciate it.
The issue I have here came from the trouble where anti-virus scanner scans the chm help file whenever my application attempts to read it from an (external) file in my hard drive. (Please see my other question How to workaround slow down in loading chm file into C# .NET program from background security software)

In other words, my application already reads from a chm help, and loads onto a help panel successfully. Now my thought is instead of mining the help information into my application upon program startup (as the experts suggested in the other question), I would like to test if hiding the external chm help file into an internal resource (ie embedded into a dll) might solve the anti-virus scanning issue.
0
 

Author Closing Comment

by:dominicwong
ID: 41017530
Sorry. It has been a long time. I didn't realize that this question hadn't been closed.
Thanks for your help
0

Featured Post

MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Several part series to implement Internet Explorer 11 Enterprise Mode
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Google currently has a new report that is in beta and coming soon to Webmaster Tool accounts. This Micro Tutorial will highlight new features for Google Webmaster Tools.
This Micro Tutorial will demonstrate how to add subdomains to your content reports. This can be very importing in having a site with multiple subdomains.

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question