Seite 1 von 3
Handhabung einer chm-Datei
Verfasst: 21.09.2006 14:10
von dibro
Hallo zusammen,
ich brauche Hilfe zur Hilfe
Ich hab mir eine CHM-Datei gestrickt und rufe die mit
openhelp() auf. Soweit ok.
Aber wann mache ich die wieder zu, und wie (nun sagt nicht mit
closehelp()), ich meine zu welchem Zeitpunkt.
Wenn ich mein Prog beende, schließt PB die chm wohl von alleine. Klicke ich zwischendurch auf X = close Window beim Helpfenster, stürzt PB ab.

In der Doku ist die Beschreibung zur Hilfe sehr dünn ausgefallen. Die Statuszeile zeigt bei PB4.0 auch noch Flags an, aber nirgendwo kann ich einen Hinweis darauf finden.
Die Forensuche hat auch nichts gebracht
Letzte Hoffnung: Forum.
Wer weiß weiter ?
Verfasst: 21.09.2006 15:23
von Pelagio
Hallo dibro,
Ich habe jetzt auch das Erste mal mit einer Helpdatei hantiert.
Bei mir hat es keine Probleme gegeben. Ich öffne und schließe die Datei ohne das PB 4.0 abstürzt. Dein Fehler muss irgendwo anders liegen. So ohne weitere Information kann ich Dir leider auch nicht sagen wo.

Re: Handhabung einer chm-Datei
Verfasst: 21.09.2006 15:26
von Kiffi
... wäre eine Möglichkeit
Grüße ... Kiffi
Verfasst: 21.09.2006 15:46
von dibro
Jau, der Fehler lag woanders:
ich habe die Hilfe aus einer Procedur heraus aufgerufen und das mag PB wohl nicht, da bleibt irgendwas stehen das auf irgendwas wartet.
Aus der WaitWindowEvent-Schleife geht's
Mit
kann ich vorerst nichts anfangen, ist wohl WinApi, hab ich noch nix mit gemacht.
Bei F1 verlangt PB da die WIN32.hlp.
Wo bekomme ich die her ?
Verfasst: 21.09.2006 15:51
von Thomas
Verfasst: 21.09.2006 16:28
von dibro
Zu früh gefreut.
Nach Schließen der Help läuft das Prg zwar weiter, hängt sich aber auf, sobald eine Dateioperation durchgeführt werden soll oder beim Schließen, sogar im Debugger bleibt es hängen.
Ich hab ja auch dasselbe Problem mit der PB-IDE und jaPBe, und das auf 3!! verschiedenen Rechnern mit XP Prof SP2. Sobald ich die PB-Hilfe explizit schließe, hängt das Prog. Ist wohl irgend ein alter dicker Bug.
Bei meiner Frage im Forum bin ich ja da auch nicht weiter gekommen.
Angeblich läuft bei den anderen alles - komisch.
Bei keinem meiner anderen Programme - der ganze Office-Kram, CAD, usw. läuft das ohne Mucken. Ich hab ein Netz, aber meist nicht alle Rechner an. Vielleicht sucht da irgend etwas das Netz ab - wer weiß.
Vielleicht muss ich da doch etwas mit dem Windows API machen, kann ich aber noch nicht. Wo bekomme ich da Hilfe?
Verfasst: 21.09.2006 16:40
von Kiffi
> Vielleicht muss ich da doch etwas mit dem Windows API machen, kann ich
> aber noch nicht.
sorry, ich dachte, wir wären im Allgemein-Forum. Hier also noch mal etwas
ausführlicher:
Du schickst in Deinem Programm dem Hilfe-Fenster eine Mitteilung, dass
es sich schliessen soll. Ist also so, als ob Du auf das 'X' drückst.
Die einzige Angabe, die Du brauchst, ist der Text, der in der Titelzeile des
Hilfe-Fensters steht. Nehmen wir an, dort steht: "dibro". Dann kannst Du
das Fenster im Speicher mit der API-Funktion FindWindow_() suchen.
Wenn es gefunden wird, dann liefert diese Funktion Dir das Handle des
Fensters zurück (ist so 'ne Art eindeutiger Bezeichner). Danach kannst Du
dem gefundenen Fenster das WM_CLOSE schicken
Code: Alles auswählen
hWnd = FindWindow_(0,"dibro")
If hWnd
PostMessage_(hWnd,#WM_CLOSE,0,0)
EndIf
Grüße ... Kiffi
Verfasst: 21.09.2006 16:49
von dibro
@Thomas Obermeier
danke für den Link, hab ich mir mal gezogen und eingespielt. Aber das ist ja ganz alter Käse aus dem vergangenen Jahrhundert. Heute gibt es ja keine hlp's mehr. Außerdem steige ich da nicht durch, da braucht man wohl noch einige Hintergrundkenntnisse. Deshalb hab ich ja jetzt PB nachdem ich mal in VBA reingeguckt (und schnell wieder weggeguckt) habe.
@Kiffi
...Wenn ich das Help Window aber über das X oben rechts schon wieder geschlossen habe, kann ich es doch nicht mehr suchen ??
Verfasst: 21.09.2006 17:08
von Falko
Irgendwie habe ich das noch nicht verstanden. Wenn durch ein Windows
eine Hilfe geöffnet wurde, dann läßt sie sich doch trotzdem beenden, wenn
man das X vom Windows oder der Hilfe anklickt. Da stürtzt bei mir auch nichts ab.
Zusätzlich kann man ja per Events auch reagieren und es
vorzeitig schließen lassen, was auch ohne API geht, wenn es nicht ein
gezieltes Hilfefenster sein soll. Dazu ist die API von kiffi genau richtig
Code: Alles auswählen
OpenWindow(0,#PB_Ignore,#PB_Ignore,300,300,"Ausgabe zur Hilfe")
OpenHelp("MVCOM.chm","ComOpen.html")
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow ; prüft ob das Schließfelt geschlossen
CloseHelp()
EndSelect
Until event=#PB_Event_CloseWindow ; Programmende
Verfasst: 21.09.2006 17:35
von Kiffi
wie? Das gibt's wirklich? [nachguck] Tatsächlich! Tscha, dibro, dann brauchst
Du Dich mit meinem Code nicht weiter zu befassen. Schön, das wir drüber
geredet haben
dibro hat geschrieben:@Kiffi
...Wenn ich das Help Window aber über das X oben rechts schon wieder geschlossen habe, kann ich es doch nicht mehr suchen ??
Suchen kannst Du immer. Ist halt die Frage, ob was gefunden wird. Wenn
das Hilfe-Fenster nicht gefunden wird, dann bekommste auch kein Handle und
brauchst auch nicht das WM_CLOSE zu senden. Wäre ja auch unsinnig,
etwas schliessen zu wollen, was schon geschlossen ist.
Grüße ... Kiffi