Rubrik: Drucker | VB-Versionen: VB4, VB5, VB6 | 21.03.06 |
WebBrowser: Drucken ohne Kopf- und Fußzeile Mit einem kleinen Eingriff in die Registry lässt sich ein HTML-Dokument auch ohne Kopf- und Fußzeile ausdrucken. | ||
Autor: Dieter Otter | Bewertung: | Views: 11.693 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Benutzen Sie auch das WebBrowser-Control um HTML-Dokumente in Ihrer Anwendung anzuzeigen?
Bieten Sie dem Anwender ebenfalls die Möglichkeit das Dokument direkt über das WebBrowser-Control ausdrucken zu können?
Dann hat es Sie doch sicherlich auch schon des öfteren gestört, dass beim Ausdruck immer die im Internet Explorer unter "Seite einrichten" voreingestellten Kopf- und Fußzeilen ausgegeben werden. Durch einen kleinen Eingriff in die Windows-Registry können Sie die Kopf- / Fußzeilen aber auch mal eben schnell ausschalten bzw. eigene Texte verwenden.
Der besagte Eintrag befindet sich in der Registry unter "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup" in den Schlüsselwerten "footer" und "header".
Gehen wir das Ganze also an. Für den Registry-Zugriff werden folgende API-Deklarationen benötigt:
Option Explicit ' API-Deklarationen Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _ Alias "RegOpenKeyExA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32.dll" _ Alias "RegQueryValueExA" ( _ ByVal hKey As Long, _ ByVal lpValueName As String, _ ByVal lpReserved As Long, _ lpType As Long, _ ByVal lpData As String, _ lpcbData As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32" _ Alias "RegSetValueExA" ( _ ByVal hKey As Long, _ ByVal lpValueName As String, _ ByVal Reserved As Long, _ ByVal dwType As Any, _ ByVal lpData As Any, _ ByVal cbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" ( _ ByVal hKey As Long) As Long Public Const HKEY_CURRENT_USER = &H80000001 Public Const KEY_QUERY_VALUE = &H1 Public Const KEY_SET_VALUE = &H2 Public Const REG_SZ = 1 Public Const ERROR_SUCCESS = 0&
' Registry-Zweig öffnen Private Function OpenKey(ByVal lhKey As Long, ByVal SubKey As String, _ ByVal Options As Long) As Long Dim lhKeyOpen As Long Dim lResult As Long lhKeyOpen = 0 lResult = RegOpenKeyEx(lhKey, SubKey, 0, Options, lhKeyOpen) If lResult <> ERROR_SUCCESS Then OpenKey = 0 Else OpenKey = lhKeyOpen End If End Function
' Wert aus der Registerdatenbank auslesen Public Function GetValueEx(ByVal hKey As Long, ByVal KeyName As String, _ ByVal EntryName As String) As String Dim sBuffer As String Dim nLen As Long Dim lhKeyOpen As Long Dim lResult As Long sBuffer = Space$(255) nLen = Len(sBuffer) lhKeyOpen = OpenKey(hKey, KeyName, KEY_QUERY_VALUE) lResult = RegQueryValueEx(lhKeyOpen, EntryName, 0, REG_SZ, sBuffer, nLen) If lResult = 0 Then sBuffer = Left$(sBuffer, nLen) If InStr(sBuffer, Chr$(0)) > 0 Then sBuffer = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1) End If GetValueEx = RTrim$(sBuffer) Else GetValueEx = "" End If RegCloseKey (lhKeyOpen) End Function
' Wert in Registrierdatenbank schreiben Public Function SetValueEx(lhKey&, SubKey$, EntryName$, sValue$) As Boolean Dim lhKeyOpen As Long Dim lResult As Long lhKeyOpen = OpenKey(lhKey, SubKey, KEY_SET_VALUE) lResult = RegSetValueEx(lhKeyOpen, EntryName, 0, CLng(REG_SZ), sValue, Len(sValue)) If lResult <> ERROR_SUCCESS Then SetValueEx = False Else SetValueEx = True RegCloseKey (lhKeyOpen) End If End Function
Was den Registryzugriff betrifft haben wir mit obigen Code schon alles, was wir benötigen.
Um nun die Kopf-/Fußzeilen auszuschalten, setzen wir einfach die beiden Registry-Werte auf einen "Leerstring". Am besten wir merken uns vor dem Ausdruck aber die Originalwerte, um diese dann später wiederherstellen zu können.
Dim sFooter As String Dim sHeader As String ' ursprüngliche Werte merken sFooter = GetValueEx(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\PageSetup", "footer") sHeader = GetValueEx(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\PageSetup", "header") ' Kopf-/Fußzeilen ausschalten SetValueEx HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\PageSetup", "footer", "" SetValueEx HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\PageSetup", "header", "" ' HTML-Dokument ausdrucken ... ' ursprüngliche Werte wiederherstellen SetValueEx HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\PageSetup", "footer", sFooter SetValueEx HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\PageSetup", "header", sHeader