Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ CHM-Hilfe meines Programms ist 'nicht erreichbar'. (https://www.delphipraxis.net/193446-chm-hilfe-meines-programms-ist-nicht-erreichbar.html)

Michaell 1. Aug 2017 14:04

CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Hallo,

ich öffne via
Code:
Application->HelpContext(<HelpId>);
an einigen 'kritischen' Stellen die CHM-Hilfe meines C++ Programmes damit der Anwender weiß was zu tun ist. Das funktioniert, allerdings ist das Hilfefenster dann meist durch nachfolgende Error Messages blockiert (nicht erreichbar). Oftmals muß mein Programm dann auch geschlossen werden. Ist dem so, dann wird auch die Hilfe automatisch geschlossen. Wie kann ich das automatische schließen bzw. die Blockade der Hilfe verhindern? Danke für Eure Hilfe!

Grüße!

Michael

P.S. Das Gegenteil von dem was ich Suche (bezüglich nicht schließen) ist in Delphi wohl so zu kodieren:
Code:
procedure TForm1.FormDestroy(Sender: TObject);
begin
   Application.HelpCommand(HELP_QUIT, 0);
end;

himitsu 1. Aug 2017 14:18

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Wenn/da das Hilfe-Fenster im Prozess deiner Anwendung läuft, ist es auch weg, wenn der Prozess erschwindet.
Abhilfe bringt da nur ein externer HelpViewer, also eigenständige Anwendung.

Wir nutzen eine HTML-Hilfe, die entweder in einem programminternen Fenster mit TWebBrowser oder in einem externen Browser (IE/FF/...) angezeigt werden kann.

Michaell 3. Aug 2017 10:40

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Danke himitsu; daß es dafür keine Möglichkeit mit meiner *.chm Datei gibt ist sehr Schade. (Mit der alten *.hlp Datei hat das ohne Probleme funktioniert.)

Bernhard Geyer 3. Aug 2017 13:14

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Zitat:

Zitat von Michaell (Beitrag 1377995)
Danke himitsu; daß es dafür keine Möglichkeit mit meiner *.chm Datei gibt ist sehr Schade. (Mit der alten *.hlp Datei hat das ohne Probleme funktioniert.)

CHM wurde von MS vor Jahren als "Wollmilcheierlegendesau" konzipiert.
Und dieses Konzept wurde von MS auch viele Einfallstore für Viren und Würmer mit eingebaut.
Deshalb musste MS über die Jahre hinweg immer wieder Funktionen abschalten/Einschränkungen einbauen damit Windows nicht zu schnell gekapert wurde.
Durch diese Hotfixes wird auch die normale Verwendung erschwert.
Mein Tipp ist auch sowas nicht mit CHM als Hilfeformat machen sondern bleiben lassen oder auf alternatves (reines HTML-)Format wechseln.

himitsu 3. Aug 2017 16:07

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
HTML hat auch Probleme, denn Microsoft hat das Intranet standardmäßig als "unsicher" eingestuft.

HTML-Dateien im Intranet (auf einer Netzwerkfreigabe) ist im IE teilweise gesperrt, vorallem JS und teilweise CSS.
An der Sicherheit des Windows (Internet Explorer) rumspielen geht bei einigen Kunden nicht so leicht.

Darum haben wir dafür einen eigenen Webserver (TidHTTPServer), welcher die Hilfedateien raus gibt. (für Windows ist ein HTTP-Server lokal oder im Web als "sicherer" eingestuft)
Diesen Web-Server kann man lokal im Programm haben oder aber auch auf einem anderen PC, als eigener Server, bzw. in der eigenen Serveranwendung (bei uns neben dem DataSnap).
Unsere Hilfe liegt als Dateien (HTML, JS, CSS und JPG/PNG/...) in einem Unterverzeichnis des Programms und der HTTP-Server reicht bei Anfrage diese Dateien durch.

Michaell 12. Mär 2018 11:29

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Ich habe nun doch noch eine Lösung gefunden:
Code:
// *************************************************************************************************
// parameter 'helpFileChapter':
//    Do a right mouse click on the displayed CHM file and select the item 'Properties'.
//    Behind 'Address:' there is for example this displayed:
//       mk:@MSITStore:D:\Repositories\...\Help.chm::/Introduction.htm
//    at the end of the address it the required *.htm file information.
// *************************************************************************************************
void CCommand::Exe1ShowDedicatedHelp(char helpFileChapter[200])
{
   char helpFilePath[MAXPATHLENGTH], commandOption[MAXPATHLENGTH * 2];

   // build the help file path
   sprintf(helpFilePath, "%s%sHelp.chm", STARTDIR, "Help\\");
   // build the 'hh.exe' command option
   sprintf (commandOption, " %s::/%s", helpFilePath, helpFileChapter);
   // call the help with a dedicated help file chapter
   do_spawnvp(P_NOWAIT, "hh.exe", commandOption);
}

KodeZwerg 12. Mär 2018 15:58

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Ich glaube eine Abfrage ob HH.exe prozess bereits läuft wäre gut, da du es ja beim beenden nicht schließen willst. (Falls dein Programm das automatisch beim starten lädt meine ich)

Michaell 12. Mär 2018 16:18

AW: CHM-Hilfe meines Programms ist 'nicht erreichbar'.
 
Zitat:

Zitat von KodeZwerg (Beitrag 1395871)
Ich glaube eine Abfrage ob HH.exe prozess bereits läuft wäre gut, da du es ja beim beenden nicht schließen willst. (Falls dein Programm das automatisch beim starten lädt meine ich)

Das ist nicht nötig: Läuft seit Monaten wie es soll. Wenn hh.exe schon ausgeführt werden sollte dann wird einfach eine zweite Instanz geöffnet. Das ist für mich i.O. Der Anwender macht die dann schon irgend wann zu ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz