Megosztás a következőn keresztül:


Hírcsatorna-szolgáltató implementálása win32-alkalmazásban (C++/WinRT)

Megjegyzés:

Egyes információk az előre kiadott termékre vonatkoznak, amelyek jelentősen módosíthatók a kereskedelmi forgalomba kerülés előtt. A Microsoft nem vállal kifejezett vagy hallgatólagos szavatosságot az itt megadott információkra vonatkozóan.

Ez a cikk bemutatja, hogyan hozhat létre egy egyszerű hírcsatorna-szolgáltatót, amely regisztrál egy hírcsatorna-tartalom URI-t, és implementálja az IFeedProvider felületet. Az interfész metódusait a Widgets Board meghívja egyéni lekérdezési sztringparaméterek kéréséhez, általában a hitelesítési forgatókönyvek támogatásához. A hírcsatorna-szolgáltatók egyetlen vagy több hírcsatornát támogathatnak.

A C++/WinRT használatával történő hírcsatorna-szolgáltató implementálásával kapcsolatban lásd: Adatcsatorna-szolgáltató implementálása C# Windows-alkalmazásban (C++/WinRT).

Előfeltételek

  • Az eszköznek engedélyeznie kell a fejlesztői módot. További információért tekintse meg az Eszköz engedélyezése fejlesztésre című útmutatót.
  • Visual Studio 2022 vagy újabb verzió a Univerzális Windows Platform fejlesztési munkafolyamattal. Mindenképpen adja hozzá a C++ (v143) összetevőt az opcionális legördülő listából.

Új C++/WinRT win32-konzolalkalmazás létrehozása

Hozzon létre egy új projektet a Visual Studióban. Az Új projekt létrehozása párbeszédpanelen állítsa a nyelvi szűrőt "C++" értékre, a platformszűrőt pedig Windowsra, majd válassza ki a Windows Konzolalkalmazás (C++/WinRT) projektsablont. Adja az új projektnek az "ExampleFeedProvider" nevet. Ebben az útmutatóban győződjön meg arról, hogy a Megoldás és projekt elhelyezése ugyanabban a könyvtárban nincs bejelölve. Amikor a rendszer kéri, állítsa az alkalmazás cél Windows-verzióját a 10.022631.2787-es vagy újabb verzióra.

Hivatkozások hozzáadása a Windows App SDK-hoz és a Windows implementációs könyvtár nuGet-csomagjaihoz

Ez a minta a legújabb stabil Windows App SDK NuGet-csomagot használja. A Megoldáskezelőben kattintson a jobb gombbal a Hivatkozások elemre , és válassza a NuGet-csomagok kezelése... lehetőséget. A NuGet-csomagkezelőben válassza a Tallózás lapot, és keressen rá a "Microsoft.WindowsAppSDK" kifejezésre. Válassza ki a legújabb stabil verziót a Verzió legördülő listában, majd kattintson a Telepítés gombra.

Ez a minta a Windows implementációs kódtár NuGet-csomagjának használatát is használja. A Megoldáskezelőben kattintson a jobb gombbal a Hivatkozások elemre , és válassza a NuGet-csomagok kezelése... lehetőséget. A NuGet-csomagkezelőben válassza a Tallózás lapot, és keressen rá a "Microsoft.Windows.ImplementationLibrary" kifejezésre. Válassza ki a legújabb verziót a Verzió legördülő listában, majd kattintson a Telepítés gombra.

Az előre összeállított fejlécfájlban (pch.h) adja hozzá az alábbi include utasításokat.

//pch.h 
#pragma once
#include <wil/cppwinrt.h>
#include <wil/resource.h>
...
#include <winrt/Microsoft.Windows.Widgets.Providers.h>

Megjegyzés:

Először a wil/cppwinrt.h fejlécet kell tartalmaznia a WinRT-fejlécek előtt.

