-----Message d'origine-----
Bonjour Patrice,
Voila un bout de code qui peut t'inspirer.
Option Compare Database
' Get information about all of the local printers using
structure 1. Note
how
' the elements of the array are loaded into an array of
data structures
manually. Also
' note how the following special declares must be used to
allow numeric
string pointers
' to be used in place of strings:
Private Declare Function lstrcpy Lib "kernel32.dll"
Alias "lstrcpyA" (ByVal
lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32.dll"
Alias "lstrlenA" (ByVal
lpString As Long) As Long
Private Declare Function EnumPrinters Lib "winspool.drv"
Alias
"EnumPrintersA" (ByVal flags As Long, ByVal name As
String, ByVal Level As
Long, pPrinterEnum As Long, ByVal cdBuf As Long,
pcbNeeded As Long,
pcReturned As Long) As Long
Const PRINTER_ENUM_LOCAL = &H2
Private Type PRINTER_INFO_1
flags As Long
pDescription As String
pName As String
pComment As String
End Type
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail:
Dim longbuffer() As Long ' resizable array receives
information from
the function
Dim printinfo() As PRINTER_INFO_1 ' values inside
longbuffer() will be
put into here
Dim numbytes As Long ' size in bytes of longbuffer()
Dim numneeded As Long ' receives number of bytes
necessary if
longbuffer() is too small
Dim numprinters As Long ' receives number of
printers found
Dim c As Integer, retval As Long ' counter variable
& return value
'Me.AutoRedraw = True 'Set current graphic mode to
persistent
' Get information about the local printers
numbytes = 3076 ' should be sufficiently big, but it
may not be
ReDim longbuffer(0 To numbytes / 4) As Long ' resize
array -- note how
1 Long = 4 bytes
retval = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1,
longbuffer(0),
numbytes, numneeded, numprinters)
If retval = 0 Then ' try enlarging longbuffer() to
receive all
necessary information
numbytes = numneeded
ReDim longbuffer(0 To numbytes / 4) As Long '
make it large enough
retval = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1,
longbuffer(0),
numbytes, numneeded, numprinters)
If retval = 0 Then ' failed again!
Debug.Print "Could not successfully enumerate
the printes."
End ' abort program
End If
End If
' Convert longbuffer() data into printinfo()
If numprinters <> 0 Then ReDim printinfo(0 To
numprinters - 1) As
PRINTER_INFO_1 ' room for each printer
For c = 0 To numprinters - 1 ' loop, putting each
set of information
into each element
' longbuffer(4 * c) = .flags, longbuffer(4 * c +
1) = .pDescription,
etc.
' For each string, the string is first buffered
to provide enough
room, and then the string is copied.
printinfo(c).flags = longbuffer(4 * c)
printinfo(c).pDescription = Space(lstrlen
(longbuffer(4 * c + 1)))
retval = lstrcpy(printinfo(c).pDescription,
longbuffer(4 * c + 1))
printinfo(c).pName = Space(lstrlen(longbuffer(4 *
c + 2)))
retval = lstrcpy(printinfo(c).pName, longbuffer(4
* c + 2))
printinfo(c).pComment = Space(lstrlen(longbuffer
(4 * c + 3)))
retval = lstrcpy(printinfo(c).pComment, longbuffer
(4 * c + 3))
Next c
' Display name of each printer
For c = 0 To numprinters - 1
MsgBox "Name of printer " & c + 1 & " is: " &
printinfo(c).pName
Next c
End Sub
A épurer une chose est sure ça revoit bien la liste des
imprimantes
déclarées sur le poste.
Bon Code
Denis
"Patrice" a écrit dans le message de
news:0cf001c3623f$d5894270$
Bonjour,
Je dispose de 3 imprimantes.
Peut-on, à partir d'un formulaire, afficher les
imprimantes disponibles sur mon ordi puis d'en
sélectionner une pour imprimer un état.
Merci et bonne journée
.
-----Message d'origine-----
Bonjour Patrice,
Voila un bout de code qui peut t'inspirer.
Option Compare Database
' Get information about all of the local printers using
structure 1. Note
how
' the elements of the array are loaded into an array of
data structures
manually. Also
' note how the following special declares must be used to
allow numeric
string pointers
' to be used in place of strings:
Private Declare Function lstrcpy Lib "kernel32.dll"
Alias "lstrcpyA" (ByVal
lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32.dll"
Alias "lstrlenA" (ByVal
lpString As Long) As Long
Private Declare Function EnumPrinters Lib "winspool.drv"
Alias
"EnumPrintersA" (ByVal flags As Long, ByVal name As
String, ByVal Level As
Long, pPrinterEnum As Long, ByVal cdBuf As Long,
pcbNeeded As Long,
pcReturned As Long) As Long
Const PRINTER_ENUM_LOCAL = &H2
Private Type PRINTER_INFO_1
flags As Long
pDescription As String
pName As String
pComment As String
End Type
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim longbuffer() As Long ' resizable array receives
information from
the function
Dim printinfo() As PRINTER_INFO_1 ' values inside
longbuffer() will be
put into here
Dim numbytes As Long ' size in bytes of longbuffer()
Dim numneeded As Long ' receives number of bytes
necessary if
longbuffer() is too small
Dim numprinters As Long ' receives number of
printers found
Dim c As Integer, retval As Long ' counter variable
& return value
'Me.AutoRedraw = True 'Set current graphic mode to
persistent
' Get information about the local printers
numbytes = 3076 ' should be sufficiently big, but it
may not be
ReDim longbuffer(0 To numbytes / 4) As Long ' resize
array -- note how
1 Long = 4 bytes
retval = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1,
longbuffer(0),
numbytes, numneeded, numprinters)
If retval = 0 Then ' try enlarging longbuffer() to
receive all
necessary information
numbytes = numneeded
ReDim longbuffer(0 To numbytes / 4) As Long '
make it large enough
retval = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1,
longbuffer(0),
numbytes, numneeded, numprinters)
If retval = 0 Then ' failed again!
Debug.Print "Could not successfully enumerate
the printes."
End ' abort program
End If
End If
' Convert longbuffer() data into printinfo()
If numprinters <> 0 Then ReDim printinfo(0 To
numprinters - 1) As
PRINTER_INFO_1 ' room for each printer
For c = 0 To numprinters - 1 ' loop, putting each
set of information
into each element
' longbuffer(4 * c) = .flags, longbuffer(4 * c +
1) = .pDescription,
etc.
' For each string, the string is first buffered
to provide enough
room, and then the string is copied.
printinfo(c).flags = longbuffer(4 * c)
printinfo(c).pDescription = Space(lstrlen
(longbuffer(4 * c + 1)))
retval = lstrcpy(printinfo(c).pDescription,
longbuffer(4 * c + 1))
printinfo(c).pName = Space(lstrlen(longbuffer(4 *
c + 2)))
retval = lstrcpy(printinfo(c).pName, longbuffer(4
* c + 2))
printinfo(c).pComment = Space(lstrlen(longbuffer
(4 * c + 3)))
retval = lstrcpy(printinfo(c).pComment, longbuffer
(4 * c + 3))
Next c
' Display name of each printer
For c = 0 To numprinters - 1
MsgBox "Name of printer " & c + 1 & " is: " &
printinfo(c).pName
Next c
End Sub
A épurer une chose est sure ça revoit bien la liste des
imprimantes
déclarées sur le poste.
Bon Code
Denis
"Patrice" <dau.p@evhr.net> a écrit dans le message de
news:0cf001c3623f$d5894270$a301280a@phx.gbl...
Bonjour,
Je dispose de 3 imprimantes.
Peut-on, à partir d'un formulaire, afficher les
imprimantes disponibles sur mon ordi puis d'en
sélectionner une pour imprimer un état.
Merci et bonne journée
.
-----Message d'origine-----
Bonjour Patrice,
Voila un bout de code qui peut t'inspirer.
Option Compare Database
' Get information about all of the local printers using
structure 1. Note
how
' the elements of the array are loaded into an array of
data structures
manually. Also
' note how the following special declares must be used to
allow numeric
string pointers
' to be used in place of strings:
Private Declare Function lstrcpy Lib "kernel32.dll"
Alias "lstrcpyA" (ByVal
lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32.dll"
Alias "lstrlenA" (ByVal
lpString As Long) As Long
Private Declare Function EnumPrinters Lib "winspool.drv"
Alias
"EnumPrintersA" (ByVal flags As Long, ByVal name As
String, ByVal Level As
Long, pPrinterEnum As Long, ByVal cdBuf As Long,
pcbNeeded As Long,
pcReturned As Long) As Long
Const PRINTER_ENUM_LOCAL = &H2
Private Type PRINTER_INFO_1
flags As Long
pDescription As String
pName As String
pComment As String
End Type
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail:
Dim longbuffer() As Long ' resizable array receives
information from
the function
Dim printinfo() As PRINTER_INFO_1 ' values inside
longbuffer() will be
put into here
Dim numbytes As Long ' size in bytes of longbuffer()
Dim numneeded As Long ' receives number of bytes
necessary if
longbuffer() is too small
Dim numprinters As Long ' receives number of
printers found
Dim c As Integer, retval As Long ' counter variable
& return value
'Me.AutoRedraw = True 'Set current graphic mode to
persistent
' Get information about the local printers
numbytes = 3076 ' should be sufficiently big, but it
may not be
ReDim longbuffer(0 To numbytes / 4) As Long ' resize
array -- note how
1 Long = 4 bytes
retval = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1,
longbuffer(0),
numbytes, numneeded, numprinters)
If retval = 0 Then ' try enlarging longbuffer() to
receive all
necessary information
numbytes = numneeded
ReDim longbuffer(0 To numbytes / 4) As Long '
make it large enough
retval = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1,
longbuffer(0),
numbytes, numneeded, numprinters)
If retval = 0 Then ' failed again!
Debug.Print "Could not successfully enumerate
the printes."
End ' abort program
End If
End If
' Convert longbuffer() data into printinfo()
If numprinters <> 0 Then ReDim printinfo(0 To
numprinters - 1) As
PRINTER_INFO_1 ' room for each printer
For c = 0 To numprinters - 1 ' loop, putting each
set of information
into each element
' longbuffer(4 * c) = .flags, longbuffer(4 * c +
1) = .pDescription,
etc.
' For each string, the string is first buffered
to provide enough
room, and then the string is copied.
printinfo(c).flags = longbuffer(4 * c)
printinfo(c).pDescription = Space(lstrlen
(longbuffer(4 * c + 1)))
retval = lstrcpy(printinfo(c).pDescription,
longbuffer(4 * c + 1))
printinfo(c).pName = Space(lstrlen(longbuffer(4 *
c + 2)))
retval = lstrcpy(printinfo(c).pName, longbuffer(4
* c + 2))
printinfo(c).pComment = Space(lstrlen(longbuffer
(4 * c + 3)))
retval = lstrcpy(printinfo(c).pComment, longbuffer
(4 * c + 3))
Next c
' Display name of each printer
For c = 0 To numprinters - 1
MsgBox "Name of printer " & c + 1 & " is: " &
printinfo(c).pName
Next c
End Sub
A épurer une chose est sure ça revoit bien la liste des
imprimantes
déclarées sur le poste.
Bon Code
Denis
"Patrice" a écrit dans le message de
news:0cf001c3623f$d5894270$
Bonjour,
Je dispose de 3 imprimantes.
Peut-on, à partir d'un formulaire, afficher les
imprimantes disponibles sur mon ordi puis d'en
sélectionner une pour imprimer un état.
Merci et bonne journée
.