服務程序(Service Application)的描述如何在程序中實現? |
尚未結案
|
cindy78
一般會員 發表:4 回覆:19 積分:4 註冊:2004-05-24 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
要在 registry 中加入 Description, 試試:
procedure TMyService.ServiceAfterInstall(Sender: TService); var reg: TRegistry; begin reg := TRegistry.Create; try with reg do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey('SYSTEM\CurrentControlSet\Services\' Name, False) then begin WriteString('Description', 'This is the service description'); end; CloseKey; end; finally reg.Free; end; end; |
cindy78
一般會員 發表:4 回覆:19 積分:4 註冊:2004-05-24 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
cindy78 網友 請把問題重點 程式化 如果是討論無差
不過看起來 好像是要答案一般 如果要口語化的討論 那就很簡單了
服務(Service Application)的描述如何在程序中實現? 如WIN2000中服?SERVER,描述是:提供 RPC 支持、文件、打印以及命名管道共享。 我搜索了一下,但沒有一個解.這樣問別人 很困難喔 要完全輔合你的解答 不是很利害 就是真的很利害 給你參考看看 【Delphi】【問題】有關 Service 實作的問題 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=51052 hagar 兄已算是解答了 只是你要的是透過dll或未登入時的service方式 你自己也沒明確說出來 所以答案 就如你上述一般 喔喔 喔喔 |
cindy78
一般會員 發表:4 回覆:19 積分:4 註冊:2004-05-24 發送簡訊給我 |
可能使我剛開始研究服務程序吧,我並不太清楚conundrum網友所說的幾種service在註冊表中的區別。我寫的服務程序,只是從delphi中自動生成的,並沒有特別的呀。
再有就是,難道提問的時候,我需要把我所有搜索過,或是看過的地方都報告一下嗎?以讓網友同志們有思想準備,這種方法我會,但是不能實現?如果是這樣的話,那我可要累死了,呵呵,一般問題我能搜到的話,我是不會文的呀,包括您給我的解答,雖然那個程序我已經研究了很多遍(在提問之前),但是我還是再次仔細看了一遍(在您提醒了我之後),他啓動了以後,服務中的描述也是空的。
我不知道這個問題我還要如何說得清楚,我只要程序可以把描述寫進去啊,這樣說難道還不夠嗎?我並沒有那麽多條件,那個服務無所謂是什麽時候啓(只要它使delphi自動生成的那個)
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
cindy78 你好
我看你還是 免生氣 我看是雙方討論認知不同
所以在你還不知道前 我只有再po一篇給你
參考一下
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50525 種方法我會,但是不能實現
等於還不之其意 但沒關係 因為我說的就是 你那理無法實現卻無程式化的問題
由於這東西口語化很難知道你的問題是在那 服務中的描述也是空的
自己查看reg就知道
範例可以試用
sf.net : http://prdownloads.sourceforge.net/appserv/appserv-win32-2.4.0.exe?download
1 抓出REG位置
2 抓出REG服務說明 如何實做 其實KTOP已有很多篇 上述PD 兄說有800篇
|
cindy78
一般會員 發表:4 回覆:19 積分:4 註冊:2004-05-24 發送簡訊給我 |
|
cindy78
一般會員 發表:4 回覆:19 積分:4 註冊:2004-05-24 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
示範如何使用 Delphi 5 的 TService 製作 WIndows NT Service ( 1.0 版 ),作者 : David Lively。 unit Unit1;
(*
Test Service Application - 12.28.99 - David Lively
Email dlively@intellecare.com A simple service application that can be started, paused, continued, and stopped.
Beeps once every two seconds when executing. Install by running
"service /install" from the command line, then manipulate the service with: START) net start "test service"
STOP) net stop "test service"
PAUSE) net pause "test service"
CONTINUE) net continue "test service" To uninstall, run "service /uninstall" *)
interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs; type
TTestService = class(TService)
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceExecute(Sender: TService);
procedure ServiceBeforeInstall(Sender: TService);
procedure ServiceAfterInstall(Sender: TService);
procedure ServiceAfterUninstall(Sender: TService);
procedure ServiceBeforeUninstall(Sender: TService);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServiceShutdown(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
private
{ Private declarations }
fPaused : boolean;
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end; var
TestService: TTestService; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall;
begin
TestService.Controller(CtrlCode);
end; function TTestService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end; procedure TTestService.ServiceStart(Sender: TService; var Started: Boolean);
begin
{ Alert the user }
ShowMessage('OnStart');
{ tell the OS that we're starting }
Started := TRUE;
end; procedure TTestService.ServiceExecute(Sender: TService);
begin
ShowMessage('OnExecute');
{ Execute until we're told to stop }
while not Terminated do begin
{ Only act if we're not paused }
if not fPaused then begin
{ wait 2 seconds }
Sleep(2000);
{ beep }
MessageBeep(0);
end; { if not ServiceThread.Suspended }
{ Let other threads execute }
ServiceThread.ProcessRequests(FALSE);
end; { while not Terminated }
end; procedure TTestService.ServiceBeforeInstall(Sender: TService);
begin
ShowMessage('BeforeInstall');
end; procedure TTestService.ServiceAfterInstall(Sender: TService);
begin
ShowMessage('After Install');
end; procedure TTestService.ServiceAfterUninstall(Sender: TService);
begin
ShowMessage('After Uninstall');
end; procedure TTestService.ServiceBeforeUninstall(Sender: TService);
begin
ShowMessage('Before Uninstall');
end; procedure TTestService.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
{ Tell the service thread to terminate }
ServiceThread.Terminate;
{ Tell the OS that we're stopping }
Stopped := TRUE;
{ Alert the user }
ShowMessage('Stop');
end; procedure TTestService.ServiceShutdown(Sender: TService);
begin
ShowMessage('Shutdown');
end; procedure TTestService.ServicePause(Sender: TService; var Paused: Boolean);
begin
{ tell OS that pause was successful }
Paused := True;
{ set are pause flag so Execute loop doesn't do anything }
fPaused := TRUE;
{ Alert the user visually }
ShowMessage('Pause');
end; procedure TTestService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
{ Tell the OS that the Continue was successful }
Continued := True;
{ Turn our internal pause flag off }
fPaused := FALSE;
{ alert the user visually }
ShowMessage('Continue');
end; end.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |