?
#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;
}