Sử dụng hàm API ENUMPRINTERS như thế nào?

Liên hệ QC

sealand

Thành viên gạo cội
Tham gia
16/5/08
Bài viết
4,884
Được thích
7,687
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:

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
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.
 
Web KT
Back
Top Bottom