home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / x / xfeel11b.zip / XFEEL.C < prev    next >
Text File  |  1993-02-16  |  3KB  |  101 lines

  1. /*-------------------------------------------------------------------------*/
  2. /*                                                                         */
  3. /*   XFEEL.C    : Compile this Module to XFEEL.EXE                         */
  4. /*                                                                         */
  5. /*   Version    : V1.1b                                                    */
  6. /*                                                                         */
  7. /*   Date       : 31.07.92                                                 */
  8. /*                                                                         */
  9. /*   Copyright  : Markus Hof & Roman Fischer                               */
  10. /*                    EMAIL : mhof@iiic.ethy.ch                              */
  11. /*                            rofische@iiic.ethz.ch                           */
  12. /*                                                                         */
  13. /*-------------------------------------------------------------------------*/
  14.  
  15. #define INCL_DOSPROCESS
  16. #define INCL_WINHOOKS
  17. #define INCL_WINBUTTONS
  18. #define INCL_WINFRAMEMGR
  19. #define INCL_WINTIMER
  20. #define INCL_DOSSEMAPHORES
  21. #define INCL_DOSMEMMGR
  22. #define INCL_DOSMODULEMGR
  23. #include <os2pm.h>
  24.  
  25.  
  26. //#define DEBUG        // if defined, xfeel is shown in switch list
  27.  
  28.  
  29. /*--------------------------------------------------------------------------*/
  30. MRESULT EXPENTRY myproc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  31.     {
  32.     return (WinDefWindowProc (hwnd, msg, mp1, mp2));
  33.     }
  34.  
  35. /*--------------------------------------------------------------------------*/
  36. unsigned long GetAddr(HMODULE *handle, char *filename, char *command)
  37.     {
  38.     char            errorname[6];
  39.     unsigned long   adr;
  40.  
  41.     if (DosLoadModule (errorname, 5, filename, handle))
  42.         return (0L);
  43.  
  44.     if (DosGetProcAddr (*handle, command, (PFN FAR * )&adr))
  45.         return (0L);
  46.  
  47.     return (adr);
  48.     }
  49.  
  50. /*--------------------------------------------------------------------------*/
  51. void main ()
  52.     {
  53.     HAB            hab;
  54.     HMQ            hmq;
  55.     QMSG        qmsg;
  56.     HMODULE        mhand;
  57.     ULONG        adr;
  58.     HWND        hwnd, hwndclient;
  59. #ifdef DEBUG
  60.     ULONG        ff = FCF_TASKLIST;
  61. #else
  62.     ULONG        ff = 0L;
  63. #endif
  64.     
  65.     hab = WinInitialize (0);
  66.     hmq = WinCreateMsgQueue (hab, 0);
  67.  
  68.     WinRegisterClass (hab, "XFEELCLASS", myproc, 0L, 0);
  69.     hwnd = WinCreateStdWindow (HWND_DESKTOP, 0, &ff, "XFEELCLASS",
  70.                     NULL, 0L, NULL, 0, &hwndclient);
  71.  
  72.  
  73.        adr = GetAddr (&mhand, "XFEEL", "XFUNC");
  74.     if (!adr)
  75.         {
  76.            WinMessageBox (HWND_DESKTOP, HWND_DESKTOP,
  77.                     "Could not find xfeel.dll. Program aborted !",
  78.                     NULL, 0, MB_OK|MB_ICONEXCLAMATION);
  79.            return;
  80.         }
  81.         
  82.        if (!WinSetHook (hab, (HMQ)NULL, HK_INPUT, (PFN)adr, mhand))
  83.            {
  84.            WinMessageBox (HWND_DESKTOP, HWND_DESKTOP,
  85.                     "Could not set hook. Program aborted !",
  86.                     NULL, 0, MB_OK|MB_ICONEXCLAMATION);
  87.            return;
  88.            }
  89.  
  90.     while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
  91.         WinDispatchMsg (hab, &qmsg);
  92.         
  93.  
  94.        WinReleaseHook (hab, (HMQ)NULL, HK_INPUT, (PFN)adr, mhand);
  95.        DosFreeModule (mhand);
  96.  
  97.     WinDestroyWindow (hwnd);       
  98.     WinDestroyMsgQueue (hmq);
  99.     WinTerminate (hab);
  100.     }
  101.