الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عرض الطابعات

مغلق
بدأه المبتدي2 في 18 أبريل 2005 · 1 رد · 734 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخواني انا عندي سوال بخصوص الطابعات وهو كيف يمكن عرض الطابعات من داخل برنامج

vb (اي كانك اخترت ابدا ....اعدادت......طابعات)

حيث استطيع اختيار طابعة افتراضية وكذلك تغير خصائصها او اضافة طابعة جديدة

والسلام عليكم ورحمة الله وبركاته

#2

اختيار الطابعة التي يتم استخدامها في الطباعة

'--------------------------------------------- 
'How To: Choosing a Printer Device at Run time 
'Posted: 07-June-00'Author: Robert L Cannon' 
'Description: Sample program written in response 
'to forum question. This shows a very basic 
'example of how to allow the user to select the 
'printer for the current program at run time. Some 
'solutions end up changing the default printer for 
'all apps which may not be what you want. 
'--------------------------------------------- 

'Option Explicit 
Private Sub Form_Load() 
Dim P As Printer 
' Display the current default printer name and port. 
cboPrinters.Text = Printer.DeviceName 
lblPort.Caption = Printer.Port 
' Loop through the printers collection and check each printer name. 
For Each P In Printers 
' Skip any printers you don't want to appear in the combo box. 
If P.DeviceName = "Rendering Subsystem" Then 
'Don't add it to the combo box. 
Else 
' Add any printers you do want to appear in the combo box. 
cboPrinters.AddItem P.DeviceName 
End If 
Next 
End Sub 
Private Sub cboPrinters_Click() 
Dim P As Printer 
' Loop through the printers collection and check each printer name. 
For Each P In Printers 
' If the printers collection name matches the printer selected in the 
' combo box, display it's port. 
If P.DeviceName = cboPrinters.List(cboPrinters.ListIndex) Then 
lblPort.Caption = P.Port 
Exit For 
End If 
Next 
End Sub 
Private Sub cmdOK_Click() 
Dim P As Printer 
' Loop through the printers collection and check each printer name. 
For Each P In Printers 
' If the printers collection name is the same as the printer selected 
' in the combo box, set that printer as the applications default printer. 
If P.DeviceName = cboPrinters.List(cboPrinters.ListIndex) Then 
Set Printer = P 
Exit For 
End If 
Next 
' Optional message box. 
MsgBox "All printing for this application will be sent to the " & _ 
    Printer.DeviceName & " printer on " & Printer.Port, vbOKOnly, "Print" 
Unload Me 
End Sub 

Private Sub cmdCancel_Click() 
Unload Me 
End Sub

حالة الطابعة

Private Const CCHDEVICENAME = 32 
Private Const CCHFORMNAME = 32 
Private Type DEVMODE 
    dmDeviceName As String * CCHDEVICENAME 
    dmSpecVersion As Integer 
    dmDriverVersion As Integer 
    dmSize As Integer 
    dmDriverExtra As Integer 
    dmFields As Long 
    dmOrientation As Integer 
    dmPaperSize As Integer 
    dmPaperLength As Integer 
    dmPaperWidth As Integer 
    dmScale As Integer 
    dmCopies As Integer 
    dmDefaultSource As Integer 
    dmPrintQuality As Integer 
    dmColor As Integer 
    dmDuplex As Integer 
    dmYResolution As Integer 
    dmTTOption As Integer 
    dmCollate As Integer 
    dmFormName As String * CCHFORMNAME 
    dmUnusedPadding As Integer 
    dmBitsPerPel As Integer 
    dmPelsWidth As Long 
    dmPelsHeight As Long 
    dmDisplayFlags As Long 
    dmDisplayFrequency As Long 
End Type 
Private Type PRINTER_INFO_2 
   pServerName As String 
   pPrinterName As String 
   pShareName As String 
   pPortName As String 
   pDriverName As String 
   pComment As String 
   pLocation As String 
   pDevMode As Long 
   pSepFile As String 
   pPrintProcessor As String 
   pDatatype As String 
   pParameters As String 
   pSecurityDescriptor As Long 
   Attributes As Long 
   Priority As Long 
   DefaultPriority As Long 
   StartTime As Long 
   UntilTime As Long 
   Status As Long 
   JobsCount As Long 
   AveragePPM As Long 
End Type 
Private Type PRINTER_DEFAULTS 
  pDatatype As String 
  pDevMode As DEVMODE 
  DesiredAccess As Long 
