Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 08:59

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[VB 2008] "System.NullReferenceException wurde nicht behandelt"

Discussion on [VB 2008] "System.NullReferenceException wurde nicht behandelt" within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
N.E.O.'s Avatar
 
elite*gold: 45
Join Date: Nov 2008
Posts: 4,308
Received Thanks: 991
Exclamation [VB 2008] "System.NullReferenceException wurde nicht behandelt"

Quote:
System.NullReferenceException wurde nicht behandelt.
Message="Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Und der Fehler passiert in der Zeile:

HTML Code:
Sub _Anmelden()
WebBrowser1.Document.GetElementById("user").InnerText = TextBox2.Text
..........
..........
..........
..........
End Sub
Was kann da falsch sein?
N.E.O. is offline  
Old 12/29/2009, 03:19   #2


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Sieht aus als wenn er kein Element mit der ID "user" im Dokument finden kann.
Sicher, dass es das Textfeld mit der ID "user" auf der Seite gibt ?
Überprüf das nochmal.

Achja und poste doch mal die komplette Fehlermeldung.
Cholik is offline  
Thanks
1 User
Old 12/29/2009, 12:51   #3
 
N.E.O.'s Avatar
 
elite*gold: 45
Join Date: Nov 2008
Posts: 4,308
Received Thanks: 991
Quote:
Originally Posted by Walter Sobchak View Post
Sieht aus als wenn er kein Element mit der ID "user" im Dokument finden kann.
Sicher, dass es das Textfeld mit der ID "user" auf der Seite gibt ?
Überprüf das nochmal.

Achja und poste doch mal die komplette Fehlermeldung.
ID ist richtig =\

Quote:
System.NullReferenceException wurde nicht behandelt.
Message="Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Source="Unnamed Tool v1"
StackTrace:
bei Unnamed_Tool_v1.Form1._Anmelden() in C:\Users\Philip\Documents\Visual Studio 2008\Projects\Unnamed Tool v1\Unnamed Tool v1\Form1.vb:Zeile 25.
bei Unnamed_Tool_v1.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\Philip\Documents\Visual Studio 2008\Projects\Unnamed Tool v1\Unnamed Tool v1\Form1.vb:Zeile 7.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
bei Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.OnRun()
bei Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.DoApplicationModel()
bei Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.Run(String[] commandLine)
bei Unnamed_Tool_v1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
bei Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly()
bei System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
InnerException:

€: Es lag glaube ich daran, das er einen Cookie so gespeichert hatte, das ich noch eingeloggt bin.. Daher konnte er diese Inputs nicht mehr lesen.
Danke, du hast mich auf den richtigen Weg gelenkt


PS: Noch ne Frage, mit welchem Befehl kann ich "Checkboxen" im Webbrowser "unchecken"?
Quote:
WebBrowser1.Document.GetElementById("checkbox_agb" ).SetAttribute("checked", "unchecked")
So geht es nicht
N.E.O. is offline  
Old 12/29/2009, 13:07   #4


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Code:
[...].SetAttribute("checked", "")
Sollte funktionieren
Cholik is offline  
Thanks
1 User
Old 12/29/2009, 13:30   #5
 
N.E.O.'s Avatar
 
elite*gold: 45
Join Date: Nov 2008
Posts: 4,308
Received Thanks: 991
Quote:
Originally Posted by Walter Sobchak View Post
Code:
[...].SetAttribute("checked", "")
Sollte funktionieren
Danke, hat auch geklappt

Und jetzt noch ne Frage^^:

Nach der Anmeldung will ich mir vom Script sagen lassen, ob sie erfolgreich war..
Das Problem ist nur, wenn ich die Funktion, ob die Anmeldung erfolgreich, war aufrufe wird die Anmeldung irgendwie übersprungen..
Wüsstest du da was?

PHP Code:
Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
            Application
.DoEvents()
        
Loop 
Habe ich eingebaut, hilft aber nicht =\
N.E.O. is offline  
Old 12/29/2009, 14:02   #6


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Schau dir mal die Events an die WebBrowser1 alle werfen kann. Da ist bestimmt was für dich dabei.





Hier wird auch nochmal drauf hingewiesen:
Cholik is offline  
Old 12/29/2009, 14:23   #7
 
N.E.O.'s Avatar
 
elite*gold: 45
Join Date: Nov 2008
Posts: 4,308
Received Thanks: 991


