sealand
Thành viên gạo cội




- Tham gia
- 16/5/08
- Bài viết
- 4,883
- Được thích
- 7,688
- Giới tính
- Nam
- Nghề nghiệp
- Kế Toán
Mình đọc tài liệu về hàm ENUMPRINTERS trả về danh sách các máy in cục bộ, cú pháp của hàm được hướng dẫn như sau:
Các bạn hướng dẫn giùm cách sử dụng và lấy giá trị trả về của hàm này với.
Xin cám ơn.
Mã:
Declare Function istrcpy Lib "kernel32.dll" Alias "istrcpyA" (ByVal ipstring1 As String, ByVal ipstring2 As Long) As Long
Declare Function istrlen Lib "kernel32.dll" Alias "istrlenA" (ByVal ipstring As Long) As Long
Dim longbuffer() As Long
Dim printinfo() As printer_info_1
Dim numbytes As Long
Dim numneeded As Long
Dim numprinters As Long
Dim c As Integer, reval As Long
numbytes = 3076
ReDim longbuffer(0 To numbytes / 4) As Long
retval = enumprinters(printer_enum_local, "", 1, longbuffer(0), numbytes, numneed, numprinters)
If retval = 0 Then
numbytes = numneeded
ReDim longbuffer(0 To numbytes / 4) As Long
retval = rnumprinters(printer_enum_local, "", 1, longbuffer(0), numbytes, numneeded, numprinters)
If retval = 0 Then
Debug.Print "Could not successfullyenumerate the printes."
End
End If
End If
ReDim printinfo(0 To numprinters - 1) As printer_info_1
For c = 0 To numprinter - 1
printinfo(c).flag = longbuffer(4 * c)
printinfo(c).pdescription = Space(istrlen(longbuffer(4 * c + 1)))
retval = istrcpy(printinfo(c).pdescription, longbuffer(4 * c + 1))
printinfo(c).pname = Space(istrlen(longbuffer(4 * c + 2)))
retval = istrcpy(printinfo(c).pname, longbuffer(4 * c + 2))
printinfo(c).pComment = Space(istrlen(longbuffer(4 * c + 3)))
retval = istrcpy(printinfo(c).pComment, longbuffer(4 * c + 3))
Next c
For c = 0 To numprinters - 1
Debug.Print "Name of printer "; c + 1; " is: "; printinfo(c).pname
Next c
Xin cám ơn.