Seite 1 von 1

Hilfedatei(*.chm) mit Seitenindex starten

Verfasst: Donnerstag 24. August 2006, 13:49
von george
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

Re: Hilfedatei(*.chm) mit Seitenindex starten

Verfasst: Donnerstag 24. August 2006, 15:34
von gerold
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
:-)

Verfasst: Donnerstag 24. August 2006, 15:43
von george
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