Seite automatisch neuladen
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Mithilfe von Haltepunkten oder wie teste ich ob er in den HWND-Bereich geht ?
Gruß
silent12
-
ja, mit nem Breakpoint am einfachsten. Eine Ausgabe im if hilft aber auch (aber sicher nicht bei der Fehlersuche)
Ich nehme an, dass system sofort zurückkehrt. Dadurch rufst du FindWindow auf, obwohl der IE noch gar nicht gestartet ist, ergo gibt es auch kein gültiges HWND.
greetz KN4CK3R
-
Wenn ich einfach zwischen den Programm Start und den Programm Such Befehl ein Sleep(2000); setze funktioniert es auch nicht.
Der if(hwnd) part wird wirklich nicht ausgeführt und nach dem schließen von IE bekomme ich im Programm-Fenster die Ausgabe:Der Befehl "feature" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "context" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.Gruß
silent12
-
Also. wenn ich Youtube mit dem IE öffne, heisst das Fenster nicht IFrameirgendwas sondern Youtubeirgendwas. Vieleicht liegt da je dein Fehler. Den Rest des Codes hab ich mir jetzt nicht angeschaut.
-
Er hat doch den ersten Parameter angegeben, nicht den zweiten. Der erste ist lpClassName und der zweite lpWindowName.
Ansonnsten kann ich dir nur empfehlen auf system() zu verzichten und ShellExecute zu verwenden, hat aber sehr wahrscheinlich nichts mit deinem Problem zu tun.
-
Alles was ich bis jetzt zur ShellExecute Funktion gelesen habe, ist weitaus komplizierter. Könnte ich es nicht mit system anders lösen ?
Gruß
silent12
-
silent12 schrieb:
Alles was ich bis jetzt zur ShellExecute Funktion gelesen habe, ist weitaus komplizierter. Könnte ich es nicht mit system anders lösen ?
Gruß
silent12Dann ist Programmieren vielleicht nichts für Dich!?
-
Ich weiß nicht was an ShellExecute komplizierter sein soll.
ShellExecute(NULL, "open", "iexplore.exe", "http://www.youtube.com", NULL, SW_SHOW);
Funktioniert wunderbar und ich denke jeder Parameter ist nachvollziehbar, sofern du die Doku gelesen hast dazu.
-
#include <exdisp.h> #pragma comment(lib,"uuid.lib") #pragma comment(lib,"oleaut32.lib") #pragma comment(lib,"ole32.lib") class CIE { IWebBrowser2 *m_browser; public: void ProcessMessages() { MSG msg; while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } } BOOL Wait(int timeout=20) { VARIANT_BOOL busy = VARIANT_TRUE; if (m_browser) { while ((busy == VARIANT_TRUE) && timeout--) { ProcessMessages(); Sleep(100); m_browser->get_Busy(&busy); } } return busy==VARIANT_FALSE; } void Open(LPCWSTR url) { if (m_browser) { m_browser->put_Visible(VARIANT_TRUE); BSTR b = SysAllocString(url); static VARIANT v; m_browser->Navigate(b,&v,&v,&v,&v); SysFreeString(b); } } void Focus() { if (m_browser) { HWND hwnd=0; if (!m_browser->get_HWND((long*)&hwnd) && hwnd) { ShowWindow(hwnd,SW_MINIMIZE); // idiotisch ShowWindow(hwnd,SW_MAXIMIZE); } } } void Refresh() { if (m_browser) m_browser->Refresh(); } CIE() { CoInitialize(0); CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, (void**)&m_browser); } ~CIE() { if (m_browser) m_browser->Release(); CoUninitialize(); } }; // example int main() { CIE ie; ie.Open(L"\1:blank"); ie.Wait(); ie.Focus(); ie.Open(L"http://www.youtube.com/"); ie.Wait(); MessageBox(0,TEXT("Click OK to refresh and quit"),0,0); ie.Refresh(); return 0; }