ホーム » VS 2010 - » WebView2 画像ダウンロード

WebView2 画像ダウンロード

先日から WebView2 を利用して,生成 AI で編集した画像のダウンロードをいろいろとやっている.
Gemini では –disable-web-security を有効にすることで対応した.
Copilot や ChatGPT では –disable-web-security には関係なくダウンロードできた.
それで,改めて調べて何とかできたのでメモ.


VS 2026 を使用して,新規プロジェクトの作成から.
MFC ダイアログベースのアプリケーションとしてプロジェクトを作成.
NuGet パッケージの管理で次のものをインストール.
* Microsoft.Web.WebView2
* Microsoft.Windows.ImplementationLibrary (WIL)
NuGet パッケージの管理で「Microsoft.Web.WebView2」と「 Microsoft.Windows.ImplementationLibrary (WIL)」をインストール

//  XxxDlg.h に追加
#include <wrl.h>
#include <wil/com.h>
#include <WebView2.h>

class CXxxDlg : public CDialogEx
{
// ...
private:
    wil::com_ptr<ICoreWebView2> m_pWeb;
    wil::com_ptr<ICoreWebView2Controller> m_pCtrl;

    void InitWebView();
// ...
};
//  XxxDlg.cpp に追加
BOOL CXxxDlg::OnInitDialog()
{
// ...
    InitWebView() ;
    return TRUE ;
    }

void CXxxDlg::InitWebView()
{
    CreateCoreWebView2EnvironmentWithOptions(nullptr, nullptr, nullptr,
        Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
            [this](HRESULT hr, ICoreWebView2Environment* env) -> HRESULT {
                env->CreateCoreWebView2Controller(m_hWnd,
                    Callback<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>(
                        [this](HRESULT hr, ICoreWebView2Controller* ctrl) -> HRESULT {
                            if (SUCCEEDED(hr)) {
                                m_pCtrl = ctrl;
                                m_pCtrl->get_CoreWebView2(&m_pWeb);

                                m_pWeb->Navigate(L"https://dev.mish.work/");

                                CRect rect;
                                GetClientRect(&rect);
                                m_pCtrl->put_Bounds(rect);
                                }
                            return S_OK;
                            }
                        ).Get()
                    );
                return S_OK;
                }
            ).Get()
        );
    }
次のコンパイルエラーの場合
...\Wv2GmnT\Wv2GmTD.cpp(159,3): error C2065: 'Callback': 定義されていない識別子です。
...\Wv2GmnT\Wv2GmTD.cpp(159,12): error C2275: 'ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler': 型の代わりに式が必要です

XxxDlg.cpp の先頭の方に
#include <wrl/event.h>
using namespace Microsoft::WRL;
次のリンクエラーの場合
Wv2GmTD.obj : error LNK2005: "public: static struct wistd::weak_ordering const wistd::weak_ordering::less" (?less@weak_ordering@wistd@@2U12@B) は既に Wv2GmnT.obj で定義されています。
Wv2GmTD.obj : error LNK2005: "public: static struct wistd::weak_ordering const wistd::weak_ordering::equivalent" (?equivalent@weak_ordering@wistd@@2U12@B) は既に Wv2GmnT.obj で定義されています。
Wv2GmTD.obj : error LNK2005: "public: static struct wistd::weak_ordering const wistd::weak_ordering::greater" (?greater@weak_ordering@wistd@@2U12@B) は既に Wv2GmnT.obj で定義されています。
...\x64\Debug\Wv2GmnT.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

pch.h に追加
#include <wrl.h>
#include <wil/com.h>
#include <wil/result.h>
#include <WebView2.h>

これでビルドできるようになるが,実行しても何も表示されない.

OLE の初期化が必要
BOOL CXxxApp::InitInstance()
{
    AfxOleInit() ;
//  ...
    }

これで表示できるようになる.
WebView2 で dev.mish.work の表示


この投稿は役に立ちましたか ? 0 人中 0 人がこの 投稿 は役に立ったと言っています。
© 2009-2026 mish.work All Rights Reserved.

Powered by WordPress / Academica WordPress Theme by WPZOOM