Posted: Tue Nov 18, 2008 4:21 pm
				
				Hello SROD
I just GO to know your great works for the OLE
 
It's thanks to KIFFI who help me for a question for LOTUS
He create for me a beginning of code to pilot LOTUS.
In Fact i have just added 2 lines
 
I want to translate this VB code who works fine in my job
Kiffi write to me this:
But the line that i added not works obviously  
			I just GO to know your great works for the OLE
It's thanks to KIFFI who help me for a question for LOTUS
He create for me a beginning of code to pilot LOTUS.
In Fact i have just added 2 lines
I want to translate this VB code who works fine in my job
Code: Select all
Option Explicit
'---------- API -----------
'pour faire passer au premier plan
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'pour ouvrir la fenetre
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'pour verifier si la Lotus est ouvert
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
Dim sSrvr As String  'the mail server for the current user
Dim MailDbName As String 'THe current users notes mail database name
Dim UserName As String 'The current users notes name
Dim retval As Variant  'Holds return value for functions handle
'---------------- fonction ouverture de session Notes -----------
Function CreateNotesSession() As Boolean
    Const notesclass$ = "NOTES"
    Const SW_SHOWMAXIMIZED = 3 'plein ecran
    Const SW_SHOWMMINIZED = 2 'reduire
    Const SW_SHOWWINDOW = 1 'fenetre
    Const SW_SHOW = 5
    
    Dim Lotus_Session As Object
    Dim rc&
    Dim lotusWindow&
    
    lotusWindow = FindWindow(notesclass, vbNullString)
    If lotusWindow Then
    Set Lotus_Session = CreateObject("Notes.NotesSession")
    sSrvr = Lotus_Session.GETENVIRONMENTSTRING("MailServer", True)
    MailDbName = Lotus_Session.GETENVIRONMENTSTRING("MailFile", True)
    UserName = Lotus_Session.UserName
    
    DoEvents
    'Ouverture de Lotus Notes
    retval = Shell("C:\Program Files\Notes\notes.exe =h:\notes\notes.ini", vbMaximizedFocus)
    
    'verifier que Lotus est bien ouvert (recupere le handle)
    lotusWindow = FindWindow(notesclass, vbNullString)
    If lotusWindow <> 0 Then
        rc = ShowWindow(lotusWindow, SW_SHOW)
        rc = SetForegroundWindow(lotusWindow)
        CreateNotesSession = True
    Else
         CreateNotesSession = False
    End If
   Else
    MsgBox "Votre Lotus Notes est fermé !"
    CreateNotesSession = False
End If
End Function
Sub CreateMailandAttachFileAdr(Optional IsSubject As String = "", Optional SendToAdr As String, Optional CCToAdr As String, Optional BCCToAdr As String = "", Optional Attach1 As String = "", Optional Attach2 As String = "", Optional body As String = "")
Const EMBED_ATTACHMENT As Integer = 1454
Const EMBED_OBJECT As Integer = 1453
Const EMBED_OBJECTLINK As Integer = 1452
Dim s As Object ' use back end classes to obtain mail database name
Dim db As Object '
Dim doc As Object ' front end document
Dim beDoc As Object ' back end document
Dim workspace As Object ' use front end classes to display to user
Dim bodypart As Object '
Dim bodyAtt As Object '
Dim lbsession As Boolean
lbsession = CreateNotesSession
If Not lbsession Then End
    'cree la session Lotus Notes
    Set s = CreateObject("Notes.Notessession")
    'se connecte a sa database
    Set db = s.getDatabase(sSrvr, MailDbName)
    If db.ISOPEN = True Then
        'database deja ouvert
    Else
        Call db.Openmail
    End If
    'cree un document memo
    Set beDoc = db.CreateDocument
    beDoc.Form = "Memo"
    
    'construction du mail
    Set bodypart = beDoc.CREATERICHTEXTITEM("Body")
    'beDoc.From = "Moi" 'inutile
    beDoc.SendTo = SendToAdr
    beDoc.CopyTo = CCToAdr
    beDoc.BlindCopyTo = BCCToAdr
    beDoc.Subject = IsSubject
    '-----------------------------------------
    'Remarque si destinataire multiple il suffie de mettre un tableau d'e-mail dans SendTo (CopyTo,BlindCopyTo)
    'exemple :
    'Dim recip(25) as variant
    'recip(0) = "emailaddress1"
    'recip(1) = "emailaddress2" e.t.c
    'beDoc.sendto = recip
    '----------------------------------------
    ' documents joint 1
    If Len(Attach1) > 0 Then
        If Len(Dir(Attach1)) > 0 Then
           Set bodyAtt = bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach1, Dir(Attach1))
        End If
    End If
    ' documents joint 2
    If Len(Attach2) > 0 Then
        If Len(Dir(Attach2)) > 0 Then
            Call bodyAtt.EmbedObject(EMBED_ATTACHMENT, "", Attach2, Dir(Attach2))
        End If
    End If
        
    'Affichage du mail dans Lotus Notes
    'Set workspace = CreateObject("Notes.NotesUIWorkspace")
   ' Call workspace.EditDocument(True, beDoc).FieldSetText("Body", body)
    
    'Envoie le mail
    beDoc.PostedDate = Now()
    beDoc.SEND 0, SendToAdr
    
    Set s = Nothing
