線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1424
推到 Plurk!
推到 Facebook!

服務程序(Service Application)的描述如何在程序中實現?

尚未結案
cindy78
一般會員


發表:4
回覆:19
積分:4
註冊:2004-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-21 10:08:18 IP:219.140.xxx.xxx 未訂閱
服務(Service Application)的描述如何在程序中實現? 如WIN2000中服务SERVER,描述是:提供 RPC 支持、文件、打印以及命名管道共享。 我搜索了一下,但沒有一個解.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-21 10:21:50 IP:202.39.xxx.xxx 未訂閱
要在 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-21 11:13:36 IP:219.140.xxx.xxx 未訂閱
感謝斑竹的指導,這种解決方法我在CSDN中看到過,但是我覺得不是很好。第一:我在註冊表中搜索了一下,服務程序在很多地方有註冊,並不是只在一個地方,難道這些地方都要添加鍵值嗎? 第二:文中所提到的地方('SYSTEM\CurrentControlSet\Services\),很奇怪的是沒有我的服務程序信息:) 我覺得除了註冊表應該有更好的解決方法吧。
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-21 16:26:03 IP:61.221.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-21 17:48:42 IP:219.140.xxx.xxx 未訂閱
可能使我剛開始研究服務程序吧,我並不太清楚conundrum網友所說的幾種service在註冊表中的區別。我寫的服務程序,只是從delphi中自動生成的,並沒有特別的呀。 再有就是,難道提問的時候,我需要把我所有搜索過,或是看過的地方都報告一下嗎?以讓網友同志們有思想準備,這種方法我會,但是不能實現?如果是這樣的話,那我可要累死了,呵呵,一般問題我能搜到的話,我是不會文的呀,包括您給我的解答,雖然那個程序我已經研究了很多遍(在提問之前),但是我還是再次仔細看了一遍(在您提醒了我之後),他啓動了以後,服務中的描述也是空的。 我不知道這個問題我還要如何說得清楚,我只要程序可以把描述寫進去啊,這樣說難道還不夠嗎?我並沒有那麽多條件,那個服務無所謂是什麽時候啓(只要它使delphi自動生成的那個)
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-21 18:07:30 IP:202.39.xxx.xxx 未訂閱
小弟搜尋了一下 都是這樣的解決方式 所以不知您為何不行?
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-21 18:11:05 IP:61.221.xxx.xxx 未訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-23 08:45:29 IP:219.140.xxx.xxx 未訂閱
conundrum兄,見了你提示的帖子后,心情立刻輕鬆了不少,原來我不是第一個遭你扁的人啊,習慣使然< > 問問題模能兩可(在高手或准高手看來),是出學者的通病,因爲是初學所以看問題不可能有那麽深,情況也不可能分的那麽細緻,所以嗎,我被扁,我有理。< > 爲了可以實現那該死的代碼,爲了明天我也可以拿者幾個星星去扁人(當然不忘順便幫人家解決問題,誰讓我是好人呢,誰讓我恨子不成材呢< >,誰讓你不知道,我知道呢;),我要努力鑽研阿(當然包括還要繼續拿苯問題來折磨大家< >)。
cindy78
一般會員


發表:4
回覆:19
積分:4
註冊:2004-05-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-23 08:54:01 IP:219.140.xxx.xxx 未訂閱
以上開個玩笑。下面該說正題。        多謝斑竹幫助,也多謝conundrum兄一再提示“那個解決已經解決了我的問題“,才讓我好好地把註冊表中的服務項,研究了一遍。那种方法確實可以,原來我說沒有,使我把服務名,程序名,還有服務顯示名稱搞混了。    還有就是,我原來認爲,delphi既然有服務類,那麽應該有參數可以把它的描述直接帶進去,不需要其他途徑另外寫,後來我把TService類的PAS看了一下,沒發現,再加上既然大家都說寫註冊表,那我就寫註冊表好了。    就此結案,感謝關注
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-06-23 12:32:55 IP:61.221.xxx.xxx 未訂閱
示範如何使用 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.
系統時間:2024-06-10 13:56:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!