Api

bonjour a tous. il y a-t-il de l’aide sur l’API de CITRIX ?



J’ai besoin de compter, dans une application delphi, le nombre de fois ou cette application est lancée, dans une Batterie/ferme de serveur Citrix.

quelqun peut-il m’aider ?



Merci d’avence,



Mike

une idee, avec ntset http://www.online-admin.com/ntset.html

ca me sert a alimenter les bases RRD de cacti

program RRD4win;
{$APPTYPE CONSOLE}
uses
SysUtils, LMDSysMemory,
Variants,
Classes,
Controls,
StdCtrls,
NTCommon,
NTerminalAdm,
UserMan,
NTServerInfo,
NetApi32,
ToolWin;
var
NTerminalAdmin1: TNTerminalAdmin;
sessions, total, replik, foxcom, ndf, backoffice, grcao, grcaovb :Integer;
vprocess :TNTWtsProcess;
i,j :integer;
vList: TStringList;
DebugMode :Boolean;
begin
DebugMode := False;
if ParamCount = 1 then
if ParamStr(1) = '-d' then
DebugMode := True
else
Writeln('debug mode: <-d>');
NTerminalAdmin1 := TNTerminalAdmin.Create(nil);
vprocess := TNTWtsProcess.Create(nil);
vList := TStringList.Create;
NTerminalAdmin1.LogonAs.UserName := '******';
NTerminalAdmin1.LogonAs.Password := '*******';
NTerminalAdmin1.MachineName := '\*********';
sessions := 0; total := 0; replik := 0; foxcom := 0; ndf := 0; backoffice := 0; grcao := 0; grcaovb := 0;
try
vList := NTerminalAdmin1.GetServersEx('\*************', SV_TYPE_TERMINALSERVER);
// if DebugMode then Writeln('');
if DebugMode then Writeln('Nombre de serveurs: '+ inttostr(vList.Count) );
for i := 0 to vList.Count - 1 do begin
NTerminalAdmin1.MachineName := '\'+ vList;
if DebugMode then Writeln('serveur: '+ vList );
try
NTerminalAdmin1.Connect;
if DebugMode then Writeln('Connection a '+ vList +' OK');
for j := 0 to NTerminalAdmin1.Processes.Count -1 do begin
if AnsiUpperCase( NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('Foxcom.exe') then
foxcom := foxcom + 1;
if AnsiUpperCase(NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('wfshell.exe') then
sessions := sessions + 1;
if AnsiUpperCase(NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('replik.exe') then
replik := replik + 1;
if AnsiUpperCase(NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('ndf.exe') then
ndf := ndf + 1;
if AnsiUpperCase(NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('consultbackoffi') then
backoffice := backoffice + 1;
if AnsiUpperCase(NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('msaccess.exe') then
grcao := grcao + 1;
if AnsiUpperCase(NTerminalAdmin1.Processes.Items[j].ProcessName) = AnsiUpperCase('GRCAO.exe') then
grcaovb := grcaovb + 1;
total := foxcom + replik + ndf + backoffice + grcao + grcaovb;
end;
except
if DebugMode then Writeln('Erreur de connection a '+ vList );
end;
end;
Writeln ('session:'+ IntToStr(sessions) +' total:'+ IntToStr(total) +' foxcom:'+ IntToStr(foxcom ) +' replik:'+ IntToStr(replik)+' ndf:'+ IntToStr(ndf) +' backoffice:'+ IntToStr(backoffice) +' grcao:'+ IntToStr(grcao) +' grcaovb:'+ IntToStr(grcaovb));
except
Writeln ('session:-1 total:-1 foxcom:-1 replik:-1 ndf:-1 backoffice:-1 grcao:-1 grcaovb:-1');
end;
vList.Free;
vprocess.Free;
NTerminalAdmin1.Free;
end.

regarde ca aussi

ou alors tu peux dans l’application Delphi interroger la base RM (mais tu aura un décalage de 24h). sinon le SDK MFCOM 4.0 est le chemin à suivre… regarde aussi sur la KB Citrix, il y a beaucoup de scripts MFCOM déjà dispo qui pourront t’aider

http://support.citrix.com/kb/category.jspa?categoryID=611

merci a vous deux ! Je vais voir ce que je peu faire.

Mike