End Type 
Public Enum Printer_Status 
   PRINTER_STATUS_READY = &H0 
   PRINTER_STATUS_PAUSED = &H1 
   PRINTER_STATUS_ERROR = &H2 
   PRINTER_STATUS_PENDING_DELETION = &H4 
   PRINTER_STATUS_PAPER_JAM = &H8 
   PRINTER_STATUS_PAPER_OUT = &H10 
   PRINTER_STATUS_MANUAL_FEED = &H20 
   PRINTER_STATUS_PAPER_PROBLEM = &H40 
   PRINTER_STATUS_OFFLINE = &H80 
   PRINTER_STATUS_IO_ACTIVE = &H100 
   PRINTER_STATUS_BUSY = &H200 
   PRINTER_STATUS_PRINTING = &H400 
   PRINTER_STATUS_OUTPUT_BIN_FULL = &H800 
   PRINTER_STATUS_NOT_AVAILABLE = &H1000 
   PRINTER_STATUS_WAITING = &H2000 
   PRINTER_STATUS_PROCESSING = &H4000 
   PRINTER_STATUS_INITIALIZING = &H8000 
   PRINTER_STATUS_WARMING_UP = &H10000 
   PRINTER_STATUS_TONER_LOW = &H20000 
   PRINTER_STATUS_NO_TONER = &H40000 
   PRINTER_STATUS_PAGE_PUNT = &H80000 
   PRINTER_STATUS_USER_INTERVENTION = &H100000 
   PRINTER_STATUS_OUT_OF_MEMORY = &H200000 
   PRINTER_STATUS_DOOR_OPEN = &H400000 
   PRINTER_STATUS_SERVER_UNKNOWN = &H800000 
   PRINTER_STATUS_POWER_SAVE = &H1000000 
End Enum 
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long 
Private Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, buffer As Long, ByVal pbSize As Long, pbSizeNeeded As Long) As Long 
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long 
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 
Private Declare Function IsBadStringPtrByLong Lib "kernel32" Alias "IsBadStringPtrA" (ByVal lpsz As Long, ByVal ucchMax As Long) As Long 
Public Function StringFromPointer(lpString As Long, lMaxLength As Long) As String 
    Dim sRet As String 
    Dim lret As Long 
    If lpString = 0 Then 
        StringFromPointer = "" 
        Exit Function 
    End If 
    If IsBadStringPtrByLong(lpString, lMaxLength) Then 
        ' An error has occured - do not attempt to use this pointer 
        StringFromPointer = "" 
        Exit Function 
    End If 
    ' Pre-initialise the return string... 
    sRet = Space$(lMaxLength) 
    CopyMemory ByVal sRet, ByVal lpString, ByVal Len(sRet) 
    If Err.LastDllError = 0 Then 
        If InStr(sRet, Chr$(0)) > 0 Then 
            sRet = Left$(sRet, InStr(sRet, Chr$(0)) - 1) 
        End If 
    End If 
    StringFromPointer = sRet 
End Function 
Private Sub Form_Load() 
    Dim SizeNeeded As Long, buffer() As Long 
    Dim pDef As PRINTER_DEFAULTS 
    'Get a handle to the printer 
    lret = OpenPrinter(Printer.DeviceName, mhPrinter, pDef) 
    'Initialize the buffer 
    ReDim Preserve buffer(0 To 0) As Long 
    'Retrieve the required size (in bytes) 
    lret = GetPrinter(mhPrinter, 2, buffer(0), UBound(buffer), SizeNeeded) 
    'Resize the buffer... Note that a Long is four bytes 
    ReDim Preserve buffer(0 To (SizeNeeded / 4) + 3) As Long 
    'Retrieve the Printer information 
    lret = GetPrinter(mhPrinter, 2, buffer(0), UBound(buffer) * 4, SizeNeeded) 
    'The data stored in 'buffer' corresponds with the data of a PRINTER_INFO_2 structure 
    ClosePrinter mhPrinter 
    'Show the data 
    PrintData "Server name", StringFromPointer(buffer(0), 255) 
    PrintData "Printer name", StringFromPointer(buffer(1), 255) 
    PrintData "Share name", StringFromPointer(buffer(2), 255) 
    PrintData "Port name", StringFromPointer(buffer(3), 255) 
    PrintData "Driver name", StringFromPointer(buffer(4), 255) 
    PrintData "Comment", StringFromPointer(buffer(5), 255) 
    PrintData "Location", StringFromPointer(buffer(6), 255) 
    Unload Me 
End Sub 
Sub PrintData(Name As String, Data As String) 
    If LenB(Data) > 0 Then 
        Debug.Print Name + ": " + Data 
    End If 
End Sub

طباعة نص

'ضيف مفتاح الي FORM.

'Form Code

Private Sub Command1_Click() 
' the following example will print hello on the form 
    Printer.Print "hello" 
' use the EndDoc command if this text is the last thing you want 
' to print on the paper 
    Printer.EndDoc 
End Sub

ديه بعض اكواد الطباعة ياريت تساعدك

www.acrowing.com

اول موقع عربي لرياضة التجديف

هذا الموضوع مغلق.

مواضيع مشابهة