A hírcsatorna-szolgáltató alkalmazás megfelelő leállításának kezeléséhez a winrt::get_module_lock egyéni implementációjára van szükség. Előre deklaráljuk a SignalLocalServerShutdown metódust, amely a main.cpp fájlban lesz definiálva, és beállítunk egy eseményt, amely az alkalmazás kilépését jelzi. Adja hozzá a következő kódot a pch.h fájlhoz, közvetlenül a #pragma once irányelv alá, a többi beillesztés előtt.

//pch.h
#include <stdint.h>
#include <combaseapi.h>

// In .exe local servers the class object must not contribute to the module ref count, and use
// winrt::no_module_lock, the other objects must and this is the hook into the C++ WinRT ref counting system
// that enables this.
void SignalLocalServerShutdown();

namespace winrt
{
    inline auto get_module_lock() noexcept
    {
        struct service_lock
        {
            uint32_t operator++() noexcept
            {
                return ::CoAddRefServerProcess();
            }

            uint32_t operator--() noexcept
            {
                const auto ref = ::CoReleaseServerProcess();

                if (ref == 0)
                {
                    SignalLocalServerShutdown();
                }
                return ref;
            }
        };

        return service_lock{};
    }
}


#define WINRT_CUSTOM_MODULE_LOCK

FeedProvider-osztály hozzáadása a hírcsatornaműveletek kezeléséhez

A Visual Studio-ban kattintson a jobb gombbal a ExampleFeedProvider projektre a Megoldáskezelőben, és válassza a Hozzáadás ->Osztálylehetőséget. Az Osztály hozzáadása párbeszédpanelen nevezze el a "FeedProvider" osztályt, és kattintson a Hozzáadás gombra.

Az IFeedProvider interfészt implementáló osztály deklarálása

Az IFeedProvider felület olyan metódusokat határoz meg, amelyeket a Widgets Board meghív a hírcsatorna-szolgáltatóval való műveletek indításához. Cserélje le a FeedProvider.h fájl üres osztálydefinícióját a következő kódra. Ez a kód deklarál egy struktúrát, amely implementálja az IFeedProvider interfészt , és deklarálja a prototípusokat az interfész módszereihez.

// FeedProvider.h
#pragma once
struct FeedProvider : winrt::implements<FeedProvider, winrt::Microsoft::Windows::Widgets::Feeds::Providers::IFeedProvider>
{
    FeedProvider() {}

    /* IFeedrovider required functions that need to be implemented */
    void OnFeedProviderEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderEnabledArgs args);
    void OnFeedProviderDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderDisabledArgs args);
    void OnFeedEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedEnabledArgs args);
    void OnFeedDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedDisabledArgs args);
    void OnCustomQueryParametersRequested(winrt::Microsoft::Windows::Widgets::Feeds::Providers::CustomQueryParametersRequestedArgs args);
    /* IFeedProvider required functions that need to be implemented */

};

Az IFeedProvider metódusok implementálása

A következő néhány szakaszban implementáljuk az IFeedProvider felület módszereit . Mielőtt belemerülne az interfész módszerekbe, adja hozzá a következő sorokat FeedProvider.cpp, az include irányelvek után, hogy bevezesse a hírcsatorna-szolgáltatói API-kat a winrt névtérbe, és engedélyezze a hozzáférést az előző lépésben deklarált térképhez.

Megjegyzés:

Az IFeedProvider felület visszahívási metódusaiba átadott objektumok csak a visszahíváson belül lesznek érvényesek. Ne tároljon hivatkozásokat ezekre az objektumokra, mert a visszahívás környezetén kívüli viselkedésük nincs meghatározva.

// WidgetProvider.cpp
namespace winrt
{
    using namespace Microsoft::Windows::Widgets::Feeds::Providers;
}

OnFeedSzolgáltatóEngedélyezve

