WinUI3 : Handle network change event in WinUI3 desktop with c++

225 Views Asked by At

I'm working on the WinUI3 desktop application in C++. I was checking how we can get an event when the network to which system is connected to changes. I came across NetworkInformation.NetworkStatusChanged event. But I was not able to find any example of its implementation in C++.

NetworkStatusChangedEventHandler says it has one parameter which is IInspectable object.

i tried

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

But it gave this error

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

Can you please help me with help me with how to implement NetworkStatusChanged event in WinUI3 C++ desktop application correctly.

Thank you.

1

There are 1 best solutions below

5
On BEST ANSWER

This is how you can do it with C++/WinRT:

add this into the pch.h:

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

add this somewhere in your code:

// 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);
});

If you prefer the "raw" C/C++ way, there's an example here: How to detect network change events asynchronously using c++ WinRT