Skip to main content
Ayrton_5
Inspiring
November 15, 2016
Question

Context sensitive help for Visual Basic 6

  • November 15, 2016
  • 1 reply
  • 1413 views

I have been using Robohelp 2015 (of late) to maintain the help files on a VB6 app. I generate a CHM file, the forms in the app have context IDs, and the F1 key "just works" with VB6 in calling up the correct page.

We are currently researching the possibility of moving over to a web-based-help solution using something like Responsive HTML5 (or similar - not committed to that particular flavour). I am getting pushback from the developers who are suggesting that VB6 is unable to handle F1 with help formats other than .hlp and .chm - is this true?

It is not practical to revisit every form in our app (it's huge). The forms have their context ID and that's all they're ever going to have. I'm not a developer although I have some developement experience. We are willing to write some code to redirect the F1 to the new help as long as it's central; the problem I have at the moment is that the lead developer is saying it can't be done.

Has anyone got anything I can go back to the dev team with that shows this to be a viable proposition?

This topic has been closed for replies.

1 reply

Willam van Weelden
Inspiring
November 15, 2016

How are the devs calling the help? For WebHelp/Responsive HTML5, you normally just open a URL with some parameters. Depending on how the CHM is linked to the application, it is a simple change in the call.

If you are using context id's, those will be retained when you move to another system. Only the call will be updated. As long as your application can open a browser or URL, they can open help through F1.

RoboHelp includes sample API's for context sensitivity, including one for VB.NET. And otherwise you can make one yourself rather easily.

More info for your developers here:

Ayrton_5
Ayrton_5Author
Inspiring
November 15, 2016

Thank you for taking the time to reply. Our program is written in VB6. Old I know but still going strong with a very large user base. The VB6 interface invites you to point your application to a compiled help file. This needs to be an .hlp or a .chm. There is an 'App' object in there that you can code to directly but it only does the same thing.

We can direct a generic call for help to where we like - the problem is with context sensitivity. If a user presses F1 on a dialogue with a context sensitive help file, VB6 handles the opening of the CHM on the right page. I can't, however, tell VB6 that I want to use a suite of uncompiled HTML, so we don't know how to maintain context sensitivity if we switch to R-HTML5. I guess that might be a question more of VB6 than Robohelp but I was hoping to find someone else who had gone through the same process. The CHM viewer looks extremely dated and we were hoping to freshen things up. What is more, browser based will allow users to open multiple pages on different tabs, bookmark pages they need often, etc. Web-based could also allow us to keep the files on a server to save us shipping them. Lots of possibilities that aren't open to us with CHM.

Is there code we can write that will intercept VB6's desire to access the CHM via the help viewer?

Is there a method of stepping through a CHM, using it as an index of sorts, with a web-based page as the ultimate target?

Both these are more wishful thinking than realistic questions, but any other method of delivering what we are after would be gratefully received.

Captiv8r
Legend
November 15, 2016

Hi there

WRT "looking dated", Adobe has added an ability to compile a CHM file using a WebHelp with a skin so it looks "fresher". But I'm guessing that would just as likely mess with any mappings that were done.

And speaking of mappings, you seem to be under the impression that all one has to do is compile a CHM file and POOF! VB just somehow "knows" how to map to the right topic. Unfortunately that's vastly over simplistic. There has to be some sort of mapping operation that takes place to "connect" the correct topic with the exit point of the application.

One way to accomplish things would be to configure each landing topic so it has a redirect built into it that would point to a web page with the actual information. So the call would be made, the CHM would open and display the topic and the topic would open the web page with the actual content. But I would think that to be a very long and error prone process.

Cheers... Rick