Das hat mich etwas weiter gebracht nur das Problem ist, dass wenn ich die Funktion von da benutze bei jedem fertigen Seitenladen die Funktion anspringen würde =\
Gibt es da eine Alternative?
N.E.O. is offline  
Old 12/29/2009, 14:25   #8


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Mh du könntest ja zb ne Variable deklarieren, die den Status deines Scripts angibt. Sobald du zb die Loginfunktion ausführst setzt diese Funktion deine Statusvariable zb auf "1" oder auf "login" und bei dem WebBrowser Event kannste dann ja prüfen, welchen Status die Statusvariable hat und so weisst du wie du zu reagieren hast.

Also so würd ichs nun machen.
Cholik is offline  
Thanks
1 User
Old 12/30/2009, 02:04   #9
 
N.E.O.'s Avatar
 
elite*gold: 45
Join Date: Nov 2008
Posts: 4,308
Received Thanks: 991
Danke

Eine Frage habe ich noch:

Wenn ich über den WebBrowser einen Text an eine unbekannte ElementID schicken will, wie mache ich das?


Ansatz:
Quote:
For Each myHtmlElement In WebBrowser1.Document.All
If myHtmlElement.Name = "textbox" Then
myHtmlElement.innertext = "text"
End If
Next
N.E.O. is offline  
Old 12/30/2009, 13:48   #10


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Quote:
Originally Posted by N.E.O. View Post
Danke

Eine Frage habe ich noch:

Wenn ich über den WebBrowser einen Text an eine unbekannte ElementID schicken will, wie mache ich das?


Ansatz:
Wie meinst du das ?
Du musst schon iwelche Infos über das Element haben, welches du ansteuern willst.



Nehmen wir die epvp Hauptseite als Beispiel.
Nach HtmlElement.Name kannst du nur suchen wenn die Variable im HTML Tag auch genutzt wird bzw ein Wert für sie vergeben wurde. Wie z.B. hier :

Code:
<form id="searchform" action="http://www.elitepvpers.com/search/" name="[B][COLOR="Orange"]searchform[/COLOR][/B]" method="get">
Hierbei würdest du bei HtmlElement.Name eben den Wert "searchform" finden.


Nehmen wir nun als Beispiel die Textbox auf der Hauptseite von epvp wo der Benutzername eingetragen wird :

Code:
<input type="text" onfocus="if (this.value == 'Benutzername') this.value = '';" value="Benutzername" accesskey="u" size="18" id="navbar_username" name="[COLOR="#ffa500"][B]vb_login_username[/B][/COLOR]" style="font-size: 11px;"/>
Hier hast du als Elementname den Wert vb_login_username.
Das heisst du könntest nun mit folgendem einen Wert in die Textbox schreiben ohne das du die ElementID kennst.

Code:
        Dim myElement As HtmlElement

        For Each myElement In WebBrowser1.Document.All
            If myElement.Name.Equals("vb_login_username") Then
                myElement.InnerText = "MyUsername"
            End If
        Next

Wobei das schon wieder hirnrissig ist, da du ja den Elementnamen kennst.
Allein wenn du den schon zu 100% kennst kannste auch gleich folgendes machen :

Code:
WebBrowser1.Document.All.GetElementsByName("vb_login_username")(0).InnerText = "Ohnoes"
Wobei GetElementsByName dir ein Array zurückliefert mit allen Elementen deren Name "vb_login_username" ist. Aller Wahrscheinlichkeit nach gibts davon nur eins daher steuere ich direkt (0) an.


Eine weitere Möglichkeit wäre, dass du einfach darauf vertraust, dass der Ersteller der Seite (oder des Forums oder ka was du da ansteuerst im Browser) die Elemente auch wirklich benannt hat. Wenn du zb nun weisst du willst den Usernamen irgendwo eintragen aber kennst nicht die genaue Zusammensetzung der ElementID bzw des Elementnamen. Hierbei kannst du folgendes machen :

Code:
        Dim myElement As HtmlElement

        For Each myElement In WebBrowser1.Document.All
            If myElement.Name.Contains("username") And myElement.TagName.ToLower.Equals("input") And myElement.GetAttribute("type").ToLower.Equals("text") Then
                myElement.InnerText = "MyUsername"
            End If
        Next
Hierbei werden halt alle Elemente des Dokuments durchsucht und es wird geprüft ob in irgend einem der HTML Tags, das Attribut name den String "username" enthält. Weiterhin wird geprüft ob es sich dabei um ein "input"-Element handelt, also ein Eingabefeld. Darüberhinaus muss noch überprüft werden ob es sich um ein Textfeld handelt. Genau dies macht myElement.GetAttribute("type").
Cholik is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Warum sind bei Warrock Wörter wie "geh" oder "nicht" zensiert?
05/01/2010 - WarRock - 10 Replies
und z. B. Beleidigungen oder rassistische Aüßerungen nicht ?



All times are GMT +1. The time now is 08:59.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.