Laden...

Internetverknüpfungen (*.url) mit Browser öffnen

Erstellt von axelfxxx vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.193 Views
axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren
Internetverknüpfungen (*.url) mit Browser öffnen

hi mal wieder 😉

Heute geht es um eine etwas schwierigere Aufgabenstellung:
(Lehrer-Sprache) gg

Wir haben einen webbrowser1 und ein Dropdownmenu(Favoriten) in das ich nun schon erfolgreich meine eigenen Favoriten importiert habe. Jetzt liegen aber die Favoriten im Format *.url vor !. Die Frage: Wie bringe ich nun den Webbrowser1 dazu, das er aus den Internetverküpfungen liest und zur Verknüpfung navigiert ?

der Inhalt einer Internetverknüpfung sieht folgendermaßen aus:



[DEFAULT]
BASEURL=http://msdn.microsoft.com/library/
[DOC#7#9#10#8#9]
BASEURL=http://msdn.microsoft.com/library/shared/searchtab/search.asp?stcfg=/library/searchtabconfig.xml&dtcfg=/library/deeptreeconfig.xml&url=/library/en-us/default.asp?frame=true
ORIGURL=/library/shared/searchtab/search.asp?stcfg=/library/searchtabconfig.xml&dtcfg=/library/deeptreeconfig.xml&url=/library/en-us/default.asp?frame=true
[InternetShortcut]
URL=http://msdn.microsoft.com/library/
Modified=F05A5FA3936AC60110
IconFile=http://msdn.microsoft.com/favicon.ico
IconIndex=1

Ich habe nun folgendes versucht:


             try
            {
                string url = e.ClickedItem.Text.ToString();
                if (url.IndexOf("*.url") < 0)
                {
                    StreamReader sr = new StreamReader(url);
                    string inhalt = sr.ReadToEnd();
                    if (inhalt.IndexOf("[InternetShortcut]") < 0)
                    {
                        sr.ReadLine();
                        this.webBrowser1.Navigate(inhalt);
                    }
                }
                this.webBrowser1.Navigate(url);
            }
            catch (System.Exception err)
            {
                MessageBox.Show(err.ToString());
            }

Aber das wird wohl irgendwie falsch sein oder ? Auf jeden Fall stürzt der Debugger mit der Meldung ab, das er die Favoriten nicht findet. (Vielleicht hab ich ja auch Blödsinn zusammengeschrieben) 😉

Über eine Hilfe währ ich euch echt dankbar.

MFG
ALEX

---- >
Keine Signatur 😉

K
97 Beiträge seit 2006
vor 17 Jahren

Ich weiß nicht, ob ich dich jetzt richtig verstehe, aber um eine normale url file mit einem webbrowser zu öffnen, geht das folgendermaßen

Process prc=new Process();
prc.Start("filename.url");

Dann sucht das OS das passende programm (dein standardbrowser)

EDIT:
Oh, programmierst du einen eigenen webbrowser? (hoff, dass ich das jetz net falsch verstanden hab wegen aufrufen)

wenn ja, dann tuts mir leid, dass ich dir leider nicht helfen kann 😕
wenn nein, so wie oben beschrieben, gehts 😉

trust is a weakness,
betrayal is the hidden blade

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

thx erstmal 😉

aber das wusste ich. Ne, wie krieg ich die URL in MEIN webbrowser1 ? (WebbrowserControl) ?

MFG
Alex

---- >
Keine Signatur 😉

K
97 Beiträge seit 2006
vor 17 Jahren

Vielleicht kann dir das weiterhelfen 😃

http://www.codeproject.com/csharp/webbrowser.asp

trust is a weakness,
betrayal is the hidden blade

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

leider nicht, der kann zwar HTML's öffnen, aber nicht eine Datein vom Typ URL auslesen.

---- >
Keine Signatur 😉

K
97 Beiträge seit 2006
vor 17 Jahren

Hm wie du die Daten verarbeiten musst, weißt du ja oder? wenn ja, würde ich vorschlagen die url file als eine art "PropertyFile" anzusehen und die ganzen schlüssel als properties auslesen.. verarbeiten kannst sie dann ja so, wie du sie brauchst

trust is a weakness,
betrayal is the hidden blade

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

OK STOP +++ DAS ZU SCHNELL GG

Da ich noch nicht so viel erfahrung mit C# habe: Was war das jetzt mit Property ?
Im obrigen Code versuchte ich den Code des URL Files auszulesen, und wenn der Zeiger dan das Wort [Internetverknüpfung] findet, soll(te) er zu nächsten Zeile springen, und zur dort stehenden Vernüpfung navigieren,

aber irgendwas stimmt nicht.

Keine Ahnung, Wie du das hjetzt meinst 😉

mfg Alex

---- >
Keine Signatur 😉

K
97 Beiträge seit 2006
vor 17 Jahren

Mit properties hab ich zwar nur in java viel erfahrung, aber läuft hier sicher ähnlich ab... also ein propertyfile ist so aufgebaut...

key=value
key=value
key=value

dh...
wenn da steht
name=kenshin
alter=18
wohnort=österreich

dann ist im property objekt dann das so aufgebaut


PropertyCollection props=new PropertyCollection();

dann gibt es methoden wie


props.ContainsKey(string key);
props.ContainsValue(string value);
props["key"]   // liefert das value dazu hinter

müsstest nur schaun, wie man unter c# ein propertyfile richtig ausliest, könntest aber ganz einfach machen (holzhackermethode) in dem du den key bis zu dem '=' liest und ab dem '=' dann das value dazu...

mit

props.Add(key, value); 

kannst du dann ein property hinzufügen...

wenn du alles eingelesen hast, machst du folgendes:


string httpUrl=props["URL"];

trust is a weakness,
betrayal is the hidden blade

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

OK just try it, vielen dank erstmal 😉
Meld mich dann wieder, wenn ich einen schweren Außnahmerfehler habe gg

Alex

//EDIT: Vielen Dank auch für die Erklärung zum Property 😉

---- >
Keine Signatur 😉

K
97 Beiträge seit 2006
vor 17 Jahren

mach das 😉

wird schon klappen, bisschen rumprobieren und bei google bzw im forum schaun, dann wird das schon

trust is a weakness,
betrayal is the hidden blade

L
497 Beiträge seit 2006
vor 17 Jahren

Ich würde noch gar nicht zwangsläufig von Deiner vorherigen Idee abrücken, da die ja so weit in Ordnung war und wahrscheinlich nutr einen kleinen Fehler hatte. Um den zu finden, solltest Du mal ein paar Ausgaben einbauen und dies nicht nur bei ner Exception.
Einfach Console.WriteLine() mit der Variablen, deren Wert Du gerne wüsstest. Dann siehst Du auch, wo es scheitert.
Besser als diese händischen Ausgaben ist natürlich die Verwendung eines Logging-Frameworks oder das manuelle Debugging, wenn Du Dir die Verwendung einer dieser beiden Varianten zutraust (Debuggen ist in VS oder SharpDevelop ja ein Kinderspiel), dann kannst Du Dir die Ausgaben auch sparen.

Ich meine aber auch so ein paar Fehler erkannt zu haben.

Sehe ich es richtig, dass in der Dropdownliste die Dateinamen stehen, aus denen Du dann die Favoriten einlesen willst? Dann solltest Du nicht
if (url.IndexOf("*.url") < 0) sondern if (url.IndexOf(".url") > 0) verwenden.
Dann solltest Du mit dem StreamREader nicht unbedingt alles auf einmal einlesen, sondern eine Zeile nach der anderen und immer prüfen, ob das gesuchte Pattern vorkommt. Also:


while (line = sr.ReadLine() != null) {
     if (line.indexOf("[InternetShortcut]") > 0) {
           line = sr.ReadLine();
           break;

Anschließend steht in line die Zeile mit der url.
Die musst Du noch anpassen und dann kannst Du die mit dem Brosercontrol aufrufen.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

K
97 Beiträge seit 2006
vor 17 Jahren

Wenn du in zukunft auch nur diese info brauchst (nur die URL), stimme ich Lord Hessia vollkommen zu 😉

trust is a weakness,
betrayal is the hidden blade