Hilfedatei(*.chm) mit Seitenindex starten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Hey,

ich bin gerade dabei die Hilfedatei für meine windows-application einzubinden.

Hierzu nutze ich die win32api

Code: Alles auswählen

win32api.ShellExecute(0, 'open' , Path, filepath  , "" , 1 )
Ich möchte jetzt aber gerne die Hilfedatei mit einer kontextabhängigen Seite starten. Damit meine ich, benötigt der customer Hilfe zu den widgets, wird die Hilfedatei mit dem Untermenu "Steuerelemente" geöffnet.

Gibt es die Möglichkeit dem Programm("hh.exe") gezielt Parameter mitzugeben, dass dann die jeweilige Seite angezeigt wird????

Danke
greets george
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

george hat geschrieben:Ich möchte jetzt aber gerne die Hilfedatei mit einer kontextabhängigen Seite starten.
Hi George!

Im Visual Basic arbeite ich so:

Code: Alles auswählen

Public Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" ( _
    ByVal hwndCaller As Long, _
    ByVal pszFile As String, _
    ByVal uCommand As Long, _
    ByVal dwData As Long _
) As Long

Public Const HH_DISPLAY_TOPIC = &H0
Public Const HH_SET_WIN_TYPE = &H4
Public Const HH_GET_WIN_TYPE = &H5
Public Const HH_GET_WIN_HANDLE = &H6
Public Const HH_DISPLAY_TEXT_POPUP = &HE   ' Display string resource ID or text in a pop-up window.
Public Const HH_HELP_CONTEXT = &HF         ' Display mapped numeric value in dwData.
Public Const HH_TP_HELP_CONTEXTMENU = &H10 ' Text pop-up help, similar to WinHelp's HELP_CONTEXTMENU.
Public Const HH_TP_HELP_WM_HELP = &H11     ' text pop-up help, similar to WinHelp's HELP_WM_HELP.

...
...
...

'*******************************************************************************
'Aufrufen
'*******************************************************************************
Call HtmlHelp(0, "sw3.chm", HH_HELP_CONTEXT, 1001)
Wobei die Zahl 1001 in diesem Fall die ID der aufzurufenden Seite ist. Diese ID muss in das Hilfe-Projekt mit einkompiliert werden.

Allerdings würde ich mir diese Arbeit nie wieder antun. Für jede Seite einen Index mit einer Konstante definieren und diese Konstante dann einer Seite zuweisen. Nein, nie wieder.
Sobald ich mehr Zeit finde, werde ich meine Programmhilfe nach HTML umstellen. Und damit ich trotzdem nicht auf das Menü und den Index verzichten muss, werde ich wahrscheinlich *Rest2Web* http://www.voidspace.org.uk/python/rest2web/ verwenden.
Zum Ansehen der Hilfe könnte ich mir evt. noch *Documancer* http://documancer.sourceforge.net/ vorstellen. Den muss ich aber erst noch so richtig testen.

Den oben aufgezeigten API-Aufruf musst du irgendwie entweder mit *ctypes* oder mit *pywin32* aufrufen. Dabei kann ich dir allerdings jetzt nicht helfen. Das habe ich noch nie probiert.

Ahh! :-) So wie es aussieht, ist "HtmlHelp" in *pywin32* integriert. Es dürfte also gar nicht mal so schwierig werden. Suche einfach mal in der *pywin32*-Hilfe nach "HtmlHelp".

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Hallo Gerold,

danke für deine Antwort.
Ich habe es jetzt über eine mapid als Übergabeparameter gelößt. Die ID entspricht dann dem jeweiligen Topic und ist eindeutig.
Damit funktioniert es einfach und schnell.

Code: Alles auswählen

win32api.ShellExecute(0, 'open' , Path, "-mapid 40"+filepath  , "" , 1 )
greets george
Antworten