تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
هل فكرت في صنع شاشة توقف بالـ v.b.net -- بالداخل المزيـــــــــد
#1
كاتب الموضوع : أنس محمود


بسم الله الرحمن الرحيم ، والصلاة والسلام على اشرف المرسلين ، و خاتم النبيين ، وسيد الخلق اجمعين ، سيدنا محمد وعلى آله وصحبه أجمعين
اخواني الكرام ، السلام عليكم ورحمة الله وبركاته ،
قبل البدء ، أريد أن اقول بان شاشة التوقف ( أو حافظة الشاشة ) يمكن عملها بتغيير امتداد أي ملف تنفيذي ( بامتداد .exe ) إلى .scr ، ولكن لكي تعطي طابع حافظة الشاشة ، هناك عدة امور يجب اخذها في الاعتبار ، سنتناولها باذن الله تعالى :-
أولاً:- يجب ان يتكون المشروع النوافذي من نموذجين : الأول خاص بشاشة التوقف التي سيتم عرضها ، والثاني خاص بالإعدادت ،
ثانيا:- يجب تغيير بعض خصائص النموذج الخاص بشاشة التوقف كجعل النافذة بملئ الشاشة ، والغاء ظهور النموذج في شريط المهام ، .. الخ
ثالثاً :- في حدث MyApplication_Startup من احداث التطبيق يجب التفريق بالكود بين ماهو المطلوب من حافظة الشاشة ، ( بمعنى هل المطلوب عرض الحافظة ام نافذة الاعدادات ، ام التجربة ) أكتب الكود التالى :-

كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]If [/color][color=#0000bb]e[/color][color=#007700].[/color][color=#0000bb]CommandLine[/color][color=#007700].[/color][color=#0000bb]Count [/color][color=#007700]> [/color][COLOR=#0000bb]0 Then
                Dim arg [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][color=#0000bb]e[/color][color=#007700].[/color][color=#0000bb]CommandLine[/color][color=#007700]([/color][color=#0000bb]0[/color][color=#007700]).[/color][color=#0000bb]ToLower[/color][color=#007700]([/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Globalization[/color][color=#007700].[/color][color=#0000bb]CultureInfo[/color][color=#007700].[/color][color=#0000bb]InvariantCulture[/color][color=#007700]).[/color][color=#0000bb]Trim[/color][color=#007700]().[/color][color=#0000bb]Substring[/color][color=#007700]([/color][color=#0000bb]0[/color][color=#007700], [/color][color=#0000bb]2[/color][COLOR=#007700])
                [/COLOR][color=#0000bb]Select [/color][color=#007700]Case [/color][COLOR=#0000bb]arg
                    [/COLOR][color=#007700]Case [/color][COLOR=#dd0000]"/c"
                        [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]MainForm [/color][color=#007700]= [/color][color=#0000bb]My[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][COLOR=#0000bb]OptionsForm
                    [/COLOR][color=#007700]Case [/color][COLOR=#dd0000]"/p"
                        [/COLOR][color=#0000bb]e[/color][color=#007700].[/color][color=#0000bb]Cancel [/color][color=#007700]= [/color][COLOR=#0000bb]True
                    [/COLOR][color=#007700]Case [/color][COLOR=#dd0000]"/s"
                        [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]MainForm [/color][color=#007700]= [/color][color=#0000bb]My[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][COLOR=#0000bb]ScreenSaverForm
                    [/COLOR][COLOR=#007700]Case Else
                        [/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#dd0000]"Invalid command line argument :" [/color][color=#007700]+ [/color][color=#0000bb]arg[/color][color=#007700], [/color][color=#dd0000]"Invalid Command Line Argument"[/color][color=#007700], [/color][color=#0000bb]MessageBoxButtons[/color][color=#007700].[/color][color=#0000bb]OK[/color][color=#007700], [/color][color=#0000bb]MessageBoxIcon[/color][color=#007700].[/color][color=#0000bb]Error[/color][COLOR=#007700])
                [/COLOR][COLOR=#0000bb]End Select
            [/COLOR][COLOR=#007700]Else
                [/COLOR][color=#0000bb]Me[/color][color=#007700].[/color][color=#0000bb]MainForm [/color][color=#007700]= [/color][color=#0000bb]My[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][COLOR=#0000bb]ScreenSaverForm
           End [/COLOR][COLOR=#007700]If  
[/COLOR][color=#0000bb][/color][/COLOR]

طبعا بالكود نختبر المعامل الموجود بسطر الاوامر :-
اذا كان c/ فهذا يعني ان المطلوب نافذة الاعدات ،
واذا كان s/ فهذا بعني ان المطلوب هو نموذج الحافظة
رابعا :- بالنسبة لنافذة الاعدادات ، فيفضل ان تقوم بحفظ الاعدادات عن طريق السلسلة ،

عند مراعاة هذه العناصر ، يمكنك صنع مابدا لك علي نموذج الحافظة

والان مع مثال ،

======> تابع ======>
}}}
تم الشكر بواسطة:
#2
سنقوم بعمل مثال لحافظة تقوم بعرض فيديو ،
قم بانشاء مشروع نوافذي جديد ، وكما قلنا ، اضف نموذج آخر للاعدادت ،
للنموذج الخاص بالحافظة ، غير خاصائصه كالتالي :-
كود :
[color=#000000][FONT=arial][b]Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None[/b][/FONT][/color]
[color=#000000][FONT=arial][b]Me.ShowInTaskbar = False[/b][/FONT][/color]
[color=#000000][FONT=arial][b]Me.WindowState = System.Windows.Forms.FormWindowState.Maximized[/b][/FONT][/color]
ثم أضف الأداة AxWindowsMediaPlayer وتعلمون طريقة أضافتها ( مستعد ان اخبرها عند الطلب ) ، ثم غير الخاصية Dock لها الى Fill ، ثم أضف Timer واجعل قيمة الـ Interval له 1 وقية الـ Enable له True
، هذا للفورم الاول

الآن نذهب للأكواد :-
1. نموذج الاعدات :-
كود :
[color=#0000BB]في حدث النقر للزر الذي بجانب مربع النص [/color][COLOR=#007700]:-
   If [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]OpenFileDialog1[/color][color=#007700].[/color][color=#0000BB]ShowDialog [/color][color=#007700]= [/color][color=#0000BB]Windows[/color][color=#007700].[/color][color=#0000BB]Forms[/color][color=#007700].[/color][color=#0000BB]DialogResult[/color][color=#007700].[/color][COLOR=#0000BB]OK Then
            Me[/COLOR][color=#007700].[/color][color=#0000BB]TextBox1[/color][color=#007700].[/color][color=#0000BB]Text [/color][color=#007700]= [/color][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]OpenFileDialog1[/color][color=#007700].[/color][COLOR=#0000BB]FileName
        End [/COLOR][COLOR=#007700]If  
[/COLOR]

قم بتعريف هذين الاجرائين الأول لسلسلة الإعدادت :-
كود :
[color=#0000BB]  Sub SaveSetting[/color][COLOR=#007700]()
        [/COLOR][color=#0000BB]Dim data[/color][color=#007700]() As [/color][color=#0000BB]Object [/color][color=#007700]= {[/color][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]TextBox1[/color][color=#007700].[/color][color=#0000BB]Text[/color][color=#007700], [/color][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]CheckBox1[/color][color=#007700].[/color][color=#0000BB]Checked[/color][color=#007700], [/color][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]CheckBox2[/color][color=#007700].[/color][color=#0000BB]Checked[/color][COLOR=#007700]}
        [/COLOR][color=#0000BB]Dim st [/color][color=#007700]As [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]FileStream [/color][color=#007700]= [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]File[/color][color=#007700].[/color][color=#0000BB]Open[/color][color=#007700]([/color][color=#DD0000]"c:\data.AnsI"[/color][color=#007700], [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]FileMode[/color][color=#007700].[/color][color=#0000BB]OpenOrCreate[/color][COLOR=#007700])
        [/COLOR][color=#0000BB]Dim SerialObj [/color][color=#007700]As New [/color][color=#0000BB]Runtime[/color][color=#007700].[/color][color=#0000BB]Serialization[/color][color=#007700].[/color][color=#0000BB]Formatters[/color][color=#007700].[/color][color=#0000BB]Binary[/color][color=#007700].[/color][color=#0000BB]BinaryFormatter[/color][COLOR=#007700]()
        [/COLOR][color=#0000BB]SerialObj[/color][color=#007700].[/color][color=#0000BB]Serialize[/color][color=#007700]([/color][color=#0000BB]st[/color][color=#007700], [/color][color=#0000BB]data[/color][COLOR=#007700])
        [/COLOR][color=#0000BB]st[/color][color=#007700].[/color][color=#0000BB]Close[/color][COLOR=#007700]()
    [/COLOR][COLOR=#0000BB]End Sub  
[/COLOR]

والثاني لاسترجاع الاعدات :-
كود :
[color=#0000BB]    Sub AplySetting[/color][COLOR=#007700]()
        [/COLOR][color=#0000BB]Dim data[/color][color=#007700]([/color][color=#0000BB]2[/color][color=#007700]) As [/color][COLOR=#0000BB]Object
        Dim st [/COLOR][color=#007700]As [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]FileStream [/color][color=#007700]= [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]File[/color][color=#007700].[/color][color=#0000BB]Open[/color][color=#007700]([/color][color=#DD0000]"c:\data.AnsI"[/color][color=#007700], [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]FileMode[/color][color=#007700].[/color][color=#0000BB]OpenOrCreate[/color][COLOR=#007700])
        [/COLOR][color=#0000BB]Dim SerialObj [/color][color=#007700]As New [/color][color=#0000BB]Runtime[/color][color=#007700].[/color][color=#0000BB]Serialization[/color][color=#007700].[/color][color=#0000BB]Formatters[/color][color=#007700].[/color][color=#0000BB]Binary[/color][color=#007700].[/color][color=#0000BB]BinaryFormatter[/color][COLOR=#007700]()
        Try
            [/COLOR][color=#0000BB]data [/color][color=#007700]= [/color][color=#0000BB]CType[/color][color=#007700]([/color][color=#0000BB]SerialObj[/color][color=#007700].[/color][color=#0000BB]Deserialize[/color][color=#007700]([/color][color=#0000BB]st[/color][color=#007700]), [/color][color=#0000BB]Object[/color][COLOR=#007700])
            [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]TextBox1[/color][color=#007700].[/color][color=#0000BB]Text [/color][color=#007700]= [/color][color=#0000BB]data[/color][color=#007700]([/color][color=#0000BB]0[/color][COLOR=#007700])
            [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]CheckBox1[/color][color=#007700].[/color][color=#0000BB]Checked [/color][color=#007700]= [/color][color=#0000BB]data[/color][color=#007700]([/color][color=#0000BB]1[/color][COLOR=#007700])
            [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]CheckBox2[/color][color=#007700].[/color][color=#0000BB]Checked [/color][color=#007700]= [/color][color=#0000BB]data[/color][color=#007700]([/color][color=#0000BB]2[/color][COLOR=#007700])
        Catch [/COLOR][color=#0000BB]ex [/color][color=#007700]As [/color][COLOR=#0000BB]Exception
        End [/COLOR][COLOR=#007700]Try
        [/COLOR][color=#0000BB]st[/color][color=#007700].[/color][color=#0000BB]Close[/color][COLOR=#007700]()
    [/COLOR][COLOR=#0000BB]End Sub  
[/COLOR]

في حدث الـ Load للنموذج :-
كود :
[color=#0000BB]  AplySetting[/color][COLOR=#007700]()  
[/COLOR]

في حدث النقر للزر تم :-
كود :
[color=#0000BB]  SaveSetting[/color][COLOR=#007700]()  
[/COLOR]

هذا بالنسبة لنموذج الاعدادات ،
2. نموذج الحافظة :-
في قسم التصريحات :-
كود :
[color=#0000BB]Dim IS_Re [/color][color=#007700]As [/color][color=#0000BB]Boolean [/color][color=#007700]= [/color][COLOR=#0000BB]True
Dim isActive [/COLOR][color=#007700]As [/color][color=#0000BB]Boolean [/color][color=#007700]= [/color][COLOR=#0000BB]False
Dim mouseLocation [/COLOR][color=#007700]As [/color][COLOR=#0000BB]Point  
[/COLOR]

وعرف هذا الإجراء :-
كود :
[color=#0000BB]    Sub AplySetting[/color][COLOR=#007700]()
        [/COLOR][color=#0000BB]Dim data[/color][color=#007700]([/color][color=#0000BB]2[/color][color=#007700]) As [/color][COLOR=#0000BB]Object
        Dim st [/COLOR][color=#007700]As [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]FileStream [/color][color=#007700]= [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]File[/color][color=#007700].[/color][color=#0000BB]Open[/color][color=#007700]([/color][color=#DD0000]"c:\data.AnsI"[/color][color=#007700], [/color][color=#0000BB]IO[/color][color=#007700].[/color][color=#0000BB]FileMode[/color][color=#007700].[/color][color=#0000BB]OpenOrCreate[/color][COLOR=#007700])
        [/COLOR][color=#0000BB]Dim SerialObj [/color][color=#007700]As New [/color][color=#0000BB]Runtime[/color][color=#007700].[/color][color=#0000BB]Serialization[/color][color=#007700].[/color][color=#0000BB]Formatters[/color][color=#007700].[/color][color=#0000BB]Binary[/color][color=#007700].[/color][color=#0000BB]BinaryFormatter[/color][COLOR=#007700]()
        Try
            [/COLOR][color=#0000BB]data [/color][color=#007700]= [/color][color=#0000BB]CType[/color][color=#007700]([/color][color=#0000BB]SerialObj[/color][color=#007700].[/color][color=#0000BB]Deserialize[/color][color=#007700]([/color][color=#0000BB]st[/color][color=#007700]), [/color][color=#0000BB]Object[/color][COLOR=#007700])
            [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]AxWindowsMediaPlayer1[/color][color=#007700].[/color][color=#0000BB]URL [/color][color=#007700]= [/color][color=#0000BB]data[/color][color=#007700]([/color][color=#0000BB]0[/color][COLOR=#007700])
            [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]AxWindowsMediaPlayer1[/color][color=#007700].[/color][color=#0000BB]stretchToFit [/color][color=#007700]= [/color][color=#0000BB]data[/color][color=#007700]([/color][color=#0000BB]1[/color][COLOR=#007700])
            [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]IS_Re [/color][color=#007700]= [/color][color=#0000BB]data[/color][color=#007700]([/color][color=#0000BB]2[/color][COLOR=#007700])
        Catch [/COLOR][color=#0000BB]ex [/color][color=#007700]As [/color][COLOR=#0000BB]Exception
        End [/COLOR][COLOR=#007700]Try
        [/COLOR][color=#0000BB]st[/color][color=#007700].[/color][color=#0000BB]Close[/color][COLOR=#007700]()
    [/COLOR][COLOR=#0000BB]End Sub  
[/COLOR]

في حدث الـ Load :-
كود :
[color=#0000BB] AplySetting[/color][COLOR=#007700]()  
[/COLOR]

لاحظ هنا نستدعي الاجراء الذي يقوم بتطبيق الاعدادت ،
في حدث الـ Tick للـ Timer1 :-
كود :
[color=#007700]If [/color][COLOR=#0000BB]Not isActive Then
            mouseLocation [/COLOR][color=#007700]= [/color][COLOR=#0000BB]MousePosition
            isActive [/COLOR][color=#007700]= [/color][COLOR=#0000BB]True
        [/COLOR][COLOR=#007700]Else
            If [/COLOR][color=#0000BB]Math[/color][color=#007700].[/color][color=#0000BB]Abs[/color][color=#007700]([/color][color=#0000BB]MousePosition[/color][color=#007700].[/color][color=#0000BB]X [/color][color=#007700]- [/color][color=#0000BB]mouseLocation[/color][color=#007700].[/color][color=#0000BB]X[/color][color=#007700]) > [/color][color=#0000BB]10 OrElse Math[/color][color=#007700].[/color][color=#0000BB]Abs[/color][color=#007700]([/color][color=#0000BB]MousePosition[/color][color=#007700].[/color][color=#0000BB]Y [/color][color=#007700]- [/color][color=#0000BB]mouseLocation[/color][color=#007700].[/color][color=#0000BB]Y[/color][color=#007700]) > [/color][COLOR=#0000BB]10 Then
                Close[/COLOR][COLOR=#007700]()
            [/COLOR][color=#0000BB]End [/color][COLOR=#007700]If
        [/COLOR][color=#0000BB]End [/color][COLOR=#007700]If
        If [/COLOR][color=#0000BB]IS_Re Then Me[/color][color=#007700].[/color][color=#0000BB]AxWindowsMediaPlayer1[/color][color=#007700].[/color][color=#0000BB]Ctlcontrols[/color][color=#007700].[/color][color=#0000BB]play[/color][COLOR=#007700]()  
[/COLOR]

لاحظ هنا نقوم باختبار ما اذا تم تحريك الفأرة ، نقوم عندها باغلاق الحافظة

بقي شيء مهم ، وهو الكود الخاص بالتفريق بين المعامل المرسل في سطر الاوامر ،

في نافذة خصائص المشروع أضغط على الزر Viwe Application Events ومن ثم اختر الحدث MyApplication_Startup ، واكتب الكود التالي :-
كود :
[COLOR=#000000][FONT=arial][b]
[color=#007700]If [/color][color=#0000BB]e[/color][color=#007700].[/color][color=#0000BB]CommandLine[/color][color=#007700].[/color][color=#0000BB]Count [/color][color=#007700]> [/color][COLOR=#0000BB]0 Then
                Dim arg [/COLOR][color=#007700]As [/color][color=#0000BB]String [/color][color=#007700]= [/color][color=#0000BB]e[/color][color=#007700].[/color][color=#0000BB]CommandLine[/color][color=#007700]([/color][color=#0000BB]0[/color][color=#007700]).[/color][color=#0000BB]ToLower[/color][color=#007700]([/color][color=#0000BB]System[/color][color=#007700].[/color][color=#0000BB]Globalization[/color][color=#007700].[/color][color=#0000BB]CultureInfo[/color][color=#007700].[/color][color=#0000BB]InvariantCulture[/color][color=#007700]).[/color][color=#0000BB]Trim[/color][color=#007700]().[/color][color=#0000BB]Substring[/color][color=#007700]([/color][color=#0000BB]0[/color][color=#007700], [/color][color=#0000BB]2[/color][COLOR=#007700])
                [/COLOR][color=#0000BB]Select [/color][color=#007700]Case [/color][COLOR=#0000BB]arg
                    [/COLOR][color=#007700]Case [/color][COLOR=#DD0000]"/c"
                        [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]MainForm [/color][color=#007700]= [/color][color=#0000BB]My[/color][color=#007700].[/color][color=#0000BB]Forms[/color][color=#007700].[/color][COLOR=#0000BB]Form2
                    [/COLOR][color=#007700]Case [/color][COLOR=#DD0000]"/p"
                        [/COLOR][color=#0000BB]e[/color][color=#007700].[/color][color=#0000BB]Cancel [/color][color=#007700]= [/color][COLOR=#0000BB]True
                    [/COLOR][color=#007700]Case [/color][COLOR=#DD0000]"/s"
                        [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]MainForm [/color][color=#007700]= [/color][color=#0000BB]My[/color][color=#007700].[/color][color=#0000BB]Forms[/color][color=#007700].[/color][COLOR=#0000BB]Form1
                    [/COLOR][COLOR=#007700]Case Else
                        [/COLOR][color=#0000BB]MessageBox[/color][color=#007700].[/color][color=#0000BB]Show[/color][color=#007700]([/color][color=#DD0000]"Invalid command line argument :" [/color][color=#007700]+ [/color][color=#0000BB]arg[/color][color=#007700], [/color][color=#DD0000]"Invalid Command Line Argument"[/color][color=#007700], [/color][color=#0000BB]MessageBoxButtons[/color][color=#007700].[/color][color=#0000BB]OK[/color][color=#007700], [/color][color=#0000BB]MessageBoxIcon[/color][color=#007700].[/color][color=#0000BB]Error[/color][COLOR=#007700])
                [/COLOR][COLOR=#0000BB]End Select
            [/COLOR][COLOR=#007700]Else
                [/COLOR][color=#0000BB]Me[/color][color=#007700].[/color][color=#0000BB]MainForm [/color][color=#007700]= [/color][color=#0000BB]My[/color][color=#007700].[/color][color=#0000BB]Forms[/color][color=#007700].[/color][COLOR=#0000BB]Form1
            End [/COLOR][COLOR=#007700]If  
[/COLOR]
[/b][/FONT][/COLOR]
بقي ان تقوم بترجمة البرنامج : اضغط F5 ،
اذهب الى ملفات المشروع ، وغير امتداد البرنامج الى .scr
اضغط بزر الفأرة الأيمن على البرنامج واختر Install
تم تثبيت حافظة الشاشة بنجاح !! يمكنك الآن تعديل الاعدادات ! ، وتشغيل الحافظة !

والسلام عليكم ورحمة الله وبركاته
}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم