JwaLmMsg.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:7k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Lan Manager Messages API interface Unit for Object Pascal                    }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: lmmsg.h, released November 2001. The original Pascal   } 
  9. { code is: LmMsg.pas, released Februari 2002. The initial developer of the     }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaLmMsg;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "lmmsg.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaLmCons, JwaWinType;
  52. //
  53. // Function Prototypes
  54. //
  55. function NetMessageNameAdd(servername, msgname: LPCWSTR): NET_API_STATUS; stdcall;
  56. {$EXTERNALSYM NetMessageNameAdd}
  57. function NetMessageNameEnum(servername: LPCWSTR; level: DWORD; var bufptr: LPBYTE; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resume_handle: LPDWORD): NET_API_STATUS; stdcall;
  58. {$EXTERNALSYM NetMessageNameEnum}
  59. function NetMessageNameGetInfo(servername, msgname: LPCWSTR; level: DWORD; var bufptr: LPBYTE): NET_API_STATUS; stdcall;
  60. {$EXTERNALSYM NetMessageNameGetInfo}
  61. function NetMessageNameDel(servername, msgname: LPCWSTR): NET_API_STATUS; stdcall;
  62. {$EXTERNALSYM NetMessageNameDel}
  63. function NetMessageBufferSend(servername, msgname, fromname: LPCWSTR; buf: LPBYTE; buflen: DWORD): NET_API_STATUS; stdcall;
  64. {$EXTERNALSYM NetMessageBufferSend}
  65. //
  66. //  Data Structures
  67. //
  68. type
  69.   _MSG_INFO_0 = record
  70.     msgi0_name: LPWSTR;
  71.   end;
  72.   {$EXTERNALSYM _MSG_INFO_0}
  73.   MSG_INFO_0 = _MSG_INFO_0;
  74.   {$EXTERNALSYM MSG_INFO_0}
  75.   PMSG_INFO_0 = ^MSG_INFO_0;
  76.   {$EXTERNALSYM PMSG_INFO_0}
  77.   LPMSG_INFO_0 = ^MSG_INFO_0;
  78.   {$EXTERNALSYM LPMSG_INFO_0}
  79.   TMsgInfo0 = MSG_INFO_0;
  80.   PMsgInfo0 = PMSG_INFO_0;
  81.   _MSG_INFO_1 = record
  82.     msgi1_name: LPWSTR;
  83.     msgi1_forward_flag: DWORD;
  84.     msgi1_forward: LPWSTR;
  85.   end;
  86.   {$EXTERNALSYM _MSG_INFO_1}
  87.   MSG_INFO_1 = _MSG_INFO_1;
  88.   {$EXTERNALSYM MSG_INFO_1}
  89.   PMSG_INFO_1 = ^MSG_INFO_1;
  90.   {$EXTERNALSYM PMSG_INFO_1}
  91.   LPMSG_INFO_1 = ^MSG_INFO_1;
  92.   {$EXTERNALSYM LPMSG_INFO_1}
  93.   TMsgInfo1 = MSG_INFO_1;
  94.   PMsgInfo1 = PMSG_INFO_1;
  95. //
  96. // Special Values and Constants
  97. //
  98. //
  99. // Values for msgi1_forward_flag.
  100. //
  101. const
  102.   MSGNAME_NOT_FORWARDED  = 0;      // Name not forwarded
  103.   {$EXTERNALSYM MSGNAME_NOT_FORWARDED}
  104.   MSGNAME_FORWARDED_TO   = $04;    // Name forward to remote station
  105.   {$EXTERNALSYM MSGNAME_FORWARDED_TO}
  106.   MSGNAME_FORWARDED_FROM = $10;    // Name forwarded from remote station
  107.   {$EXTERNALSYM MSGNAME_FORWARDED_FROM}
  108. implementation
  109. {$IFDEF DYNAMIC_LINK}
  110. var
  111.   _NetMessageNameAdd: Pointer;
  112. function NetMessageNameAdd;
  113. begin
  114.   GetProcedureAddress(_NetMessageNameAdd, netapi32, 'NetMessageNameAdd');
  115.   asm
  116.     mov esp, ebp
  117.     pop ebp
  118.     jmp [_NetMessageNameAdd]
  119.   end;
  120. end;
  121. {$ELSE}
  122. function NetMessageNameAdd; external netapi32 name 'NetMessageNameAdd';
  123. {$ENDIF DYNAMIC_LINK}
  124. {$IFDEF DYNAMIC_LINK}
  125. var
  126.   _NetMessageNameEnum: Pointer;
  127. function NetMessageNameEnum;
  128. begin
  129.   GetProcedureAddress(_NetMessageNameEnum, netapi32, 'NetMessageNameEnum');
  130.   asm
  131.     mov esp, ebp
  132.     pop ebp
  133.     jmp [_NetMessageNameEnum]
  134.   end;
  135. end;
  136. {$ELSE}
  137. function NetMessageNameEnum; external netapi32 name 'NetMessageNameEnum';
  138. {$ENDIF DYNAMIC_LINK}
  139. {$IFDEF DYNAMIC_LINK}
  140. var
  141.   _NetMessageNameGetInfo: Pointer;
  142. function NetMessageNameGetInfo;
  143. begin
  144.   GetProcedureAddress(_NetMessageNameGetInfo, netapi32, 'NetMessageNameGetInfo');
  145.   asm
  146.     mov esp, ebp
  147.     pop ebp
  148.     jmp [_NetMessageNameGetInfo]
  149.   end;
  150. end;
  151. {$ELSE}
  152. function NetMessageNameGetInfo; external netapi32 name 'NetMessageNameGetInfo';
  153. {$ENDIF DYNAMIC_LINK}
  154. {$IFDEF DYNAMIC_LINK}
  155. var
  156.   _NetMessageNameDel: Pointer;
  157. function NetMessageNameDel;
  158. begin
  159.   GetProcedureAddress(_NetMessageNameDel, netapi32, 'NetMessageNameDel');
  160.   asm
  161.     mov esp, ebp
  162.     pop ebp
  163.     jmp [_NetMessageNameDel]
  164.   end;
  165. end;
  166. {$ELSE}
  167. function NetMessageNameDel; external netapi32 name 'NetMessageNameDel';
  168. {$ENDIF DYNAMIC_LINK}
  169. {$IFDEF DYNAMIC_LINK}
  170. var
  171.   _NetMessageBufferSend: Pointer;
  172. function NetMessageBufferSend;
  173. begin
  174.   GetProcedureAddress(_NetMessageBufferSend, netapi32, 'NetMessageBufferSend');
  175.   asm
  176.     mov esp, ebp
  177.     pop ebp
  178.     jmp [_NetMessageBufferSend]
  179.   end;
  180. end;
  181. {$ELSE}
  182. function NetMessageBufferSend; external netapi32 name 'NetMessageBufferSend';
  183. {$ENDIF DYNAMIC_LINK}
  184. end.