SRC aller Frames in Webbrowsercontrol

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Siestaeg.

    SRC aller Frames in Webbrowsercontrol

    Hi Leute,

    hab in ner Form ein Webbrowser Steuerelement plaziert. Diese Art von simpelsten Browser nutzt mein Sohn.
    Jetzt möchte alle Links/Src's mitschneiden, welche er aufruft. Dafür habe ich mir folgenden Code gebastelt (ok das eine oder andere ist abgekupfert). Leider mit dem Acessdenied Error. Kann mir jemand einen Tip geben ?

    VB.NET-Quellcode

    1. WebBrowser1.Navigate(http://www.friv.com)
    2. Do While WebBrowser1.IsBusy
    3. Application.DoEvents()
    4. Loop
    5. Dim Frames As HtmlWindowCollection = WebBrowser1.Document.Window.Frames
    6. For Each Frame As HtmlWindow In Frames
    7. With WebBrowser1.Document.Window.Frames(Frame.Name)
    8. TextBox1.AppendText(.Url.ToString)
    9. End With
    10. Next
    11. 'FEHLER'Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))


    Auf der Haupseite geht das ja noch einigermaßen, aber so bald man ein Spiel geladen hat, ...

    Dank euch schon jetzt Leute



    P.S. möchte hier nicht Werbung für FRIV machen, is aber die Seite wo er meistens spielt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Siestaeg“ ()

    Hallo Kinsi,

    ich weiss das mit dem Completed, oder Navigated Event. Leider hilft mir das nicht weiter, der Acess bleibt "denied".
    Noch dazu, meiner kleiner ist 7. Und die Erfassung ist rein statistisch, ich verhindere in dem kleinen Webbrowsertool das verlassen der HauptDomain.

    Im Übrigen Firefox und IE zeigen diese Daten auch an
    Wieso so kompliziert? Funzt so bei mir:

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
    2. If e.Url.ToString.Contains("www.facebook.com") Then
    3. e.Cancel = True
    4. MsgBox("Kein Zugriff")
    5. End If
    6. End Sub


    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Nich ganz, ich möchte nur protokollieren (den Rest hab ich schon).

    Das Protokollieren der Webbrowser URL ist ja kein Problem, nur bei den Frames gibt immer den ACESSDENIED.
    Wenn ich in die Eigenschaften (im Debugger) des Frames reinschaue, steht das fast bei jeder Eigenschaft.



    Dank

    Siestaeg schrieb:

    Noch dazu, meiner kleiner ist 7. Und die Erfassung ist rein statistisch, ich verhindere in dem kleinen Webbrowsertool das verlassen der HauptDomain.
    [OffTopic]
    Die beste Methode, jemanden zu einem vernünftigen Internetgebrauch zu bringen, ist Erziehung:
    - Freier Zugriff auf den Browser.
    - Einmal pro Woche wird die Browser-History kontrolliert.
    - Ist die History gelöscht, wird der PC für zwei Wochen weggesperrt.

    Das funktioniert auch bei Siebenjährigen.
    Alle technischen Maßnahmen sind nur zweite Wahl.
    [/OffTopic]

    Ich könnte mir vorstellen, dass die "Access denied"-Meldungen davon kommen, dass du deinem Kleinen einen stark restriktiven Account zur Verfügung stellst.
    Wie sieht es denn aus, wenn der Code mit Admin-Rechten ausgeführt wird?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo,

    ich weiß, dass Erziehung die Beste Methode ist und er darf 2x die Woche 20min spielen. Trotzdem möchte ich sehen welche Spiele er am häufigsten spielt.

    Zum Thema einen freier Zugriff auf den Browser, er ist noch nicht so weit einen Link in die Adressleiste einzugeben (mit gerademal 7 fehlt es zumindest bei Ihm noch an Rechtschreibung, zumal er zurückgestuft wurde und erst heuer in die Schule kommt). Natürlich gibt es andere Möglichkeiten (Links auf dem Desktop, Favoriten,...) um ihn trotzdem spielen zu lassen, aber dann wärs ja für mich keine Herausforderung mehr.

    Die ACESSDENIED Fehlermeldung bekomme ich ja im Debugmodus von Visual Studio und dieses führe ich natürlich mit meinem Account als Administrator aus.

    Danke
    Hab folgenden Code auf windows-tech.info gefunden,
    Leider bin ich noch nicht so weit, so etwas ins VB zu übersetzen, bzw zu verstehen was da passiert.

    VB.NET-Quellcode

    1. public partial class Form16 : Form
    2. {
    3. public Form16()
    4. {
    5. InitializeComponent();
    6. }
    7. private void Form16_Load(object sender, EventArgs e)
    8. {
    9. this.webBrowser1.Navigate(@"c:\test\1.htm");
    10. }
    11. [ComImport, Guid("0000011B-0000-0000-C000-000000000046"),
    12. InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    13. public interface IOleContainer
    14. {
    15. void ParseDisplayName(
    16. [In, MarshalAs(UnmanagedType.Interface)] object pbc,
    17. [In, MarshalAs(UnmanagedType.BStr)] string pszDisplayName,
    18. [Out, MarshalAs(UnmanagedType.LPArray)] int[] pchEaten,
    19. [Out, MarshalAs(UnmanagedType.LPArray)] object[] ppmkOut);
    20. void EnumObjects([In, MarshalAs(UnmanagedType.U4)] int grfFlags,
    21. [Out, MarshalAs(UnmanagedType.IUnknown)] out object ppenum);
    22. void LockContainer([In, MarshalAs(UnmanagedType.I4)] int fLock);
    23. }
    24. private void button1_Click(object sender, EventArgs e)
    25. {
    26. mshtml.IHTMLDocument2 doc = this.webBrowser1.Document.DomDocument
    27. as mshtml.IHTMLDocument2;
    28. IOleContainer container = doc as IOleContainer;
    29. if (container != null)
    30. {
    31. object Unknown;
    32. uint fetched;
    33. object enumerator;
    34. container.EnumObjects(1, out enumerator);
    35. mshtml.IEnumUnknown eu = enumerator as mshtml.IEnumUnknown;
    36. if (eu != null)
    37. {
    38. eu.RemoteNext(1, out Unknown, out fetched);
    39. if (Unknown != null)
    40. {
    41. SHDocVw.IWebBrowser2 wb2 = Unknown as SHDocVw.IWebBrowser2;
    42. if (wb2 != null)
    43. {
    44. mshtml.IHTMLDocument2 doc2 = wb2.Document as mshtml.IHTMLDocument2;
    45. this.richTextBox1.AppendText(doc2.url.ToString());
    46. }
    47. }
    48. }
    49. }
    50. }
    51. }