1

Тема: CEF браузер в D3D9 вiкнi.

Я вже 4 година намагаюся засунути браузер (обрав CEF) в вiкно d3d9... Щось не дуже виходить.

Ось код який намагався використати:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
    CefMainArgs main_args(hInstance);

    CefRefPtr<ClientApp> app(new ClientApp);

    // Execute the secondary process, if any.
    int exit_code = CefExecuteProcess(main_args, app, nullptr);
    if (exit_code >= 0) {
        exit(exit_code);
    }
    exit(5);

    HWND hwnd = RegisterWindow(hInstance, nCmdShow);
    if (hwnd == 0) {
        return 0;
    }

    RECT rect;
    GetClientRect(hwnd, &rect);

    CefSettings settings;
    CefInitialize(main_args, settings, app.get(), NULL);
    CefWindowInfo        info;
    CefBrowserSettings   b_settings;
    CefRefPtr<CefClient> client(new ClientHandler);
    g_handler = (ClientHandler *)client.get();
    std::string               path = "file://" + GetApplicationDir() + "/html/index.html";
    CefRefPtr<CefCommandLine> command_line = CefCommandLine::GetGlobalCommandLine();

    if (command_line->HasSwitch("url")) {
        path = command_line->GetSwitchValue("url");
    }

    info.SetAsChild(hwnd, rect);
    CefBrowserHost::CreateBrowser(info, client.get(), path, b_settings, NULL);
    int result = 0;
    if (!settings.multi_threaded_message_loop) {
        // Run the CEF message loop. This function will block until the application
        // recieves a WM_QUIT message.
        CefRunMessageLoop();
    }
    else {
        // Create a hidden window for message processing.
        HWND hMessageWnd = CreateMessageWindow(hInstance);
        MSG  msg;

        // Run the application message loop.
        while (GetMessage(&msg, NULL, 0, 0)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

        DestroyWindow(hMessageWnd);
        hMessageWnd = NULL;
        result = static_cast<int> (msg.wParam);
    }
    CefShutdown();
    return 0;
}

Але CefExecuteProcess завжди == 0.
Може пiдкажете якесь iнше рiшення.
Кородко про те що треба:
Вiдмалювати веб сторiнку в вiкнi гри.
А от як це зробити... Я уявлення не маю.

2

Re: CEF браузер в D3D9 вiкнi.

Прихований текст

Ви беретеся за складні речі коли ваші ази кульгають на обидві ноги, був в нас такий Дмитро-Чебурашка, який то довідник для лікарських трав робив, то драйвери писав, то відновленням вінчестеру займався й залізом взагалі.

Я вже 4 година намагаюся засунути браузер (обрав CEF) в вiкно d3d9... Щось не дуже виходить.

А що у вас виходить? Наприклад, ви вже розібрали питання з завантаженням і роботою з динамічнними бібілотеками у вінді?

3 Востаннє редагувалося Fox (04.06.2017 15:13:35)

Re: CEF браузер в D3D9 вiкнi.

0xDADA11C7 написав:
Прихований текст

Ви беретеся за складні речі коли ваші ази кульгають на обидві ноги, був в нас такий Дмитро-Чебурашка, який то довідник для лікарських трав робив, то драйвери писав, то відновленням вінчестеру займався й залізом взагалі.

Я вже 4 година намагаюся засунути браузер (обрав CEF) в вiкно d3d9... Щось не дуже виходить.

А що у вас виходить? Наприклад, ви вже розібрали питання з завантаженням і роботою з динамічнними бібілотеками у вінді?

Ну а при чому тут dll ?
Просто по цьому cef дуже мало инфи (особливо на укр/рос мовах. А Енглиш я не знаю майже) и я поняття не маю що треба йому зробити щоб воно рендерило html у вiкнi гри... Там де я бачив його то був взагалi ехе файл.
А аналогу я знайти не змiг.

4

Re: CEF браузер в D3D9 вiкнi.

При тому що одне з ваших попередніх питань будо про підключення луа й ДЛЛ загалом. Ваше ж питання не про CEF, а про те що ви не можете, навіть маючи якийсь готовий код, щось зробити. Бездумно копіювати не вийде - ви не знаєте плюсів, WINAPI (вікна, процеси, а про DX я взагалі мовчу), можливостей знежучувача, тому розібратися з CEF в вас ніяк не виходить.

Подякували: LoganRoss1

5

Re: CEF браузер в D3D9 вiкнi.

Ну була би документацiя не енглиш...
Нi де не найшов то чи треба вiкно створити чи можна вказати вже готове чи взагалi воно саме створить вiкно.

От функцiя:CefExecuteProcess
Опис в справцi:
"Эта функция должна вызываться из функции точки входа приложения для выполнения вторичного процесса. Его можно использовать для запуска вторичных процессов из исполняемого файла клиента браузера (по умолчанию) или из отдельного исполняемого файла, указанного значением CefSettings.browser_subprocess_path. Если вызывается для процесса браузера (указанного значением командной строки типа «нет»), он немедленно возвращается со значением -1. Если вызывается для распознанного вторичного процесса, он будет блокироваться, пока процесс не завершится, а затем вернет код выхода процесса. | Приложение | Параметр может быть пустым. | Windows_sandbox_info | Параметр используется только в Windows и может быть NULL (подробнее см. Cef_sandbox_win.h)." - by Google translate
Чого вона може вертати 0 нi хто не каже як и не каже для чого воно треба...

