
03.02.2013, 17:31
|
Прохожий
|
|
Регистрация: 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.
|