Az OnFeedProviderEnabled metódust akkor hívja meg a rendszer, ha a Widgets Board gazdagép létrehoz egy, a szolgáltatóhoz társított hírcsatornát. A módszer megvalósítása során létre kell hozni egy lekérdezési sztringet, amely tartalmazza azokat a paramétereket, amelyek átkerülnek a hírcsatorna tartalmát biztosító URL-címre, beleértve a szükséges hitelesítési tokeneket is. Hozzon létre egy CustomQueryParametersUpdateOptions példányt, az esemény argumentumából átadva a FeedProviderDefinitionId azonosítót, amely azonosítja az engedélyezett hírcsatornát és a lekérdezési karakterláncot. Kérje le az alapértelmezett FeedManagert , és hívja meg a SetCustomQueryParameterst , hogy regisztrálja a lekérdezési sztring paramétereit a Widgets Boardban.

// FeedProvider.cs
void FeedProvider::OnFeedProviderEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderEnabledArgs args)
{
    std::wstringstream wstringstream;
wstringstream << args.FeedProviderDefinitionId().c_str() << L" feed provider was enabled." << std::endl;
    _putws(wstringstream.str().c_str());

    auto updateOptions = winrt::CustomQueryParametersUpdateOptions(args.FeedProviderDefinitionId(), L"param1&param2");
    winrt::FeedManager::GetDefault().SetCustomQueryParameters(updateOptions);
}

AmikorAdatszolgáltatóLetiltva

Az OnFeedProviderDisabled akkor van meghívva , amikor a widgetek táblája le van tiltva a szolgáltató összes hírcsatornáján. A hírcsatorna-szolgáltatóknak nem kell semmilyen műveletet végrehajtaniuk a metódushívásra válaszul. A metódushívás telemetriai célokra, illetve a lekérdezési sztring paramétereinek frissítésére vagy a hitelesítési jogkivonatok visszavonására használható, ha szükséges. Ha az alkalmazás csak egyetlen hírcsatorna-szolgáltatót támogat, vagy ha az alkalmazás által támogatott összes hírcsatorna-szolgáltató le van tiltva, akkor az alkalmazás a visszahívásra válaszul kiléphet.

// FeedProvider.cs

void FeedProvider::OnFeedProviderDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderDisabledArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << args.FeedProviderDefinitionId().c_str() << L" feed provider was disabled." << std::endl;
    _putws(wstringstream.str().c_str());
}

OnFeedEngedélyezve, OnFeedLetiltva

Az OnFeedEnabled és az OnFeedDisabled parancsot a Widgets Board hívja meg, ha egy hírcsatorna engedélyezve van vagy le van tiltva. A hírcsatorna-szolgáltatóknak nem kell semmilyen műveletet végrehajtaniuk ezekre a metódushívásokra válaszul. A metódushívás telemetriai célokra, illetve a lekérdezési sztring paramétereinek frissítésére vagy a hitelesítési jogkivonatok visszavonására használható, ha szükséges.

// FeedProvider.cs

void FeedProvider::OnFeedEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedEnabledArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << args.FeedDefinitionId().c_str() << L" feed was enabled." << std::endl;
    _putws(wstringstream.str().c_str());
}
// FeedProvider.cs

void FeedProvider::OnFeedDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedDisabledArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << args.FeedDefinitionId().c_str() << L" feed was disabled." << std::endl;
    _putws(wstringstream.str().c_str());
}

EgyéniLekérdezésParaméterekKérés

Az OnCustomQueryParametersRequested akkor merül fel, amikor a widgetek táblája megállapítja, hogy a hírcsatorna-szolgáltatóhoz társított egyéni lekérdezési paramétereket frissíteni kell. Előfordulhat például, hogy ez a módszer akkor merül fel, ha a hírcsatorna-tartalom távoli webszolgáltatásból való lekérésének művelete meghiúsul. Az ebbe a metódusba átadott CustomQueryParametersRequestedArgsFeedProviderDefinitionId tulajdonsága határozza meg azt a hírcsatornát, amelyhez a lekérdezési sztring paramjait kérik. A szolgáltatónak újra kell létrehoznia a lekérdezési sztringet, és a SetCustomQueryParameters meghívásával vissza kell adnia azt a widgetek táblájának.

