我新建了一个 application 然后在建了一个 service 我怎么在applicaiton里安装service服务呢

解决方案 »

  1.   

    在程序里执行:  uses  ShellAPI;
      //调用  其中c:\program ......部分改为你服务的路径就可
      ShellExecute(Handle, 'open','regsvr32', '"c:\program files\common files\system\ole db\oledb32.dll"',nil, SW_SHOW);
      

  2.   

    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改成你要启动或停止的服务就行了。