InetTools.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:3k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // InetTools.h: interface for the CInetTools class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_INETTOOLS_H__7AED56F9_DE08_412A_AAFB_4E0B00DECB47__INCLUDED_)
  5. #define AFX_INETTOOLS_H__7AED56F9_DE08_412A_AAFB_4E0B00DECB47__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "wininet.h"
  10. #include "Styler.h"
  11. #pragma comment( lib, "wininet" )
  12. class CInetTools : public CObject  
  13. {
  14. public:
  15. static inline bool MtlIsGlobalOffline()
  16. {
  17. DWORD dwState = 0, dwSize = sizeof(DWORD);
  18. bool bRet = false;
  19. if(::InternetQueryOption(NULL, INTERNET_OPTION_CONNECTED_STATE, &dwState, &dwSize)) {
  20. if(dwState & INTERNET_STATE_DISCONNECTED_BY_USER)
  21. bRet = true;
  22. }
  23. return bRet; 
  24. }
  25. static inline void MtlSetGlobalOffline(bool bGoOffline)
  26. {
  27. if (MtlIsGlobalOffline() == bGoOffline)
  28. return;
  29. INTERNET_CONNECTED_INFO ci;
  30. memset(&ci, 0, sizeof(ci));
  31. if(bGoOffline) {
  32. ci.dwConnectedState = INTERNET_STATE_DISCONNECTED_BY_USER;
  33. ci.dwFlags = ISO_FORCE_DISCONNECTED;
  34. else {
  35. ci.dwConnectedState = INTERNET_STATE_CONNECTED;
  36. }
  37. ::InternetSetOption(NULL, INTERNET_OPTION_CONNECTED_STATE, &ci, sizeof(ci));
  38. }
  39. static BOOL GetFavoriteFolder(CString& strFav)
  40. {
  41. LPITEMIDLIST pidlFavorites = NULL;
  42. IMalloc * pMalloc = NULL;
  43. BOOL bResult = FALSE;
  44. HRESULT hr = SHGetMalloc(&pMalloc);
  45. if (SUCCEEDED(hr))
  46. {
  47. TCHAR szPath[MAX_PATH];
  48. HRESULT hr = SHGetSpecialFolderLocation(NULL, CSIDL_FAVORITES, &pidlFavorites);
  49. if (hr == NOERROR )
  50. {
  51. if (SHGetPathFromIDList( pidlFavorites,szPath))
  52. {
  53. strFav = szPath;
  54. bResult = TRUE;
  55. }
  56. }
  57. pMalloc->Free(pidlFavorites);
  58. pMalloc->Release();
  59. }
  60. TCHAR szPath[MAX_PATH];
  61. if (!bResult)
  62. {
  63. HKEY hKey;
  64. TCHAR sz[MAX_PATH];
  65. // find out from the registry where the favorites are located.
  66. if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"), &hKey) == ERROR_SUCCESS)
  67. {
  68. DWORD dwSize = MAX_PATH;
  69. RegQueryValueEx(hKey, _T("Favorites"), NULL, NULL, (LPBYTE)sz, &dwSize);
  70. ExpandEnvironmentStrings(sz, szPath, MAX_PATH);
  71. RegCloseKey(hKey);
  72. strFav = szPath;
  73. bResult = dwSize != 0;
  74. }
  75. }
  76. if (!bResult)
  77. {
  78. GetWindowsDirectory (szPath, MAX_PATH); 
  79. strFav = szPath;
  80. strFav += "\Favorites";
  81. }
  82. return TRUE;
  83. }
  84. static inline void MtlOrganizeFavorite(HWND hWnd)
  85. {
  86. HINSTANCE hLib = ::LoadLibrary(_T("shdocvw.dll"));
  87. if (hLib) 
  88. {
  89. typedef UINT (CALLBACK* LPFNORGFAV)(HWND, LPTSTR);
  90. #ifdef _UNICODE
  91. LPFNORGFAV lpfnDoOrganizeFavDlg = (LPFNORGFAV)::GetProcAddress(hLib, "DoOrganizeFavDlgW");
  92. #else
  93. LPFNORGFAV lpfnDoOrganizeFavDlg = (LPFNORGFAV)::GetProcAddress(hLib, "DoOrganizeFavDlg");
  94. #endif
  95. if (lpfnDoOrganizeFavDlg) 
  96. {
  97. CString strFav;
  98. if (GetFavoriteFolder(strFav))
  99. {
  100. lpfnDoOrganizeFavDlg(hWnd, (LPTSTR)(LPCTSTR)strFav);
  101. }
  102. }
  103. ::FreeLibrary(hLib);
  104. }
  105. }
  106. static void SetStyleSheet(BOOL bSet, BOOL bUpdate);
  107. };
  108. extern CInetTools InetTools;
  109. #endif // !defined(AFX_INETTOOLS_H__7AED56F9_DE08_412A_AAFB_4E0B00DECB47__INCLUDED_)