#ifndef MISC_H #define MISC_H #ifndef MAX #define MAX(x,y) (((x) > (y)) ? (x) : (y)) #endif #ifndef MIN #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #endif #define GetDlgItemTextLength(hwnd, id) \ GetWindowTextLength(GetDlgItem(hwnd, id)) #define WIZARDNEXT(hwnd, to) \ SetWindowLongPtr(hwnd, DWLP_MSGRESULT, (LPARAM)to) // wait cursor management class CWaitCursor { public: CWaitCursor(); ~CWaitCursor(); void WaitCursor(); void RestoreCursor(); private: HCURSOR _hCursor; }; HRESULT BrowseToPidl(LPCITEMIDLIST pidl); void FetchText(HWND hWndDlg, UINT uID, LPTSTR lpBuffer, DWORD dwMaxSize); INT FetchTextLength(HWND hWndDlg, UINT uID); HRESULT AttemptLookupAccountName(LPCTSTR szUsername, PSID* ppsid, LPTSTR szDomain, DWORD* pcchDomain, SID_NAME_USE* psUse); int DisplayFormatMessage(HWND hwnd, UINT idCaption, UINT idFormatString, UINT uType, ...); BOOL FormatMessageString(UINT idTemplate, LPTSTR pszStrOut, DWORD cchSize, ...); BOOL FormatMessageTemplate(LPCTSTR pszTemplate, LPTSTR pszStrOut, DWORD cchSize, ...); void MakeDomainUserString(LPCTSTR szDomain, LPCTSTR szUsername, LPTSTR szDomainUser, DWORD cchBuffer); void DomainUserString_GetParts(LPCTSTR szDomainUser, LPTSTR szUser, DWORD cchUser, LPTSTR szDomain, DWORD cchDomain); BOOL GetCurrentUserAndDomainName(LPTSTR UserName, LPDWORD cchUserName, LPTSTR DomainName, LPDWORD cchDomainName); HRESULT IsUserLocalAdmin(HANDLE TokenHandle OPTIONAL, BOOL* pfIsAdmin); BOOL IsComputerInDomain(); LPITEMIDLIST GetComputerParent(); void EnableControls(HWND hwnd, const UINT* prgIDs, DWORD cIDs, BOOL fEnable); void OffsetControls(HWND hwnd, const UINT* prgIDs, DWORD cIDs, int dx, int dy); void OffsetWindow(HWND hwnd, int dx, int dy); HFONT GetIntroFont(HWND hwnd); void CleanUpIntroFont(); void RemoveControl(HWND hwnd, UINT idControl, UINT idNextControl, const UINT* prgMoveControls, DWORD cControls, BOOL fShrinkParent); void MoveControls(HWND hwnd, const UINT* prgControls, DWORD cControls, int dx, int dy); int SizeControlFromText(HWND hwnd, UINT id, LPTSTR psz); void EnableDomainForUPN(HWND hwndUsername, HWND hwndDomain); int PropertySheetIcon(LPCPROPSHEETHEADER ppsh, LPCTSTR pszIcon); // Stuff for the callback for IShellPropSheetExt::AddPages #define MAX_PROPSHEET_PAGES 10 struct ADDPROPSHEETDATA { HPROPSHEETPAGE rgPages[MAX_PROPSHEET_PAGES]; int nPages; }; BOOL AddPropSheetPageCallback(HPROPSHEETPAGE hpsp, LPARAM lParam); // single instance management class CEnsureSingleInstance { public: CEnsureSingleInstance(LPCTSTR szCaption); ~CEnsureSingleInstance(); BOOL ShouldExit() { return m_fShouldExit;} private: BOOL m_fShouldExit; HANDLE m_hEvent; }; // BrowseForUser // S_OK = Username/Domain are Ok // S_FALSE = User clicked cancel // E_xxx = Error HRESULT BrowseForUser(HWND hwndDlg, TCHAR* pszUser, DWORD cchUser, TCHAR* pszDomain, DWORD cchDomain); int CALLBACK ShareBrowseCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData); // Passport functions - implemented in PassportMisc.cpp #define PASSPORTURL_REGISTRATION L"RegistrationUrl" #define PASSPORTURL_LOGON L"LoginServerUrl" #define PASSPORTURL_PRIVACY L"Privacy" HRESULT PassportGetURL(PCWSTR pszName, PWSTR pszBuf, PDWORD pdwBufLen); VOID PassportForceNexusRepopulate(); // Launch ICW if it hasn't been run yet void LaunchICW(); // LookupLocalGroupName - retrieves a local group name for a given RID. // RID is one of these: // DOMAIN_ALIAS_RID_ADMINS // DOMAIN_ALIAS_RID_USERS // DOMAIN_ALIAS_RID_GUESTS // DOMAIN_ALIAS_RID_POWER_USERS // etc... (look in the SDK for other groups) HRESULT LookupLocalGroupName(DWORD dwRID, LPWSTR pszName, DWORD cchName); #endif //!MISC_H