IE Url Leiste



  • Wow, danke!

    Das wird in der Mittagspause mal ausprobiert. 😃



  • C-O-M-M-A-N-D-E-R schrieb:

    du meinst doch die,die in der leiste drin steht oder? als von der sprach ich jetzt 🙂

    für dich vorab:

    CString titel = "\1:blank - Microsoft Internet Explorer";
    	
    char buffer[256];
    HWND child;
    HWND ie; 
    if(ie = ::FindWindow("IEFrame",titel))
    {
        if(child = ::FindWindowEx(ie,0,"WorkerW",0))
    	{
    		if(child = ::FindWindowEx(child,0,"ReBarWindow32",0))
    		{
    			if(child = ::FindWindowEx(child,0,"ComboBoxEx32",0))
    			{
    				::SendMessage(child,WM_GETTEXT,255,(long)&buffer[0]);
                    CString tmp = &buffer[0];
    				AfxMessageBox(tmp);
    			}
    		}						
    	}
    }
    

    That´s it

    Mrmmh...
    Irgentwas geht da nicht... Was brauch man dafür noch so für header?
    Wär echt nett, wenn du mal ein compilirbares Beispiel posten könntest!!!! 👍 👍 👍

    M.f.G.
    Canon 🙂



  • Wäre vielleicht hilfreicher wenn du uns mitteilst, was für einen Fehler du bekommst? Diese Lösung ist so fertig kompilierbar!



  • Hi!

    Ich hab einfach die Callbackfunktion rauskopiert in mein Projekt und auch den Aufruf genauso übernommen.

    Aber beim Kompilieren gibt es einen Fehler: 😞

    E:\Favo\FavoDlg.cpp(47) : error C2664: 'EnumChildWindows' : Konvertierung des Parameters 2 von 'int (struct HWND__ *,long)' in 'int (__stdcall *)(struct HWND__ *,long)' nicht moeglich
            Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp ueberein
    

    Da du für den Header nichts geschrieben hast, hab ich das wie bei allen anderen Funktionen auch gemacht:

    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
    

    Is das okay so? Von Callback-Funktionen habe ich leider bisher überhaupt keine Ahnung. 😞

    Was ist falsch? 😕
    Danke!



  • axo ups vergessen:

    protected:
      static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam);
    

    so schauts aus 🙂



  • Danke, jetzt kompilierts - dann kann ich nachher weiterbasteln. 🙂



  • 👍 kein problem 🙂



  • Ich nochmal. 😞

    Mit statischen Variablen hab ich noch so ein Problem. Ich kriege folgende Meldung:

    FavoDlg.obj : error LNK2001: Nichtaufgeloestes externes Symbol "protected: static class CStringArray CFavoDlg::s_arrUrls" (?s_arrUrls@CFavoDlg@@1VCStringArray@@A)
    Debug/Favo.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise

    Da muss bestimmt noch was ins cpp, aber was? Im Header steht

    static CStringArray s_arrUrls;
    

    Da drin will ich die Urls speichern um sie schließlich in einer Listbox anzeigen zu lassen.
    Oder gibt es einen anderen Weg, die Urls in der Listbox anzeigen zu lassen?
    Mit GetDlgItem darf ich ja auch nicht arbeiten. 😞

    Danke!



  • Auch da haben wir für dich ne lösung:
    ergänze das in der CallBack

    CDeinDlg* dlg=(CDeinDlg*)lParam;
    

    Und schon kannste via "dlg->" auf deine Elemente zugreifen...



  • Danke, das funktioniert super!
    (Hätt ich ja auch mal drauf kommen können, aber das hab ich noch nicht oft genug gemacht.)

    Jetzt hab ich meine Liste. Nun sollte ich aber wirklich alleine klar kommen. Ist ja nur noch Dialoggeraffel und ein wenig Datenbankzugriff. 🙂

    Vielen Dank nochmal! 👍



  • Gerne, kein Problem 🕶 wenn du weiter probs hast, hier posten *g*



  • Das geht doch alles nicht... 😞 😞 😞
    Ich mach bestimmt was falsch...
    Ich will daraus doch nur ein ganz einfaches Programm machen,
    nur die 'main' Funktion, da sollte dann alles drinstehen...
    ich hab das mal einfach darein kopiert. aber so geht das nicht 👎

    void main () {
    
    CString titel = "\1:blank - Microsoft Internet Explorer";
    
    char buffer[256];
    HWND child;
    HWND ie; 
    if(ie = ::FindWindow("IEFrame",titel))
    {
        if(child = ::FindWindowEx(ie,0,"WorkerW",0))
        {
            if(child = ::FindWindowEx(child,0,"ReBarWindow32",0))
            {
                if(child = ::FindWindowEx(child,0,"ComboBoxEx32",0))
                {
                    ::SendMessage(child,WM_GETTEXT,255,(long)&buffer[0]);
                    CString tmp = &buffer[0];
                    AfxMessageBox(tmp);
                    }
                }                        
            }
        }
    }
    

    Vieleicht stell ich mich ja zu doof an, aber da kommen 1001 fehler 😞
    WARUM FUNKTIONIERT DAS NICHT???

    was brauch man überhaupt noch für *.h Dateien???

    ➡ Bitte helft mir!



  • Hast du eine MFC Anwendung erstellt?



  • Ach gut, da hab ich garnich drauf geachtet...
    Ich kann nur n bischen Konsole. Kann man das auch über die Konsole machen?



  • das geht bestimmt auch über die konsole,
    aber da kannstenatürlich nicht solche sachen wie die MessageBox etc. nutzen (es sein denn deine konsole hat mfc unterstützung) hab das so noch nie gemacht...

    werds mal eben testen



  • ja funzt, du musst beim erstellen der anwendung nur drauf ahcten das duch MFC Unterstützung aktiviert hast..

    dann kannst code 1:1 kopieren...



  • C-O-M-M-A-N-D-E-R schrieb:

    ja funzt, du musst beim erstellen der anwendung nur drauf ahcten das duch MFC Unterstützung aktiviert hast..

    dann kannst code 1:1 kopieren...

    Ich weiß, ich nerv, aber wo kann man das denn machen?
    giebts da irgentwo ein Haken den man machen muss oder so?

    1000xDank!



  • ja gibt es.
    ich bin jetzt mal davon aus gegangen das du MS Visual C++ 6.0 nutzt.
    Dann gehst du auf Datei->Neu->Konsolenprojekt und auf der zweiten Seite den letzten haken "Eine Anwendung, die MFC Unterstütz" aktivieren..



  • C-O-M-M-A-N-D-E-R schrieb:

    ja gibt es.
    ich bin jetzt mal davon aus gegangen das du MS Visual C++ 6.0 nutzt.
    Dann gehst du auf Datei->Neu->Konsolenprojekt und auf der zweiten Seite den letzten haken "Eine Anwendung, die MFC Unterstütz" aktivieren..

    Richtig ausgegangen!
    Ich kreige da aber noch eine komische meldung, vonwegen soundso fehlt,
    neuinstalation könnte das prob. beheaben.
    Naja, ich installier ersna neu, und dann sehen wir weiter... 🙂



  • Ich weiß ja, das dieser thread schon seid urzeiten vergammelt,
    doch ich bin grade nochmal per suche draufgekommen und hab jetzt
    dochnochne Frage dazu:
    Wie kann man die aktuelle URL ändern?
    Ich meine - was ist die Variable in der sie enthalten ist?
    Ich hab mir alle Variablen ausgeben lassen, überall kommt nur Schrott raus,
    nämlich Zahlensalat. Wenn man beispielsweise eine Variable mit dem Inhalt:
    "www.adresse1.de" hätte könnte man ja diese mit einer anderen adresse,
    die eine andere adresse enthählt z.B. "www.adresse2.de" abgleichen.

    Nur das funzt ja halt nicht.
    Also - wie geht das?

    Danke!


Anmelden zum Antworten