12#define NETTIMERID 0xFABC
13#define NETTIMERINTERVAL 1000
14#define WPARAM_MAGIC MAKELONG(MAKEWORD('L', 'S'), MAKEWORD('T', 'I'))
46 DWORD DurationSeconds;
65 else if (IfEntry->
dwSpeed < 1000000)
73 else if (IfEntry->
dwSpeed < 1000000000)
106 DurationSeconds = Ticks / 1000;
107 TimeConnected.
wSecond = (DurationSeconds % 60);
108 TimeConnected.
wMinute = (DurationSeconds / 60) % 60;
109 TimeConnected.
wHour = (DurationSeconds / (60 * 60)) % 24;
110 TimeConnected.
wDay = DurationSeconds / (60 * 60 * 24);
115 if (!TimeConnected.
wDay)
121 if (TimeConnected.
wDay == 1)
124 DayBuffer[0] =
L'\0';
129 DayBuffer[0] =
L'\0';
141 if (
FAILED(
ctx.pNet->GetProperties(&pProps)))
233 if (pContext->
Status != 4)
241 if (pContext->
Status != 5)
248 if (hwndDlg && IconRes)
316 lc.
fmt = LVCFMT_FIXED_WIDTH;
356 li.pszText = szBuffer;
363 }
while (
pCur &&
pCur->IpAddress.String[0]);
380 li.pszText = szBuffer;
396 UINT nCharDate, nCharTime;
399 st.
wYear = pTM->tm_year + 1900;
400 st.
wMonth = pTM->tm_mon + 1;
401 st.
wDay = pTM->tm_mday;
402 st.
wHour = pTM->tm_hour;
467 pCurAdapter = pAdapterInfo;
469 pCurAdapter = pCurAdapter->
Next;
480 li.pszText = szBuffer;
518 struct tm *leaseOptained;
529 struct tm *leaseExpire;
586 WCHAR szBuffer[100] = {0};
603 szBuffer[(
sizeof(szBuffer)/
sizeof(
WCHAR))-1] =
L'\0';
771 pCurAdapter = pAdapterInfo;
772 while (pCurAdapter->
Index != dwAdapterIndex)
773 pCurAdapter = pCurAdapter->
Next;
837 if (hppages[pinfo.
nPages])
859 if (!pContext || !pContext->pNet)
888 HRESULT hr = pContext->pNet->GetProperties(&pProps);
938 WCHAR szMenuItem[128];
982 else if (
ctx.nIDEvent)
1011 if (pContext && pContext->
nIDEvent)
1078 if (!pContext || !pContext->
pNet)
1143 TRACE(
"InitializeNetTaskbarNotifications\n");
1167 pItem = pItem->
pNext;
1184 hr = pEnumCon->Next(1, &pNetCon, &
Count);
1188 TRACE(
"new connection\n");
1202 pContext->
pNet = pNetCon;
1207 pItem->
pNet = pNetCon;
1212 ERR(
"CreateDialogParamW failed\n");
1224 hr = pNetCon->GetProperties(&pProps);
1246 pContext->hwndStatusDlg = hwndDlg;
1252 pLast->
pNext = pItem;
1261 ERR(
"Shell_NotifyIconW failed\n");
1286 pItem = pItem->
pNext;
1296 const GUID *pguidCmdGroup,
1308 const GUID *pguidCmdGroup,
1316 if (
IsEqualGUID(*pguidCmdGroup, CGID_ShellServiceObject))
#define IID_PPV_ARG(Itype, ppType)
void ReleaseBuffer(_In_ int nNewLength=-1)
HRESULT InitializeNetTaskbarNotifications()
CComPtr< INetConnectionManager > m_lpNetMan
NOTIFICATION_ITEM * m_pHead
STDMETHOD() Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) override
HRESULT ShowStatusDialogByCLSID(const GUID *pguidCmdGroup)
STDMETHOD() QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText) override
BOOL GetAdapterIndexFromNetCfgInstanceId(PIP_ADAPTER_INFO pAdapterInfo, LPWSTR szNetCfg, PDWORD pIndex)
HRESULT WINAPI CNetConnectionManager_CreateInstance(REFIID riid, LPVOID *ppv)
#define IDD_LAN_NETSTATUSDETAILS
#define TRAYICONWINDOWCAPTIONW
#define IDS_NET_PROPERTIES
#define IDD_LAN_NETSTATUS
#define IDM_NETICON_ENABLE
#define IDS_NET_DEACTIVATE
#define IDM_NETICON_DISABLE
#define IDC_STATUS_PROPERTIES
#define IDS_STATUS_CONNECTED
#define IDC_DETAILSGATEWAY
#define IDS_ASSIGNED_MANUAL
#define IDM_NETICON_PROPERTIES
#define IDS_NET_OPEN_CONNECTIONS
#define IDS_DURATION_DAYS
#define IDD_LAN_NETSTATUSADVANCED
#define IDS_ASSIGNED_DHCP
#define IDC_DETAILSSUBNET
#define IDS_LEASE_EXPIRES
#define IDM_NETICON_STATUS
#define IDS_PHYSICAL_ADDRESS
#define IDM_NETICON_REPAIR
#define IDS_LEASE_OBTAINED
#define IDS_STATUS_DISCONNECTED
#define IDM_NETICON_OPEN_CONNECTIONS
#define IDS_STATUS_UNREACHABLE
#define IDS_STATUS_CONNECTING
HRESULT WINAPI StringFromCLSID(REFCLSID clsid, LPOLESTR *str)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
#define ERROR_NOT_SUPPORTED
#define MultiByteToWideChar
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
static struct tm * localtime(const time_t *t)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
#define FAILED_UNEXPECTEDLY
PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER pAddr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HRESULT GetProperties([out] NETCON_PROPERTIES **ppProps)
DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow)
DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen)
#define MIB_IF_OPER_STATUS_DISCONNECTED
#define MIB_IF_OPER_STATUS_CONNECTED
#define MIB_IF_OPER_STATUS_NON_OPERATIONAL
#define MIB_IF_OPER_STATUS_UNREACHABLE
#define MIB_IF_OPER_STATUS_OPERATIONAL
static BOOL tmToStr(IN struct tm *pTM, OUT LPWSTR szBuffer, IN UINT nBufferSize)
VOID ShowStatusPropertyDialog(LANSTATUSUI_CONTEXT *pContext, HWND hwndDlg)
VOID InitializeLANStatusUiDlg(HWND hwndDlg, LANSTATUSUI_CONTEXT *pContext)
INT_PTR CALLBACK LANStatusUiDetailsDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID UpdateLanStatusUiDlg(HWND hwndDlg, MIB_IFROW *IfEntry, LANSTATUSUI_CONTEXT *pContext)
static INT InsertItemToListView(HWND hDlgCtrl, UINT ResId)
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
INT_PTR CALLBACK LANStatusUiAdvancedDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static BOOL CALLBACK RefreshNetTaskbarNotificationIconEnumProc(HWND hWnd, LPARAM lParam)
static VOID UpdateNotificationIcon(LANSTATUSUI_CONTEXT &ctx, UINT IconRes=0)
static VOID AddIPAddressToListView(HWND hDlgCtrl, PIP_ADDR_STRING pAddr, INT Index)
INT_PTR CALLBACK LANStatusUiDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static VOID InsertColumnToListView(HWND hDlgCtrl, UINT ResId, UINT SubItem, UINT Size)
INT_PTR CALLBACK LANStatusDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID DisableNetworkAdapter(INetConnection *pNet, LANSTATUSUI_CONTEXT *pContext, HWND hwndDlg)
static void ConfigureNotificationIconTimer(LANSTATUSUI_CONTEXT &ctx)
VOID InitializePropertyDialog(LANSTATUSUI_CONTEXT *pContext, NETCON_PROPERTIES *pProperties)
static void EnumNotificationIconWindows(WNDENUMPROC Func, LPARAM lParam=0)
static VOID UpdateLanStatus(HWND hwndDlg, LANSTATUSUI_CONTEXT *pContext)
void RefreshNetTaskbarNotificationIcon()
VOID ShowNetworkIconContextMenu(_In_ HWND hwndOwner, _In_ LANSTATUSUI_CONTEXT *pContext)
HRESULT RepairConnection(INetConnection *pNet, HWND hwndOwner)
#define WM_CONFIGURETRAYICON
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define _swprintf(buf, format,...)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
@ NCS_AUTHENTICATION_SUCCEEDED
HPROPSHEETPAGE InitializePropertySheetPage(LPWSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
HINSTANCE netshell_hInstance
VOID WINAPI NcFreeNetconProperties(NETCON_PROPERTIES *pProps)
#define LOCALE_USER_DEFAULT
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
#define MAKEINTRESOURCE(i)
#define PropSheet_PressButton(d, i)
struct _PROPSHEETHEADERW PROPSHEETHEADERW
struct _PSHNOTIFY * LPPSHNOTIFY
#define FOURTH_IPADDRESS(x)
#define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw)
#define FIRST_IPADDRESS(x)
#define LVS_EX_FULLROWSELECT
#define ListView_GetItemCount(hwnd)
#define SECOND_IPADDRESS(x)
#define LVM_INSERTCOLUMNW
#define THIRD_IPADDRESS(x)
#define IsEqualGUID(rguid1, rguid2)
HRESULT ShowNetConnectionProperties(INetConnection *pNetConnect, HWND hwnd)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]
struct _IP_ADAPTER_INFO * Next
IP_ADDR_STRING SecondaryWinsServer
IP_ADDR_STRING IpAddressList
IP_ADDR_STRING DhcpServer
IP_ADDR_STRING GatewayList
IP_ADDR_STRING PrimaryWinsServer
IP_ADDRESS_STRING IpAddress
IP_ADDR_STRING DnsServerList
INTERNAL_IF_OPER_STATUS dwOperStatus
struct _SINGLE_LIST_ENTRY * Next
NETCON_MEDIATYPE MediaType
struct tagNotificationItem * pNext
BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW pnid)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
u_long WINAPI inet_addr(const char *str)
#define ERROR_BUFFER_OVERFLOW
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
HWND WINAPI CreateDialogParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
HMENU WINAPI CreatePopupMenu(void)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI SetForegroundWindow(_In_ HWND)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI TrackPopupMenuEx(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _In_ HWND, _In_opt_ LPTPMPARAMS)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI FindWindowExW(_In_opt_ HWND, _In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define MAKEINTRESOURCEW(i)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL(CALLBACK * WNDENUMPROC)(HWND, LPARAM)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
BOOL WINAPI BringWindowToTop(_In_ HWND)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI DestroyIcon(_In_ HICON)