End Sub
Private Sub envoyer_Click()
    CreateMailandAttachFileAdr Msujet.Text, Mto.Text, Mcc.Text, Mbcc.Text, MdocJoint1.Text, MdocJoint2.Text, Mbody.Text
End Sub
Code: Select all
IncludeFile "COMate.pbi"
Procedure SendNotesMail(Subject.s, Attachment.s, BodyText.s, SendTo.s, cc.s = "", BCC.s = "", SaveIt.l = #False) 
  
  ; Set up the objects required for Automation into lotus notes 
  Protected Maildb.COMateObject ; The mail database 
  Protected UserName.s ;The current users notes name 
  Protected MailDbName.s ;THe current users notes mail database name 
  Protected MailDoc.COMateObject ;The mail document itself 
  Protected AttachME.COMateObject ;The attachment richtextfile object 
  Protected Session.COMateObject ;The notes session 
  Protected EmbedObj.COMateObject ;The embedded object (Attachment) 
  Protected intAttach.l 
  Protected intAttachments.l 
  Protected strAttachmentName.s 
  
  ; Start a session to notes 
  Session = COMate_CreateObject("Notes.NotesSession") 
  
  ; Get the sessions username and then calculate the mail file name 
  ; You may or may not need this as for MailDBname with some systems you 
  ; can pass an empty string 
  UserName = Session\GetStringProperty("UserName") 
  MailDbName = Left(UserName, 1) + Right(UserName, (Len(UserName) - FindString(UserName, " ", 1))) + ".nsf" 
  
  ; Open the mail database in notes 
  Maildb =  Session\GetObjectProperty("GetDatabase('', '" + MailDbName + "')") 
  
  IsOpen = Maildb\GetIntegerProperty("IsOpen") 
  
  If IsOpen 
    ; Already open for mail 
  Else 
    Maildb\Invoke("OPENMAIL") 
  EndIf 
  
  ; Set up the new mail document 
  MailDoc = Maildb\GetObjectProperty("CREATEDOCUMENT") 
  
  MailDoc\SetProperty("Form = 'Memo'") 
  MailDoc\SetProperty("SendTo = '" + SendTo + "'") 
  MailDoc\SetProperty("CopyTo = '" + cc + "'") 
  MailDoc\SetProperty("BlindCopyTo = '" + BCC + "'") 
  MailDoc\SetProperty("Subject = '" + Subject + "'") 
  MailDoc\SetProperty("Body = '" + BodyText + "'") 
  MailDoc\SetProperty("SAVEMESSAGEONSEND = '" + Str(SaveIt) + "'") 
  ;intAttachments = dhCountTokens(Attachment, ",") ; --> dhCountTokens??? 
  
  MailDoc\SetProperty("PostedDate = " + FormatDate("%dd/%mm/%yyyy", Date()) + " " + FormatDate("%hh:%ii:%ss", Date())) ; Added by Kcc
  MailDoc\SetProperty("SEND 0," + SendTo) ; Added by Kcc
       
EndProcedure
SendNotesMail("Essai", "", "Coucou", "Adress@Free.fr", "", "", #False)