mustafakara Posted April 3, 2012 Share Posted April 3, 2012 sevgili arkadaşlar merhabalar Sistemde yüklü servisin çalışıp çalışmadığını nasıl öğrenebilirim? Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 3, 2012 Share Posted April 3, 2012 [quote name='blue_life' date='03 April 2012 - 14:58 ' timestamp='1333457900' post='1180391'] Ben spooler servisi için bir örnek veryim, sen kendine göre ayarlarsın. Başarılar dilerim, kolay gelsin... [codebox]OnAutoItExitRegister("_BL_EXIT") ;Çıkış işlemlerini yaptırkmak için OnAutoItExitRegister komutunu tanıtalım Global $hKernel32 = DllOpen("kernel32.dll") If $hKernel32 = -1 Then MsgBox(16, "Error!", "Can't open kernel32.dll") Exit 1 EndIf Global $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then MsgBox(16, "Error!", "Can't open advapi32.dll") Exit 1 EndIf Local $Service_String = "spooler" ;spooler -> Yazdırma birikitisidir. Local $Service_Query = _BL_Service_QueryStatus($Service_String) If $Service_Query = 0 Then MsgBox(16, $Service_Query, $Service_String & " servisi sistemde yüklü deyil!") Else If $Service_Query > 1 Then MsgBox(64, $Service_Query, $Service_String & " servisi çalışıyor...") Else MsgBox(64, $Service_Query, $Service_String & " servisi sistemde yüklü ama çalışmıyor.") EndIf EndIf Func _BL_EXIT() DllClose($hKernel32) DllClose($hAdvapi32) Exit 0 EndFunc ;==>_BL_EXIT Func _BL_Service_QueryStatus($BServiceName, $BComputerName = "") Local $ADVAPI32_DLL = DllOpen("advapi32.dll") If $ADVAPI32_DLL = -1 Then Return SetError(1, 0, 0) Local $OPEN_SCM = DllCall($hAdvapi32, "ptr", "OpenSCManagerW", "wstr", $BComputerName, "wstr", "ServicesActive", "dword", 1) If @error Then $OPEN_SCM = 0 Else $OPEN_SCM = $OPEN_SCM[0] EndIf Local $BService = DllCall($hAdvapi32, "ptr", "OpenServiceW", "ptr", $OPEN_SCM, "wstr", $BServiceName, "dword", 4) If @error Then $BService = 0 Else $BService = $BService[0] EndIf Local $bSERVICE_STATUS_PROCESS = DllStructCreate("dword[9]") Local $BQSSE = DllCall($hAdvapi32, "int", "QueryServiceStatusEx", "ptr", $BService, "dword", 0, _ "ptr", DllStructGetPtr($bSERVICE_STATUS_PROCESS), "dword", DllStructGetSize($bSERVICE_STATUS_PROCESS), "dword*", 0) If $BQSSE[0] = 0 Then $BQSSE = DllCall($hKernel32, "dword", "GetLastError") $BQSSE = $BQSSE[0] EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "ptr", $OPEN_SCM) DllCall($hAdvapi32, "int", "CloseServiceHandle", "ptr", $BService) ;~ Local $bStatus[9] ;~ For $i = 0 To 8 ;~ $bStatus[$i] = DllStructGetData($bSERVICE_STATUS_PROCESS, 1, $i + 1) ;~ Next ;~ Return SetError($BQSSE, 0, $bStatus) Return SetError($BQSSE, 0, DllStructGetData($bSERVICE_STATUS_PROCESS, 1, 2)) EndFunc ;==>_BL_Service_QueryStatus[/codebox] [/quote] Quote Link to comment Share on other sites More sharing options...
mustafakara Posted April 3, 2012 Author Share Posted April 3, 2012 sevgili blue_life teşekkürler test ettim tam istediğim gibi Quote Link to comment Share on other sites More sharing options...
mustafakara Posted April 6, 2012 Author Share Posted April 6, 2012 sevgili arkadaşlar merhabalar bilgisayarımı açtığımda servislerin otomatik olarak başlaması için ne yapmalıyım birde belirli bir sıraya göre başlamalılar autoit programı ile servisleri kuruyorum reg kayıtlarını girdim servisleri başlattığımda gayet iyi çalışıyorlar ancak bilgisayarı yeniden başlattığımda çalışmıyorlar yeniden kendim başlatmak zorunda kalıyorum yardımcı olursanız sevinirim herkese kolay gelsin Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 6, 2012 Share Posted April 6, 2012 @mustafakara Yukarıda spooler (yazdırma birikintisi) için örnek vermiştim. Kısaca spooler servisinin otomatik başlatmak için HKLM\SYSTEM\CurrentControlSet\Services\Spooler anahtarındaki Start değerinin 2 olması gerekiyor. Kod olarak verirsem; RegWrite('HKLM\SYSTEM\CurrentControlSet\Services\Spooler', 'Start', 'REG_DWORD', '2') Ayrıca start değeri 3 olursa elle başlatma (manuel) , 4 olursa kapalı (disabled) oluyordu. Quote Link to comment Share on other sites More sharing options...
mustafakara Posted April 9, 2012 Author Share Posted April 9, 2012 sevgili blue_life teşekkürler söylediğin değeri zaten 2 olarak belirlemiştim ancak ona rağmen otomatik olarak başlamıyor ilgili servisler seninde bildiğin gibi birbirine bağlı olarak çalışıyor yani servislerin belirlibir sıra ile çalışması gerekiyor bunu nasıl başarabilirim Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 10, 2012 Share Posted April 10, 2012 @mustafakara Öncelikle mesajını farketmemişim. Geç yanıt için kusura bakma. Konuya gelirsek; servis sırasıyla alakalı malesef herangi bir malumatım yok. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.