|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionMe and five of my friends are working on a project. We use Visual Source Safe for our code. Last week an unfortunate incident happen with us, just a day before our project release. I found that the code which I checkined in VSS a day before was missing. When I asked my friends about this, we found that, one of them has unknowingly overwritten that piece of code in VSS with the one that he was working on. Then we thought it would be better if in future we can auto-notify each other about our code add/checkin in VSS through some way. Then i read an article in msdn written in VC++ describing how we can intercept VSS events, while we perform any operation on them. Moreover i learnt about Outlook Redemption Library which help us to send emails programmatically bypassing security alert dialog boxes. With the help of this all i develop this simple VSS addin in Visual Basic. After installing (which is as simple as this addin ) this addin, whenever you perform any operation on VSS a email will be send to all your friends. The email will be send when you logout from VSS and will consist of a summary of operations you have performed during that VSS session. The email will be send using the default email account configured in your Outlook. Moreover no security check dialog boxes will be shown during all this operation. PrerequisiteInstallation
pradeep@xyz.com sudeep@pqr.com .... Using the codeVisual source safe provides a method to trap and control it's various events such as 'Event fired after addition of any item.
Sub VSSHandler_AfterAdd(ByVal Item As IVSSItem, ByVal LocalSpec As _
String, ByVal Comment As String)
'Check if any comment is added. then include that.
If Comment <> "" Then
str = str & vbCrLf & "Added: " & _
Item.Parent.Spec & "/" & Item.Name & _
" at : " & Now & ", Commented : " & Comment
Else
str = str & vbCrLf & "Added: " & _
Item.Parent.Spec & "/" & _
Item.Name & " at : " & Now
End If
End Sub
Later on when user exits the VSS , Private Sub Class_Terminate()
On Error GoTo Mailing_Error
'Check if any operation is done. else this string will be empty
If str <> "" Then
Dim SafeItem, oItem
'Creates a mail item to be mailed.
Set Application = CreateObject("Outlook.Application")
Set Namespace = Application.GetNamespace("MAPI")
Namespace.Logon
Set SafeItem = CreateObject("Redemption.SafeMailItem")
Set oItem = Application.CreateItem(0)
SafeItem.Item = oItem
'Reads maillist.txt file for recipient address.
Dim nFileNum As Integer, sNextLine As String
'Get free file number
nFileNum = FreeFile
'Opens the file
Open Left$(VSSHandler.VSSDatabase.SrcSafeIni, _
Len(VSSHandler.VSSDatabase.SrcSafeIni) - 11) _
& "maillist.txt" For Input As nFileNum
Do While Not EOF(nFileNum)
'Read recipient mail id
Line Input #nFileNum, sNextLine
'Add email recipient
SafeItem.Recipients.Add sNextLine
Loop
' Close the file
Close nFileNum
'Resolves email ids
SafeItem.Recipients.ResolveAll
'Create the subject of mail
SafeItem.Subject = "VSS Notification - " & _
VSSHandler.VSSDatabase.SrcSafeIni
'Create the body of email
str = "This is an auto generated message." & vbCrLf & _
"User :" & VSSHandler.VSSDatabase.Username & _
", performed the following operations on VSS Database " _
& vbCrLf & str
SafeItem.Body = str
'Send the email
SafeItem.Send
'Used in case of non Exchange Server mailids e.g. pop-smtp... _
to immidiately deliver mail
Set Utils = CreateObject("Redemption.MAPIUtils")
Utils.DeliverNow
End If
Exit Sub
'Handle any error here.
Mailing_Error:
MsgBox "Error " & Err.Number & " while sending mail" & vbCrLf & Err.Description
End Sub
Related Links:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||