Page 1 sur 1

Lire le delay d'un agent schedullé

MessagePublié: 09 Oct 2013 à 09:09
par Michael DELIQUE
Bonjour


j'ai besoin de lire, le delay d'un agent schédullé. c'est a dire de savoir tous le combien de temps il tourne. et ça via du LS

et j'ai rien trouvé dans l'aide en ligne ou en regardant le design de l'agent

Re: Lire le delay d'un agent schedullé

MessagePublié: 09 Oct 2013 à 09:31
par Sylvain-PEPIN

Re: Lire le delay d'un agent schedullé

MessagePublié: 09 Oct 2013 à 10:02
par Michael DELIQUE
oui !!! merci, c'est bizarre, je me doutais qu'il fallait passer par l'API-C

Re: Lire le delay d'un agent schedullé

MessagePublié: 09 Oct 2013 à 10:37
par Sylvain-PEPIN
J'ai remarqué qu'en général, à partir du moment où dans la classe d'objet, on ne trouve pas une propriété, il y avait souvent moyen de passer par les APIs.
comme je ne les maitrise pas du tout, en cherchant sur le net, je trouve mon bonheur :)

Re: Lire le delay d'un agent schedullé

MessagePublié: 09 Oct 2013 à 10:38
par Michael DELIQUE
pareil pour moi, mais j'ai eu beau chercher, je suis pas tombé dessus !

merci

Re: Lire le delay d'un agent schedullé

MessagePublié: 09 Oct 2013 à 12:58
par Michael DELIQUE
j'en ai tiré cette fonction

Code : Tout sélectionner
Public Function AgentGetInfo_API(wAgentName As String,wDBTarget As NotesDatabase) As Variant
   
   Dim info As AssistInfo
   Dim DBTarget As NotesDatabase
   Dim Doc As NotesDocument
   Dim lstRetour List As String
   Dim nmServer As NotesName
   Dim PathFile As String
   Dim Server As String
   Dim fullPath As String*256
   Dim Texte As String
   Dim nbReturn As Long
   Dim nbHandleDB As Long
   Dim nbHandleNote As Long      
   Dim AgentName As String   
   Dim ErrorText As String
   Dim nbIDAgent As Long
   Dim nbDT As Integer
   Dim nbNV As Long
   Dim nbV As Long
   Dim nbNT As Integer
   
   Dim BlockA As BlockID
   Dim BlockB As BlockID
   
   
   Const NOTE_CLASS_FILTER = &H0200
   %REM
Type AssistInfo
     Version As Integer
     TriggerType As Integer 
     rem 0 none, 1 schedule, 2 new mail, 3 paste, 4 manual, 5 update, 6 router
     SearchType As Integer 
     rem 0 none, 1 all, 2 new, 3 new/mod, 4 selected, 5 view, 6 unread, 7 prompt, 8 UI
     IntervalType As Integer 
     rem 0 none, 1 minutes, 2 days, 3 weeks, 4 months
     Interval As Integer
     Time1 As Variant 
     rem Start time (ms since midnight)
     Time2 As Variant 
    rem Long (weekday or day of month) or end time (ms since midnight)
     StartTime As Variant 
     rem Time/Date
     EndTime As Variant 
     rem Time/Date
     Flags As Long 
    rem 1 hidden, 2 no weekends, 4 store highlights, 8 mail/paste, 16 choose server
     Spare(15) As Long
End Type
      
Type BlockID
     hPool As Long
     Block As Integer
