Executer les commandes consoles sur le serveur

Executer les commandes consoles sur le serveur

Messagepar Michael DELIQUE » 19 Avr 2007 à 14:27

Code : Tout sélectionner
Public Function ExecuteCommandeServeur_API(Byval wServer As String, Byval wCommande As String) As Long
' Execute les commandes consoles sur le serveur   
   
%REM
Declare Function NSFRemoteConsole Lib "nnotes.dll" (Byval ServerName As String, Byval ConsoleCommand As String, rethBuffer As Long) As Long
Declare Function OSLockObject Lib "nnotes.dll" ( Byval lHandle As Long ) As Long
Declare Function OSUnlockObject Lib "nnotes.dll" ( Byval lHandle As Long ) As Integer
Declare Function OSMemFree Lib "nnotes" (Byval Handle As Long) As Integer
%END REM
   
      'Déclaraton Variable
   Dim nbBuf As Long
   Dim pBuf As String
   
   On Error Goto ErreurExecuteCommandeServeur_API
   
   ExecuteCommandeServeur_API = NSFRemoteConsole(wServer, wCommande, nbBuf)
   pBuf = OSLockObject(nbBuf)
   
   Call OSUnlockObject(nbBuf)
   Call OSMemFree(nbBuf)
   
   pBuf = ""
   
   Exit Function
ErreurExecuteCommandeServeur_API:
   Msgbox "("+Cstr(Getthreadinfo (1))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Exit Function
End Function
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Michael DELIQUE » 19 Avr 2007 à 14:32

cette fonction utilise l'api pour faire un broadcast, doit être exécuté depuis un agent sur le server

Code : Tout sélectionner
Public Sub Broadcast(Byval wServer As String, Byval wMessage As String, wUser As String )
    'Déclaration Variable
   Dim Commande As String
   Dim nmServer As NotesName
   Dim nmUser As NotesName
   
   On Error Goto ErreurBroadcast
   
   If Trim(wMessage) = "" Then
      Error 9999,"no message"
      Exit Sub
   End If
   
   If Trim(wUser) = "" Then
      Error 9999,"no user"
      Exit Sub
   Else
      Set nmUser = New NotesName(wUser)
   End If
   
   
   If Trim(wServer) = "" Then
      If Session Is Nothing Then
         Set Session = New NotesSession
      End If
      Set nmServer = New NotesName(Session.CurrentDatabase.Server)
   Else
      Set nmServer = New NotesName(wServer)
   End If
   
   Commande = {Broadcast "(!)}+wMessage+{""}+Cstr(nmUser.Abbreviated)+{"}
   
   Call ExecuteCommandeServeur_API(Cstr(nmServer.abbreviated),Commande)
   
   Set nmServer = Nothing
   Set nmUser = Nothing
   Commande = ""
   
   Exit Sub
ErreurBroadcast:
   Msgbox "("+Cstr(Getthreadinfo (1))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   exit Sub
End Sub
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar JYR » 19 Avr 2007 à 14:34

Salut Michael,

Simple cunriosité. J'ai utilisé des API semblables pas le passé. Dans mon cas, je les lançais à partir de mon poste. Toi, c'est pour lancer à partir d'un agent programmé?

Dans mon cas, je n'ai jamais fait confiance à des API "sensibles" de ce type :D

En V6, il s'agit maintenant de fonctions incluses dans le Notessession (SendConsoleCOmmand)

JYR
Avatar de l’utilisateur
JYR
Empereur des posts
Empereur des posts
 
Message(s) : 1573
Inscrit(e) le : 10 Jan 2005 à 14:47
Localisation : Quebec

Messagepar JYR » 19 Avr 2007 à 14:35

Tu as posté durant que j'écrivais ma réponse. :P
Avatar de l’utilisateur
JYR
Empereur des posts
Empereur des posts
 
Message(s) : 1573
Inscrit(e) le : 10 Jan 2005 à 14:47
Localisation : Quebec

Messagepar Michael DELIQUE » 19 Avr 2007 à 14:54

Hello JYR

J'avais mis ça au point en V5 pour un agent lancé depuis un client lourd via un RunOnServer et pour mon besoin c'était très stable.

Et je n'ai pas mis a jours ma fonction avec le nouvel objet V6 mais ça n'est pas grand chose à faire
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar oguruma » 25 Avr 2007 à 09:43

oui en effet, c'est dispo en V6 maintenant plus besoin des api ;)
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Messagepar Michael DELIQUE » 21 Mai 2007 à 13:05

pour info

voici la commande qui remplace l'API à partir de la V6:

notesSession.SendConsoleCommand
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers API