| |
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. | |
Re: Öffnen des Eigenschaften-Fensters für einen Drucker | | | Autor: Manfred X | Datum: 27.04.17 17:29 |
| Meinst Du [u]diese API? | |
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. | |
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. | |
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. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
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
|
|