UUHELP usage : with original items

Author: richard.gill@agfa.com (richard.gill)

Hi

I tested the use of the UUHELP internal IDF menu for the 'access from everywhere' feature, quite good. The only problem is that the original help items are lost.

I investigated a bit to recreate the original menu, but with a cascade Additional menu. This is quiet simple, but with some tricks :

  1. The first item 'Help', can be a spawn which starts hh.exe with the ulibrary.chm file : spawn $concat("hh ", $item("FULLPATH", $fileproperties("ulibrary.chm", "FULLPATH")))
    The $fileproperties function permits to get the asn redirection.
  2. The second item 'Keyboard Help...', is even easier : macro "^KEY_HELP"
  3. Next the separator ... you need help for that? :)
  4. Yeh, now the web links. To activate them with the default browser, we need to launch the application associated with urls.
    One can spawn 'start' command, but for this, the command interpreter is used : spawn "cmd /c start %%"<the url>%%"" : a command window is quickly shown and hidden, not user friendly
    A better solution is to use the ShellExecute from the Windows API, but for this, we need to define a signature. It's not difficult, but it introduces a dependency over a signature.
  5. The Uniface about box seems to be a Uniface Form, but I don't know which, so this's the only item I couldn't reproduce

For all this to work, as usual, One has three method (with Uniface 9, 2 with previous versions) to enable the new home made help menu (once itself and the Windows API signature are compiled):

  • Use the [RESOURCES] assignment. For help on using it, see the Uniface Library
  • Use $search_descriptor dbms_first and $search_object dbms_first assignments
  • Update the dol and the urr file if you prefer to use static files

Note: related link removed because of a new, improved one, in the following posts.

Kind regards

6 Comments

  1. Hi Richard,

    thanks for all your effort investigating the default UUHELP menue features.

    I have not tried to reconstruct this part because
    the context sensitive help still works with F1 and I can reach the other helps from that.

    The about is the component uuabout.frm,
    but we can use the $about function to gather the information

    BTW: have you tried to just spawn the URL and let the system find the correct application?

    Success and thanks again, Uli


    Author: ulrich-merkel (ulrichmerkel@web.de)
  2. Hi

    I improved my UUHELP, which is now totally functional. I replaced all spawn / signature execution by a spawn of rundll32 I found just kindy (Uli, spawning a file does not work, spawn may use CreateProcess() in the Win32 API, not a ShellExecute() or equivalent). I added the activate to the UUABOUT form too (thanks to Uli).

    The trick to launch any file (executable or document, or url ... so whatever Windows can start) is to use one function of the shell32 DLL dedicated to the rundll32 tool, that's cool. The syntax is :


    rundll32 shell32.dll,ShellExec_RunDLL <the file>

    So in our menu, we can launch anything with :


    spawn $concat("rundll32 shell32.dll,ShellExec_RunDLLA ", %\
    "http://frontline.compuware.com")

    I used the 'A' version because I'm not sure Uniface is able to map its UTF-8 encoding to the Windows system encoding for the spawn statement.

    Kind regards,
    Richard


    Author: richard.gill (richard.gill@agfa.com)
  3. Hi Richard,

    thanks for the improvement in UUHELP.

    I have seen your menu item "context help" has a hard-coded "FULLPATH".

    Thats the reason why I wished $curword and $curline for all kind of text widgest to solve this situation.

     

    But F1 still works

    Success, Uli


    Author: ulrich-merkel (ulrichmerkel@web.de)
  4. Uli

    The F1 key starts the context help, which not only starts ulibrary.chm, but also points it to the right topic.

    The Help menu item, while having a 'Context sensitive Help' hint, is not context sensitive. My goal was to reproduce exactly the original help menu. So the hardcoded FULLPATH is right, as its permits to get the real ulibrary.chm path/filename.
    Btw, your wish is pertinent :)

    Kind regards,
    Richard


    Author: richard.gill (richard.gill@agfa.com)
  5. SORRY, you are 100% correct the "F1" is not part of the UUHELP,
    I was confused by your hint text.

    TNX for the nice rundll32 implementation; it is such a nice tiny jack-of-all-trades.

    rundll32 shell32.dll,ShellExec_RunDLL <the file>

    Success, Uli

    P.S: if you agree, I will add your findings to the dITo UUHELP document


    Author: ulrich-merkel (ulrichmerkel@web.de)
  6. Hi Uli

    No problem to add my contributions to the Dito project.

    Kind regards,
    Richard


    Author: richard.gill (richard.gill@agfa.com)