الأولى أن تقوم بالطباعة برمجياً بنفسك يعني ترسم النص وترسله إلى الطابعة
والثاني وهو الأقصر وهو أن تقوم بالاستعانة ببرنامج الNotepad فكما تلاحظ أمر الطباعة متوفر عندما تضغط بالزر الأيمن في القائمة يظهر أمر الطباعة print
أستخدم هذا الاجراء لطباعة أي ملف نصي باستخدام النوتباد
PHP كود :
Sub PrintTextFile(ByVal filePath As String) Dim psi As New ProcessStartInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) & "\Notepad.exe") psi.Arguments = "/p " & filePath Process.Start(psi) End Sub
30-03-13, 01:40 AM (آخر تعديل لهذه المشاركة : 30-03-13, 03:18 AM {2} بواسطة H16.)
أبو يعقوب كتب :السلام عليكم
لديك طريقتين
الأولى أن تقوم بالطباعة برمجياً بنفسك يعني ترسم النص وترسله إلى الطابعة
والثاني وهو الأقصر وهو أن تقوم بالاستعانة ببرنامج الNotepad فكما تلاحظ أمر الطباعة متوفر عندما تضغط بالزر الأيمن في القائمة يظهر أمر الطباعة print
أستخدم هذا الاجراء لطباعة أي ملف نصي باستخدام النوتباد
PHP كود :
Sub PrintTextFile(ByVal filePath As String) Dim psi As New ProcessStartInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) & "\Notepad.exe") psi.Arguments = "/p " & filePath Process.Start(psi) End Sub
أخي الحبيب / أبو يعقوب
أشكرك جداً على إجابتك ... وفقنا الله وإياك
سأخبرك بسر : ) هههه
أنا لدي معرفة قديمة بلغات أخرى ... لكن لم يسبق أن تعاملت مع الفيجوال بيسك إلا الشيء البسيط ...
و لذلك أتمنى منك التوضيح بشيء من التبسيط
بالنسبة للطريقة الأولى ... تقول : (أن تقوم بالطباعة برمجياً بنفسك يعني ترسم النص وترسله إلى الطابعة)
لكني - يا أستاذي العزيز - أنا لا أبحث عن طريقة يدوية أضع فيها النص و أرسله إلى الطابعة !!
أنا أريد أن أصنع برنامج صغير ، و ليكن اسمه مثلاً (Printing.exe) بحيث عندما أضغط عليه (دبل كليك) يقوم تلقائياً بطباعة ملف c:\file.txt
بالنسبة للطريقة الثانية ، اللي هي استعمال الـ Notepad ماذا أفعل بالنص البرمجي الذي أدرجته في ردك أعلاه ؟
بعد أن أنسخه و ألصقه ... ماذا أفعل بعد ذلك ؟
31-03-13, 01:31 AM (آخر تعديل لهذه المشاركة : 31-03-13, 04:49 AM {2} بواسطة H16.)
أبو يعقوب كتب :الطريقة الأولى أقصد رسم برمجي وليس يدوي
مثال على الطريقة الثانيى مرفق ، يقوم بطباعة c:\file.txt
و الله أنا عاجز عن شكرك يا غالي :o
أدعو الله تعالى أن يبارك لك في عمرك و سائر عملك ، و أن يضاعف لك الأجر ، و أن يرزقك من حيث لا تحتسب
البرنامج يعمل كما تمنيت 100%
الحقيقة أنا اليوم حاولت أن أقوم بتغيير بسيط في البرنامج و لكني لم أفلح !
أردت أن يكون النص المطبوع بالألوان ، و كما هو معروف بأن ملف التكست file.txt ليس فيه ألوان ،
فجربت أن أجعل البرنامج يطبع ملف صفحة ويب من نوع html
أنشأت ملف صفحة ويب html في المسار c:\file.html بدلاً من [b][SIZE=4]c:\file.txt [b][SIZE=4]وغيرت ذلك في كود البرنامج بطبيعة الحال[/SIZE][/b]
ثم كتبت iexplore.exe بدلاً منNotepad.exe
و قمت بتشغيل البرنامج لكنه لم يعمل !!
و لأن هذه المحاولة لم تنجح فقد جربت - أيضاً - محاولة ثانية لعل و عسى أن تنجح ( و هي أن أجعل البرنامج يطبع ملف صورة من نوع png ) :
فوضعت ملف صورة png في المسار c:\file.png بدلاً من c:\file.txt
ثم كتبت في كود البرنامج paint.exe بدلاً من [b]Notepad.exe[/b]
لكن لم تنجح المحاولة أيضاً !!
كيف أصحح هذا الإجراء ؟
و أعتذر منك بشدة على كثرة أسئلتي :o و جزاك الله خيرا
[/SIZE]
سأخبرك من أين علمت أنا أن طباعة ملف(نصي) باستخدام النوتباد بهذه الطريقة
لو كتبنا في Run هذا الأمر
Notepad.exe /p C:\File.txt
سيعلم النوتباد بأننا نريد طباعته، بسبب الباراميتر /p
عندما تضغط بالزر الأيمن على أي ملف نصي ستلاحظ أمر الطباعة Print لو تتبعت هذا الأمر في الرجستري سترى أنه بهذه الصورة %SystemRoot%\system32\NOTEPAD.EXE /p %1
فمن هنا علمت أنا أنه لطباعة أي ملف نصي باستخدام النوتباد نستخدم الباراميتر /p
هل هناك أمر طباعة مشابه لبرنامج iexplore.exe ؟ أو أي برنامج آخر نستخدم نفس الطريقة إن كان هناك أكر في قائمة الزر الأيمن فالأمر سهل
ابحث عن المفتاح htmlfile في الرجستري (تحت أول مفتاح رئيسي) وسترى المفتاح shell وهو الذي يحتوي على الأوامر
مما يعني أن الباراميتر لـ طباعة ملفات html هو نفسه p/ الذي استعملناه لـ طباعة file.txt بالـ Notepad
و فيما يخص البرنامج الذي يقوم بطباعة ملفات html حسبما يقول الرجستري الموضح أعلاه فهو msohtmed.exe
و بناءً على ذلك قمت بتحرير الكود كما يلي :
مسحت Notepad.exe وكتبت مكانها msohtmed.exe و أبقيت على p/ دون تغيير
فأصبح كما يلي :
PHP كود :
[align=left]Public Class Form1 Sub PrintTextFile(ByVal filePath As String) Dim psi As New ProcessStartInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) & "\msohtmed.exe") psi.Arguments = "/p " & filePath Process.Start(psi) End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PrintTextFile("c:\file.txt") End Sub End Class[/align]
و لكن ظهرت لي رسالة خطأ تقول :
Win32Exception was unhandled
The system cannot find the file specified
أبو يعقوب كتب :بارك الله فيك، نفس الذي توصلت إليه
الخطأ طبعا هو مسار البرنامج وتصحيحك له هو الخيار الوحيد
أشكرك أستاذي العزيز أبويعقوب ...
بالنسبة لـ مسار البرنامج الذي وضعته أنا .... هو فعلاً صحيح ... و يشتغل على جهاز الكمبيوتر الخاص بي بنظام Windows8
لكن عندما نقلت البرنامج إلى كمبيوتر آخر لديه نظام Windows7 لم يعمل البرنامج !!
و ذلك بسبب أن كل نسخة من نظام التشغيل تختلف عن الأخرى ...
فما هو المسار الذي يمكن أن نضعه في برنامجنا لكي يعمل مع كل الإصدارات الحديثة من الويندوز ؟
أو ما هو الأمر الذي يمكن أن نضعه في برنامجنا لكي يعمل مع كل الإصدارات الحديثة من الويندوز ؟