Показать сообщение отдельно
  #7  
Старый 03.02.2013, 17:31
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

Вот код, валиться на запуске службы
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  ExtCtrls, COMObj, IniFiles;

type
  TService1 = class(TService)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TService1.Timer1Timer(Sender: TObject);
const
  // ProgID для LoginPoint.
  LOGIN_POINT_PROG_ID = 'SBLogon.LoginPoint';
  // ПрогИД.
  CONN_PROGID = 'ProgID';
  // Разделитель элментов пары <Name><Value>
  NAME_VALUE_SEPARATOR = '=';
  // ProgID для SBRTE
  SBRTE_PROG_ID = 'SBRTE.Application';
  // Версия продукта (X.X.X).
  SBProductVersion = '7.10.1';
  // Параметры подключения
  SERVER_NAME = 'directum';
var
  Ini: Tinifile;
  ConnectParams:WideString;
  ServerName:string;
  DBName:string;
  UserName:string;
  Password:string;
  IsOsAuth:string;
  IsVirtualPassword:string;
  UserLogin:string;
  UserPass:string;
  ScriptName:Widestring;
  LoginPoint: OleVariant;
  Script: OleVariant;
  Application: OleVariant;
begin
  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'settings.ini');

  // формируем строку подключения
  ServerName:='ServerName='+Ini.ReadString('Connections','ServerName','')+';';
  DBName:='DBName='+Ini.ReadString('Connections','DBName','')+';';
  UserName:='UserName='+Ini.ReadString('Connections','UserName','')+';';
  Password:='Password='+Ini.ReadString('Connections','Password','')+';';
  IsOsAuth:='IsOsAuth='+Ini.ReadString('Connections','IsOsAuth','')+';';
  IsVirtualPassword:='IsVirtualPassword='+Ini.ReadString('Connections','IsVirtualPassword','');
  ConnectParams:=ServerName+DBName+UserName+Password+IsOsAuth+IsVirtualPassword;

  // формируем строку запуска сценария
  UserLogin:=Ini.ReadString('Options','UserLogin','');
  UserPass:=Ini.ReadString('Options','UserPass','');
  ScriptName:=Ini.ReadString('Options','ScriptName','');
  Ini.Free;

  LoginPoint := CreateOleObject(LOGIN_POINT_PROG_ID);
  Application := LoginPoint.GetApplicationEx(ConnectParams + ';' + CONN_PROGID + NAME_VALUE_SEPARATOR + SBRTE_PROG_ID + '.' + SBProductVersion, Error);
  Script := Application.ScriptFactory.GetObjectByName(ScriptName);
  Script.Params.Add('login',UserLogin);
  Script.Params.Add('pass',UserPass);
  Script.Execute;
end;
//----конец

end.
Ответить с цитированием