منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] ارجو مساعدتي بالاجابة عن سؤال - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] ارجو مساعدتي بالاجابة عن سؤال (/showthread.php?tid=3017)



ارجو مساعدتي بالاجابة عن سؤال - yasser ali - 27-05-14

[attachment=1860]
السلام عليكم اخوتي
ارجو المساعدة
لدي طابعتين على كومبيوتري كل واحدة اطبع فيها على حدا . فعندما احتاج الطابعة الاولى اقوم
بالنقر عليها كلك ايمن واضغط set default printer كما موضح بالصورة A . وعندما احتاج الطباعة
على الطابعة الثانية افعل نفس الشيء للطابعة الثانية .
احتاج الى برنامج بسيط يتكون كما موضح من button عدد 2 كما موضح بالصورة B . فعند الضغط
على button الطابعة رقم 1 يقوم بجعل الطابعة الاولى هي الطابعة الdefault و عند الضغط
على button الطابعة رقم 2 يقوم بجعل الطابعة الثانية هي الطابعة الdefault

وجزاكم الله خيرا

http://im54.gulfup.com/myIFKB.jpg

http://im54.gulfup.com/ofrMU9.jpg


RE: ارجو مساعدتي بالاجابة عن سؤال - Ali Wisam - 27-05-14

اهلا اخي Smile
جرب هذا الكود , و ضع بدل كلمة Printer اسم الطابعة
كود :
Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""printer""")
مثلا :
كود :
Shell("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""HP Deskjet F2100 series""")
و للامانة فان امر الـ CMD منقول .. Wink

تحياتي :")



RE: ارجو مساعدتي بالاجابة عن سؤال - Motaz Alnuweiri - 27-05-14

تفضل أخي Smile

كود :
'كود جلب أسماء كل الطابعات المثبتة على الجهاز
Public Sub LoadAllPrinters()
    For Each Name As String In Printing.PrinterSettings.InstalledPrinters
        ComboBox1.Items.Add(Name)
    Next

    Dim PrintDoc As New Printing.PrintDocument()
    ComboBox1.Text = PrintDoc.PrinterSettings.PrinterName
End Sub

'كود تعيين الطابعة الافتراضية
Public Function SetDefaultPrinter(ByVal Name As String) As Boolean
    Dim PrintDoc As New Printing.PrintDocument()
    Dim WshNetwork As Object = Nothing
    Dim OldPrinterName As String = String.Empty

    Try
        OldPrinterName = PrintDoc.PrinterSettings.PrinterName
        WshNetwork = Microsoft.VisualBasic.CreateObject("WScript.Network")
        WshNetwork.SetDefaultPrinter(Name)
        PrintDoc.PrinterSettings.PrinterName = Name

        If PrintDoc.PrinterSettings.IsValid Then
            Return True
        Else
            WshNetwork.SetDefaultPrinter(OldPrinterName)
            Return False
        End If

    Catch ex As Exception
        If WshNetwork IsNot Nothing Then
            WshNetwork.SetDefaultPrinter(OldPrinterName)
        End If

    Finally
        PrintDoc = Nothing
        WshNetwork = Nothing
    End Try

    Return False
End Function

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    LoadAllPrinters()
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    If SetDefaultPrinter(ComboBox1.Text) Then
        MessageBox.Show(String.Format("الطابعة ""{0}"" أصبحت هي الطابعة الافتراضية", ComboBox1.Text),
                        "الطابعة", MessageBoxButtons.OK, MessageBoxIcon.Information,
                        MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading)
    End If
End Sub

المرجع: Setting Windows default printer