// FeedProvider.cs

void FeedProvider::OnCustomQueryParametersRequested(winrt::Microsoft::Windows::Widgets::Feeds::Providers::CustomQueryParametersRequestedArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << L"CustomQueryParameters were requested for " << args.FeedProviderDefinitionId().c_str() << std::endl;
    _putws(wstringstream.str().c_str());

    auto updateOptions = winrt::CustomQueryParametersUpdateOptions(args.FeedProviderDefinitionId(), L"param1&param2");
    winrt::FeedManager::GetDefault().SetCustomQueryParameters(updateOptions);
}

Regisztráljon egy osztály-előállítót, amely kérésre példányosítani fogja a FeedProvidert

Adja hozzá a FeedProvider osztályt meghatározó fejlécet az alkalmazás fájlja tetején lévő hivatkozásokhoz. Itt is be fogjuk vonni a mutex-et.

// main.cpp
...
#include "FeedProvider.h"
#include <mutex>

Deklarálja azt az eseményt, amely az alkalmazás kilépését eredményezi, valamint a SignalLocalServerShutdown függvényt, amely beállítja az eseményt. Illessze be a következő kódot a main.cpp.

// main.cpp
wil::unique_event g_shudownEvent(wil::EventOptions::None);

void SignalLocalServerShutdown()
{
    g_shudownEvent.SetEvent();
}

Ezután létre kell hoznia egy CLSID azonosítót , amely a COM-aktiválás hírcsatorna-szolgáltatójának azonosítására szolgál. Visual Studióban generáljon GUID-azonosítót úgy, hogy lép a Eszközök ->GUID létrehozásamenüpontra. Válassza a "static const GUID =" lehetőséget, kattintson a Másolás gombra, majd illessze be a main.cpp. Frissítse a GUID-definíciót a következő C++/WinRT szintaxissal, és állítsa be a GUID változó nevét feed_provider_clsid. Hagyja meg a GUID megjegyzésként megadott verzióját, mert később szüksége lesz erre a formátumra az alkalmazás csomagolásakor.

// main.cpp
...
// {80F4CB41-5758-4493-9180-4FB8D480E3F5}
static constexpr GUID feed_provider_clsid
{
    0x80f4cb41, 0x5758, 0x4493, { 0x91, 0x80, 0x4f, 0xb8, 0xd4, 0x80, 0xe3, 0xf5 }
};

Adja hozzá a következő osztálygyári meghatározást a main.cpp-hoz. Ez többnyire olyan sablonkód, amely nem a takarmányszolgáltató implementációira vonatkozik. Vegye figyelembe, hogy CoWaitForMultipleObjects megvárja a leállítási esemény aktiválását, mielőtt az alkalmazás kilépne.

// main.cpp
template <typename T>
struct SingletonClassFactory : winrt::implements<SingletonClassFactory<T>, IClassFactory>
{
    STDMETHODIMP CreateInstance(
        ::IUnknown* outer,
        GUID const& iid,
        void** result) noexcept final
    {
        *result = nullptr;

        std::unique_lock lock(mutex);

        if (outer)
        {
            return CLASS_E_NOAGGREGATION;
        }

        if (!instance)
        {
            instance = winrt::make<FeedProvider>();
        }

        return instance.as(iid, result);
    }

    STDMETHODIMP LockServer(BOOL) noexcept final
    {
        return S_OK;
    }

private:
    T instance{ nullptr };
    std::mutex mutex;
};

