vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Drucker   |   VB-Versionen: VB4, VB5, VB621.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 OtterBewertung:  Views:  10.023 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.