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

كيف يتم إيقاف هذا السيرفر برمجيًا

بدأه rafik_172006_r في 4 أبريل 2008 · 4 رد · 1,197 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

:angry: :angry: :angry: السلام عليكم ورحمة الله وبركاته الأعضاء الكرام

في البداية أشكر المنتدى وأعضاءه على المشاركات الفعالة جعلها الله في ميزان حسناتهم

ثانيا عند مشكلة ومحتاج حل

كيف يتم إيقاف سيرفر sql2000 برمجيا من داخل فيجوال بيزك 6 كما هو موضح بالصورة حتى يسمح لي بعمل نسخة احتياطية حيث لم أجد طريقة فعالة إلا يدويا بعد إيقافه ونسخ القاعدة ثم إعادة تشغيله مرة أخرى !!!!!

post-145130-1207320961_thumb.jpg

هي الدنيا تقول بملئ فيها ***** حذار حذار من بطشي وفتكي

فلا يغرنكم مني ابتســــام ***** فقولي مضحك والفعـل مبكي

#2

الأخ الفاضل ...

يوجد طرق عديدة لبدء وانهاء أى خدمة Service، أبسطها بالنسبة لـ SQL2000ن حيث أن الـ Instance غالباً ما يكون أسمها MSSQLSERVER، يمكنك استخدام net.exe كالتالى:

للتشغيل

Shell "net.exe start MSSQLSERVER", vbHide

للإيقاف

Shell "net.exe stop MSSQLSERVER", vbHide

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#3
Eng. Usama El-Mokadem كتب:
الأخ الفاضل ...

يوجد طرق عديدة لبدء وانهاء أى خدمة Service، أبسطها بالنسبة لـ SQL2000ن حيث أن الـ Instance غالباً ما يكون أسمها MSSQLSERVER، يمكنك استخدام net.exe كالتالى:

للتشغيل

Shell "net.exe start MSSQLSERVER", vbHide

للإيقاف

Shell "net.exe stop MSSQLSERVER", vbHide

شكراً

جزالك الله خير على الرد الجميل وأنا جربتها واشتغل معايا الحمد لله

لكن عندي استفسار آخر ياريت تساعدني عليه

عندي زر أمر غير نشط على الفورم لما أنقر إيقاف للسيرفر لا ينشط إلا لما يتاكد تماما إن السيرفر وقف تماما لأن عملية إيقاف السيرفر بتختلف من جها ز لآخر فروق بسيطة لكن لضمان الكود إن ماياخدش نسخة إحتياطية إلا لما يقف الكود

انا جربت

doevents

بس ماظبتش معايا ياريت لو يكون ليها حل انا محتاجها ضروري

هي الدنيا تقول بملئ فيها ***** حذار حذار من بطشي وفتكي

فلا يغرنكم مني ابتســــام ***** فقولي مضحك والفعـل مبكي

#4

الأخ الفاضل ...

StartService.zip

أرجوا أن يفيدك هذا المثال فى ما تريد إنجازه، بإستخدام MS-VB 6.0

الدوال API المستخدمة

Private Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" (ByVal lpMachineName As String, ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As Long
Private Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal lngSCManager As Long, ByVal lpServiceName As String, ByVal dwDesiredAccess As Long) As Long
Private Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" (ByVal hService As Long, ByVal dwNumServiceArgs As Long, ByVal lpServiceArgVectors As Long) As Long
Private Declare Function QueryServiceStatus Lib "advapi32.dll" (ByVal hService As Long, lpServiceStatus As SERVICE_STATUS) As Long
Private Declare Function ControlService Lib "advapi32.dll" (ByVal hService As Long, ByVal dwControl As Long, lpServiceStatus As SERVICE_STATUS) As Long
Private Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hSCObject As Long) As Long

الثوابت

Private Const SERVICE_CONTROL_STOP = &H1
Private Const SC_MANAGER_LOCK = &H8
Private Const SERVICE_QUERY_STATUS = &H4
Private Const SERVICE_START = &H10
Private Const SERVICE_STOP = &H20
Private Const SERVICE_RUNNING = &H4

الأنواع

Private Type SERVICE_STATUS
	dwServiceType As Long
	dwCurrentState As Long
	dwControlsAccepted As Long
	dwWin32ExitCode As Long
	dwServiceSpecificExitCode As Long
	dwCheckPoint As Long
	dwWaitHint As Long
End Type

الدالة DoService تأخذ أسم الـ Service وهو المتغير الأول sServiceName، والمطلوب أداءة وهو المتغير الثانى iAction

قيم المتغير الثانى iAction كالتالى:

1: تشغيل الـ Service، وترجع True فى حالة تشغيل الـ Service بنجاح، و False فى حالة الفشل

2: إيقاف الـ Service، وترجع True فى حالة إيقاف الـ Service بنجاح، و False فى حالة الفشل

3: حالة الـ Service، وترجع True إذا كانت الـ Service فى حالة تشغيل، و False إذا كانت الـ Service فى حالة إيقاف

Private Function DoService(sServiceName As String, iAction As Long) As Boolean
	Dim srvStatus As SERVICE_STATUS
	Dim lSMHandle As Long
	Dim lServiceHandle As Long
	Dim bReturn As Boolean

	bReturn = False

	lSMHandle = OpenSCManager("", "ServicesActive", SC_MANAGER_LOCK)
	If lSMHandle <> 0 Then
		lServiceHandle = OpenService(lSMHandle, sServiceName, SERVICE_START Or SERVICE_QUERY_STATUS Or SERVICE_STOP)
		If lServiceHandle <> 0 Then
			Select Case iAction
			Case 1
				If StartService(lServiceHandle, 0, 0) <> 0 Then bReturn = True

			Case 2
				Call QueryServiceStatus(lServiceHandle, srvStatus)
				If ControlService(lServiceHandle, SERVICE_CONTROL_STOP, srvStatus) <> 0 Then bReturn = True

			Case 3
				Call QueryServiceStatus(lServiceHandle, srvStatus)
				If srvStatus.dwCurrentState = SERVICE_RUNNING Then bReturn = True
			End Select
			Call CloseServiceHandle(lServiceHandle)
		End If
		Call CloseServiceHandle(lSMHandle)
	End If

	DoService = bReturn
End Function

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#5
Eng. Usama El-Mokadem كتب:
الأخ الفاضل ...

StartService.zip

أرجوا أن يفيدك هذا المثال فى ما تريد إنجازه، بإستخدام MS-VB 6.0

الدوال API المستخدمة

Private Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" (ByVal lpMachineName As String, ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As Long
Private Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal lngSCManager As Long, ByVal lpServiceName As String, ByVal dwDesiredAccess As Long) As Long
Private Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" (ByVal hService As Long, ByVal dwNumServiceArgs As Long, ByVal lpServiceArgVectors As Long) As Long
Private Declare Function QueryServiceStatus Lib "advapi32.dll" (ByVal hService As Long, lpServiceStatus As SERVICE_STATUS) As Long
Private Declare Function ControlService Lib "advapi32.dll" (ByVal hService As Long, ByVal dwControl As Long, lpServiceStatus As SERVICE_STATUS) As Long
Private Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hSCObject As Long) As Long

الثوابت

Private Const SERVICE_CONTROL_STOP = &H1
Private Const SC_MANAGER_LOCK = &H8
Private Const SERVICE_QUERY_STATUS = &H4
Private Const SERVICE_START = &H10
Private Const SERVICE_STOP = &H20
Private Const SERVICE_RUNNING = &H4

الأنواع

Private Type SERVICE_STATUS
	dwServiceType As Long
	dwCurrentState As Long
	dwControlsAccepted As Long
	dwWin32ExitCode As Long
	dwServiceSpecificExitCode As Long
	dwCheckPoint As Long
	dwWaitHint As Long
End Type

الدالة DoService تأخذ أسم الـ Service وهو المتغير الأول sServiceName، والمطلوب أداءة وهو المتغير الثانى iAction

قيم المتغير الثانى iAction كالتالى:

1: تشغيل الـ Service، وترجع True فى حالة تشغيل الـ Service بنجاح، و False فى حالة الفشل

2: إيقاف الـ Service، وترجع True فى حالة إيقاف الـ Service بنجاح، و False فى حالة الفشل

3: حالة الـ Service، وترجع True إذا كانت الـ Service فى حالة تشغيل، و False إذا كانت الـ Service فى حالة إيقاف

Private Function DoService(sServiceName As String, iAction As Long) As Boolean
	Dim srvStatus As SERVICE_STATUS
	Dim lSMHandle As Long
	Dim lServiceHandle As Long
	Dim bReturn As Boolean

	bReturn = False

	lSMHandle = OpenSCManager("", "ServicesActive", SC_MANAGER_LOCK)
	If lSMHandle <> 0 Then
		lServiceHandle = OpenService(lSMHandle, sServiceName, SERVICE_START Or SERVICE_QUERY_STATUS Or SERVICE_STOP)
		If lServiceHandle <> 0 Then
			Select Case iAction
			Case 1
				If StartService(lServiceHandle, 0, 0) <> 0 Then bReturn = True

			Case 2
				Call QueryServiceStatus(lServiceHandle, srvStatus)
				If ControlService(lServiceHandle, SERVICE_CONTROL_STOP, srvStatus) <> 0 Then bReturn = True

			Case 3
				Call QueryServiceStatus(lServiceHandle, srvStatus)
				If srvStatus.dwCurrentState = SERVICE_RUNNING Then bReturn = True
			End Select
			Call CloseServiceHandle(lServiceHandle)
		End If
		Call CloseServiceHandle(lSMHandle)
	End If

	DoService = bReturn
End Function

شكراً

مشكور 'Eng. Usama El-Mokadem' على الكود الرائع وبارك لك في علمك ونفع به

هي الدنيا تقول بملئ فيها ***** حذار حذار من بطشي وفتكي

فلا يغرنكم مني ابتســــام ***** فقولي مضحك والفعـل مبكي

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