Это можно сделать, запустив адрес страницы sharepoint в Internet Explorer, и с помощью некоторого API-интерфейса pinvoke отправьте ключи или settext в поле входа в систему.
Я распространил эту настройку для приложения форм vb.net. Это работает на моем XP. Я еще не пробовал это в Windows 7, но я уверен, что для работы там нужны некоторые настройки.
Здесь используется библиотека WindowScraper, отсюда: http://www.programmersheaven.com/download/56171/download.aspx
В эту библиотеку встроена куча winapi и pinvoke. Если ваша сборка этого не допустит (возможно, потому что вы используете VS 2010), говоря, что у нее нет строгого имени, используйте SharpDevelop и пересоберите решение после добавления собственного сертификата.
Затем поместите dll в каталог вашего приложения и добавьте ссылку.
Затем добавьте импорт:
Imports WindowScrape
Imports WindowScrape.Constants
Imports WindowScrape.Types
Наконец, код (поместите все это в модуль или класс):
Частная собственность PortalAddress As String = "http://myportal@somewhere.com"
Частная собственность logintitle As String = "Подключиться к myportal@somewhere.com"
Public Sub openPortal ()
If My.Computer.Info.OSFullName = "Microsoft Windows XP Professional" then
LoginToPortalXP()
Else
msgbox("Someday, we will be able to log you in automatically" & vbCr & "But it isn't ready yet.")
End If
End Sub
Private Function IsWindowReady(Optional ByVal timeout As integer = 10000)
Dim isready As Boolean = false
Dim timer As Integer = 1000
Do Until Not loginBox is nothing or timer = timeout
Thread.Sleep(1000)
loginbox = HwndObject.GetWindowByTitle(logintitle)
timer = timer + 1000
loop
If Not loginbox is nothing then isready = true
Return isready
End Function
Sub LoginToPortalXP()
Try
Dim TheBrowser As Object = CreateObject("InternetExplorer.Application")
TheBrowser.Visible = True
TheBrowser.Navigate(PortalAddress)
If Not IsWindowReady then debug.print("failed") : Exit sub
Dim sys As HwndObject = loginbox.GetChildren(1) 'SysCredential
sys.GetChildren(1).Text = "myUserName" 'username box
Thread.Sleep(500)
sys.GetChildren(4).Text = "myPassword" 'password box
Thread.Sleep(500)
loginbox.GetChildren(2).Click() 'push the okay button
Catch ex As Exception
msgbox("ERROR AutoLogging into Portal: " & vbcr & & ex.Message)
Finally
End Try
End Sub
Я добавил таймер на всякий случай, если это займет больше времени. Конечно, вы можете изменить время ожидания.