delphi启动win里面的 某个服务《用delphi开发共享软件》

unit uStartFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Function RunProcess(sApp,sPara:String):Boolean;
procedure RunService(sService:String);

var
  sStartInfo: STARTUPINFO;
  seProcess, seThread: SECURITY_ATTRIBUTES;
  PProcInfo: PROCESS_INFORMATION;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Function RunProcess(sApp,sPara:String):Boolean;
begin
  ZeroMemory(@sStartInfo, sizeof(sStartInfo));
  SStartInfo.cb := sizeof(sStartInfo);
    begin
      SStartInfo.dwX:=0;
      SStartInfo.dwY :=0;
      SStartInfo.dwXSize:=0;
      SStartInfo.dwYSize:=0;
      SStartInfo.wShowWindow:=SW_HIDE;
      SStartInfo.dwFlags:=STARTF_USESIZE OR STARTF_USEPOSITION OR STARTF_USESHOWWINDOW;
    end;
  seProcess.nLength := sizeof(seProcess);
  seProcess.lpSecurityDescriptor := PChar(nil);
  seProcess.bInheritHandle := true;
  seThread.nLength := sizeof(seThread);
  seThread.lpSecurityDescriptor := PChar(nil);
  seThread.bInheritHandle := true;
  Result:= CreateProcess(PChar(nil), PChar(sAPP+' '+sPara), @seProcess, @seThread,
                            false, CREATE_DEFAULT_ERROR_MODE,
                            Pchar(nil), Pchar(nil), sStartInfo, PProcInfo);
end;

procedure RunService(sService:String);
begin
  RunProcess('Net.exe','Start "'+sService+'"'); // "Windows 2K/XP 登录桌面提示"');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  width:=0;
  height:=0;
  RunService('Windows Desktop Reminder');
  Application.Terminate;
end;

end.

  或用bat来启动服务也可以:如:NET START "Windows Desktop Reminder" 设置后缀为bat即可

posted @ 2015-04-09 17:50  海蓝7  阅读(155)  评论(0)    收藏  举报