End Type
      Declare Function W32_OSPathNetConstruct Lib "nnotes.dll" Alias "OSPathNetConstruct"(ByVal portName As Integer, ByVal serverName As String, ByVal fileName As String,ByVal pathName As String) As Integer
      Declare Function W32_NSFDbOpen Lib "nnotes.dll" Alias "NSFDbOpen"(ByVal dbName As String, hDb As Long) As Integer
      Declare Function W32_NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose" (ByVal hDb As Long) As Integer
      Declare Private Function OSLockObject Lib "NNOTES" Alias "OSLockObject" (  ByVal H As Long) As Long
      Declare Private Sub OSUnlockObject Lib "NNOTES" Alias "OSUnlockObject" (  ByVal H As Long)
      Declare Private Function NIFFindDesignNote Lib "NNOTES" Alias "NIFFindDesignNote" (  ByVal hDB As Long, ByVal S As String, ByVal C As Integer, N As Long) As Integer
      Declare Function NSFItemInfo Lib "NNOTES" Alias "NSFItemInfo" (  ByVal hNT As Long, ByVal N As String, ByVal nN As Integer,  iB As BlockID, D As Integer, vB As BlockID, nV As Long) As Integer
      Declare Private Function NSFNoteOpen Lib "NNOTES" Alias "NSFNoteOpen" (  ByVal hDB As Long, ByVal NoteID As Long, ByVal F As Integer, hNT As Long) As Integer
      Declare Private Sub Peek Lib "MSVCRT" Alias "memcpy" (  D As Any, ByVal P As Long, ByVal N As Long)
      Declare Function ConvertTIMEDATEToText2 Lib "NNOTES" Alias "ConvertTIMEDATEToText"(  ByVal zI As Long, ByVal zT As Long, ByVal T As Long, ByVal S As String, ByVal nS As Integer, nT As Integer) As Integer
   %END REM
   
   On Error GoTo CatchError

   lstRetour("ERROR") = ""
   AgentGetInfo_API = lstRetour
   
   If Trim(wAgentName) = "" Then
      Error 9999,"wAgentName is Empty"
      Exit Function
   End If
   
   If Session Is Nothing Then
      Set Session =  New NotesSession
   End If
   
   If wDBTarget Is Nothing Then
      Set DBTarget = Session.CurrentDatabase
   Else
      Set DBTarget = wDBTarget
   End If
   
   Set nmServer = New NotesName(Trim(DBTarget.Server))
   PathFile = Trim(DBTarget.FilePath)
   ErrorText = " ("+ nmServer.Abbreviated+"!!"+Trim(PathFile)+")"
   lstRetour("DATABASE SERVER") = nmServer.Canonical   

   REM  Open the target database
   On Error Resume Next
   Call W32_OSPathNetConstruct(0, nmServer.Abbreviated,Trim(PathFile), fullPath)
   On Error GoTo CatchError
   nbReturn = W32_NSFDbOpen(fullPath, nbHandleDB)
   If nbReturn <> 0 Then      
      Error 9999,"Couldn't open database"
      Exit Function
   End If
   
   If InStr(wAgentName,"|") > 0 Then
      AgentName = Trim(StrLeft(wAgentName,"|"))
   Else
      AgentName = Trim(wAgentName)
   End If
   
   lstRetour("DATABASE PATHFILE") = Trim(PathFile)
   lstRetour("DATABASE TITLE") = Trim(DBTarget.Title)
   lstRetour("NAME") = Trim(AgentName)
   
   Call NIFFindDesignNote (nbHandleDB, AgentName, NOTE_CLASS_FILTER, nbIDAgent)
   If nbIDAgent = 0 Then
      Error 9999,"Can not find agent : "+Trim(AgentName)
      Exit Function
   End If
   
   Call NSFNoteOpen (nbHandleDB, nbIDAgent, 0, nbHandleNote)
   
   On Error Resume Next
   Set Doc = DBTarget.GetDocumentByID(Hex$(nbIDAgent))
   On Error GoTo CatchError
   If Doc Is Nothing Then
      Error 9999,Trim(AgentName)+" is not an agent"
      Exit Function
   Else      
      If InStr(CStr(Doc.Getitemvalue("$Flags")(0)),"f") = 0 Then
         Set Doc = Nothing   
         Error 9999,Trim(AgentName)+" is not an agent"
         Exit Function               
      End If
      Set Doc = Nothing   
   End If
   
   Call NSFItemInfo (nbHandleNote, "$AssistInfo", 11, BlockA, nbDT, BlockB, nbNV)
   
   lstRetour("VERSION") = ""
   lstRetour("TRIGGERTYPE") = ""
   lstRetour("SEARCHTYPE") = ""
   lstRetour("INTERVALTYPE") = ""
   lstRetour("INTERVAL") = ""
   lstRetour("TIME1") = ""
   lstRetour("TIME2") = ""
   lstRetour("STARTTIME") = ""
   lstRetour("ENDTIME") = ""
   lstRetour("FLAGS") = ""
   
   If Not BlockB.hPool = 0 Then
      nbReturn = OSLockObject(BlockB.hPool) + BlockB.Block
      Peek info.Version, nbReturn + 2, 2
      Peek info.TriggerType, nbReturn + 4, 2
      Peek info.SearchType, nbReturn + 6, 2
      Peek info.IntervalType, nbReturn + 8, 2
      Peek info.Interval, nbReturn + 10, 2
      Peek nbV, nbReturn + 12, 4
      If nbV <= 31 Then
         info.Time1 = nbV
      Else
         info.Time1 = CDat(nbV/100/60/60/24)
      End If      
      Peek nbV, nbReturn + 16, 4
      If nbV <= 31 Then
         info.Time2 = nbV
      Else
         info.Time2 = CDat(nbV/100/60/60/24)
      End If   
      Texte = Space(81)
      Call ConvertTIMEDATEToText2 (0, 0, nbReturn + 20, Texte, 80, nbNT)
      If Not nbNT = 0 Then
         info.StartTime = CDat(Left$(Texte, nbNT))
      End If
      Texte = Space(81)
      Call ConvertTIMEDATEToText2 (0, 0, nbReturn + 28, Texte, 80, nbNT)
      If Not nbNT = 0 Then
         info.EndTime = CDat(Left$(Texte, nbNT))
      End If
      Peek info.Flags, nbReturn + 36, 4
      
      Call OSUnlockObject (BlockB.hPool)
      
      lstRetour("VERSION") = Trim(CStr(info.Version))
      lstRetour("TRIGGERTYPE") = Trim(CStr(info.TriggerType))
      lstRetour("SEARCHTYPE") = Trim(CStr(info.SearchType))
      lstRetour("INTERVALTYPE") = Trim(CStr(info.IntervalType))
      lstRetour("INTERVAL") = Trim(CStr(info.Interval))
      lstRetour("TIME1") = Trim(CStr(info.Time1))
      lstRetour("TIME2") = Trim(CStr(info.Time2))
      lstRetour("STARTTIME") = Trim(CStr(info.StartTime ))
      lstRetour("ENDTIME") = Trim(CStr(info.EndTime ))
      lstRetour("FLAGS") = Trim(CStr(info.Flags ))
   End If   

   nbReturn = W32_NSFDbClose(nbHandleDB)
   If nbReturn <> 0 Then   
      REM ErrorText = APIError_Log(CInt(nbReturn))   
      Error 9999,"Couldn't close database (return code : "+CStr(nbReturn)+") : "+ErrorText
      Exit Function
   End If   

   Set nmServer = Nothing
   Set DBTarget = Nothing

   lstRetour("ERROR") = ""
   AgentGetInfo_API = lstRetour
   Erase lstRetour

   Exit Function
CatchError:
   If Trim(ErrorText) <> "" Then
      ErrorText = " "+Trim(ErrorText)
   End If
   MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Error " + CStr(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Line # "+Cstr(Erl),16," ERROR !"
   Erase lstRetour
   lstRetour("ERROR") = CStr(Error)+" ("+CStr(Err)+")"
   AgentGetInfo_API = lstRetour
   If nbHandleDB <> 0 Then
      nbReturn = W32_NSFDbClose(nbHandleDB)   
   End If   
   Erase lstRetour
   Exit Function
End Function