Webseite aufrufen und aktualisieren



  • HI Leute 🙂

    Also, bin noch ziemlich neu in Sachen C++ ... und MFC

    Hier meine Fragen:

    Ich rufe mit

    HINSTANCE hInstance = ShellExecute(GetSafeHwnd(), 
    										"open", 
    										strURL, 
    										NULL, 
    										NULL, 
    										ShowWindow(SW_SHOW));
    

    eine vom Benutzer eingegebene Website auf.

    Jetz möchte ich aber, das diese Website weder in der Taskleiste noch im Tray angezeigt wird. Mit ShowWindow(SW_HIDE); verschwindet nur mein Dialog ...

    Dann möchte ich noch, das diese Seite von meinem Dialog alle 5 Minuten neu aufgerufen bzw. aktualisiert wird.

    Ich hoffe ihr könnt mir helfen ... : (

    lg



  • Servus,

    wie man die Seite verstecken kann... Keine Ahnung. Du rufst ja damit den Standard Browser von Win auf.... von daher -> keine Ahnung.

    Um alle 5 min die Seite zu aktualisieren könntest du doch einen Timer bauen:

    in .cpp

    #include "blabla"
    .
    .
    const short ID_TIMER = 1;
    
    BEGIN_MESSAGE_MAP(CDeinDlg, CDialog)
        ON_WM_TIMER()
    END_MESSAGE_MAP()
    
    void CDeinDlg::OnTimer(UINT nIDEvent)
    {
       if (nIDEvent == ID_TIMER)
       {
          ShellExecute(blabla);
       }
    }
    
    void CDeinDlg::OnButtonClickedWasWeissIch()
    {
       //60000ms = 60Sec = 1Min *5 => 300.000  
       SetTimer(ID_TIMER, 300000, NULL);
    }
    
    void CDeinDlg::OnButtonClickedTimerEnde()
    {
       KillTimer(ID_TIMER);
    }
    

    .h

    public:
       afx_msg void OnTimer(UINT nIDEvent);
    

    Dann ruft er alle 5min die Seite auf...

    *winke*
    Hellsgore



  • Joah danke 🙂



  • Servus,

    hab da noch was zum verstecken gefunden...

    Wenn du immer die selbe Seite aufrufst, hat sie ja dann auch immer den selben Namen. Dann kannste das so machen:

    Verstecken:

    CWnd *pWnd = FindWindow(NULL, "C/C++ Forum");
    ShowWindowAsync(pWnd->m_hWnd, SW_HIDE);
    

    Zeigen:

    CWnd *pWnd = FindWindow(NULL, "C/C++ Forum");
    ShowWindowAsync(pWnd->m_hWnd, SW_SHOW);
    

    Das Fenster ist zwar dann noch da, aber nicht mehr sichtbar...

    Viel Spaß
    *winke*
    Hellsgore



  • Nochmals danke .. nur bekomm ich da einen error "access violation"

    gibts eigentlich noch ´ne andere möglichkeite eine website aufzurufen? ausser über shellexecute?



  • Wo bekommst du eine AV?

    Ich denke mal an der Stelle wenn auf das Handle zugreifst. Bestimmt findet er deinen Browser nicht. Setz mal einen Brechpunkt auf die Stelle und debugge mal durch und gucke ob pWnd > 0 ist. Sonst zeigt er nämlich ins Leere und das ganze schmiert dir ab.

    Ähm es gibt noch WinExec(); aber kannst doch mit ShellExecute den kram aufrufen....

    *winke*
    Hellsgore

    EDIT:

    Achso ich hoffe mal das ist klar das der zweite Paramter bei FindWindow der Fenstername sein muss:

    FindWindow(NULL, "Dein Fenstername");



  • Jop, ich lass lieber ShellExecute

    Das mit dem Fenster ist mir klar 🙂

    Werd das jetz mal mit dem Breakpoint machen

    danke 🙂



  • Es gibt auch noch die möglichkeit via COM auf den Browser zuzugreifen.
    Der Vorteil ist, das man den Browser komplett aus dem Programm steuern kann.

    Hier ein minimal Beispiel:

    CComPtr<IWebBrowser2> spIE;
    
    	if (SUCCEEDED(CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&spIE)))
    	{
    		spIE->put_Visible(VARIANT_TRUE);
    
    		CComVariant url(_T("www.c-plusplus.net"));
    		CComVariant ve; // empty Variant
    
    		spIE->Navigate2(&url, &ve, &ve, &ve, &ve);
    
    		HWND wnd;
    
    		spIE->get_HWND((SHANDLE_PTR*) &wnd);
    
    		::MoveWindow(wnd, 0, 0, 600, 400, TRUE);
    
    		::SetForegroundWindow(wnd);
    	}
    

    Schau Dir mal die Intellisense von den smart pointer spIE an, und Du wirst
    sehen, welche möglichkeiten Dir der Pointer auf den Browser ermöglicht.
    Alles weitere findest Du dazu in der MSDN.


Anmelden zum Antworten