![]() |
VB ASP.NET Windows.Forms.WebBrowser funktioniert nicht richtig?
hi @ll!
habe unter ASP.NET mit VB folgendes Problem: Code:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" bin schon am verzweifeln!! danke!! |
Hab zwar schon länger nimmer ASP.NET gecoded, aber laut MSDN machst du nichts falsches.
Was mich allerdings ein bisserl wundert ist: Was macht ein Webbrower aus: System.Windows.Forms auf einer ASP.NET Seite? |
hallo!
ich will über diese ASP.NET seite andere webseiten aufbereiten und wiedergeben (z.b. snapshots,...). und mit System.Windows.Forms.WebBrowser kann man ziemlich einfach einen snapshot machen... aber du weißt auch nicht, warum das bei mir auf einmal nicht klappt - sicherheitseinstellungen eventuell? |
Zitat:
Aber Sicherheitseinstellungen könnte ich mir sehr gut vorstellen. Stichwort Internet Zonen beim Internet Explorer. Evt. gibts da was ähnliches bei .NET was man noch konfigurieren muss. Du kannst noch probieren Navigate mit einer URI aufzurufen. Sollte zwar zum normalen String keinen Unterschied machen, aber man kanns ja einfach ausprobieren. |
Zitat:
werde dann am MO das mit den sicherheitseinstellungen untersuchen... |
Hab vorhin gerade ein wenig in die Richtung mit Google gesucht und bin auf das hier gestoßen:
Zitat:
|
na toll :(
jedenfalls vielen dank... dann werde ich einen workaround über ein externes programm machen oder so etwas ähnliches - jeden falls sehr mühsam. was ich jedoch nicht verstehe ist, dass es als html-file angezeigt wird... seltsam - hoffentlich bringt der montag mehr aufschluss. |
hi,
was möchtest du denn genau machen? nur zum laden einer http seite brauchst du kein browser control - eher fürs rendern - und das geht ja, nachdem deine appl. im browser läuft sowieso. ev. ist das interessant für dich: http://www.csharp-station.com/HowTo/HttpWebFetch.aspx ...finds aber auch blöd, das sowas in MSDN nicht gleich explizit angeführt wird. fg hannes |
nein, leider...
in weiterer folge benötige ich auch das gerenderte html für einen webseitensnapshot :-) |
hi,
folgende suche: http://www.google.at/search?hl=de&rl...thout+ie&meta= bring an 3. stelle leider nur ein kostenpflichtiges control. Ev. sind die hits davor hilfreich, gefunden hab ich die angesprochenen beiträge auf gotdotnet aber nicht. fg hannes |
ja, habe leider auch nur kostenpflichtige tools/libs gefunden...
nichts desto trotz habe ich jetzt über umwege das gewünschte ergebnis erhalten (schwere geburt), indem ich "einfach" meinen ganzen webbrowser-code in eine DLL verpackt habe... warum es jetzt geht?! egal :smoke: jedenfalls vielen dank an alle :bier: |
Verstehe ich das richtig:
Du packst die System.Windows.Forms.WebBrowser und den ganzen sonstigen Code in eine "unmanaged" DLL rufst von dieser DLL die benötigten Methoden auf und dann funkt das ganze? Das heißt soviel wie du umgehst die nicht dokumentierten "Sicherheitsfeatures" vom Webbrowser Control indem du es als DLL verwendest? |
hmmm, ja. ("unmanaged DLL" :confused:)
ich habe zwar gaaaaanz seltsame phänomene mit visual studio, aber ich habe es heute noch einmal explizit ausprobiert - es hat nur über die DLL funktionert. wenn ich morgen zeit finde, werde ich es noch einmal probieren - bin nämlich heute draufgekommen, dass ich an vielen fehlern gar nicht schuld bin!! VS schließen und wieder öffnen und der fehler ist weg!!?! :eek: wie kann es so etwas geben? |
hallo,
warum "unmanaged" dll? Auch eine dll kann managed code enthalten - das tut sie aber nicht, wenn man das webbrowser control verwendet, dieses ist nämlich unmanaged. .net 2.0 bietet zwar ein webbrowser control an (im gegensatz zu 1.x) - dieses ist aber nur ein wrapper über das "normale" unmanaged webbrwoser control. Ein richtiges managed Webbrowser Control gibt es meines Wissens nach leider nicht - hier wäre MS sehr gefragt. Kommt mir komisch vor, dass es in einer dll ausgelagert funktionieren sollte, im Code direkt verwendet aber nicht. Hast du dabei das Control eh nicht vom Designer auf die Form gezogen? Versuch einfach mal es im Code zu instanziieren - das sollte dann das selbe sein, wie wenn du eine anderes Assembly (=Dll) einbindest. Aja - so komisches Verhalten von Visual Studio hab ich auch ab und zu + ein Restart hilft dann. Ist auf meinem Firmen PC so, dass - wenn man 2 Visual Studio und Sql Server Management Studio geöffnet hat, "spinnt" Visual Studio - Menüs werden nicht mehr angezeigt, Kontextmenü geht nicht und anderes... Weiß aber nicht woram es liegt (ev. am PC?) - zu Hause hab ich damit keine Probleme. fg hannes |
Zitat:
|
jetzt bin ich endgültig am verzweifeln...
doch nicht mehr :D denke jetzt endgültig klarheit gefunden zu haben!! tut mir echt leid, dass ich euch da in die irre geführt habe (aber ihr hättet es ja auch selbst ausprobieren können ;)) aaaalso: es funktioniert so und so!!!! (dll oder direkt gecodet) also warum nicht gleich so?[list=1][*]besagte visual studio fehler (wenn man dann andere wege ausprobiert und diese funktionieren, schließt man natürlich gleich auf "der vorherige weg muss falsch gewesen sein, da fehler") [*]der "fehler" lag beim warten auf das abschließen des ladevorganges der website! da unter ASP.NET "Application.DoEvents()" nicht funktioniert, habe ich es einfach weggelassen, was dazu geführt hat, dass die website nie geladen wurde... tja, was soll ich sagen :aio:[/list=1]hier der funktionierende code: Code:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" Code:
Partial Class Default2 p.s.: dass es mit files geklappt hat, liegt wahrscheinlich an der sehr kurzen ladezeit p.p.s.: ich hoffe (für euch und für mich), dass es das jetzt war und ich nicht wieder auf andere sachen draufkomme :D :cool: |
hi,
paar dinge fallen mir an dem code auf: 1. System.Windows.Forms.Application.DoEvents() ...hat in einer web Applikation nichts zu suchen. Was soll es bewirken? Bei Winforms bewirkt es, dass die Meldungsschleife die nächsten Meldungen abarbeitet - bei Web Applikationen gibt es keine solche Schleife. (Jedes Windows Prog. hat eine Meldungsschleife - bei C++ programieren unter Win. war das klar sichtbar, durch MFC wurde es etwas verborgen und bei .net ist das nun genz vom Programmierer versteckt - der internen Mechanismus funktioniert aber nachwievor so) das "While Not webb.ReadyState = Windows.Forms.WebBrowserReadyState.Complete" ist korrekt. 2. Es gibt ein "System.Threading.Thread.Sleep(...), du brauchst also keine funktion aus der kernel32 dll einbinden. fg hannes |
hmmmm[list=1][*]wenn ich diese zeile auskommentiere, geht es nicht - gibt es einen anderen weg??[*]ja stimmt, sorry - habe zu viele versionen, da habe ich die ohne Threading.Thread.Sleep kopiert =)[/list=1]
|
Zitat:
Das war ja von mir schon von Anfang an die Frage, was das Webbrowser Control in einer ASP.NET Anwendung zu suchen hat. Aber nachdem er is für die interne Verarbeitung braucht - why not. :) |
stimmt!
das war blödsinn meinerseits. Du verwendest ja ein Control aus dem Windows.Forms Namespace und dieses hat - wie alle WinForms Controls - natürlich schon eine Meldungsschleife. sorry + fg hannes |
missbrauch
na ja, bin ja gerne für andere lösungen offen, welche dann "passender" sind...
wie gesagt, bin für vorschläge gerne offen!! bis jetzt haut das ganz toll hin, da die website auch gerendert zur verfügung steht :D |
warum funktioniert .DrawToBitmap() nicht bei allen seiten??
hallo nochmal!
ich habe jetzt noch ein problem mit dem WebBrowser objekt: manche seiten lassen sich mithilfe der funktion "DrawToBitmap" nicht capturen??? warum nicht? Code:
Public Class Form1 an was kann das liegen? danke! :aio: p.s.: für obrigen code: einfach form mit Webbrowser objekt namens "WebBrowser1" ;) |
hi,
anscheinend funktioniert diese methode nicht immer (DrawToBitmap) - versuch mal folgendes: http://www.developerfusion.co.uk/show/4712/ fg hannes |
hallo!
hast du mein beispiel ausprobiert? danke für den link, aber bei mir funktioniert dabei leider nur der sichtbare bereich... vielleicht habe ich nicht ganz verstanden, wie man die gesamte webpage capturen kann... |
hi,
nein, ich hab dein beispiel nicht ausprobiert. aber genau das von dir beschriebenen problem wird ja dort (link) auch beschrieben: Zitat:
fg hannes |
ja, habe ich gelesen, aber ändern tut sich bei der ausgabe nichts :D
also gut, man sollte sich halt doch zur offiziellen dokumentation bequemen: http://msdn2.microsoft.com/en-us/lib...wtobitmap.aspx Zitat:
Zitat:
(obwohl ich das ganze ja eh schon probiert habe :mad:, nur eben leider ohne erfolg) |
des rätsels lösung !!
also, jetzt funktionieren alle seiten wieder (natürlich nur jene, welche ich getestet habe...)!
warum? ich habe javascript in den IE-settings deaktiviert! und warum das? alle nicht funktionierenden seiten hatten unter JavaScript den befehl .focus() für ein element verwendet... und aus irgendwelchen gründen, hat .DrawToBitmap() danach nicht mehr funktioniert... die welt ist eine sammlung seltsamer bzw. unverständlicher phänomene :hallo: |
interessant!
ich hab inzwischen interessehalber die lösung mit dem kopieren des bildes über GDI32 implementiert. (wie im link angegeben) - hat aber einige probleme - Wenn Fenster < gewünschtes bild wird ein teil abgeschnitte und komischerweise funktioniert es bei ein paar seiten garnicht (z.b. microsoft.com). vorschlag: poste deine lösung bei codeproject - anscheinend suchen ja mehrere leute danach und du kannst der comunity so einen guten diesenst erweisen. :cool: fg hannes |
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag