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*
HellsgoreEDIT:
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.