vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Öffnen des Eigenschaften-Fensters für einen Drucker 
Autor: Rainer
Datum: 27.04.17 15:16

Hallo,
bei der Verwendung der API-Funktion PrinterProperty, mit der das zum Druckertreiber gehörende Eigenschaften-Fenster angezeigt werden kann, verlangt sie die Handle-Nr. des Druckers und des aufrufenden Formlars. Für die Bereitstellung des Drucker-Handle steht die API-Funktion OpenPrinter zur Verfügung. Diese API-Funktion verlangt die Parameter
- Name des Druckers,
- ein Integer-Feld zur Aufnahme der Handle-Nr. und
- ein Default-Feld mit der nutzerspezifischen Struktur PRINTER_DEFAULTS.
In der API-Referenz steht nun, daß für den besagten Fall das Default-Feld auch als "0" angegeben werden kann. Im Beispiel steht dafür die Definition CInt(0), die aber von Visual Basic als unzulässig abgewiesen wird. Daraufhin habe ich für den Default-Parameter NOTHING angegeben und die Fehlermeldung gab es nicht mehr. Alle Versuche - auch die Elemente der Struktur einzelnen mit Leerstring, 0 und Nothing zu belegen - führten zwar zu keiner Fehlermeldung mehr, aber die API-Funktion lieferte immer die Handle-Nr. 0, also kein Handle.
Aus meiner Sicht liegt das Problem in der Übergabe des Default-Parameters. Hat jemand eine Idee, was dort anstelle von CInt(0) angegeben werden muß, damit die Funktion das Drucker-Handle liefert?
Gruß, Rainer.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Öffnen des Eigenschaften-Fensters für einen Drucker 
Autor: Manfred X
Datum: 27.04.17 17:29

Meinst Du [u]diese API?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Öffnen des Eigenschaften-Fensters für einen Drucker 
Autor: Rainer
Datum: 28.04.17 13:54

Genau die. Siehe auch http://www.vbarchiv.net/api/api_openprinter.html.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Öffnen des Eigenschaften-Fensters für einen Drucker 
Autor: Manfred X
Datum: 28.04.17 14:01

Diese Deklaration (von Pinvoke) liefert einen Pointer:
    <StructLayout(LayoutKind.Sequential)> _
    Structure PRINTER_DEFAULTS
        Public pDatatype As IntPtr
        Public pDevMode As IntPtr
        Public DesiredAccess As Integer
    End Structure
 
 
    <DllImport("winspool.drv", EntryPoint:="OpenPrinterA", ExactSpelling:=True, _
              SetLastError:=True, CallingConvention:=CallingConvention.StdCall, _
              CharSet:=CharSet.Ansi)> _
    Private Shared Function OpenPrinter(ByVal pPrinterName As String, _
             ByRef hPrinter As IntPtr, ByRef pDefault As PRINTER_DEFAULTS) As _
             Boolean
    End Function
Anwendung:
 Dim hprinter As System.IntPtr
 Dim pd As New PRINTER_DEFAULTS
 
 Dim ok As Boolean = OpenPrinter(<Printername>, hprinter, pd)
MSDN zum 2. Parameter:
A pointer to a variable that receives a handle to the open printer or print server object.
Deshalb: Parameter-Übergabe ByRef im Interop.

Beitrag wurde zuletzt am 28.04.17 um 14:07:36 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Öffnen des Eigenschaften-Fensters für einen Drucker 
Autor: Rainer
Datum: 28.04.17 15:11

Hallo Manfred X,
Dank für Deine Hilfe. Ich hatte bei der Übernahme der API-Funktion aus der API-Referenz nicht bedacht, daß in früheren VB-Versionen BYREF die Standardeinstellung für Funktionsparameter war. Mit der Korrektur war das Problem behoben.
Gruß, Rainer.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 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