WinUI3: обработка события изменения сети на рабочем столе WinUI3 с помощью С++

Я работаю над настольным приложением WinUI3 на С++. Я проверял, как мы можем получить событие, когда сеть, к которой подключена система, меняется. Я наткнулся на событие NetworkInformation.NetworkStatusChanged. Но мне не удалось найти ни одного примера его реализации на C++.

NetworkStatusChangedEventHandler говорит, что у него есть один параметр, который является объектом IInspectable.

Я пытался

Static void NetworkStatusChange(winrt::Windows::Foundation::IInspectable const& sender);

Но это дало эту ошибку

*\Generated Files\winrt\Windows.Networking.Connectivity.h(2213,81): error C2297: '.*': not valid as right operand has type 'const M'

Не могли бы вы помочь мне с тем, как правильно реализовать событие NetworkStatusChanged в настольном приложении WinUI3 C++.

Спасибо.

Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот как это можно сделать с помощью C++/WinRT:

Добавьте это в pch.h:

#include <winrt/Windows.Networking.Connectivity.h>

Добавьте это где-нибудь в свой код:

// you can instead add a "using namespace Windows::Networking::Connectivity;"
// and use NetworkInformation directly if you prefer
Windows::Networking::Connectivity::NetworkInformation info{};
info.NetworkStatusChanged([=](auto&&...) // sender is not super interesting in this type of event so I've not declared it
{
    // do your stuff here
    MessageBox(nullptr, L"Something Changed!", L"Network", 0);
});

Если вы предпочитаете «сырой» способ C/C++, вот пример: Как асинхронно обнаруживать события изменения сети с помощью C++ WinRT

Raymond Chen 10.01.2023 18:37

Спасибо, это было очень полезно, не могли бы вы объяснить параметры [=] и (...), используемые в функции NetworkStatusChanged().

Harshith 11.01.2023 07:04

Raymond Chen 11.01.2023 21:05

@RaymondChen - Еще раз спасибо. Странно, я даже не видел предупреждения (learn.microsoft.com/en-us/cpp/error-messages/compiler-warni‌​ngs/… ) в окнах Output/ErrorList. (С++ лямбда настолько сложна по сравнению с С#...)

Simon Mourier 11.01.2023 21:15

Simon Mourier 11.01.2023 21:16

Другие вопросы по теме