Гобелен - кликните для возврата на главную
Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.
Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Жладимира Вольфовича Жириновского.
Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.
Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.
Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!
Код приведённый ниже запускается, при этом не видно где выводится текст из HTML, возможно это связано с размерами вставленного браузера или его расположением на форме.
#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;
}
Вы так же можете прочитать следующие статьи: