home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / winhooks.def < prev    next >
Text File  |  1994-07-07  |  10KB  |  248 lines

  1. DEFINITION MODULE WINHOOKS;
  2.  
  3. (************************************************************************
  4.   OS/2 2.1 interface for Presentation Manager hook manager.
  5.  
  6.   Copyright (c) 1992,1994 by Juergen Neuhoff
  7. *************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. IMPORT SYSTEM;
  14. FROM   OS2DEF        IMPORT HAB, HWND, HMQ,  HDC, HMODULE;
  15. FROM   OS2DEF        IMPORT TYPEPREFIX, BOOL32, RECTL, PFN;
  16. FROM   WINDEF        IMPORT MPARAM, PFNWP;
  17. FROM   WINMESSAGEMGR IMPORT QMSG;
  18. FROM   WINLOAD       IMPORT HLIB;
  19.  
  20. PROCEDURE WinSetHook
  21. ( AnchorBlockHandle         : HAB;
  22.   MsgQueueHandle            : HMQ;
  23.   HookType                  : LONGINT;
  24.   HookProc                  : PFN;
  25.   ModHandle                 : HMODULE
  26. )                           : BOOLEAN;
  27.  
  28. PROCEDURE WinReleaseHook
  29. ( AnchorBlockHandle         : HAB;
  30.   MsgQueueHandle            : HMQ;
  31.   HookType                  : LONGINT;
  32.   HookProc                  : PFN;
  33.   ModHandle                 : HMODULE
  34. )                           : BOOLEAN;
  35.  
  36. PROCEDURE WinCallMsgFilter
  37. ( AnchorBlockHandle         : HAB;
  38.   VAR QueueMsg              : QMSG;
  39.   Filter                    : LONGCARD
  40. )                           : BOOLEAN;
  41.  
  42. CONST (* hook procedure type codes *)
  43.   HK_SENDMSG                = 0;
  44.   HK_INPUT                  = 1;
  45.   HK_MSGFILTER              = 2;
  46.   HK_JOURNALRECORD          = 3;
  47.   HK_JOURNALPLAYBACK        = 4;
  48.   HK_HELP                   = 5;
  49.   HK_LOADER                 = 6;
  50.   HK_REGISTERUSERMSG        = 7;
  51.   HK_MSGCONTROL             = 8;
  52.   HK_PLIST_ENTRY            = 9;
  53.   HK_PLIST_EXIT             = 10;
  54.   HK_FINDWORD               = 11;
  55.   HK_CODEPAGECHANGED        = 12;
  56.   HK_WINDOWDC               = 15;
  57.   HK_DESTROYWINDOW          = 16;
  58.   HK_CHECKMSGFILTER         = 20;
  59.   HK_MSGINPUT               = 21;
  60.   HK_LOCKUP                 = 23;
  61.   HK_FLUSHBUF               = 24;
  62.  
  63. TYPE (* send-message structure *)
  64.   SMHSTRUCT                 = RECORD (* smhs *)
  65.     CASE                      : TYPEPREFIX OF
  66.     | TRUE                    :
  67.       mp2                     : MPARAM;
  68.       mp1                     : MPARAM;
  69.       msg                     : LONGCARD;
  70.       hwnd                    : HWND;
  71.       model                   : LONGCARD;
  72.     | FALSE                   :
  73.       MParam1                 : MPARAM;
  74.       MParam2                 : MPARAM;
  75.       Msg                     : LONGCARD;
  76.       WinHandle               : HWND;
  77.       Model                   : LONGCARD;
  78.     END;                      END;
  79.   PSMHSTRUCT                = POINTER TO SMHSTRUCT;
  80.  
  81. CONST (* constant values for SMHSTRUCT.Model *)
  82.   PM_MODEL_1X               = 0;
  83.   PM_MODEL_2X               = 1;
  84.  
  85.  
  86. TYPE (* Hook procedure types according to HK_... *)
  87.  
  88.   SendMsgHookT = PROCEDURE          (* HK_SENDMSG        *)
  89.   ( HAB,                            (* AnchorBlockHandle *) 
  90.     VAR SMHSTRUCT,                  (* SendMsg           *) 
  91.     BOOLEAN                         (* InterTask         *) 
  92.   );
  93.  
  94.   InputHookT = PROCEDURE            (* HK_INPUT          *)
  95.   ( HAB,                            (* AnchorBlockHandle *) 
  96.     VAR QMSG,                       (* QueueMsg          *) 
  97.     LONGCARD                        (* RemoveFlag        *) 
  98.   ) : BOOLEAN;
  99.  
  100.   MsgFilterHookT = PROCEDURE        (* HK_MSGFILTER      *)
  101.   ( HAB,                            (* AnchorBlockHandle *) 
  102.     VAR QMSG,                       (* QueueMsg          *) 
  103.     LONGCARD                        (* FilterFlag        *) 
  104.   ) : BOOLEAN;
  105.  
  106.   JournalRecordHookT = PROCEDURE    (* HK_JOURNALRECORD  *)
  107.   ( HAB,                            (* AnchorBlockHandle *) 
  108.     VAR QMSG                        (* QueueMsg          *) 
  109.   );
  110.  
  111.   JournalPlaybackHookT = PROCEDURE  (* HK_JOURNALPLAYBACK *)
  112.   ( HAB,                            (* AnchorBlockHandle  *) 
  113.     BOOLEAN,                        (* MsgSkip            *) 
  114.     VAR  QMSG                       (* QueueMsg           *)
  115.   ) : LONGCARD;
  116.  
  117.   HelpHookT = PROCEDURE             (* HK_HELP           *)
  118.   ( HAB,                            (* AnchorBlockHandle *) 
  119.     LONGCARD,                       (* Mode              *) 
  120.     LONGCARD,                       (* MainTopic         *) 
  121.     LONGCARD,                       (* SubTopic          *) 
  122.     VAR RECTL                       (* Position          *)     
  123.   ) : BOOLEAN;
  124.  
  125.   LoaderHookT = PROCEDURE           (* HK_LOADER         *)
  126.   ( HAB,                            (* AnchorBlockHandle *) 
  127.     LONGINT,                        (* ContextId         *) 
  128.     ARRAY OF CHAR,                  (* LibName           *) 
  129.     VAR HLIB,                       (* LibHandle         *) 
  130.     ARRAY OF CHAR,                  (* ProcName          *) 
  131.     PFNWP                           (* WinProc           *) 
  132.   ) : BOOLEAN;
  133.  
  134.   RegisterUserHookT = PROCEDURE     (* HK_REGISTERUSERMSG *)
  135.   ( HAB,                            (* AnchorBlockHandle  *) 
  136.     LONGCARD,                       (* RMPCount           *) 
  137.     VAR  ARRAY OF LONGCARD,         (* RMP                *)    
  138.     VAR  ARRAY OF BOOL32            (* Registered         *)    
  139.   ) : BOOLEAN;
  140.  
  141.   MsgControlHookT = PROCEDURE       (* HK_MSGCONTROL     *)
  142.   ( HAB,                            (* AnchorBlockHandle *) 
  143.     LONGINT,                        (* ContextId         *) 
  144.     HWND,                           (* SEIWinHandle      *) 
  145.     ARRAY OF CHAR,                  (* ClassName         *) 
  146.     LONGCARD,                       (* MsgClass          *) 
  147.     LONGINT,  (* SMI_... *)         (* ControlId         *) 
  148.     VAR BOOL32                      (* Success           *) 
  149.   ) : BOOLEAN;
  150.  
  151.   ProgramListEntryHookT = PROCEDURE (* HK_PLIST_ENTRY    *)
  152.   ( HAB,                            (* AnchorBlockHandle *) 
  153.     VAR ARRAY OF SYSTEM.BYTE,       (* ProfileHkParm     *)    
  154.     VAR BOOL32                      (* NoExecute         *)    
  155.   ) : BOOLEAN;
  156.  
  157.   ProgramListExitHookT = PROCEDURE  (* HK_PLIST_EXIT     *)
  158.   ( HAB,                            (* AnchorBlockHandle *)
  159.     VAR ARRAY OF SYSTEM.BYTE        (* ProfileHkParm     *) 
  160.   ) : BOOLEAN;
  161.  
  162.   FindWordHookT = PROCEDURE         (* HK_FINDWORD   *)
  163.   ( CARDINAL,                       (* CodePage      *) 
  164.     VAR ARRAY OF CHAR,              (* Text          *)
  165.     LONGCARD,                       (* TextMax       *) 
  166.     LONGCARD,                       (* BreakPos      *) 
  167.     VAR LONGCARD,                   (* BreakStarted  *)  
  168.     VAR LONGCARD,                   (* BreakEnded    *)  
  169.     VAR LONGCARD                    (* NextWordPos   *)  
  170.   ) : BOOLEAN;
  171.  
  172.   CodePageChangedHookT = PROCEDURE  (* HK_CODEPAGECHANGED *)
  173.   ( HMQ,                            (* MsgQueueHandle     *) 
  174.     LONGCARD,                       (* OldCodePage        *) 
  175.     LONGCARD                        (* NewCodePage        *) 
  176.   );
  177.  
  178.   WindowDCHookT = PROCEDURE         (* HK_WINDOWDC        *)
  179.   ( HAB,                            (* AnchorBlockHandle  *)
  180.     HDC,                            (* DevContextHandle   *)
  181.     HWND,                           (* WinHandle          *)
  182.     BOOLEAN                         (* Association        *)
  183.   ) : BOOLEAN;
  184.  
  185.   DestroyWindowHookT = PROCEDURE    (* HK_DESTROYWINDOW  *)
  186.   ( HAB,                            (* AnchorBlockHandle *) 
  187.     HWND,                           (* WinHandle         *) 
  188.     LONGCARD                        (* Reserved          *) 
  189.   ) : BOOLEAN;
  190.  
  191.   CheckMsgFilteHookT = PROCEDURE    (* HK_CHECKMSGFILTER *)
  192.   ( HAB,                            (* AnchorBlockHandle *)
  193.     VAR QMSG,                       (* QueueMsg          *)
  194.     LONGCARD,                       (* FirstMsg          *)
  195.     LONGCARD,                       (* LastMsg           *)
  196.     LONGCARD                        (* Options           *)
  197.   ) : BOOLEAN;
  198.  
  199.   MsgInputHookT = PROCEDURE         (* HK_MSGINPUT       *)
  200.   ( HAB,                            (* AnchorBlockHandle *)
  201.     VAR QMSG,                       (* QueueMsg          *)
  202.     BOOLEAN,                        (* SkipFlag          *)
  203.     VAR BOOLEAN                     (* NoRecordFlag      *)
  204.   ) : BOOLEAN;
  205.  
  206.   LockupHookT = PROCEDURE           (* HK_LOCKUP         *)
  207.   ( HAB,                            (* AnchorBlockHandle *)
  208.     HWND                            (* LockupFrame       *)
  209.   ) : BOOLEAN;
  210.  
  211.   FlushBufHookT = PROCEDURE         (* HK_FLUSHBUF       *)
  212.   ( HAB                             (* AnchorBlockHandle *)
  213.   ) : BOOLEAN;
  214.  
  215.  
  216.  
  217. CONST (* Current message queue constant *)
  218.   HMQ_CURRENT            = HMQ( 1 );
  219.  
  220. CONST (* WH_MSGFILTER context codes *)
  221.   MSGF_DIALOGBOX         = 1;
  222.   MSGF_MESSAGEBOX        = 2;
  223.   MSGF_TRACK             = 8;
  224.   MSGF_DDEPOSTMSG        = 3;
  225.  
  226. CONST (* HK_HELP Help modes *)
  227.   HLPM_FRAME             = -1;
  228.   HLPM_WINDOW            = -2;
  229.   HLPM_MENU              = -3;
  230.  
  231. CONST (* HK_LOADER context codes *)
  232.   LHK_DELETEPROC         = 1;
  233.   LHK_DELETELIB          = 2;
  234.   LHK_LOADPROC           = 3;
  235.   LHK_LOADLIB            = 4;
  236.  
  237. CONST (* HK_MSGCONTROL context codes *)
  238.   MCHK_MSGINTEREST       = 1;
  239.   MCHK_CLASSMSGINTEREST  = 2;
  240.   MCHK_SYNCHRONISATION   = 3;
  241.   MCHK_MSGMODE           = 4;
  242.  
  243. CONST (* HK_REGISTERUSERMSG conext codes *)
  244.   RUMHK_DATATYPE         = 1;
  245.   RUMHK_MSG              = 2;
  246.  
  247. END WINHOOKS.
  248.