Changeset 27 for trunk/dll/gotchdll.c
- Timestamp:
- Mar 13, 2018, 6:34:46 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/gotchdll.c
r2 r27 23 23 #include "../id.h" 24 24 25 //#define __PMPRINTF__ 26 //#include "PMPRINTF.H" 27 28 /* pre-accelerator input hook, undocumented, */ 29 #define HK_PREACCEL 17 30 25 31 HAB habDLL; 26 32 HWND hwndFrame; 27 33 HMODULE hMod; 28 PFN pfnInput;29 34 30 35 void EXPENTRY InitDLL (HAB hab, HWND hwnd) … … 32 37 habDLL = hab; 33 38 hwndFrame = hwnd; 34 DosLoadModule (NULL, 0, "GOTCHA", &hMod); 35 DosQueryProcAddr (hMod, 0, "InputProc", &pfnInput); 39 DosLoadModule (NULL, 0, "GOTCHDLL", &hMod); 40 } 41 42 BOOL EXPENTRY InputProc (HAB hab, PQMSG pqmsg, ULONG ul) 43 { 44 USHORT usFlags; 45 USHORT usScan; 46 47 if (pqmsg->msg != WM_CHAR 48 || (usFlags = SHORT1FROMMP(pqmsg->mp1), usScan = 49 SHORT2FROMMP (pqmsg->mp2), (usFlags & KC_SCANCODE)) == 0){ 50 return FALSE; 51 } 52 53 if (CHAR4FROMMP(pqmsg->mp1) == 0x54 ) { 54 if (usFlags & KC_KEYUP) { 55 WinPostMsg (hwndFrame, WM_COMMAND, 56 MPFROM2SHORT (WID_PB_SETTINGS,0), 0); 57 /*DosBeep( 1000, 10 ); 58 DosBeep( 2000, 20 ); 59 DosBeep( 3000, 30 ); */ 60 return TRUE; 61 } else { 62 /* DosBeep( 3000, 30 ); 63 DosBeep( 2000, 20 ); 64 DosBeep( 1000, 10 );*/ 65 return TRUE; 66 } 67 } 68 else if (usScan == VK_PRINTSCRN || CHAR4FROMMP(pqmsg->mp1) == 93 ) { 69 if (usFlags & KC_KEYUP) { 70 WinPostMsg (hwndFrame, WM_COMMAND, 71 MPFROM2SHORT (WID_PB_SETCAPTURETYPE,0), 0); 72 return TRUE; 73 } 74 75 } 76 return FALSE; 36 77 } 37 78 38 79 void EXPENTRY StartInputHook (void) 39 80 { 40 WinSetHook (habDLL, NULLHANDLE, HK_ INPUT, pfnInput, hMod);81 WinSetHook (habDLL, NULLHANDLE, HK_PREACCEL, (PFN) InputProc, hMod); 41 82 } 42 83 43 84 void EXPENTRY StopInputHook (void) 44 85 { 45 WinReleaseHook (habDLL, NULLHANDLE, HK_ INPUT, pfnInput, hMod);86 WinReleaseHook (habDLL, NULLHANDLE, HK_PREACCEL, (PFN) InputProc, hMod); 46 87 DosFreeModule (hMod); 47 }48 49 BOOL EXPENTRY InputProc (HAB hab, PQMSG pqmsg, ULONG ul)50 {51 if (pqmsg->msg == WM_CHAR) {52 if ((SHORT1FROMMP (pqmsg->mp1) & KC_VIRTUALKEY) &&53 (SHORT2FROMMP (pqmsg->mp2) == VK_PRINTSCRN)) {54 if (SHORT1FROMMP (pqmsg->mp1) & KC_KEYUP) {55 WinPostMsg (hwndFrame, WM_COMMAND,56 MPFROM2SHORT (WID_PB_SCREENREGION,0), 0);57 /*DosBeep( 1000, 10 );58 DosBeep( 2000, 20 );59 DosBeep( 3000, 30 ); */60 return TRUE;61 } else {62 /*DosBeep( 3000, 30 );63 DosBeep( 2000, 20 );64 DosBeep( 1000, 10 ); */65 return TRUE;66 }67 }68 }69 return FALSE;70 88 } 71 89
Note:
See TracChangeset
for help on using the changeset viewer.