有谁提供dephi编写的运行在服务器的服务中service程序例子,SOS!!!

解决方案 »

  1.   

    unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes,SvcMgr, ExtCtrls ;typeTService2 = class(TService)Timer1: TTimer;procedure Timer1Timer(Sender: TObject);private{ Private declarations }publicfunction GetServiceController: TServiceController; override;{ Public declarations }end;varService2: TService2;implementation{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;beginService2.Controller(CtrlCode);end;function TService2.GetServiceController: TServiceController;beginResult := ServiceController;end;procedure TService2.Timer1Timer(Sender: TObject);beginMessageBeep(1);end;end.  control app(not nessesary if you use control panel) :unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls,WinSvc;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}function ServiceStart(sMachine, sService: String) : Boolean;varschm, schs: SC_Handle;ss: TServiceStatus;psTemp: PChar;dwChkP: DWord;beginss.dwCurrentState := 0;schm := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_CONNECT);if (schm>0) thenbeginschs := OpenService(schm, PChar(sService), SERVICE_START orSERVICE_QUERY_STATUS);if (schs>0) thenbeginpsTemp := nil;if (StartService(schs, 0, psTemp)) thenif (QueryServiceStatus(schs, ss)) thenwhile (SERVICE_RUNNING<>ss.dwCurrentState) dobegindwChkP := ss.dwCheckPoint;Sleep(ss.dwWaitHint);if (not QueryServiceStatus(schs, ss)) thenBreak;if ss.dwCheckPoint <> 0 thenBreak;end;CloseServiceHandle(schs);end;CloseServiceHandle(schm);end;Result := SERVICE_RUNNING=ss.dwCurrentState;end;function ServiceStop(sMachine, sService: String) : Boolean;var schm, schs: SC_Handle;ss: TServiceStatus;dwChkP: DWord;beginschm := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_CONNECT);if (schm>0) then beginschs := OpenService(schm, PChar(sService), SERVICE_STOP orSERVICE_QUERY_STATUS);if (schs>0) thenbeginif (ControlService(schs, SERVICE_CONTROL_STOP, ss)) thenif (QueryServiceStatus(schs, ss)) thenwhile (SERVICE_STOPPED<>ss.dwCurrentState) dobegindwChkP := ss.dwCheckPoint;Sleep(ss.dwWaitHint);if (not QueryServiceStatus(schs, ss)) thenBreak;if ss.dwCheckPoint <> 0 thenBreak;end;CloseServiceHandle(schs);end;CloseServiceHandle(schm);end;Result := SERVICE_STOPPED=ss.dwCurrentState;end; procedure TForm1.Button1Click(Sender: TObject);beginServiceStart('','Service2');file://ServiceStart('\computername','Alerter');file://this would be for remote servicesend;procedure TForm1.Button2Click(Sender: TObject);beginServiceStop('','Service2');end;end.
      

  2.   

    delphi自带的用于midas的程序,scktsrvr.exe,她本身就可以作为服务器运行,去看他的辕马