// C RunTime Header Files #include #include #include #include #include #include #include #include #include #include #include #include // Local Header Files #include "resource.h" #define MAX_STATIONS 1024 // Foward declarations ////////////////////////////////////////////////////////////////////////////// ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK SndMsg(HWND, UINT, WPARAM, LPARAM); int CALLBACK Sort(LPARAM lParam1, LPARAM lParam2, LPARAM lParamColumn); int CDECL MessageBoxPrintf(TCHAR *szCaption, TCHAR *szFormat, ...); int FillList(int nMcIndex); BOOL MyInitDialog(HWND hwnd); void SetRegKey(int i, LONG * nKeyValue); void DeleteRegKey(int i); BOOL CheckForRegKey(int i); int GetRegKeyValue(int i); void ShowMyIcon(); ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// #define MAX_LEN (MAX_PATH + 1) #define MAX_LOADSTRING 200 #define COLUMNONEWIDTH 175 #define COLUMNTWOWIDTH 100 #define COLUMNTHREEWIDTH 124 #define COLUMNFOURWIDTH 100 //{"left", "top", "right", "bottom"}; #define LEFT 0 #define TOP 1 #define RIGHT 2 #define BOTTOM 3 #define GREEN 0 #define YELLOW 1 #define RED 2 //#define NONE 3 // Global Variables: ////////////////////////////////////////////////////////////////////////////// extern HINSTANCE hInst; // current instance extern TCHAR szTitle[MAX_LOADSTRING]; // The title bar text extern TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text extern TCHAR szAppName[]; extern HWND hWnd; extern HWND g_hListView; extern int g_ColumnOneIndex; extern int g_ColumnTwoIndex; extern int g_ColumnThreeIndex; extern int g_ColumnFourIndex; extern TCHAR * pszColumn; extern TCHAR * pszColumn2; extern TCHAR * pszColumn3; extern TCHAR * pszColumn4; extern TCHAR szMcNames [MAX_STATIONS][MAX_LEN]; extern TCHAR szMcAddress[MAX_STATIONS][MAX_LEN]; extern TCHAR szMcID [MAX_STATIONS][MAX_LEN]; extern TCHAR szBuild [MAX_STATIONS][MAX_LEN]; extern TCHAR tmp[sizeof(TCHAR) * 50]; extern TCHAR buf[sizeof(TCHAR) * 50]; extern TCHAR *DayOfWeek[]; extern TCHAR *KeyName[]; extern const TCHAR szWinStaKey[]; extern SYSTEMTIME lpSystemTime; extern HANDLE m_hThread; extern FILE *stream1; extern HMENU g_hMenu; ////////////////////////////////////////////////////////////////////////////// // tray stuff ////////////////////////////////////////////////////////////////////////////// #define ARRAYSIZE(x) ((sizeof(x) / sizeof(x[0]))) #define PM_QUITTRAYTHREAD WM_USER #define PWM_TRAYICON WM_USER + 1 #define PM_NOTIFYWAITING WM_USER + 2 #define PWM_ACTIVATE WM_USER + 3 #define PM_WINSTA WM_USER + 4 #define PM_REMOVEWINSTA WM_USER + 5 #define IDM_SYS_SHOW_ALL WM_USER + 6 #define IDM_SYS_ABOUT WM_USER + 7 #define FIND_TIMEOUT 5000 // Wait to to 5 seconds for a response // // Class to encapsulate all of the info needed to do a tray notification class CTrayNotification { public: CTrayNotification() { //ASSERT(0 && "Someone is using the default constuctor for CTrayNotification"); ZeroMemory(this, sizeof(*this)); } CTrayNotification(HWND hWnd, UINT uCallbackMessage, DWORD Message, HICON hIcon, LPTSTR pszTip) { m_hWnd = hWnd; m_uCallbackMessage = uCallbackMessage; m_Message = Message; m_hIcon = hIcon; if (pszTip) lstrcpyn(m_szTip, pszTip, ARRAYSIZE(m_szTip)); else m_szTip[0] = TEXT('\0'); } HWND m_hWnd; UINT m_uCallbackMessage; DWORD m_Message; HICON m_hIcon; TCHAR m_szTip[MAX_PATH]; }; extern CRITICAL_SECTION g_CSTrayThread; extern DWORD g_idTrayThread; extern HANDLE g_hTrayThread; extern HICON g_TrayIcons[]; extern UINT g_cTrayIcons; extern const UINT idTrayIcons[]; extern NOTIFYICONDATA NotifyIconData; extern DWORD g_idWinstaThread; extern HANDLE g_hWinstaThread; BOOL DeliverTrayNotification(CTrayNotification * pNot); DWORD TrayThreadMessageLoop(LPVOID); DWORD WinstaThreadMessageLoop(LPVOID); void GetWinStationInfo(void); void Tray_NotifyIcon(HWND hWnd, UINT uCallbackMessage, DWORD Message, HICON hIcon, LPCTSTR lpTip); void Tray_Notify(HWND hWnd, WPARAM wParam, LPARAM lParam); void ShowRunningInstance(); HMENU LoadPopupMenu(HINSTANCE hinst, UINT id); ////////////////////////////////////////////////////////////////////////////// // TS Session stuff ////////////////////////////////////////////////////////////////////////////// extern WTS_SESSION_INFO *ppSessionInfo; extern TCHAR *ppBuffer; extern DWORD pBytesReturned; extern DWORD pCount;