Grab IE URL



  • Danke Jansen. Haste eigentlich recht mit dem speicher reservieren *g*
    Jetzt müsste ich nur noch rausbekommen, wie ich die ganze URL grabben kann und nicht nur die aus der adressleiste. wie schon bereits gesagt, wenn ich auf diese seite gehe wo ich jetzt den beitrag schreibe

    (http://www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=reply&f=2&t=014298)

    und dann grabbe, erhalte ich lediglich:

    "http://www.c-plusplus.net/forumstart.htm","Forum"

    ich möchte aber die eigentliche (volle) URL, die in diesem beispiel lautet:

    "http://www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=reply&f=2&t=014298","C/C++-Ecke"

    jemand eine idee?



  • Vielleicht gibt's ja entsprechende DDE-Links für die Unterframes oder du musst bei RequestData eine andere Adresse abfragen, das ist aber wohl eher eine MSDN- bzw. WinAPI-Frage.

    Geh doch einfach direkt in's Forum, dann klappt's auch mit den kompletten URLs.



  • hmmm habe eine delphi lösung bekommen. mal schauen ob ich das umsetze, denn es kann da zu komplikationen kommen. naja mal schauen 🙂

    eine andere frage: wie kann ich den erhaltenen string in zwei variablen splitten? also der string ist ja wie folgt:

    "http://www.msn.com","MSN Web"

    ich möchte nun wo url steht, den inhalt der variable1 übergeben und wo titel steht, der variable2 übergeben. also so:

    inhalt von var1 = http://www.msn.com
    inhalt von var2 = MSN Web

    sprich, aufgeteilt und " " removed. wie geht sowas?



  • Hi!

    Guck dir mal in der BCB Hilfe nach AnsiString und guck mal genauer auf AnsiPos() und SubString(). damit dürftes du wohl weiterkommen, denk ich 😉



  • Da hab ich mal was ähnliches gefunden.
    http://www.bytesandmore.de/rad/index.htm?http://www.bytesandmore.de/rad/cpp/snipp/sc06011.php

    Du bist dir sicher bewusst, dass immer nur das vorderste Browserfenster ausgewertet wird?

    Bei einer Seite mit Frames sieht die ganze Sache nochmals anders aus. Webseiten mit Frames bestehen aus mehreren einzelnen Seiten. Aber nicht von allen wird die URL zurückgegeben werden dir nicht alle URLs zurückgegeben, sondern nur die des Framesets. Somit ist es für dich sehr schwer die URL der angezeigten Page herauszufinden.

    Eine Lösung für das Problem weiss ich auch nicht, wollte dich aber nur darauf hinweisen...



  • Hi,

    Du bist dir sicher bewusst, dass immer nur das vorderste Browserfenster ausgewertet wird?

    eigentlich schon. aber jetzt wo du es nochmals erwähnst stellt es ein problem für mich dar! 🕶 😃

    Wie könnte man es erreichen das die URL des AKTIVEN ie fenster gegrabt wird, also das wo im vordergrund ist, anstatt des letzten fenster..



  • Original erstellt von PuppetMaster2k:
    **Hi!

    Guck dir mal in der BCB Hilfe nach AnsiString und guck mal genauer auf AnsiPos() und SubString(). damit dürftes du wohl weiterkommen, denk ich ;)**

    Danke. Allerdings habe ich ein problem mit index und count. wenn ich diese werte weis, ist das ja kein problem 🙂 allerdings sind diese angaben ja varierend.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        String Full = "\"http://www.c-plusplus.net/index.php\",\"Forum\"";
        if(Full.Pos("\""))
        {
            Edit1->Text = Full.SubString(2,34);
            Edit2->Text = Full.SubString(39,5);
        }
    }
    

    Ergebniss: http://www.c-plusplus.net/index.php
    Forum

    Wie geht das jetzt mit dem index und count wenn ich diese werte nicht weis?



  • Ich verstehe dein Problem nicht. Es wird doch das aktive, oberste IE-Fenster ausgewertet (bzw. das zuletzt aktive, falls inzwischen das Fenster eines anderen Programmes aktiviert wurde).



  • Wegen des AnsiString-Zerlegens: bitte immer nur ein Thema pro Thread!
    Ausserdem findest du dazu massenhaft Threads im Forum.

    Also Klartext: weitere AnsiString-Beiträge werden kommentarlos gelöscht.



  • Es wird doch das aktive, oberste IE-Fenster ausgewertet

    Ja, also das letzte (von rechts). das wird gegrabt. was aber wenn ein neues fenster nun aufgeht, man aber noch aktive in dem anderen ist und ich davon die url will? tja, dann wird hald eben vom nun neuen (somit letztes von rechts) die url gegrabt. das bringt mir schaurig wenig *g*. deswegen die frage ob man nicht das aktive also das was grad im vordergrund steht, grabben kann. das könnte ja auch ein fenster in der mitte sein, mit aktive meine ich hald eben angewählt/vordergrund. 🙄



  • und sorry wegen dem AnsiString. 🙂
    Hm, muss ich jetzt ein extra thread aufmachen?



  • Original erstellt von <Fuck>:
    mit aktive meine ich hald eben angewählt/vordergrund.

    Genau das meine ich auch, und genau das wird hier immer ausgewertet.

    Zum AnsiString: ein eigener Thread sollte nicht notwendig sein, da du, wie schon gesagt, mittels der Suchfunktion hier ca. 23000 Threads zum Thema SubString findest.



  • Genau das meine ich auch, und genau das wird hier immer ausgewertet.

    Bist du sicher? also wenn ich jetzt den browser starte und auf c-plusplus.net gehe und dann nochmals den browser starte und auf google.com gehe, ist cpp das erste fenster und google das letzte. gut, wenn ich jetzt das cpp fenster aktive mache, und dann die exe starte wo grabben 🙂 tut, grabbt es mir eben google(!) 😞 hald immer das letzte fenster. ist das bei dir nicht so?



  • Hmm, irgendwas muss ich vorhin anders gemacht haben. Jetzt kann ich dein Problem nachvollziehen, eine Lösung fällt mir aber nicht ein.



  • hm...

    ich kann das Problem nicht nachvollziehen.

    Mit diesem Code

    TDdeClientConv* DDE = new TDdeClientConv(this);
    
    if (DDE->SetLink("IExplore", "WWW_GetWindowInfo"))
      ShowMessage(DDE -> RequestData("0xFFFFFFFF, sURL"));
    else ShowMessage("Internet Explorer is not running");
    if(DDE) delete DDE;
    

    Am Anfang der Unit

    #include <ddeman.hpp>
    

    nicht vergessen

    Mit diesem Code wird bei mir immer die URL des aktuellen Fenster gegrabt.



  • bei mir tut das nicht wie du sagst. öffne mal google. dann öffne dieses forum. dann öffne iglo.de oder sonst was.

    von links nach rechts hast du nun:

    google,
    cpp forum,
    iglo

    klicke nun das fenster cpp forum an. was ja in der mitte ist. nun grabbe mit der exe nach der URL. jetzt sag mir nicht das du die von cpp forum kriegst? bei mir wäre das nun iglo(!). wenn das jetzt bei dir anders ist möchte ich gerne die exe mal :p



  • Also...
    ich hab nun mal alles so gemacht wie du beschrieben hast. IE mit google.de bcbarena.de und iglo.de geöffnet. Dann mein Programm gestartet. Das IE Fenster mit BCBarena.de aktiviert, Seite gegrabt. Ergebnis: die URL und der Titel des bcbarena.de Fensters. Das gleiche bei allen anderen Fenstern....

    k.A. wo das Problem liegt 🙄

    Hab mir nun aber mal deinen Source-Code näher angeschaut. Diesen in ein Beispielprojekt gepackt und kompiliert - Fehler.

    dde->SetLink(Service, "WWW_GetWindowInfo")
    

    Das Service muss zwischen zwei " stehen. Nehm mal an, dass dies ein Tippfehler im Forumbeitrag ist. 🙂

    Nun hab ich die kompilierte exe mal laufen lassen - nichts. Keine Rückmeldung über die gegrabte URL.

    Ich vermute, dass mein NT 4.0 SP5 den Wert "Service" nicht kennt, denn mit dem Parameter aus meinem Beispiel (IExplore) funktioniert die Sache wunderbar.

    Dein Code (um eine Abfrage erweitert):

    TDdeClientConv *dde1 = new TDdeClientConv(this);
      if(dde1->SetLink("Service", "WWW_GetWindowInfo"))
      Edit1->Text = dde1->RequestData("0xFFFFFFFF, sURL");
      else
      ShowMessage("no Service");
      dde1->CloseLink();
      delete dde1;
    

    Mein Code (vom Link, den ich angegeben habe):

    if (DDE->SetLink("IExplore", "WWW_GetWindowInfo"))
      Edit2->Text = DDE -> RequestData("0xFFFFFFFF, sURL");
    else ShowMessage("Internet Explorer is not running");
    if(DDE) delete DDE;
    

    Teste doch mal den Code meiner Lösung, nähme mich noch wunder... 🙄



  • das mit service war kein tipp fehler. das hat schon seine richtigkeit. service ist eine string variable. String Service = "IExplore";

    ich habe deine lösung schon versucht bevor ich meinen letzten beitrag geschrieben habe. also irgendwie stimmt hier was nicht. entweder reden wir aneinander vorbei oder weis der kuckuck 🙂 schick mir doch bitte mal den source + compilierte(!) exe an fischkopf36@hotmail.com



  • Original erstellt von <fuck>:
    **das mit service war kein tipp fehler. das hat schon seine richtigkeit. service ist eine string variable. String Service = "IExplore";
    **

    Stimmt hab ich übersehen.

    Mail kommt geflogen... 😉


Anmelden zum Antworten