int main()
{
    winrt::init_apartment();
    wil::unique_com_class_object_cookie feedProviderFactory;
    auto factory = winrt::make<SingletonClassFactory<winrt::Microsoft::Windows::Widgets::Feeds::Providers::IFeedProvider>>();

    winrt::check_hresult(CoRegisterClassObject(
        feed_provider_clsid,
        factory.get(),
        CLSCTX_LOCAL_SERVER,
        REGCLS_MULTIPLEUSE,
        feedProviderFactory.put()));

    DWORD index{};
    HANDLE events[] = { g_shudownEvent.get() };
    winrt::check_hresult(CoWaitForMultipleObjects(CWMO_DISPATCH_CALLS | CWMO_DISPATCH_WINDOW_MESSAGES,
        INFINITE,
        static_cast<ULONG>(std::size(events)), events, &index));

    return 0;
}

A hírcsatorna-szolgáltató alkalmazás becsomagolása

Az aktuális kiadásban csak a csomagolt alkalmazások regisztrálhatók hírcsatorna-szolgáltatókként. Az alábbi lépések végigvezetik az alkalmazás csomagolásának és az alkalmazásjegyzék frissítésének folyamatán, hogy regisztrálja az alkalmazást az operációs rendszeren hírcsatorna-szolgáltatóként.

MSIX csomagolási projekt létrehozása

A Megoldáskezelőben kattintson a jobb gombbal a megoldásra, és válassza az Add-New> Project(Új projekt hozzáadása) lehetőséget. Az Új projekt hozzáadása párbeszédpanelen válassza a "Windows Alkalmazáscsomagoló projekt" sablont, és kattintson a Tovább gombra. Állítsa a projekt nevét "ExampleFeedProviderPackage" értékre, majd kattintson a Létrehozás gombra. Amikor a rendszer kéri, állítsa a célverziót az 1809-es vagy újabb verzióra, és kattintson az OK gombra. Ezután kattintson a jobb gombbal az ExampleFeedProviderPackage projektre, és válassza a Projekt hozzáadása> referenciát. Válassza ki az ExampleFeedProvider projektet, és kattintson az OK gombra.

Windows App SDK-csomaghivatkozás hozzáadása a csomagolási projekthez

Az MSIX csomagolási projekthez hozzá kell adnia egy hivatkozást a Windows App SDK nuget-csomaghoz. A Megoldáskezelőben kattintson duplán az ExampleFeedProviderPackage projektre az ExampleFeedProviderPackage.wapproj fájl megnyitásához. Adja hozzá a következő xml-t a Project elemhez.

<!--ExampleFeedProviderPackage.wapproj-->
<ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.231116003-experimentalpr">
        <IncludeAssets>build</IncludeAssets>
    </PackageReference>  
</ItemGroup>

Megjegyzés:

Győződjön meg arról, hogy a PackageReference elemben megadott verzió megegyezik az előző lépésben hivatkozott legújabb stabil verzióval.

Ha a Windows App SDK megfelelő verziója már telepítve van a számítógépen, és nem szeretné csomagolni az SDK-futtatókörnyezetet a csomagban, a csomagfüggőséget az ExampleFeedProviderPackage projekt Package.appxmanifest fájljában adhatja meg.

<!--Package.appxmanifest-->
...
<Dependencies>
...
    <PackageDependency Name="Microsoft.WindowsAppRuntime.1.5.233430000-experimental1" MinVersion="2000.638.7.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
...
</Dependencies>
...

A csomagjegyzék frissítése

A Megoldáskezelőben kattintson a jobb gombbal a fájlra, Package.appxmanifest és válassza a Kód megtekintése lehetőséget a jegyzék xml-fájljának megnyitásához. Ezután hozzá kell adnia néhány névtér-deklarációt a használni kívánt alkalmazáscsomag-bővítményekhez. Adja hozzá a következő névtérdefiníciókat a legfelső szintű csomagelemhez .

<!-- Package.appmanifest -->
<Package
  ...
  xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
  xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"

Az Alkalmazáselemen belül hozzon létre egy új üres, Bővítmények nevű elemet. Győződjön meg arról, hogy ez a uap:VisualElementszáró címkéje után jelenik meg.

<!-- Package.appxmanifest -->
<Application>
...
    <Extensions>

    </Extensions>
</Application>

