Laden...

Profil von snoopy90

myCSharp.de - Member Mitglied seit
snoopy90
myCSharp.de - Member
22
Themen
94
Beiträge
Dabei seit
27.10.2006
Letzte Aktivität
vor 16 Jahren
Alter
35 Jahre
Beruf
Informatiker Applikationsentwickler in Ausbildung
Herkunft
Schweiz
Interessen
Beachvolley, PC, Informatik, Sport
Erstellt vor 16 Jahren

Sry...ich kann mir nicht gerade vorstellen wie das funktionieren soll..

Kannst du mir nicht evtl gleich den entsprechenden Code hier posten?

Vielen Dank schon im voraus und ihr seid echt eine Hilfe.

Da gibt es ganz andere Foren im Netz...

Erstellt vor 16 Jahren

Vielen Dank für deine Antwort.
Ich werds mal wieder mit der Schleife machen.
Aber bringt die was? Ich meine, anstelle dieser sollte ich ja den DocumentCompleted-Event verwenden. nicht?

Ich werds aber auf alle Fälle nochmal so probieren und Rückmeldung geben ob nun alles klappt.

Achja, das WebBrowser-Control lässt sich leider soviel ich weiss nicht in einem eigenen Thread starten... 😦

Erstellt vor 16 Jahren

Das geht irgendwie auch nicht. Man der kommt nach dem Navigate nicht in den Event rein obwohl er das meiner Ansicht nach müsste.

Ich häng hier gleich mal die ganze Klasse an, dann kann man damit nach belieben rumexperimentieren. Ich stoss da leider mit meinen Programmierkenntnissen an unüberwindbare Hürden...


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace WebScreenGrabber
{
    class Screenshot
    {
        /// <summary>
        /// Macht automatisch einen Screenshot einer Website und gibt diesen als Bitmap zurück.
        /// </summary>
        /// <param name="url">URL der Website</param>
        /// <returns>Screenshot</returns>
        public static Bitmap getScreenshotFromUrl(string url)
        {
            WebBrowser wb = new WebBrowser();
            wb.ScrollBarsEnabled = false;
            wb.ScriptErrorsSuppressed = true;

            Bitmap bitmap = null;
            wb.DocumentCompleted += delegate(object o, WebBrowserDocumentCompletedEventArgs e)
            {
                if (e.Url == wb.Url)
                {
                    wb.Width = 1280;
                    wb.Height = 1024;

                    bitmap = new Bitmap(wb.Width, wb.Height);
                    //Bildschirmauflösung für Screenshot
                    wb.DrawToBitmap(bitmap, new Rectangle(0, 0, wb.Width, wb.Height));
                    wb.Dispose();
                }
            };

            wb.Navigate(url);

            return bitmap;
        }
    }
}


Erstellt vor 16 Jahren

Ja. Dachte ich mir. Jedoch geht mein 1. oben geposteter Code auch nicht. Fehlt da noch was?

Erstellt vor 16 Jahren

Hmm... aber das geht doch nicht. Ich muss doch die Website überhaupt mal aufrufen bevor ich prüfen kann, ob sie geladen wurde.

Also so funktionierts genau so wenig. Oder hab ich da was falsch verstanden?


wb.DocumentCompleted += delegate(object o, WebBrowserDocumentCompletedEventArgs e)
            {
                wb.Navigate(url);
                if (e.Url == wb.Url)
                {
                    wb.Width = 1280;
                    wb.Height = 1024;

                    bitmap = new Bitmap(wb.Width, wb.Height);
                    //Bildschirmauflösung für Screenshot
                    wb.DrawToBitmap(bitmap, new Rectangle(0, 0, wb.Width, wb.Height));
                    wb.Dispose();
                }
            };

Erstellt vor 16 Jahren

Ich habe den oben beschriebenen Code versucht zu verwenden. Ich hab mir dazu eine eigene Funktion programmiert, welche mir ein Bitmap zurückliefert. Bei mir funktioniert es mit folgendem Code jedoch nicht. Es wird immer null als Wert für das Bitmap zurückgeliefert.


public static Bitmap getScreenshotFromUrl(string url)
        {
            WebBrowser wb = new WebBrowser();
            wb.ScrollBarsEnabled = false;
            wb.ScriptErrorsSuppressed = true;
            wb.Navigate(url);

            Bitmap bitmap = null;
            wb.DocumentCompleted += delegate(object o, WebBrowserDocumentCompletedEventArgs e)
            {
                if (e.Url == wb.Url)
                {
                    wb.Width = 1280;
                    wb.Height = 1024;

                    bitmap = new Bitmap(wb.Width, wb.Height);
                    //Bildschirmauflösung für Screenshot
                    wb.DrawToBitmap(bitmap, new Rectangle(0, 0, wb.Width, wb.Height));
                    wb.Dispose();
                }
            };
            return bitmap;
        }

Ich hoffe ihr könnt mir helfen. Irgenwie scheint er gar nie in den Event wb.DocumentCompleted += delegate(object o, WebBrowserDocumentCompletedEventArgs e) reinzukommen...

Erstellt vor 17 Jahren

Ach...war wohl zu dumm oder zu blöde. hab jetzt einfach den Wert der Spalte, welche die Reihenfolge bestimmt geändert 😉 Habs also gelöst. Vielen Dank aber für die kreative Anregung!

Erstellt vor 17 Jahren

PUSH!!!

Konnte mein Problem noch nicht lösen. Weiss denn von euch keiner, wie das möglich wäre?

Erstellt vor 17 Jahren

Mhh...oke...ich versuchs nochmal 😉
Ich möchte eigentlich ganz einfach die Row zwischenspeichern


//Alte row speichern
      DataRow row_old;
      row_old = dataSet_Script.Script.Rows[aktuell - 1];

Sie löschen und nachher wieder hinzufügen
edit: Natürlich will ich sie nur aus dem DataSet löschen!


      //Alte Row wieder hinzufügen
      row_old["sortOrder"] = aktuell;
      dataSet_Script.Script.AddScriptRow((ScriptManager.DataSet_Script.ScriptRow)row_old);

Jedoch scheinen die Daten beim löschen auch in der row_old entfernt worden zu sein. Ich brauche diese jedoch noch!

Erstellt vor 17 Jahren

Beide Funktionen haben das gleiche Problem.
Ich will doch nur, dass mein ItemArray auf der DataRow nicht mitgelöscht wird. Kann ich die nicht irgendwie "abkapseln..."?