منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=8226)

الصفحات: 1 2


بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - عبدالعزيز - 29-03-13

السلام عليكم

أريد أن أعمل بريمج صغير يقوم بمهمة واحدة فقط وهي :
إذا ضغطت على البرنامج دبل كليك فإنه يقوم بتنفيذ أمر طباعة لـ ملف تكست .... مثلاً : c:\file.txt

أتمنى مساعدتكم بارك الله فيكم إخواني ،،،




بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - أبو يعقوب - 30-03-13

السلام عليكم

لديك طريقتين

الأولى أن تقوم بالطباعة برمجياً بنفسك يعني ترسم النص وترسله إلى الطابعة

والثاني وهو الأقصر وهو أن تقوم بالاستعانة ببرنامج ال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

طبعا لو كنت مكانك سأقوم بالطباعة برمجياً

هذه أداة طباعة بإمكانها طباعة النصوص
http://vb4arb.com/vb/showthread.php?3785-%E3%D4%D1%E6%DA-%C8%E4%C7%C1-%C3%CF%C7%C9-%D8%C8%C7%DA%C9


بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - عبدالعزيز - 30-03-13

أبو يعقوب كتب :السلام عليكم

لديك طريقتين

الأولى أن تقوم بالطباعة برمجياً بنفسك يعني ترسم النص وترسله إلى الطابعة

والثاني وهو الأقصر وهو أن تقوم بالاستعانة ببرنامج ال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 ماذا أفعل بالنص البرمجي الذي أدرجته في ردك أعلاه ؟
بعد أن أنسخه و ألصقه ... ماذا أفعل بعد ذلك ؟



بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - أبو يعقوب - 30-03-13

الطريقة الأولى أقصد رسم برمجي وليس يدوي


مثال على الطريقة الثانيى مرفق ، يقوم بطباعة c:\file.txt


بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - عبدالعزيز - 31-03-13

أبو يعقوب كتب :الطريقة الأولى أقصد رسم برمجي وليس يدوي


مثال على الطريقة الثانيى مرفق ، يقوم بطباعة 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]

[/b]



بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - أبو يعقوب - 31-03-13

سأخبرك من أين علمت أنا أن طباعة ملف(نصي) باستخدام النوتباد بهذه الطريقة

لو كتبنا في Run هذا الأمر

Notepad.exe /p C:\File.txt

سيعلم النوتباد بأننا نريد طباعته، بسبب الباراميتر /p

عندما تضغط بالزر الأيمن على أي ملف نصي ستلاحظ أمر الطباعة Print لو تتبعت هذا الأمر في الرجستري سترى أنه بهذه الصورة %SystemRoot%\system32\NOTEPAD.EXE /p %1

فمن هنا علمت أنا أنه لطباعة أي ملف نصي باستخدام النوتباد نستخدم الباراميتر /p

هل هناك أمر طباعة مشابه لبرنامج iexplore.exe ؟ أو أي برنامج آخر نستخدم نفس الطريقة إن كان هناك أكر في قائمة الزر الأيمن فالأمر سهل


ابحث عن المفتاح htmlfile في الرجستري (تحت أول مفتاح رئيسي) وسترى المفتاح shell وهو الذي يحتوي على الأوامر


بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - عبدالعزيز - 31-03-13



بحثت عن المفتاح htmlfile في الرجستري (تحت أول مفتاح رئيسي) ثم المفتاح shell فوجدت ما يلي :


"C:\Program Files (x86)\Microsoft Office\Office14\msohtmed.exe" /p %1


مما يعني أن الباراميتر لـ طباعة ملفات 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.ObjectByVal e As System.EventArgsHandles MyBase.Load
        PrintTextFile
("c:\file.txt")
    
End Sub
End 
Class[/align


و لكن ظهرت لي رسالة خطأ تقول :
Win32Exception was unhandled
The system cannot find the file specified

كما بالصورة التوضيحية التالية :
http://s21.postimg.org/lcj9bgh5z/image.png


فقمت بتغيير السطر :
PHP كود :
Dim psi As New ProcessStartInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) & "\msohtmed.exe"
و جعلته كما يلي :


PHP كود :
Dim psi As New ProcessStartInfo("C:\Program Files (x86)\Microsoft Office\Office14\msohtmed.exe"

فاشتغل البرنامج بنجااااح 100% Big Grin

يا ترى ما الخطأ في السطر المذكور ؟




بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - أبو يعقوب - 01-04-13

بارك الله فيك، نفس الذي توصلت إليه

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


بريمج بسيط للغاية يقوم بطباعة ملف تكست ... ساعدوني من فضلكم - عبدالعزيز - 03-04-13

أبو يعقوب كتب :بارك الله فيك، نفس الذي توصلت إليه
الخطأ طبعا هو مسار البرنامج وتصحيحك له هو الخيار الوحيد

أشكرك أستاذي العزيز أبويعقوب ...

بالنسبة لـ مسار البرنامج الذي وضعته أنا .... هو فعلاً صحيح ... و يشتغل على جهاز الكمبيوتر الخاص بي بنظام Windows8
لكن عندما نقلت البرنامج إلى كمبيوتر آخر لديه نظام Windows7 لم يعمل البرنامج !!
و ذلك بسبب أن كل نسخة من نظام التشغيل تختلف عن الأخرى ...
فما هو المسار الذي يمكن أن نضعه في برنامجنا لكي يعمل مع كل الإصدارات الحديثة من الويندوز ؟
أو ما هو الأمر الذي يمكن أن نضعه في برنامجنا لكي يعمل مع كل الإصدارات الحديثة من الويندوز ؟