6

Re: CEF браузер в D3D9 вiкнi.

vtorgashov написав:
0xDADA11C7 написав:
Прихований текст

Ви беретеся за складні речі коли ваші ази кульгають на обидві ноги, був в нас такий Дмитро-Чебурашка, який то довідник для лікарських трав робив, то драйвери писав, то відновленням вінчестеру займався й залізом взагалі.

Я вже 4 година намагаюся засунути браузер (обрав CEF) в вiкно d3d9... Щось не дуже виходить.

А що у вас виходить? Наприклад, ви вже розібрали питання з завантаженням і роботою з динамічнними бібілотеками у вінді?

Ну а при чому тут dll ?
Просто по цьому cef дуже мало инфи (особливо на укр/рос мовах. А Енглиш я не знаю майже) и я поняття не маю що треба йому зробити щоб воно рендерило html у вiкнi гри... Там де я бачив його то був взагалi ехе файл.
А аналогу я знайти не змiг.

Прихований текст

Нема сенсу брати готовий код якщо ви гадки не маєте де його притулити і як використовувати.
Ви не знаєте принципу рендеринга через d3. Але перед тим як лізти до d3, необхідно мати дуже хороші знання по C++. Там є два буфери - вершинний і індексний (і ще є буфер глибини, але він вам не потрібен). Вам потрібно отримувати хендл вікна, вказувати ціль рендера, підключати пристрої - SwapChain, відеоприскорювач і т.д. Взагалі там є дуже багато нюансів, про які нема сенсу тут писати, бо програмування з d3 - це взагалі окрема сфера. Так що вам нічого не вдасться зробити якщо ви не зможете відрендерити хоча б звичайний куб.
Але, повторююсь, не варто туди лізти якщо нема знань, тільки потратите час і зробите собі тільки гірше.

От прикольна штука - uWebKit, якщо ви юзаєте Unity.
https://youtu.be/3k9gFUku7U0
Але для вас простіше використати Awesomium. Ось навіть стаття, раз ви з інгліш не дружите.

Подякували: 0xDADA11C71

7 Востаннє редагувалося Fox (04.06.2017 19:26:20)

Re: CEF браузер в D3D9 вiкнi.

LoganRoss написав:
vtorgashov написав:
0xDADA11C7 написав:
Прихований текст

Ви беретеся за складні речі коли ваші ази кульгають на обидві ноги, був в нас такий Дмитро-Чебурашка, який то довідник для лікарських трав робив, то драйвери писав, то відновленням вінчестеру займався й залізом взагалі.

А що у вас виходить? Наприклад, ви вже розібрали питання з завантаженням і роботою з динамічнними бібілотеками у вінді?

Ну а при чому тут dll ?
Просто по цьому cef дуже мало инфи (особливо на укр/рос мовах. А Енглиш я не знаю майже) и я поняття не маю що треба йому зробити щоб воно рендерило html у вiкнi гри... Там де я бачив його то був взагалi ехе файл.
А аналогу я знайти не змiг.

Прихований текст

Нема сенсу брати готовий код якщо ви гадки не маєте де його притулити і як використовувати.
Ви не знаєте принципу рендеринга через d3. Але перед тим як лізти до d3, необхідно мати дуже хороші знання по C++. Там є два буфери - вершинний і індексний (і ще є буфер глибини, але він вам не потрібен). Вам потрібно отримувати хендл вікна, вказувати ціль рендера, підключати пристрої - SwapChain, відеоприскорювач і т.д. Взагалі там є дуже багато нюансів, про які нема сенсу тут писати, бо програмування з d3 - це взагалі окрема сфера. Так що вам нічого не вдасться зробити якщо ви не зможете відрендерити хоча б звичайний куб.
Але, повторююсь, не варто туди лізти якщо нема знань, тільки потратите час і зробите собі тільки гірше.

От прикольна штука - uWebKit, якщо ви юзаєте Unity.
https://youtu.be/3k9gFUku7U0
Але для вас простіше використати Awesomium. Ось навіть стаття, раз ви з інгліш не дружите.

Я юзаю GTA SA и через инжект dll засовую туди свiй код. Вот хотiв зробити гарне меню i ще за одно браузер в грi.
Так що це не пiдiйде думаю
Ще й тому що менi  треба зробити так щоб можна було викликати метод з js на сторiнцi.

8

Re: CEF браузер в D3D9 вiкнi.

Ну як зробити браузер я нарештi зрозумiв (прикольна рiч цей cef.).
Може хтось пiдкаже як його змусити рендеритися не в iншому процесi.
Ну наприклад рендерити html в браузерi.
Абсурд але всеж таки...