Az első bővítmény, amelyet hozzá kell adnunk, a ComServer bővítmény. Ez regisztrálja a végrehajtható fájl belépési pontját az operációs rendszeren. Ez a bővítmény a COM-kiszolgáló regisztrációs kulcs beállításával történő regisztrálásának megfelelő csomagolt alkalmazás, amely nem a hírcsatorna-szolgáltatókra vonatkozik. Adja hozzá a következő com:Extension elemet a Bővítmények elem gyermekelemeként. Módosítsa a Id attribútum GUID-ját a com:Class elemben arra a GUID-ra, amelyet az előző lépésben generált.

<!-- Package.appxmanifest -->
<Extensions>
    <com:Extension Category="windows.comServer">
        <com:ComServer>
            <com:ExeServer Executable="ExampleFeedProvider\ExampleFeedProvider.exe" Arguments="-RegisterProcessAsComServer" DisplayName="C++ Feed Provider App">
                <com:Class Id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" DisplayName="FeedProvider" />
            </com:ExeServer>
        </com:ComServer>
    </com:Extension>
</Extensions>

Ezután adja hozzá az alkalmazást hírcsatorna-szolgáltatóként regisztráló bővítményt. Illessze be a uap3:Extension elemet a következő kódrészletbe, a Bővítmények elem gyermekeként. Mindenképpen cserélje le a COM-elemClassId attribútumát az előző lépésekben használt GUID azonosítóra.

<!-- Package.appxmanifest -->
<Extensions>
    ...
    <uap3:Extension Category="windows.appExtension">
        <uap3:AppExtension Name="com.microsoft.windows.widgets.feeds" DisplayName="ContosoFeed" Id="com.examplewidgets.examplefeed" PublicFolder="Public">
            <uap3:Properties>
                <FeedProvider Icon="ms-appx:Assets\StoreLogo.png" Description="FeedDescription">
                    <Activation>
                        <!-- Apps exports COM interface which implements IFeedProvider -->
                        <CreateInstance ClassId="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
                    </Activation>
                    <Definitions>
                        <Definition Id="Contoso_Feed"
                            DisplayName="Contoso_Feed Feed"
                            Description="Feed representing Contoso"
                            ContentUri="https://www.contoso.com/"
                            Icon="ms-appx:Images\StoreLogo.png">
                        </Definition>
                        <Definition Id="Fabrikam_Feed"
                            DisplayName="Fabrikam Feed"
                            Description="Feed representing Example"
                            ContentUri="https://www.fabrikam.com/"
                            Icon="ms-appx:Images\StoreLogo.png">
                        </Definition>
                    </Definitions>
                </FeedProvider>
            </uap3:Properties>
        </uap3:AppExtension>
    </uap3:Extension>
</Extensions>

Az összes elem részletes leírásáért és formázási információiért tekintse meg a Hírcsatorna-szolgáltató csomagjegyzékének XML-formátumát.

Ikonok hozzáadása a csomagolási projekthez

A Megoldáskezelőben kattintson a jobb gombbal az ExampleFeedProviderPackage elemre , és válassza az Új mappa hozzáadása> lehetőséget. Nevezze el ezt a mappát ProviderAssets néven, mivel ez volt az Package.appxmanifest előző lépésben használt mappa. Itt fogjuk tárolni az ikont a hírcsatornáinkhoz. Miután hozzáadta a kívánt ikonokat, győződjön meg arról, hogy a képnevek megegyeznek a Path=ProviderAssets\ után megjelenő nevekkel, különben a hírcsatornák nem fognak megjelenni a widgettáblában.

A hírcsatorna-szolgáltató tesztelése

