wlmplugin.h
上传用户:kittypts
上传日期:2018-02-11
资源大小:241k
文件大小:5k
源码类别:

PlugIns编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. Windows Live Messenger Plugin Demo
  3. Copyright (C) 2008  Hern醤 Di Pietro
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program.  If not, see <http://www.gnu.org/licenses/>.
  14. /*****************************************************************************/
  15. #ifndef MSNHACKLIB_H
  16. #define MSNHACKLIB_H
  17. #define WIN32_LEAN_AND_MEAN
  18. // Target Windows Messenger version of this library
  19. //
  20. #define WLM_VERSION_MAJOR 8
  21. #define WLM_VERSION_MINOR 5
  22. /*#define WLM_VERSION_BUILD 0
  23. #define WLM_VERSION_REV 0*/
  24. #include <windows.h>
  25. #include <list>
  26. #include <map>
  27. #include "utility.h"
  28. #include "hooking.h"
  29. #include "resmgr.h"
  30. #include "acdisp.h"
  31. // Messenger API Typelib
  32. #import "../tlbs/MSNMessengerAPI.tlb" named_guids
  33. // Global instance handle for the injected DLL
  34. extern HINSTANCE hDllInst;
  35. // Resource DLL name
  36. const WCHAR wszResourceDll[] = L"resdll.dll";
  37. // Exports
  38. #ifdef __cplusplus
  39. extern "C"
  40. {
  41. #endif
  42. void InitDLL (void);
  43. #ifdef __cplusplus
  44. }
  45. #endif // __cplusplus
  46. // ---------------------------------------------------------------------------
  47. // Declarations for WLM 
  48. // ---------------------------------------------------------------------------
  49. const WCHAR wszWlmMainWndClass[] = L"MSBLWindowClass";
  50. const WCHAR wszWlmMainWndName[] = L"Windows Live Messenger";
  51. const WCHAR wszWlmDUIWndClass[] = L"DirectUIHWND";
  52. // WLM top level window struct
  53. typedef struct 
  54. {
  55. const WCHAR* szWndClass;
  56. const WCHAR* szWndName;
  57. WNDPROC pfnOldWndProc;
  58. HWND hwnd;
  59. bool fCreated;
  60. BOOL fEnableInfoWnd;
  61. HWINEVENTHOOK hwevh;
  62. } WLM_TOPWINDOW;
  63. // WLM "DirectUI" Window 
  64. typedef struct
  65. {
  66. const WCHAR* szWndClass;
  67. HWND hwnd;
  68. } WLM_DIRECTUIWINDOW;
  69. // Contact Info Window
  70. typedef struct 
  71. {
  72. HWND hwnd;
  73. LONG lTop, lLeft;
  74. COLORREF crBase;
  75. WCHAR* wszContactID;
  76. WCHAR* wszFriendlyName;
  77. MSNMessenger::MISTATUS msStatus;
  78. VARIANT_BOOL fBlocked;
  79. VARIANT_BOOL fCanPage;
  80. WCHAR* wszMobilePhone;
  81. WCHAR* wszHomePhone;
  82. WCHAR* wszWorkPhone;
  83. } WLM_CONTACTINFOWINDOW;
  84. // WLM interface pointers
  85. typedef struct
  86. {
  87. MSNMessenger::IMSNMessenger* pIMsn;
  88. } WLM_IFACES;
  89. // Toolbar button properties structure
  90. typedef struct tagWLMTOOLBARBUTTON
  91. {
  92. BOOL fExtBitmap; // TRUE if bitmap comes from external DLL,
  93. // FALSE if bitmap comes from WLM Res Type #4000
  94. HMODULE hModule; // Module if bitmap loaded from resource DLL
  95. WCHAR wszResType[MAXSTRL]; // Resource type in resource DLL (e.g "PNG")
  96. UINT uResID; // Resource ID from resource DLL, or image ID from 
  97. // WLM Resource #4000
  98. UINT uPosition; // Insert button in front or back of toolbar
  99. char szButtonId[MAXSTRL]; // Unique Button ID
  100. WCHAR wszButtonId[MAXSTRL]; // WCHAR string of szButtonID (for action)
  101. char szTButtonId[MAXSTRL]; // Unique toolbar button ID (different from szButtonId)
  102. char szTooltip[MAXSTRL]; // Tooltip String
  103. PFNBTNPROC pfnAct; // Pointer to function when button is pressed
  104. } WLM_TOOLBARBUTTON;
  105. // Position of added WLM toolbar buttons 
  106. #define TB_INSERT_FIRST 0
  107. #define TB_INSERT_LAST 1
  108. #if ((WLM_VERSION_MAJOR == 0x8) && (WLM_VERSION_MINOR == 0x5))
  109. #define TB_INSERT_FIRST_BYTE 0x1524
  110. /*#define TB_INSERT_LAST_BYTE 0x1e05*/
  111. #define WLMRES_STYLE_INSERT_POS 23
  112. #endif
  113. //
  114. // IDs for resource hooking
  115. // "DirectUI" resources (see resids.txt on project root)
  116. //
  117. #define WLMRES_XMLUI 4004
  118. #define WLMRES_XMLSTYLE 4005
  119. #define WLMRES_BITMAPS 4000
  120. #define WLMRES_CONTACT_LIST 923
  121. // Standard Win32 Resources
  122. #define ID_MENU_DEMO_ABOUT 60000
  123. #define ID_MENU_MSNHACK_IAC1 60001
  124. #define ID_MENU_DISPLAY_CONTACTINFO 60002
  125. // starting number for new resources
  126. #define RESOURCE_ID_BASE 63000
  127. // forward declarations for globals
  128. extern WLM_TOPWINDOW g_wlmTopWindow;
  129. extern WLM_DIRECTUIWINDOW g_DUIWindow;
  130. extern WLM_CONTACTINFOWINDOW g_wlmContactInfoWindow;
  131. extern WLM_IFACES g_wlmIfaces;
  132. extern HookList     g_hookList;
  133. extern CResourceManager g_resMgr;
  134. extern CActionDispatcher g_actDisp;
  135. extern HMODULE hResLib;
  136. //
  137. // function prototypes
  138. //
  139. LRESULT CALLBACK WlmWndProc(HWND, UINT, WPARAM, LPARAM);
  140. void CALLBACK HandleWinEvent(HWINEVENTHOOK, DWORD , HWND, LONG, LONG, DWORD, DWORD );
  141. void AddToolbarButtons (WLM_TOOLBARBUTTON*, UINT, char*, char*, size_t, size_t );
  142. #endif // MSNHACKLIB_H