The scripting prompt is due to locally installed WebHelp. If you put it on a server, it should work fine. (Or try to enable Mark of the Web for your output.)
The problem with CSH not working is probably because the CSH is not enabled in the output. In the single source layout settings, make sure that all your map files are selected:
The easiest way I see it to create a simple API yourself. (We did it for Delphi and C# and it took about ten minutes.) You can just create a URL and feed it to the default browser. If you want to be able to load new help calls in the same tab, you will have to hook into the browser somehow.
The URL's are really easy to create. See http://www.wvanweelden.eu/article-category/context-sensitivity for a complete overview of all your options in HTML and WebHelp. If you want to call a CHM context sensitive look at the following article: http://msdn.microsoft.com/en-us/library/2bk8zwb3(v=vs.90).aspx
Ahh. Thanks. Enabling Mark of the Web stopped the 'allow scripts to run' prompt from appearing.
The RoboHelp_CSH.RH_ShowHelp(...) now goes to the correct CSH page in IE without prompting.
Re. the CSH URLS. For testing, I have a very simple two page help project and have the sole BSSCDefault.h map file ticked and have tried creating URLs as suggested by your very helpful web pages. These work when pasted in to the browser address bar but for some unknown reason do not work when invoked from Java via Desktop.getDesktop().browse(uri); - My logging suggests I am setting the correct URL but all I get is the default index.htm
Anyway, I've decided not to sprinkle 'magic number' MAP IDs in my Java anyway. I return an enumerated help context type, which I can map to the appropriate URL directly as easily as I can to a MAP id. Hence I'm using the direct URL instead and this works fine.
Thanks again for taking the time to respond :-)