Győződjön meg arról, hogy kiválasztotta a fejlesztői gépnek megfelelő architektúrát a Megoldásplatformok legördülő listából, például "x64". A Megoldáskezelőben kattintson a jobb gombbal a megoldásra, és válassza a Megoldás létrehozása lehetőséget. Ha ez megtörtént, kattintson jobb gombbal az ExampleWidgetProviderPackage elemre, és válassza a Üzembe helyezéslehetőséget. A konzolalkalmazásnak üzembe helyezéskor kell elindulnia, és látni fogja, hogy a hírcsatornák engedélyezve lesznek a konzol kimenetében. Nyissa meg a Widgets Boardot, és az új hírcsatornákat a hírcsatornák szakasz tetején lévő füleken kell látnia.

A hírcsatorna-szolgáltató hibakeresése

Miután rögzítette a hírcsatornákat, a widgetplatform elindítja a hírcsatorna-szolgáltató alkalmazást, hogy releváns információkat kapjon és küldjön a hírcsatornáról. A futó hírcsatorna hibakereséséhez csatolhat egy hibakeresőt a futó hírcsatorna-szolgáltató alkalmazáshoz, vagy beállíthatja, hogy a Visual Studio automatikusan elindítsa a hírcsatorna-szolgáltatói folyamat hibakeresését az indítás után.

A futó folyamathoz való csatoláshoz:

  1. A Visual Studióban kattintson a(z) Hibakeresés -> Csatlakozásfolyamathoz.
  2. Szűrje a folyamatokat, és keresse meg a kívánt hírcsatorna-szolgáltató alkalmazást.
  3. Csatold a hibakeresőt.

Annak érdekében, hogy a hibakereső automatikusan csatolva legyen a folyamathoz az első indításkor:

  1. A Visual Studióban kattintson a Hibakeresés –> Egyéb hibakeresési célok –> Telepített alkalmazáscsomag hibakeresése elemre.
  2. Szűrje a csomagokat, és keresse meg a kívánt hírcsatorna-szolgáltatói csomagot.
  3. Válassza ki, és jelölje be a jelölőnégyzetet, amelynek szövege: "Ne induljon el, de végezzen hibakeresést, amikor a kód elindul".
  4. Kattintson az ésCsatolás gombra.

A konzolalkalmazás átalakítása Windows-alkalmazássá

Az ebben az útmutatóban létrehozott konzolalkalmazás windowsos alkalmazássá alakításához:

  1. Kattintson a jobb gombbal a ExampleWidgetProvider projektre a Megoldáskezelőben , és válassza a Tulajdonságok lehetőséget. Lépjen a Linker -> Rendszer részre, és módosítsa a AlsóRendszert "Konzol" értékről "Windows" értékre. Ez úgy is elvégezhető, hogy hozzáadjuk a <SubSystem>Windows</SubSystem>-t a <Link>..</Link> szakaszába a .vcxproj fájlban.
  2. A(z) main.cpp-ban módosítsa a int main() értéket int WINAPI wWinMain(_In_ HINSTANCE /*hInstance*/, _In_opt_ HINSTANCE /*hPrevInstance*/, _In_ PWSTR pCmdLine, _In_ int /*nCmdShow*/)-re.

Képernyőkép a C++ hírcsatorna-szolgáltató projekttulajdonságáról a Windows-alkalmazásra beállított kimeneti típussal

A hírcsatorna-szolgáltató alkalmazás közzététele

A hírcsatorna-szolgáltató fejlesztése és tesztelése után közzéteheti az alkalmazást a Microsoft Store-ban, hogy a felhasználók a hírcsatornákat az eszközeikre telepíthessék. Az alkalmazások közzétételével kapcsolatos részletes útmutatásért lásd : Alkalmazás közzététele a Microsoft Store-ban.

A Hírcsatornák tárgyűjteménye

Miután közzétette az alkalmazást a Microsoft Store-ban, kérheti, hogy az alkalmazás szerepeljen a Hírcsatornák Áruház gyűjteményében, amely segít a felhasználóknak felderíteni a Windows-hírcsatornákat tartalmazó alkalmazásokat. A kérés elküldéséhez tekintse meg a Hírcsatorna/Tábla beküldése a Store Gyűjteményhez.