When you are supplied all the dlls that an application uses and these are all COM object it is possible to discover things about the application that you would otherwise not normally be able to do. Some people may call this “hacking” but others like myself would prefer the less confrontational description of “investigating”
In any event one area of the API that is available to all is something that is so well hidden and yet potentially is very powerful to exploit. The
SessionContext object very discreetly has the property
Seeing something like this I could not resist investigating. Blackbaud do not give too much away here. The return object is of type Object but like most forms the basics can be determined (and changed) The code below is a very simple example of this.
Private Sub NewSkin() Dim objForm As Object Dim objControl As Object Set objForm = RE7.Application.SessionContext.MainForm objForm.Caption = "Raiser's Edge brought to you by XXX Foundation" objForm.Left = 0 objForm.Top = 0 End Sub
This is very simple and self explanatory. You could try to put this in some VBA code so that when the application opens the name changes and the window is moved to the top left of the screen (unfortunately it does not work but it does work if you run this as a macro). This is not very exciting stuff but there is certainly room for improvement here.
What is interesting is that the main window has a hidden text field with the current page on it. In the code above add the following:
For Each objControl In objForm .Controls If objControl.Name = "Text1" Then objControl.Visible = True objControl.Left = 5000 objControl.Width = 5000 End If Next objControl1
Using this you can enter your own pages just as you would a regular browser.
If you investigate further you will see that there are a few other controls including a menu control and a BBElastic control. If you make this visible you will be able to see some slightly less than useful information (no doubt used for testing purposes)
I shall leave it up to you to investigate more…