WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 12.12.2006, 17:41   #11
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

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

jedenfalls vielen dank an alle
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 12.12.2006, 20:07   #12
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

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?
renew ist offline   Mit Zitat antworten
Alt 12.12.2006, 22:41   #13
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

hmmm, ja. ("unmanaged DLL" )

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!!?! wie kann es so etwas geben?
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 13.12.2006, 08:31   #14
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Alt 13.12.2006, 10:18   #15
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Biri
hallo,

warum "unmanaged" dll?
Auch eine dll kann managed code enthalten - ...
aha, ist mir neu - aber man lernt ja nie aus.
renew ist offline   Mit Zitat antworten
Alt 13.12.2006, 13:05   #16
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

jetzt bin ich endgültig am verzweifeln...

doch nicht mehr

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 [/list=1]hier der funktionierende code:
Code:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2"
aspcompat="true"
%><%
      Dim webb As Windows.Forms.WebBrowser
      webb = New Windows.Forms.WebBrowser

      webb.Navigate("http://www.wcm.at")
      While Not webb.ReadyState = Windows.Forms.WebBrowserReadyState.Complete
          System.Windows.Forms.Application.DoEvents()
          Sleep(200)
      End While

      Response.Write(webb.DocumentText)
%>
und
Code:
Partial Class Default2
    Inherits System.Web.UI.Page

    Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Integer)

End Class
aber wie gesagt - danke für eure bemühungen!!

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
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 13.12.2006, 13:19   #17
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Alt 13.12.2006, 13:50   #18
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

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]
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 13.12.2006, 16:13   #19
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Biri
hi,

paar dinge fallen mir an dem code auf:

1. System.Windows.Forms.Application.DoEvents()
...hat in einer web Applikation nichts zu suchen.
Nachdem das Webbrowser-Control ja eigentlich aus den Windows.Forms.... Paketen kommt kann ich mir schon vorstellen, dass das DoEvents() sich auf diese Webbrowser Klasse unter dem Windows.Forms Paket bezieht und daher notwendig ist.

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.
renew ist offline   Mit Zitat antworten
Alt 13.12.2006, 16:34   #20
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

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
Biri ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:09 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag