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

جعل برنامجك يشتغل عند بدء التشغيل

مغلق
بدأه محمد سامر أبو سلو في 7 أغسطس 2005 · 12 رد · 2,191 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إليكم الكود كاملا بالفيجول بايزيك

كان ما عملته هو كالتالي

في قسم الاعلانات العامة بعد Windows Form Designer generated code وضعت الاعلان التالي

    Private strKey As String = "Software\Microsoft\Windows\CurrentVersion\Run"
    Private StrVal As String = "ProgramName"
    Private Regs As New clsNGSRegistry

وفي الاجراء المناسب في القائمة استخدت الكود التالي

 ' ضبط خيار وضع البرنامج عند بداية ويندوز
    Private Sub mnuLoadOnStartup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuLoadOnStartup.Click
        ' إعكس تعليم القائمة
        mnuLoadOnStartup.Checked = Not mnuLoadOnStartup.Checked

        If mnuLoadOnStartup.Checked = True Then
            Try
                ' إذا كانت القائمة معلمة أضف البرنامج لبدء التشغيل
                Regs.CreateValue(clsNGSRegistry.ERegistryPossibleRoots.HKEY_CURRENT_USER, _
                    strKey, StrVal, System.Windows.Forms.Application.ExecutablePath)
            Catch ex As Exception
                ex = Nothing
            End Try
        Else
            Try
                ' إن لم تكن القائمة معلمة أزل البرنامج من بدء التشغيل
                Regs.DeleteValue(clsNGSRegistry.ERegistryPossibleRoots.HKEY_CURRENT_USER, _
                    strKey, StrVal)
            Catch ex As Exception
                ex = Nothing
            End Try
        End If
    End Sub

بقي ينقصكم شئ واحد وهو الـ class الذي قام بالعملية وسأريحكم من كتابته سيكون من ضمن المرفقات

تفضلوا

منتظر آراءكم بعد التجربة

clsNGSRegistry.zip

تم تعديل هذه المشاركة بواسطة samerselo في 7 أغسطس 2005 في 00:54

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

جاري التجربه

وساتيك بالرد

سبحان الله وبحمده سبحان الله العظيم

لا اله الا الله محمدا رسول الله

اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الاحياء منهم والاموات

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حمل كريستال ريبورت 10 اربعه اصدارات

ww12kz.jpg

hashad.jpg

#3

شكار لك للمرور والرد

منتظر رأيك

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

10\10

سبحان الله وبحمده سبحان الله العظيم

لا اله الا الله محمدا رسول الله

اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الاحياء منهم والاموات

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حمل كريستال ريبورت 10 اربعه اصدارات

ww12kz.jpg

hashad.jpg

#6

وأي سؤال سنحاول الإجابة عنه

ملاحظة:

استخدمت هنا HKEY_CURRENT_USER وذلك لجعل البرنامج في بدء التشغيل للمستخدم الحالي حيث يمكنك استخدام HKEY_LOCAL_MACHINE لوضعه في بدء التشغيل لكافة المستخدمين طبعا مع امتلاك المستخدم الذي سجلت الدخول به في الويندوز للصلاحيات اللازمة

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

وهذا إجراء معدل بدون الكلاس المذكور في مشاركتي الأولى

في الإعلانات العامة

Imports Microsoft.Win32
Imports System.Windows.Forms

وهذا هو الاجراء

    Public Sub RunatStartup(ByVal PutAtStartup As Boolean, ByVal ProgramName As String)
        Dim StartupPath As String = "Software\Microsoft\Windows\CurrentVersion\Run"
        Dim MyKey As RegistryKey = Registry.CurrentUser.OpenSubKey(StartupPath, True)

        If PutAtStartup Then
            MyKey.SetValue(ProgramName, Application.ExecutablePath)
        Else
            Try
                MyKey.DeleteValue(ProgramName, False)
            Catch ex As Exception
                ex = Nothing
            End Try
        End If

    End Sub

وهذا مثال عن الاستخدام وضعه في بدء التشغيل

RunatStartup(True, "Test Application")

وهذا مثال عن الاستخدام إزالته من بدء التشغيل

RunatStartup(False, "Test Application")

و لجعله في بدء التشغيل لكافة المستخدمين بدل المستخدم الحالي ضع السطر

Dim MyKey As RegistryKey = Registry.LocalMachine.OpenSubKey(StartupPath, True)

بدلا عن السطر

        Dim MyKey As RegistryKey = Registry.CurrentUser.OpenSubKey(StartupPath, True)

وذلك في الاجراء المذكور هنا

أي يصبح الإجراء

    Public Sub RunatStartup(ByVal PutAtStartup As Boolean, ByVal ProgramName As String)
        Dim StartupPath As String = "Software\Microsoft\Windows\CurrentVersion\Run"
        Dim MyKey As RegistryKey = Registry.LocalMachine.OpenSubKey(StartupPath, True)

        If PutAtStartup Then
            MyKey.SetValue(ProgramName, Application.ExecutablePath)
        Else
            Try
                MyKey.DeleteValue(ProgramName, False)
            Catch ex As Exception
                ex = Nothing
            End Try
        End If

    End Sub

ويبقى الاستخدام ذات نفسه

تم تعديل هذه المشاركة بواسطة samerselo في 4 فبراير 2006 في 01:52

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#8

Greaaaaaaaaaaat

but why didn't u use the Try statement with the following line in the last example:

If PutAtStartup Then
           MyKey.SetValue(ProgramName, Application.ExecutablePath)
       Else
bartkr7.png
#9

أولا يرجى الكتابة بالعربية

ثانيا - لم اجد داعي الاستخدام try عند هذا السطر لأنه اثناء تجاربي لم يظهر exception عنده حتى في حالة عدم وجود المفتاح المطلوب فقد لاحظت انه يتم إنشاؤه و لكن ذلك لايمنعك من استخدامه

تم تعديل هذه المشاركة بواسطة samerselo في 7 فبراير 2006 في 02:22

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#10

وإذا حدا واجه مشاكل

هي مثالين بالـ 2005 و الـ 2003

مع أني بعتقد أنو الشرح واضح

TestStartup_Vb2005.zip

TestStartup_vb2003.zip

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#11

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

#12

كما يمكن التأكد من وجود البرنامج في بدء التشغيل كما يلي

   Public Function CheckRunAtStartup(ByVal ProgramName As String) As Boolean
		Dim StartupPath As String = "Software\Microsoft\Windows\CurrentVersion\Run"
		Dim MyKey As RegistryKey = Registry.CurrentUser.OpenSubKey(StartupPath, False)

		If MyKey.GetValue(ProgramName, "") = Application.ExecutablePath Then
			Return True
		Else
			Return False
		End If
	End Function

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#13

وهذا إجراء مطور مع بعض الخيارات الإضافية لوضع البرنامج في بدء التشغيل والتأكد من وجوده في بدء التشغيل

	' تحديد مكان وضع البرنامج في بدء التشغيل
	Public Enum StartupPlace
		Currentuser
		LocalMachine
	End Enum

	' الاجراء الذي سيقوم بوضع برنامجك في بدء التشغيل
	Public Sub RunatStartup(ByVal PutAtStartup As Boolean, _
							ByVal ProgramName As String, _
						   Optional ByVal StartPlace As StartupPlace = StartupPlace.Currentuser, _
						   Optional ByVal CommandLineArguments As String = "")

		Try
			' تحديد المسار ضمن الريجستري
			Dim StartupPath As String = "Software\Microsoft\Windows\CurrentVersion\Run"
			' تحديد مكان المفتاح
			Dim MyKey As RegistryKey
			Select Case StartPlace
				Case StartupPlace.Currentuser
					' المستخدم الحالي
					MyKey = Registry.CurrentUser.OpenSubKey(StartupPath, True)
				Case StartupPlace.LocalMachine
					' جميع المستخدمين
					MyKey = Registry.LocalMachine.OpenSubKey(StartupPath, True)
			End Select

			If PutAtStartup Then
				' إنشاء المفتاح المناسب لوضع البرنامج في بدء التشغيل
				MyKey.SetValue(ProgramName, """" & Application.ExecutablePath & """" & " " & CommandLineArguments)
			Else
				' حذف المفتاح لإزالة البرنامج من بدء التشغيل
				MyKey.DeleteValue(ProgramName, False)
			End If
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
	End Sub

	' التأكد من وجود برنامجك في بدء التشغيل
	Public Function CheckRunAtStartup(ByVal ProgramName As String, _
			Optional ByVal StartPlace As StartupPlace = StartupPlace.Currentuser) As Boolean

		Try
			' تحديد المسار ضمن الريجستري
			Dim StartupPath As String = "Software\Microsoft\Windows\CurrentVersion\Run"

			' تحديد مكان المفتاح
			Dim MyKey As RegistryKey
			Select Case StartPlace
				Case StartupPlace.Currentuser
					' المستخدم الحالي
					MyKey = Registry.CurrentUser.OpenSubKey(StartupPath, True)
				Case StartupPlace.LocalMachine
					' جميع المستخدمين
					MyKey = Registry.LocalMachine.OpenSubKey(StartupPath, True)
			End Select

			' إذا كانت قيمة المفتاح مساوية للمسار الكامل للبرنامج
			Dim KeyVal As String = MyKey.GetValue(ProgramName, String.Empty)
			If KeyVal <> String.Empty AndAlso KeyVal.IndexOf(Application.ExecutablePath) <> -1 Then
				Return True
			Else
				Return False
			End If
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
	End Function

وهذه أمثلة عن استخدام الإجراء المطور

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		' وضع في بدء التشغيل بدون بارامترات سطر الأوامر عند التشغيل
		If Me.RadioButton1.Checked Then
			' المستخدم الحالي
			RunatStartup(True, "اسم برنامجك هنا")
		ElseIf Me.RadioButton2.Checked Then
			' جميع المستخدمين
			RunatStartup(True, "اسم برنامجك هنا", StartupPlace.LocalMachine)
		End If
	End Sub

	Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
		' إزالة من بدء التشغيل
		If Me.RadioButton1.Checked Then
			' المستخدم الحالي
			RunatStartup(False, "اسم برنامجك هنا")
		ElseIf Me.RadioButton2.Checked Then
			' جميع المستخدمين
			RunatStartup(False, "اسم برنامجك هنا", StartupPlace.LocalMachine)
		End If
	End Sub

	Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
		' تفحص وجوده في بدء التشغيل
		If Me.RadioButton1.Checked Then
			' المستخدم الحالي
			MsgBox(CheckRunAtStartup("اسم برنامجك هنا"))
		ElseIf Me.RadioButton2.Checked Then
			' جميع المستخدمين
			MsgBox(CheckRunAtStartup("اسم برنامجك هنا", StartupPlace.LocalMachine))
		End If
	End Sub

	Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
		' وضع في بدء التشغيل مع بارامترات سطر الأوامر عند التشغيل
		If Me.RadioButton1.Checked Then
			' المستخدم الحالي
			RunatStartup(True, "اسم برنامجك هنا", StartupPlace.Currentuser, " /Test /Minimize")
		ElseIf Me.RadioButton2.Checked Then
			' جميع المستخدمين
			RunatStartup(True, "اسم برنامجك هنا", StartupPlace.LocalMachine, " /Test /Minimize")
		End If
	End Sub
−1

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

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

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