DevCpp встраивание браузера в форму

Гобелен - кликните для возврата на главную

Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.

Так почему бы не начать использовать обход блокировки YouTube при том что техническая возможность используя расширение nikolaevevge для браузера Mozilla Firefox уже появилась, а объем полезной(и не очень) информации на видеохостинге YouTube, по мнению некоторых диванных экспертов, меньше не стал.

Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Владимира Вольфовича Жириновского.

Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.

На очередном конкурсе танцев, школьница отлично выступила.

Что использовать вместо Юбуст

Вот та самая информация: программа для продвижения канала YouTube, эта информация выложена уже несколько лет, при этом просмотров не много, а метод который описан в данном видео действительно помогает продвигать видео в YouTube.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

Код приведённый ниже запускается, при этом не видно где выводится текст из HTML, возможно это связано с размерами вставленного браузера или его расположением на форме.

C++
    
#include <windows.h>
#include <exdisp.h>
#include <mshtml.h>
#include <initguid.h>
      
// Объявление GUID через макрос (правильный способ для MinGW)
DEFINE_GUID(CLSID_WebBrowser, 
    0x8856F961,0x340A,0x11D0,0xA9,0x6B,0x00,0xC0,0x4F,0xD7,0x05,0xA2);
DEFINE_GUID(IID_IWebBrowser2, 
    0xD30C1661,0xCDAF,0x11D0,0x8A,0x3E,0x00,0xC0,0x4F,0xC9,0xE2,0x6E);
      
IWebBrowser2* pBrowser = NULL;
      
void CreateWebBrowser(HWND hWnd) {
    CoInitialize(NULL);
    
    // Правильный вызов для MinGW (без & перед GUID)
    HRESULT hr = CoCreateInstance(
        CLSID_WebBrowser,  // Без &
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_IWebBrowser2,  // Без &
        (void**)&pBrowser
    );
      
    if (SUCCEEDED(hr) && pBrowser) {
        RECT rc;
        GetClientRect(hWnd, &rc);
        pBrowser->put_Left(0);
        pBrowser->put_Top(0);
        pBrowser->put_Width(rc.right);
        pBrowser->put_Height(rc.bottom);
        pBrowser->put_Visible(VARIANT_TRUE);
        
        BSTR bstrHTML = SysAllocString(L"<html><body><h1>Working!</h1></body></html>");
        VARIANT varURL;
        VariantInit(&varURL);
        varURL.vt = VT_BSTR;
        varURL.bstrVal = SysAllocString(L"about:blank");
        
        pBrowser->Navigate2(&varURL, NULL, NULL, NULL, NULL);
        
        IDispatch* pDisp = NULL;
        if (SUCCEEDED(pBrowser->get_Document(&pDisp)) && pDisp) {
            IHTMLDocument2* pDoc = NULL;
            if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc)) && pDoc) {
                SAFEARRAY* psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);
                if (psa) {
                    VARIANT* pVar;
                    if (SUCCEEDED(SafeArrayAccessData(psa, (void**)&pVar))) {
                        pVar->vt = VT_BSTR;
                        pVar->bstrVal = bstrHTML;
                        SafeArrayUnaccessData(psa);
                        pDoc->write(psa);
                    }
                    SafeArrayDestroy(psa);
                }
                pDoc->Release();
            }
            pDisp->Release();
        }
        
        SysFreeString(bstrHTML);
        VariantClear(&varURL);
    }
}
      
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
    switch (msg) {
        case WM_CREATE:
            CreateWebBrowser(hWnd);
            break;
        case WM_SIZE:
            if (pBrowser) {
                RECT rc;
                GetClientRect(hWnd, &rc);
                pBrowser->put_Width(rc.right);
                pBrowser->put_Height(rc.bottom);
            }
            break;
        case WM_DESTROY:
            if (pBrowser) {
                pBrowser->Quit();
                pBrowser->Release();
                pBrowser = NULL;
            }
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}
      
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASS wc = {0};
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = "WebBrowserHost";
    RegisterClass(&wc);
      
    HWND hWnd = CreateWindow("WebBrowserHost", "WebBrowser Demo",
                            WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
                            800, 600, NULL, NULL, hInstance, NULL);
      
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
      
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
      
    CoUninitialize();
    return (int)msg.wParam;
}

  

Другие товары

Вы так же можете прочитать следующие статьи: