Benutzer mit den meisten Antworten
Datei herunterladen (am besten mit der Gecko-Engine)

Frage
-
Hallo ihr lieben,
ich bin dabei einen Geckowebbrowser zu programmieren und es funktioniert soweit auch alles aber wenn ich auf einen Download Link innerhalt einer Website klicke, passiert gar nichts. (Ich möchter das lieber das Downloaden alleine mit Vb Mitteln lösen als das über die Gecko-Engine zu machen.) Wie kann ich also abfragen ob es ein Download Link bzw. Buttun war, wenn ja, dann starte den Doownload und, wnn nicht, dann nicht? Ich hoffe dass ich die Antwort auf meine Frage bekommen.
MFG
Thiemo1991- Bearbeitet Thiemo1991 Sonntag, 18. März 2018 09:17
Antworten
-
Hallo Thiemo,
ich würde mich Stefan anschließen und den CefSharp nutzen. Dieser basiert auf WebKit (Chrome).
Alternative könntest Du auch UWP und das WebView Control nutzen. Dieses basiert auf EdgeHTML. Die Verteilung einer UWP App ist durch den Store recht einfach. So kannst Du einfach viele User erreichen.
Gruß Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
Dev Apps von mir: Icon für UWP, UI Strings
Andere Dev Apps: UWP Community Toolkit Sample App- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 27. März 2018 10:14
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 18:48
-
Hi,
da solltest Du doch mal auf eine neuere GeckoFX Version aktualisieren. Probleme mit Mausereignissen gab es früher wohl zuhauf und in einer aktuelleren Version ebenfalls. Siehe dazu:
GeckoFX 45.0 - Browser DOM Mouse events not working
Warum das bei dir nicht klappt, kann man so nicht sagen. Aktualisier mal auf die neuste GeckoFX Version, evtl. klappt es dann. Falls nicht, meld dich einfach nochmal hier.
Ansonsten kannst Du auch mal ein anderes Browserplugin wie bspw. CefSharp probieren.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 14. März 2018 17:32
- Als Antwort vorgeschlagen Stefan FalzModerator Freitag, 16. März 2018 14:38
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 18:48
-
Hallo Thiemo,
zu CefSharp gibt es schon einiges. Ob dir das wirklich weiterhilft, kann ich in Ermangelung deines Kenntnisstands nicht sagen.
Starte mal hier:
https://github.com/cefsharp/CefSharp/wiki
https://thechriskent.com/2014/08/18/embedded-chromium-in-winforms/
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Freitag, 16. März 2018 14:38
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 18:48
Alle Antworten
-
Hi,
passiert gar nichts ist wohl nicht richtig. Irgendein Ereignis wird ja sicher ausgelöst. Schau daher bitte mal in die Dokumentation zu der von dir verwendeten Engine und lies nach, welche(s) Ereignis(se) bei einem Klick ausgelöst werden.
Da wir keine Ahnung haben, was Du da bisher wo und wie programmiert hast, kann man dir auch nicht sagen, was Du ändern müsstest.
Generell kann man sagen: Es gibt keinen "Download Link". Ob ein Hyperlink Ziel im Browser angezeigt oder zum Download angeboten wird, macht man in der Regel an der Antwort des Webservers fest.
So kann man bspw. den Content-Disposition Header auslesen. Steht dort ...attachment... kann man davon ausgehen, dass der Webserver dem Client die Datei gerne zum Download und nicht zur Inline Anzeige in der Webseite anbieten möchte. Steht dagegen ...inline... drin, sollte man, soweit möglich, eine direkte Anzeige im Webbrowser bevorzugen.
Fehlt der Header, wird man meist über den Content-Type Header gehen und anhand der dort enthaltenen Werte entscheiden, was wie zu tun ist. Bspw. sollten HTML, Text, Bilder, ... direkt angezeigt, Zip, Rar, usw. als Download bereitgestellt werden.
Alles in allem ein komplexes Thema und ich würde dir nicht unbedingt empfehlen, das alles selbst zu schreiben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 13. März 2018 10:58
-
Hallo,
ich bedanke mich für deine Antwort erstmal. Sowie ich ja beim ersten Post geschrieben habe, passiert (auch wenn ich eigentlich das richtige Event dafür habe) nichts; es kommt nicht mal eine Fehlermeldung. Mit dem ich auch zusammen programmiere, weis nicht wirklich, warum es nicht funktioniert.
Ich kann dir bzw. euch den Code, den ich auch nur von einem anderen, aus einem anderen Forum habe geben und sogar von dem, der mir den Code von dem WebClient dafür geben hat aber ich weis nicht ob es dir bzw. euch etwas bringt.
Private Sub aktiverBrowser_DomClick(sender As Object, e As DomMouseEventArgs) Handles aktiverBrowser.DomClick Dim element As GeckoHtmlElement = CType(e.Target.CastToGeckoElement(), GeckoHtmlElement) If element.TagName = "IMG" Then 'Ist es ein Bild? e.Handled = True 'hier wird das Ereignis abgefangen und damit wird nicht zum SRC navigiert. Debug.WriteLine("Aus dem IMG Bereich:") Debug.WriteLine(element.OuterHtml) Debug.WriteLine("") Debug.WriteLine(element.Attributes.Item("SRC").NodeValue) Debug.WriteLine("") End If If element.TagName = "A" Then 'ist es ein Weblink? (In freier Natur häufig in blau und unterstrichen anzufinden.) e.Handled = True 'hier wird das Ereignis abgefangen und damit wird nicht zum HREF navigiert. Debug.WriteLine("Aus dem A Bereich:") Debug.WriteLine("http://" & aktiverBrowser.Document.Domain & element.Attributes.Item("HREF").NodeValue) Debug.WriteLine("") Debug.WriteLine(element.Attributes.Item("HREF").NodeValue) Debug.WriteLine("") End If End Sub
Dim wc As New WebClient Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click AddHandler wc.DownloadProgressChanged, AddressOf DownloadProgressChanged AddHandler wc.DownloadFileCompleted, AddressOf DownloadFileCompleted If tmBrowser.sfd.ShowDialog() = DialogResult.OK Then wc.DownloadFileAsync(New Uri(tmBrowser.cmbURL.Text), tmBrowser.sfd_Download.FileName) End If End Sub Public Sub DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) tmBrowser.pgbLoad.Value = e.ProgressPercentage tmBrowser.lblStatus.Text = e.BytesReceived & "/" & e.TotalBytesToReceive End Sub Public Sub DownloadFileCompleted(ByVal sender As Object, ByVal e As EventArgs) tmBrowser.pgbLoad.Value = 0 tmBrowser.lblStatus.Text = "Download fertig" End Sub
MFG
Thiemo1991- Bearbeitet Thiemo1991 Mittwoch, 14. März 2018 00:59
-
Hi,
ich mein das nicht böse. Aber Du hast irgendwelchen Code von irgendjemandem aus irgendeinem Forum bekommen, den Du selbst nicht verstehst aber hoffst, dass er irgendwie das macht, was Du grade willst?
Falls das auch nur ansatzweise so stimmt, lies dich bitte zuerst nochmal in die Grundlagen der Programmierung und dann noch in die Basics von VB.NET ein. Anschließend bitte die Doku der verwendeten Browserengine studieren und herausfinden, wie man auf den Klick eines Elements im Browsercontrol reagieren kann. Sollte es dazu keine Doku geben (was ich befürchte) nimm bitte eine andere Engine oder alternativ das Webbrowser Control aus .NET.
Es wäre übrigens hilfreich, wenn Du uns verraten würdest, welche Engine genau Du eigentlich meinst. Denn die, die ich so finde, ist sehr veraltet und eigentlich unbrauchbar.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 14. März 2018 07:01
-
Hallo,
danke für deine schnelle Antwort. Sowie du es vermutest hast, habe ich den oberen Code (also den ersten) aus einem Forum und mir wurde auch schzon gesagt dass das so nicht funktionieren wird; der zweite Code, da habe ich ein bischen daran etwas gemacht - ich habe auch schon gesehen, dass der zweite Code funktioniert aber leider nicht wirklich bei meinem Projekt.
Ich bin kein Anfänger (auch kein Profi) in Visual Basic und deshalb, weil ich es mir nicht merken kann (wegen meiner Behinderung - wenn du wissen möchtest, was ich für eine Behinderung habe, lies einfach auf meiner Website nach - der Link dazu findest du in meinem Profil) brauche ich diese Grundlagen auch nicht durchzulesen.
Ich verwende das Standard Webbrowser Control nicht, weil es der Internet Explorer von Microsoft ist und der ist nicht gerade toll da sehr viele Standard Webelemente nicht funktionieren; ich nehme den GeckoFX 33.0.0.9, da ich weis, dass die Uraltversion schlecht ist.
MFG
Thiemo1991 -
Hi,
da solltest Du doch mal auf eine neuere GeckoFX Version aktualisieren. Probleme mit Mausereignissen gab es früher wohl zuhauf und in einer aktuelleren Version ebenfalls. Siehe dazu:
GeckoFX 45.0 - Browser DOM Mouse events not working
Warum das bei dir nicht klappt, kann man so nicht sagen. Aktualisier mal auf die neuste GeckoFX Version, evtl. klappt es dann. Falls nicht, meld dich einfach nochmal hier.
Ansonsten kannst Du auch mal ein anderes Browserplugin wie bspw. CefSharp probieren.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 14. März 2018 17:32
- Als Antwort vorgeschlagen Stefan FalzModerator Freitag, 16. März 2018 14:38
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 18:48
-
Hallo,
vielen Dank für deinen Tipp mit der Aktualisierung der Engine - hat auch problemlos funktioniert - aber nun habe ich ein weiteres Problem, dass mein Antivirenprogramm schon eine Kriese bekommen hat und mein Programm als Virus ausgemacht hat. (Ich programmiere keine Viren). Jeder Anwender der nicht weis, dass das KEIN VIRUS ist, wird mein Programm löshen bzw. erst gar nicht mal mehr eventuell weiterempfehlen und das möchte ich verhindern.
Die Engine von CefSharp ist zwar schon gut aber dennoch mit einem sehr, sehr komplizierten Code für mich und ich bedenke, dass das bei dieser Engine noch schwirieger wird, mein Vorhaben in die Tat umzusetzen. Es wäre viel einfacher, wenn du mir irgendwelche Tutorials zu dieser Engine geben könntest, weil ich dann es auch verstehen kann, wie was funktioniert.
MFG
Thiemo1991 -
Hallo Thiemo,
warum (d)ein Antivirenprogramm deine Anwendung als "böse" ansieht kann man nicht sagen. Hierfür müsste man erst mal genau wissen, welche Antivirensoftware Du einsetzt, für welche Malware der Virenscanner deine Anwendung hält (die exakte Bezeichnung und ggfs. auch die Begründung des Virenscanners dazu wäre notwendig, evtl. findest Du etwas im Log des Virenscanners).
Tutorials zu GeckoFX kann ich dir keine nennen, da ich so auf die Schnelle keine brauchbaren gefunden habe. In den Untiefen des Internet gibt es sicher welche aber die musst Du schon selbst suchen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
seit vorhin hat sich das von selber gelöst, dass das NICHT MEHR ALS VIRUS erkannt wird. Ich vende derzeit als Demoversion, AVG Internet Security 2018 mit der neuen Virendefinition. Ich weis nicht, warum es NICHT überhaupt solche Schwiriegkeiten bereitet hat aber nun funktioniert es.
Gibt es kein wirkliches Tutorial von der Webbrowser-Engine von CefSharp? Ich würde auch das bald dann umstellen, wenn es dafür ein vollständiges Tutorial gäbe.
MFG
Thiemo1991 -
Hallo Thiemo,
zu CefSharp gibt es schon einiges. Ob dir das wirklich weiterhilft, kann ich in Ermangelung deines Kenntnisstands nicht sagen.
Starte mal hier:
https://github.com/cefsharp/CefSharp/wiki
https://thechriskent.com/2014/08/18/embedded-chromium-in-winforms/
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Freitag, 16. März 2018 14:38
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 18:48
-
Hallo Thiemo,
ich würde mich Stefan anschließen und den CefSharp nutzen. Dieser basiert auf WebKit (Chrome).
Alternative könntest Du auch UWP und das WebView Control nutzen. Dieses basiert auf EdgeHTML. Die Verteilung einer UWP App ist durch den Store recht einfach. So kannst Du einfach viele User erreichen.
Gruß Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
Dev Apps von mir: Icon für UWP, UI Strings
Andere Dev Apps: UWP Community Toolkit Sample App- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 27. März 2018 10:14
- Als Antwort markiert Stefan FalzModerator Samstag, 31. März 2018 18:48
-
Hallo ihr lieben,
ich habe mir bereits die Projektmappe heruntergeladen aber nur das Problem ist, dass ich kein C# kann - ich kann es zwar mit einem Converter übersetzen lassen aber das ist dann eventuell mit Fehlern - die Projekmappe an sich ist schon leider mit Fehlern. Ich kann NUR VB.NET
MFG
Thiemo1991- Bearbeitet Thiemo1991 Freitag, 16. März 2018 15:02
-
Hallo Thiemo,
da können wir dir leider auch nicht helfen. Entweder versuchst Du, dich in C# einzuarbeiten (so schwer ist es nicht) oder Du arbeitest dich Stück für Stück mit einem Komverter wie bspw. http://converter.telerik.com/ durch.
Wir können hier nicht den Code für dich übersetzen und dir Grundlagen vermitteln.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Thiemo,
wenn Du schon eine Programmiersprachen kannst wird der Einstieg in C# nicht wirklich schwer. Nur eine Sprachen zu können reicht meist eh nicht. Das tolle an der Softwareentwicklung ist immer wieder neues zu lernen auch wenn es oft ermüdend ist, lohnt es sich immer. Eine C Sprachen zu können bring auch viele vorteile. Denn dann ist auch Java, JavaScript, Swift(Apple) uva. kein wirkliches Problem. Ich kann nicht behaupten das ich alle diese Programmiersprachen wirklich kann, aber ich kann sie lesen.
Bei der Microsoft virtual Academy gibt es einen Einstiegskurs in C# auch sonst findest Du in der Suchmaschine deiner Wahl unzählige kostenlose Bücher und Anleitungen zu C#
Gruß Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
Dev Apps von mir: Icon für UWP, UI Strings
Andere Dev Apps: UWP Community Toolkit Sample App