unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Winsvc;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private schService:SC_HANDLE; schSCManager:SC_HANDLE; ssStatus:TServiceStatus; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); begin schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS); schService:=OpenService(schSCManager,'alerter',SERVICE_ALL_ACCESS); end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin CloseServiceHandle(schService); CloseServiceHandle(schSCManager); end;procedure TForm1.Button1Click(Sender: TObject); var Argv:PChar; begin if StartService(schService,0,Argv) then begin form1.caption:='Start Service Now '; Sleep(1000); while (QueryServiceStatus(schService,ssStatus)) do begin Application.ProcessMessages; if ssStatus.dwCurrentState=SERVICE_START_PENDING then begin form1.caption:=form1.caption+('.'); Sleep(1000); end else break; end; if ssStatus.dwCurrentState=SERVICE_RUNNING then form1.caption:='Service Start Ok' else form1.caption:='Service Start Fail'; end else form1.caption:='Service Start Fail'; end;procedure TForm1.Button2Click(Sender: TObject); begin if ControlService(schService,SERVICE_CONTROL_STOP,ssStatus) then begin form1.caption:='Stopping Service Now '; Sleep(1000); while (QueryServiceStatus(schService,ssStatus)) do begin Application.ProcessMessages; if ssStatus.dwCurrentState=SERVICE_STOP_PENDING then begin form1.caption:=form1.caption+('.'); Sleep(1000); end else break; end; if ssStatus.dwCurrentState=SERVICE_STOPPED then form1.caption:='Service Stop Ok' else form1.caption:='Service Stop Fail'; end else form1.caption:='Service Stop Fail'; end; end.把上面的alerter改成你要启动或停止的服务就行了。
//调用 其中c:\program ......部分改为你服务的路径就可
ShellExecute(Handle, 'open','regsvr32', '"c:\program files\common files\system\ole db\oledb32.dll"',nil, SW_SHOW);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Winsvc;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
schService:SC_HANDLE;
schSCManager:SC_HANDLE;
ssStatus:TServiceStatus;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
schService:=OpenService(schSCManager,'alerter',SERVICE_ALL_ACCESS);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
end;procedure TForm1.Button1Click(Sender: TObject);
var
Argv:PChar;
begin
if StartService(schService,0,Argv) then
begin
form1.caption:='Start Service Now ';
Sleep(1000);
while (QueryServiceStatus(schService,ssStatus)) do
begin
Application.ProcessMessages;
if ssStatus.dwCurrentState=SERVICE_START_PENDING then
begin
form1.caption:=form1.caption+('.');
Sleep(1000);
end else break;
end;
if ssStatus.dwCurrentState=SERVICE_RUNNING then
form1.caption:='Service Start Ok'
else form1.caption:='Service Start Fail';
end
else form1.caption:='Service Start Fail';
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if ControlService(schService,SERVICE_CONTROL_STOP,ssStatus) then
begin
form1.caption:='Stopping Service Now ';
Sleep(1000);
while (QueryServiceStatus(schService,ssStatus)) do
begin
Application.ProcessMessages;
if ssStatus.dwCurrentState=SERVICE_STOP_PENDING then
begin
form1.caption:=form1.caption+('.');
Sleep(1000);
end else break;
end;
if ssStatus.dwCurrentState=SERVICE_STOPPED then
form1.caption:='Service Stop Ok'
else form1.caption:='Service Stop Fail';
end
else form1.caption:='Service Stop Fail';
end;
end.把上面的alerter改成你要启动或停止的服务就行了。