35 Replies Latest reply on Jul 27, 2016 9:40 AM by epsobolik

    RoboHelp viewer

    epsobolik

      Does anyone know what viewer WebHelp is displayed in when displayed from an applicaiton via a call to RH_ShowHelp?  We're using RoboHelp ver7.  Is it IE? or the MFC CHTMLView Class?

       

       

      We've had an annoying bug for a number of years and are wondering if changing the viewer would help.  In the Index pane, if you type in the beginning of an index topic, it is supposed to scroll to the topic you've typed in.  It seems if you have a large number of index items, it doesn't scroll.  It seems to work if you run the help by itself in a browser, but not in the application.

        • 1. Re: RoboHelp viewer
          Peter Grainge Adobe Community Professional (Moderator)

          If you simply double click the start page, WebHelp opens in the default browswer on the user's PC. I thought that was the case with the method you are using but no doubt someone else can confirm that. What is puzzling me with your question is that you should be able to see what browser is being used, unless your developer's have made the window chromeless. Even then, they could undo that to find the answer.

           

          As to the index issue, that was a problem several versions back. Try downloading the trial of RoboHelp 10 onto a non production machine. I think you will find it is OK now.

           


          See www.grainge.org for RoboHelp and Authoring tips

           

           

          @petergrainge

          • 2. Re: RoboHelp viewer
            epsobolik Level 1

            Hmmm.  It was still in ver9.  I reported it when 7 was new!  This is the first acknowledgement that it was a real problem.  I will check ver10.

            • 3. Re: RoboHelp viewer
              epsobolik Level 1

              Robohelp 10 is worse than ver 7!!!  Not only does the index not scroll when you type in the box at the top, but clicking on a topic in the index gets you a 'This program cannot display the webpage' error.  Some of the 'text links' display a directory of the help folder.  Others seem to work, however. 

               

              BTW, when you open a help message in C++ code with the RH_ShowHelp() function, it is displayed in a naked screen - just the help content - no hint of a browser.  Similar to what you get when you run a .hta program.  If you right-click in the display area of the window, you get the same menu you get in a browser.  But you get the same thing if you use the CHTMLView class to display an HTML page in an application.  When the help is displayed, there isn't an instance of a browser in the Task Manager.

              • 4. Re: RoboHelp viewer
                Peter Grainge Adobe Community Professional (Moderator)

                I think the problem is with your project in that case. I just tested a RoboHelp 9 project and it was scrolling down progressively as I typed into the index field.

                 

                Is this only a problem when the help is called from your app? I'm wondering if it works faster when you just open the help direct.

                 


                See www.grainge.org for RoboHelp and Authoring tips

                 

                 

                @petergrainge

                • 5. Re: RoboHelp viewer
                  epsobolik Level 1

                  Hmmm.  Just re-opened the project in RH10.  It looked very different than before.  It looked more like ver7.  Re-compiled and now it behaves just like ver7 did.  Everything works except typing in the Index box.  There is reference in the RH help about linking with wininet.lib and hhctrl.lib.  wininet.lib is part of Visual Studio.  The RH help says that hhctrl.lib may be in the CSH API folder.  I don't see it, however.

                  • 6. Re: RoboHelp viewer
                    epsobolik Level 1

                    Yes, it only happens when the help is run from within our application.  If we run it in a browser outside of the application, it behaves normally.  If you want to see it happen, you'll have to install our application.  You can download a demo of Right-Suite Universal 2012 at www.wrightsoft.com.

                    • 7. Re: RoboHelp viewer
                      Peter Grainge Adobe Community Professional (Moderator)

                      What I wanted to establish was that if run in isolation the index is working correctly and you have confirmed it does.

                       

                      That points to something in the call or something about the way the developers have set things up. Outside my area.

                       


                      See www.grainge.org for RoboHelp and Authoring tips

                       

                       

                      @petergrainge

                      • 8. Re: RoboHelp viewer
                        Willam van Weelden Adobe Community Professional & MVP

                        Hi,

                         

                         

                         

                        This suggests the problem is with your viewer. As Peter said, the default API (or at least the .js version) simply opens the help in a browser. If the help does not open in a browser, you are using a custom solution, such a loading the browser in the background and using it in your application. I’m sorry, but as Peter says, this is a problem with the software that your developers need to solve, nothing you or RoboHelp can do about it.

                         

                         

                         

                        Greet,

                         

                         

                         

                        Willam

                        • 9. Re: RoboHelp viewer
                          epsobolik Level 1

                          Yes, when run in isolation, the index works correctly.  I'm actually the developer that integrated into the application, too.  I just followed Robohelp's instructions in the help. 

                          • 10. Re: RoboHelp viewer
                            Willam van Weelden Adobe Community Professional & MVP

                            LOL, so you are in the position to change it after all

                             

                             

                             

                            I would expect the default API to just fire up IE, but hey, I’m not a programmer either. I’m just hoping an Adobe dev will chime in to shed some light on this.

                             

                             

                             

                            Greet,

                             

                             

                             

                            Willam

                            • 11. Re: RoboHelp viewer
                              Praful_Jain Level 3

                              hi,

                               

                              Did you try running the CSH test tool provided with RoboHelp 10. Go to View>Pods>Toolbox

                              in the toolbox pod, double click on CSH Test icon, this will open the CSH Test tool. This tool allows to test CSH API behavior for all different type of outputs.

                              I generated webhelp output and used the CSH Test tool and tried typing in the index pane, and it was scrolling fine.

                               

                              Note: You need to type the webhlep output file path in the offline textbox, and then you need to provide any map number, and click Show Help

                               

                              Please update with your findings.

                               

                              thanks

                              Praful

                              Adobe RoboHelp Team

                              • 12. Re: RoboHelp viewer
                                epsobolik Level 1

                                It works fine in the CSH test tool.  It also works fine if I double click on the top-level .htm file.  It's just in the application that doesn't work.

                                • 13. Re: RoboHelp viewer
                                  Praful_Jain Level 3

                                  Good to know that it works fine with CSH Test Tool. CSH Test is a sample Application which uses RoboHelp CSH API.

                                  you need to tell the developer in your team to do the following in your application

                                  BOOL YourApplicationMainWnd::PreTranslateMessage(MSG* pMsg)

                                  {

                                      RH_ProcessKeyStrokes(pMsg);

                                      return FALSE;

                                  }

                                   

                                  RH_ProcessKeyStrokes is a predefined function in RoboHelp_CSH,cpp file and handles the keyboard up/down and enter key messages.

                                   

                                  Hope this will help.

                                   

                                  thanks

                                  Praful Jain

                                  Adobe RoboHelp Team

                                  • 14. Re: RoboHelp viewer
                                    epsobolik Level 1

                                    I don't think that is the right code.  I looked at RH_ProcessKeyStrokes() and it doesn't call the base class PreTranslateMessage().  I think it should be more like:

                                     

                                    BOOL YourApplicationMainWnd::PreTranslateMessage(MSG* pMsg)

                                    {

                                         if (RH_ProcessKeyStrokes(pMsg) == 0)

                                              return CMDIFrameWnd::PreTranslateMessage(pMsg);

                                         else

                                              return TRUE;

                                    }

                                     

                                    However, when I include RoboHelp_CSH.cpp and RoboHelp_CSH.h in our project and add #include "stdafx.h" to RoboHelp_CSH.cpp (for the precompiled headers), I get a host of compile errors:

                                    1>RoboHelp_CSH.cpp

                                    1>c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlbase.h(5934) : error C2259: 'ATL::CRegObject' : cannot instantiate abstract class

                                    1>        due to following members:

                                    1>        'HRESULT IUnknown::QueryInterface(const IID &,void **)' : is abstract

                                    1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(116) : see declaration of 'IUnknown::QueryInterface'

                                    1>        'ULONG IUnknown::AddRef(void)' : is abstract

                                    1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(120) : see declaration of 'IUnknown::AddRef'

                                    1>        'ULONG IUnknown::Release(void)' : is abstract

                                    1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(122) : see declaration of 'IUnknown::Release'

                                    1>c:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlbase.h(6017) : error C2259: 'ATL::CRegObject' : cannot instantiate abstract class

                                    1>        due to following members:

                                    1>        'HRESULT IUnknown::QueryInterface(const IID &,void **)' : is abstract

                                    1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(116) : see declaration of 'IUnknown::QueryInterface'

                                    1>        'ULONG IUnknown::AddRef(void)' : is abstract

                                    1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(120) : see declaration of 'IUnknown::AddRef'

                                    1>        'ULONG IUnknown::Release(void)' : is abstract

                                    1>        C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\unknwn.h(122) : see declaration of 'IUnknown::Release'

                                    1>.\RoboHelp_CSH.cpp(424) : warning C4018: '<' : signed/unsigned mismatch

                                    1>.\RoboHelp_CSH.cpp(503) : warning C4244: '=' : conversion from 'int' to 'INTERNET_PORT', possible loss of data

                                    1>.\RoboHelp_CSH.cpp(732) : warning C4018: '<' : signed/unsigned mismatch

                                    1>.\RoboHelp_CSH.cpp(759) : warning C4018: '<' : signed/unsigned mismatch

                                    1>.\RoboHelp_CSH.cpp(854) : warning C4018: '<' : signed/unsigned mismatch

                                    1>.\RoboHelp_CSH.cpp(1483) : error C2039: 'TranslateAcceleratorW' : is not a member of 'IOleInPlaceActiveObject'

                                    1>        c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(2059) : see declaration of 'IOleInPlaceActiveObject'

                                     

                                    The issue with the 'signed/unsigned mismatch' errors, is that _tcslen/strlen return a size_t result, which is an unsigned pointer and it is being compared to an int (signed).  The others I was hoping some one could explain to me.

                                    • 15. Re: RoboHelp viewer
                                      Praful_Jain Level 3

                                      hi,

                                      I have created a simple CSH Test Application which allows user to launch WebHelp output, you can download the application @ https://acrobat.com/#d=36fnEwVC-p61xE9D5w*ecg

                                      Hope this helps, and yes it does not have any warnings.

                                       

                                      thanks

                                      Praful Jain

                                      • 16. Re: RoboHelp viewer
                                        epsobolik Level 1

                                        Is this a VS2010 solution file?  We use 2008.  It says it was created with a newer version.  Any chance you can convert it? 

                                        • 17. Re: RoboHelp viewer
                                          Praful_Jain Level 3

                                          hi,

                                           

                                          I have created a CSH Test project to showcase how to use C++ CSH API in MFC application

                                           

                                          VS 2008 project @ https://acrobat.com/#d=InIxx11ivlm9NXv2vOOuDA

                                          VS2010 project @ https://acrobat.com/#d=36fnEwVC-p61xE9D5w*ecg

                                           

                                          Try downloading this and let me know

                                           

                                          thanks

                                          Praful

                                          • 18. Re: RoboHelp viewer
                                            epsobolik Level 1

                                            Still no luck.

                                             

                                            I downloaded the VS2008 project and it compiled and ran.  Doesn't explain why it doesn't work in my code.  I started over and discovered a few differences between ver 7 and ver 10:

                                             

                                            1.  It is important to not use precompiled headers when compiling RoboHelp_CSH.cpp.  If you do, you will get more than EOF compiler errors.

                                             

                                            2.  Add warning 4701 to the #pragma warning (disable ...) command at the top.  Otherwise you will get warnings (treated as errors) on line 3290, in ShowHelpTopic_Win32_IE() that a BSTR variable is potentially uninitialized.  This is an annoying warning that if you have:

                                            BSTR bstr;

                                            if (xxx)

                                                 bstr = yyy;

                                            else

                                                 bstr = zzz;

                                             

                                            you will get the warning.  Even though there isn't a possibility that bstr won't be initialized.  I don't understand why I don't get the warning in the sample project.

                                             

                                            3.  There is a comment at the top of RoboHelp_CSH.cpp that tells you which libraries to link with.  These are different than in ver 7.  The help in Robohelp says that hhctrl.lib 'may' be in the CSH API folder.  It is not there.  A Google search found a message on this forum that said that the Robohelp help was 'seriously out of date', which is a sorry statement - the help in a help authoring tool is out of date.  The message said that linking with htmlhelp.lib and including htmlhelp.h does what hhctrl.lib used to do.

                                             

                                            4. I noticed that the htmlhelp.lib on my computer was a different size than the one in the CSH API folder.  So, I used the one in the CSH API folder.  The htmlhelp.h files seemed to be the same.

                                             

                                            So, I rebuilt my application with the new RoboHelp_CSH.cpp and .h and new libraries, rebuilt my help project with Robohelp 10 and tried it.  It silently does nothing when I try to display context-sensitive help.  So, I traced it in the debugger.  When I request context-sensitive help, it eventually gets to ShowHelpTopic_Win32_IE().  When it executes:

                                             

                                            hr = s_pstBrowser->get_HWND((long*)&hWnd);

                                             

                                            The if (SUCCEEDED(hr)) fails.  It looks like the window never gets set because of this.  I don't know what exactly is going on here.  Can anyone help out?

                                            • 19. Re: RoboHelp viewer
                                              epsobolik Level 1

                                              Wow.  I guess I stumped everyone.  No response?

                                              • 20. Re: RoboHelp viewer
                                                epsobolik Level 1

                                                Still no resolution to this.  It is preventing us from updating.

                                                • 21. Re: RoboHelp viewer
                                                  Captiv8r Adobe Community Professional & MVP

                                                  Hi there

                                                   

                                                  Yes, you "stumped everyone" because the overwhelming vast majority of folks hanging out here are not application developers as you seem to be. Most of us are simply RoboHelp users and we aren't skilled in creating applications.

                                                   

                                                  I see you did have the ear of Praful (one of the actual RoboHelp development team members) so likely only Praful is the one that really has anything to offer here.

                                                   

                                                  In reading through the thread, I note that it has been mentioned time and again that the fault doesn't appear to really be with RoboHelp, it totally appears to be with your code and how it's been implemented to call RoboHelp. As such, I'd be astounded to see anyone here be able to offer anything that will solve your issue. (other than Praful, that is)

                                                   

                                                  Cheers... Rick

                                                   

                                                  Helpful and Handy Links

                                                  RoboHelp Wish Form/Bug Reporting Form

                                                  Begin learning RoboHelp HTML 7, 8 or 9 within the day!

                                                  Adobe Certified RoboHelp HTML Training

                                                  SorcerStone Blog

                                                  RoboHelp eBooks

                                                  • 22. Re: RoboHelp viewer
                                                    epsobolik Level 1

                                                    There is code included with Robohelp - RoboHelp_CSH.cpp and RoboHelp_CSH.h - that does everything.  We just call it.  We didn't do any implementing - we used Robohelp's implementation.

                                                    • 23. Re: RoboHelp viewer
                                                      epsobolik Level 1

                                                      I downloaded and installed RoboHelp 2015.  I have context help working, but the Index is still an issue.  When I double click on the Start page and when I View generated help, go to the Index, and start typing a keyword, it syncs to the keyword list.  However, in the application we always display a help topic (#>id =xxx at the end of the URL).  When I display a help topic this way (via RH_ShowHelp() in RoboHelp_CSH.cpp), click 'Show', go to the Index and start typing a keyword, it doesn't sync to the keyword list.

                                                       

                                                      Is there a way to emulate just opening the Start page?

                                                       

                                                      I tried putting '#>cmd=idx' at the end of the URL to the Start page.  That brought up the Index, but it still didn't sync.

                                                       

                                                      It appears that displaying the Start page from the .htm file (default help topic?) and displaying a specific topic or command (via RH_ShowHelp()) causes the index to behave differently.

                                                      • 24. Re: RoboHelp viewer
                                                        Jeff_Coatsworth Adobe Community Professional & MVP

                                                        As Rick says, I don't think you're going to get much help on here except from Adobe staff developers. Most of us are using CSH launched in a browser; you seem to be trying to use the C++ CSH API (from what I can tell based on the file names) - what led you use that method vs. say, JavaScript, to launch the help?

                                                        • 25. Re: RoboHelp viewer
                                                          Captiv8r Adobe Community Professional & MVP

                                                          Hi there

                                                           

                                                          That's some interesting behavior that I don't believe I've heard of to this point.

                                                           

                                                          Admittedly, you posted onto an existing thread so I was a bit confused at first when the title was "RoboHelp Viewer". Because there is no "RoboHelp Viewer". There's a Microsoft HTML Help Viewer for CHM files, but anything else is presented using the Web Browser.

                                                           

                                                          It's odd to me that a CSH call would render the Index useless. Because all any of the outputs is, is a collection of HTML pages and javascript.

                                                           

                                                          I'm curious. When you click the Show link where you see that url with the pound/hashtag symbol, have you tried copying that link, then from a new Browser or Tab instance, pasted that link in the address bar?

                                                           

                                                          What I'm curious about is if you see the same behavior by taking that approach.

                                                           

                                                          Cheers... Rick

                                                          • 26. Re: RoboHelp viewer
                                                            epsobolik Level 1

                                                            The application is written in C++ - 900K+ lines of C++ code!  How would I use JavaScript to launch the help from a C++ program?

                                                            • 27. Re: RoboHelp viewer
                                                              Jeff_Coatsworth Adobe Community Professional & MVP

                                                              ?No idea - that's just the point - hardly anybody on this forum is a developer :>)

                                                              • 28. Re: RoboHelp viewer
                                                                epsobolik Level 1

                                                                When you display help topics from an application, it isn't obvious that it's a browser.  It's just a 3-pane window.

                                                                 

                                                                The 'show' link just changes the screen - there isn't a URL anywhere.  I looked at the properties of the show link and it says - javascript:void(0);  The properties of the 3-pane window is just the URL (file://... to the .htm file of the topic in the right pane.  I was seeing the #<id=xxx at the end of the URL when I was tracing through the RoboHelp_CSH.cpp code.  I tried pasting the URL that is passed to ShowHelpTopic_Win32_IE() (in RoboHelp_CSH.cpp.  That fn builds a temporary .htm file (robohelp_csh.htm) and displays that in (I believe) in an ActiveX browser.  The JavaScript version of RoboHelp_CSH uses DHTML (window.open) to display the URL with window size parameters.  So, a different method of displaying the help is different in C++ and JavaScript.  The JavaScript is meant to be run from a web page.

                                                                • 29. Re: RoboHelp viewer
                                                                  epsobolik Level 1

                                                                  Is there a developer forum where this would be more likely to be answered?

                                                                  • 30. Re: RoboHelp viewer
                                                                    epsobolik Level 1

                                                                    I copied the URL while I was debugging and pasted into a browser.  Got a 'file not found'.  I noticed that the '#' and been converted to a '%23'.  So, I changed it back and got a blank screen.

                                                                    • 31. Re: RoboHelp viewer
                                                                      Captiv8r Adobe Community Professional & MVP

                                                                      Hello again

                                                                       

                                                                      Actually there is a URL behind that Show link. It's just being hidden from you. Likely, because of what you are reporting with the window not looking like a typical browser window. This would mean that you are likely working with a custom window defined in your help project and it's hiding the address bar from you.

                                                                       

                                                                      If you can sort the actually address of the start page, you should then find it to be a piece of cake as to what the full URL will be for testing purposes.

                                                                       

                                                                      Perhaps the start page is at this link: http://www.somesite.com/someapp/index.htm.

                                                                       

                                                                      Let's say you have a folder in your project named SomeFolder and your topic is named SomeTopic.htm inside that folder. So the full path to the topic would be: http://www.somesite.com/someapp/SomeFolder/SomeTopic.htm.

                                                                       

                                                                      That path would open the topic in a browser with the Show link visible. And clicking the Show link would put the topic inside the WebHelp frameset and if looking at the address bar it would read:

                                                                       

                                                                      http://www.somesite.com/someapp/index.htm#SomeFolder/SomeTopic.htm

                                                                      See if this info helps any... Rick

                                                                      • 32. Re: RoboHelp viewer
                                                                        epsobolik Level 1

                                                                        First, I know the URL from tracing the code in RoboHelp_CSH.cpp.  Second, it isn't a web page - it's a local file.  Third, I don't even know how to specify a special window.  Fourth, when you display help using RoboHelp_CSH.cpp, it isn't displayed in a browser, it is displayed using an ActiveX browser control.  You have a lot more control over the behavior.  I haven't changed RoboHelp_CSH.cpp so it is doing what is expected - just calling RH_ShowHelp().

                                                                        • 33. Re: RoboHelp viewer
                                                                          Captiv8r Adobe Community Professional & MVP

                                                                          Apologies for attempting to help.

                                                                           

                                                                          Good luck with solving it!

                                                                           

                                                                          Over and out... Rick

                                                                          • 34. Re: RoboHelp viewer
                                                                            Jeff_Coatsworth Adobe Community Professional & MVP

                                                                            ?Not that I know of - you'll need to engage directly with the RH engineering team - try shooting an e-mail to TechComm@adobe.com<mailto:TechComm@adobe.com> referencing this thread. When I had a look at that RoboHelp_CSH.cpp file in RH9, 10, & 11, I see that it's dated 2009 internally; my suspicion is that since very few people are using that C++ method, not much work has gone into tweaking it to fix any issues you may be encountering.

                                                                            • 35. Re: RoboHelp viewer
                                                                              epsobolik Level 1

                                                                              Thanks.  I sent an email.  I got a cc of an email that requested that someone be assigned to me.  I managed to create a simple application that calls the sample help included with RoboHelp 2015 and still has the problem.