Hallo, ich bin gerade dabei ein neues Projekt zu starten und stecke an folgendes fest:
Auto Login auf https Site (Ogame.de)
Nach Programm Start soll er die Website erstmal komplett laden und danach den Login() abfeuern
Er soll die Login Daten aus einer TextBox lesen und den Server aus der ComboBox.
"Main Form"
Nach Programm Start soll er die Website erstmal komplett laden und danach den Login() abfeuern
Er soll die Login Daten aus einer TextBox lesen und den Server aus der ComboBox.
"Main Form"
Code:
Imports Gecko
Imports Gecko.Events
Imports System.IO
Public Class Main
Sub New()
InitializeComponent()
Xpcom.Initialize(Environment.CurrentDirectory + "/xulrunner")
End Sub
Dim UC As New UserConfig
#Region "GeckoWebBrowser"
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GeckoWebBrowser1.Navigate("https://de.ogame.gameforge.com")
GeckoWebBrowser1.Navigate("javascript:void(document.getElementsByTagName('iframe')[0].setAttribute('src', 'about:blank'))")
End Sub
#End Region
#Region "Login"
Public Sub Login()
GeckoWebBrowser1.Document.GetElementById("usernameLogin").SetAttribute("value", Settings.FlatTextBox1.Text)
GeckoWebBrowser1.Document.GetElementById("passwordLogin").SetAttribute("value", Settings.FlatTextBox2.Text)
SelectServer()
End Sub
Public Sub SelectServer()
Dim dropdown = GeckoWebBrowser1.Document.GetElementsByTagName("option")
dropdown(Settings.FlatComboBox1.TabIndex).SetAttribute("selected", "selected")
End Sub
#End Region
Private Sub FlatButton1_Click(sender As Object, e As EventArgs) Handles FlatButton1.Click
Settings.Show()
End Sub
End Class
ABER
wenn ich jetzt die Login() sub in Main_Load schreibe, gibt er sofort folgende Fehlermeldung:
Quote:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
Mit Verweis auf die Public Sub Login()
Soweit mir bekannt ist und ich nicht falsch liege, fehlt mir ein Addhandler und DocumentCompleted ?
Ich hatte das vor 2 Jahren mal zum laufen gebracht aber bin zulange raus und mir fällt einfach nicht ein was und wo der fehler ist
UserConfig wo der Code zum Speichern der Daten drin steht, sieht wie folgt aus:
Code:
Imports Gecko
Imports Skybound.Gecko
Imports System.IO
Public Class UserConfig
Dim Gecko As New Gecko.GeckoWebBrowser
Dim sPath As String = ".\Resources"
Dim filepath As String = ".\Resources\Config\cfg.ini"
#Region "Create Folder & File"
Public Sub CreateFile()
If Not System.IO.File.Exists(filepath) Then
System.IO.File.Create(filepath).Dispose()
End If
End Sub
Public Sub CreateFolder()
If (My.Computer.FileSystem.DirectoryExists(sPath) = False) Then
My.Computer.FileSystem.CreateDirectory(sPath + "/Config")
Else
'Something else happens, because the folder exists
End If
End Sub
#End Region
#Region "Script Save and Load"
'Only important for Coder
Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32
Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32
Public Function INI_ReadValueFromFile(ByVal strSection As String, ByVal strKey As String, ByVal strDefault As String, ByVal strFile As String) As String
Dim strTemp As String = Space(1024), lLength As Integer
lLength = GetPrivateProfileString(strSection, strKey, strDefault, strTemp, strTemp.Length, strFile)
Return (strTemp.Substring(0, lLength))
End Function
Public Function INI_WriteValueToFile(ByVal strSection As String, ByVal strKey As String, ByVal strValue As String, ByVal strFile As String) As Boolean
Return (Not (WritePrivateProfileString(strSection, strKey, strValue, strFile) = 0))
End Function
#Region "Save"
Public Sub SaveUserSettings()
INI_WriteValueToFile("User Data", "AccountName", Settings.FlatTextBox1.Text, ".\Resources\Config\cfg.ini")
INI_WriteValueToFile("User Data", "AccountPasswort", Settings.FlatTextBox2.Text, ".\Resources\Config\cfg.ini")
INI_WriteValueToFile("User Data", "ServerID", Settings.FlatComboBox1.SelectedItem, ".\Resources\Config\cfg.ini")
End Sub
#End Region
#Region "Load"
Public Sub LoadUserSettings()
Settings.FlatTextBox1.Text = INI_ReadValueFromFile("User Data", "AccountName", "", ".\Resources\Config\cfg.ini")
Settings.FlatTextBox2.Text = INI_ReadValueFromFile("User Data", "AccountPasswort", "", ".\Resources\Config\cfg.ini")
Settings.FlatComboBox1.SelectedItem = INI_ReadValueFromFile("User Data", "ServerID", "", ".\Resources\Config\cfg.ini")
End Sub
#End Region
#End Region
End Class
Thanks alot buddys






