Nt servisi kurma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Nt servisi kurma

Mesaj gönderen guduknecmi »

selamlar

Kod: Tümünü seç

procedure TForm1.btnInstallServiceClick(Sender: TObject); 
var 
SCM: SC_HANDLE; 
ServiceHandle: SC_HANDLE; 
dwStartType: DWord; 
begin 
dwStartType := 1; 
SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); 
if SCM = 0 then 
raise Exception.Create('Servis Yöneticisi Açılamadı.'); 
ServiceHandle := CreateService(SCM, PChar('InterBaseServer'), PChar('InterBase'), SERVICE_CHANGE_CONFIG, 
SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, PChar('c:\ib.exe'), nil, nil, nil, nil, nil); 
if ServiceHandle = 0 then 
begin 
CloseServiceHandle(SCM); 
raise Exception.Create('Servis Yükle Hatası: ' + SysErrorMessage(GetLastError)); 
end; 
CloseServiceHandle(SCM); 
CloseServiceHandle(ServiceHandle); 
end; 
kodu ile programımı servis olarak yükledim.Bilgisayar açıldığında programım da açılıyor, Yalnız yaklaşık 1 dakika kadar çalıştıkta sonra kapanıyor.
Programın kapanmadan çalışmaya devam etmesi için ne yapmam gerekiyor?
Verdiği hata mesajı:

Kod: Tümünü seç

Project project1.exe raised exception class Exception with message 'Interbase Servisi Başlatılamadı.Hata:Hizmet belli aralıklarla
 yapılan başlama veya denetim isteğine yanıt vermedi'.Procces stopped.Use Step or Run to continue.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1526
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

merhaba, interbase halen sisteminde yüklü ise onu çalıştırman gerekiyor. eğer interbase i sen service olarak yüklüyorsan yükleme işleminden sonra çalıştırmayı dene (startservice)
Resim

..::|YeşilMavi|::..
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

kendi yazdığım programı servis olarak başlatmak istiyorum.createservice ile servisi yüklüyorum.senin önerin üzerine programın oncreatesine startservice kodu yazdım.Durum:Bilgisayar açıldığında programım servis olarak yükleniyor ve çalışmaya başlıyor.Fakat bir türlü oncreateden kurtulamıyor.Program servisi başlatıyor,servis de programı.
oncreateye startservice yazmasamda bu kez 1 dk içinde hata verip kapanıyor.ne yapacağım bilemedim.

Edit:
http://msdn.microsoft.com/library/defau ... ervice.asp
adresinde StartServiceCtrlDispatcher kodu anlatılıyor.Sanırım program açıldığında bu kodun çalışması lazım. Fakat oradaki yazılanlardan parametrelerini anlayamadım.Yardımcı olursanız sevinirim...
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1526
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

programın create ine yazdığın zaman, prog. servis tarafından her çalıştırıldığında yine create teki şlemi yapmaya çalışacaktır. create deki işlemde kendini çalıştırma olduğu için bir döngü olur.

bu nedenle en sağlıklısı imkanın varsa setup gibi yap.
yani x.exe setup dosyası, y.exe service olacak dosya.
x.exe çalıştırdığında y.exe yi service olarak yükleyecek, x.exe ile bi işin kalmayacak artık.

eğer tek dosya olarak yapacam dersen, service durumunu kontrol ettirerek yapabilirsin zannediyorum.

viewtopic.php?t=3955&highlight=
burada durumu nasıl kontrol edeceğin var..
Resim

..::|YeşilMavi|::..
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

selam
belkide api'lerle uğraşırken benim xp bozulmuştur. :oops:
normalde programı kurarken servisi yüklüyorum (servisi yükle butonu var).Programın oncreatesinde startservice yok(senin önerin ile kullandım oda döngüye yol açtı ).hala ilk mesajımdaki durum değişmedi. :cry:
İkinci mesajımda verdiğim linkteki anlatılanlar çözüm olamazmı?
Cevapla