Q:我用DELPHI編寫了一個NT的服務,且設置爲自動啓動,可每次服務器重啓後,該服務不能自動啓動。我感受是因爲該服務啓動時使用了sqlserver數據庫,可能因爲sqlserver服務沒有啓動完成,致使該服務沒法啓動,因此我想指定該服務的依存關係,讓它在sqlserver服務啓動完畢後再啓動,如何作?
A:
方法1、
procedure TFooParserService.ServiceBeforeInstall(Sender: TService);
begin
{$ifdef BINDING_MSSQLSERVER}
Self.Dependencies.Add;
Self.Dependencies.Items[0].Name := 'MSSQLSERVER';
{$endif}
end;
方法2、
在service的create事件中添加
TDependency(Dependencies.add).name:='MSSQLSERVER';
Q:如何調試?
A:
調試是能夠的:
最簡單的就是先做成程序,調試沒有問題了再轉成服務。 固然若是你不想這樣的話固然也能夠,方法以下:
首先,在"Run|Parameters..."窗口「Parameters」中使用參數/Install運行服務程序,此時服務安裝到系統中,而後用服務管理器啓動安裝的服務,回到Delphi中,到菜單Run-->Attach Process中,Attach到服務的Exe程序便可,若是找不到這個Exe,選擇下面的「Show System Processes」。此時能夠正常下斷點等。
須要注意的是:
1.Attach會跳出一個錯誤的窗口,不要管它,關閉後直接F4便可。
2.若是不調試後,要把/Install換成/UnInstall,卸載服務,而後把Parameters參數清空。反正只要提示大概意思是「服務已經存在」或者「服務不存在」,就要看Parameters的參數值。
3.再次調試/Install的時候,要把剛剛打開的服務管理器窗口關閉,否則會提示大概意思是「服務已經被禁止」。
「七」樂無窮,盡在新浪新版博客,快來體驗啊~~~請點擊進入~html