Avatar billede segato Nybegynder
01. april 2006 - 10:53 Der er 8 kommentarer og
1 løsning

WebBrowser uden vindue.

Hvis jeg i en klasse i .NET 2.0 new'er en webbrowser control, og herefter bruger den får jeg et crash der siger "do not support windowless activex controls". Jeg skal bruge funktionaliteten fra kontrollen men ønsker ikke at vise den. Findes der en løsning?
Avatar billede nielle Nybegynder
01. april 2006 - 11:40 #1
Dette fungere udemærket hos mig:

        private void button1_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.WebBrowser webBrowser1 = new System.Windows.Forms.WebBrowser();
            webBrowser1.Url = new Uri("http://www.eksperten.dk/");

            MessageBox.Show("Vent med at aflæse DocumentText til siden er downloadet.");

            this.textBox1.Text = webBrowser1.DocumentText;
        }
Avatar billede segato Nybegynder
01. april 2006 - 11:43 #2
Ja jeg har glemt at fortælle det kører det i en tråd:)
Avatar billede segato Nybegynder
01. april 2006 - 11:47 #3
Jeg prøver lige at uddybe det lidt. Jeg har en klasse som holder en webbrowser globalt i klassen. Og så en funktion på samme klasse som laver en navigate. Denne funktion kører jeg så udefra i sin egen tråd. Dette crasher. Hvis jeg instantiere webbrowseren hver gang i funktionen vil det fungere. Men hvis du så kigger i hukommelsen vil man se en gigantisk memoryleak.
Avatar billede segato Nybegynder
01. april 2006 - 11:57 #4
Her er kode der viser prop:

sing System;
using System.Threading;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        WebBrowser b = new WebBrowser();
        private void button1_Click(object sender, EventArgs e)
        {
            Thread MyThread = new Thread(new ThreadStart(ThreadRun));
            //MyThread.SetApartmentState(ApartmentState.STA);
            MyThread.Start();
           
        }

        void ThreadRun()
        {
            b.Navigate("www.google.com");
        }
    }
}

Prøv så at ind kommenter den linie der er udkommenteret. Så virker det kun første gang.
Avatar billede driis Nybegynder
01. april 2006 - 14:53 #5
Nu ved jeg ikke hvad du skal bruge WebBrowser komponenten til; men den er netop lavet til at blive brugt som en del af UI, og jeg kunne sagtens forestille mig at det giver problemer, at den ikke bliver placeret på en form.

Alt efter hvad du skal bruge det til, var det måske mere oplagt at kigge på nogle mere generelle http, f.eks. HttpWebRequest.
Avatar billede segato Nybegynder
01. april 2006 - 16:29 #6
Min applikation indeholder allerede httpwebrequests. Men de har desværre deres begrænsinger. Vente sider f.eks. egner de sig ik specielt godt til. Man kan faktisk uden Browser kontrollen få et html dokument via en funktion der hedder CreateDocumentFromUrl så slipper man for selve browser kontrollen. Problemmet med den er bare jeg ikke ved hvordan man slår popup og javascriptfejl osv fra.

http://www.eksperten.dk/spm/699047
Avatar billede siz23 Nybegynder
04. april 2006 - 10:54 #7
har du prøvet det her
namespace WebApp
{
    public partial class Form1 : Form
    {
        WebBrowser b = new WebBrowser();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            b.Parent = this;  //<---------------------------
            b.Visible = false; //<---------------------------
            Thread MyThread = new Thread(new ThreadStart(ThreadRun));
            //MyThread.SetApartmentState(ApartmentState.STA);
            MyThread.Start();
        }
        void ThreadRun()
        {
            b.Navigate("www.google.com");
        }
    }
}
Avatar billede segato Nybegynder
04. april 2006 - 13:10 #8
Den har jeg prøvet med det er en rigtig skidt ide da det giver e nenorm memory leak. Men jeg fik løsningen af microsoft selv. Glem webbrowser og brug i stedet ShDocw.InternetExplorer. Den kan det samme men kræver ikke et vindue.
Avatar billede segato Nybegynder
04. april 2006 - 13:10 #9
Tråd lukket takker for interessen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester