vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
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:     [ Jetzt bewerten ]Views:  10.000 
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

Dieser Tipp wurde bereits 10.000 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel