|
|
/******************************************************************************
* * (C) Copyright MICROSOFT Corp., 1988-1995 * * Title: VMDAPRIV.H - Include file for VMDOSAPP/SHELL interaction * * Version: 2.00 * * Date: 13-Aug-1994 * * Author: rjc * *----------------------------------------------------------------------------- * * Change log: * * DATE REV DESCRIPTION * ----------- --- ---------------------------------------------------------- * 05-May-1988 ARR Original * 15-Jul-1982 rjc Converted from vmda.inc to vmda.h * 13-Aug-1992 rjc Split private stuff into vmdapriv.h * 11-Nov-1994 rjc Moved inter-module msgsrv32 stuff here, too. * *****************************************************************************/
/******************************************************************************
****************************************************************************** * * MSGSRV32 * ****************************************************************************** *****************************************************************************/
/******************************************************************************
* * SZMESSAGESERVERCLASS is the class name for the message server. * There is no title. * * To locate the message server, just do a * * static char CODESEG szMessageServer[] = SZMESSAGESERVER; * hwnd = FindWindow(szMessageServer, 0); * *****************************************************************************/
#define SZMESSAGESERVERCLASS "Windows 32-bit VxD Message Server"
/******************************************************************************
* * INH_DEVICEBROADCAST -- Broadcast a message to VxDs. * * wParam = not used * lParam = far pointer to INTERNALBROADCASTSYSMSG * *****************************************************************************/
#if 0
typedef WORD WPARAM; typedef LONG LPARAM; #endif
/* H2INCSWITCHES -t */
typedef struct INTERNALBROADCASTSYSMSG { /* bsm */ WORD uiMessage; WPARAM wParam; LPARAM lParam; DWORD dwFlags; } INTERNALBROADCASTSYSMSG, FAR *LPINTERNALBROADCASTSYSMSG;
/* H2INCSWITCHES -t- */
/*ASM
DBWF_LPARAMPOINTER = 8000h */
#define INH_DEVICEBROADCAST 0x0500
/******************************************************************************
* * INH_LOGONTONET -- Posted from user to msgsrvr to log onto net and run * the shell. Also used to exec the shell if it faults. * wParam = if 0, logon to net. if 1, just exec the shell. * lParam = not used * *****************************************************************************/
#define INH_LOGONTONET 0x0501
/******************************************************************************
* * INH_CHECKSYSTEMDLLS - Posted from user to msgsrvr to tell us to check * system dlls if they have been bogusly replaced * wParam = not used * lParam = not used * *****************************************************************************/
#define INH_CHECKSYSTEMDLLS 0x0502
/******************************************************************************
* * INH_USEME503 -- Not used, please recycle * INH_USEME504 -- Not used, please recycle * *****************************************************************************/
#define INH_USEME503 0x0503
#define INH_USEME504 0x0504
/******************************************************************************
* * INH_APPYTIME -- It is now 'Appy-time * * wParam = not used * lParam = not used * *****************************************************************************/
#define INH_APPYTIME 0x0505
/******************************************************************************
* * INH_FORWARDTOSHELL -- Forward a WM_SHELLNOTIFY to the current shell window * * wParam = forwarded to GetShellWindow() * lParam = forwarded to GetShellWindow() * *****************************************************************************/
#define INH_FORWARDTOSHELL 0x0506
/******************************************************************************
* * INH_FREEDRIVERS - Message posted from user telling us to free installable * drivers for compatibility with Win3.1 * wParam = id code we pass back to user's UnloadInstallableDrivers * function * lParam = not used * *****************************************************************************/
#define INH_FREEDRIVERS 0x0507
/******************************************************************************
* * INH_PLAYEXITSOUND - Message posted from user telling us to play the exit * Windows sound. * wParam = not used * lParam = not used * *****************************************************************************/
#define INH_PLAYEXITSOUND 0x0508
/******************************************************************************
* * INH_UNIDRVLOADED - Message posted from unidrv to us so that we can * cache the printer driver after it loads. * * wParam = INH_UNIDRVLOADED_WPARAM (signature) * lParam = INH_UNIDRVLOADED_LPARAM (signature) * *****************************************************************************/
#define INH_UNIDRVLOADED 0x0509
#define INH_UNIDRVLOADED_WPARAM 0
#define INH_UNIDRVLOADED_LPARAM 0
/******************************************************************************
* * INH_UNIDRVUNLOAD - Message sent from print installer to us so that we can * forceably tell msgsrvr to uncache this. * * wParam = INH_UNIDRVUNLOAD_WPARAM (signature) * lParam = INH_UNIDRVUNLOAD_LPARAM (signature) * *****************************************************************************/
#define INH_UNIDRVUNLOAD 0x050A
#define INH_UNIDRVUNLOAD_WPARAM 0
#define INH_UNIDRVUNLOAD_LPARAM 0
/******************************************************************************
****************************************************************************** * * VMDOSAPP / SHELL / USER * ****************************************************************************** *****************************************************************************/
/*
* This file contains manifest constants for VMDOSAPP/SHELL interaction * which are private to DOS386 and should not be exposed in the DDK. */
/*
* EQUATES for VMDOSAPP device calls */ #define SHELL_Call_Dev_VMD 0x0000C
#define SHELL_Call_Dev_VKD 0x0000D
#define SHELL_Call_Dev_SHELL 0x00017
#define SHELL_Call_Dev_VCOND 0x00038
#ifdef FE_VIME
#define SHELL_Call_Dev_VIME 0x00064
#endif
/*
* SHELL VMDA interface services */ #define SHELL_Get_Ver 0
#define SHELL_Get_Sys_VM_Info 1 /* Used by 3.1 control panel (stub) */
#define SHELL_Set_Sys_VM_Info 2 /* Used by 3.1 control panel (stub) */
#define SHELL_Create_VM 3 /* Stupid C7 uses this; go figure */
/* Brown has rev-engineered it, too */ #define SHELL_Destroy_VM 4
#define SHELL_Set_Focus 5
#define SHELL_Get_VM_State 6
#define SHELL_Set_VM_State 7
/* #define SHELL_Debug_Out 8 */ /* Defined in vmda.h */ #define SHELL_VMDA_Init 9
#define SHELL_VMDA_Exit 10
#define SHELL_Get_Message_Text 11
#define SHELL_Event_Complete 12
#define SHELL_Get_Contention_Info 13
#define SHELL_Get_Clip_Info 14
#define SHELL_Set_Paste 15
#define SHELL_Switcher_Assist 16
#define SHELL_Do_Not_Use 17 /* Do not recycle */
#define SHELL_Query_Destroy 18
/*
* WARNING: The following two entries are used by Windows KERNEL/USER. * Do not change them without also changing KERNEL/USER. */ #define SHELL_SetFocus_Cur_VM 19
#define SHELL_User_Busy 20 /* Old name (not used) */
#define SHELL_Set_Hotkey_Info 20 /* New name */
#define SHELL_Chng_Hot_Key 21 /* Old name (not used) */
#define SHELL_Get_Hotkey_Info 21 /* New name */
#define SHELL_Get_TermInfo 22
#define SHELL_Check_Hotkey_Allowed 23 /* See if a focus change is ok */
#define SHELL_UseMe24 24 /* Available for use */
/*
* These are used by the WShell server during system startup * for various reasons... */ #define SHELL_AppyRegister 25 /* 'Appy-time status report */
#define SHELL_Get_VM_Descriptor 26
#define SHELL_DispatchAppyEvents 27 /* It is now 'Appy time */
#define SHELL_DispatchBroadcastHooks 28 /* Goofy broadcast received */
#define SHELL_GetServerHwnd 29 /* Called by USER! */
#define SHELL_GetSet_VM_Title 30
#define SHELL_Get_Close_Flags 31
#define SHELL_Initiate_Close 32
#define SHELL_Cancel_Close 33
#define SHELL_Grab_Failed 34
#define SHELL_Get_Protection_Info 35
#define SHELL_Freeze_VM 36
#define SHELL_Thaw_VM 37
#define SHELL_Set_Focus_Sys_VM 38 /* Used by Win31.exe */
#define SHELL_Final_VM_Cleanup 39
/*
* NOTE! When adding a new service code, add them here, *before* the * DOS7 ordinals. (Renumber the DOS7 ordinals accordingly.) */
#ifdef DOS7
#define SHELL_Get_New_VM_Handle ?? /* VM enumeration for inheriting */
#define SHELL_Get_Next_VM_Handle ??
#define SHELL_Get_Clipboard_Size ?? /* Clipboard importation */
#define SHELL_Copy_Clipboard_Data ??
#endif
/******************************************************************************
* * Window private bytes... * * WindowLong(GWL_TTY_PID) = * process ID for process currently running in DOS box * * WindowLong(GWL_TTY_TID) = * thread ID for process currently running in DOS box * * Valid only if window class is the top-level unowned window for WinOldAp * (classname = "tty"). * *****************************************************************************/
#define GWL_TTY_PID 0
#define GWL_TTY_TID 4
/******************************************************************************
* * Message numbers * *****************************************************************************/
#define WMX_USER 0x0400
/******************************************************************************
* * Messages WMX_USER+0 through WMX_USER+19 are reserved for * internal use by WinOldAp. * *****************************************************************************/
/******************************************************************************
* * Messages WMX_USER+20 through WMX_USER+255 are reserved for * WinOldAp / WShell interaction, with exceptions as noted below. * *****************************************************************************/
/*
* Messages WMX_USER+20 through WMX_USER+255 are reserved * * Be extra careful not to change the meanings of any of the * messages from WMX_USER+20 through WMX_USER+20+13, because * those messages were used by Windows 3.1 and were documented * in the DDK (What were we thinking!?!!?), so some hosebags * might actually send them. * * VDA_Terminated is sent by the 3DPC screen saver. What's more, * they send it incorrectly! So watch out when you process it... */
#define VDA_First (WMX_USER+20+0)
/******** BEGIN -- DO NOT CHANGE THESE -- BEGIN ********/
#define VDA_Hot_Key (WMX_USER+20+0)
#define VDA_Switch_Context (WMX_USER+20+1)
#ifndef VDA_Type_Chng
#define VDA_Type_Chng (WMX_USER+20+2) /* Defined in VDDGRB.INC */
#endif
#define VDA_ClipBrd_Event (WMX_USER+20+3)
#define VDA_Terminated (WMX_USER+20+4)
#define VDA_Display_Message (WMX_USER+20+5)
#ifndef VDA_Display_Event
#define VDA_Display_Event (WMX_USER+20+6) /* Defined in VDDGRB.INC */
#endif
#define VDA_Crash_Event (WMX_USER+20+7) /* OBSOLETE! DO NOT RECYCLE */
#define VDA_Paste_Complete (WMX_USER+20+8)
#define VDA_Contention (WMX_USER+20+9)
#define VDA_Start_SwitchScn (WMX_USER+20+10)
#define VDA_FileSysChange (WMX_USER+20+11) /* OBSOLETE! DO NOT RECYCLE */
#define VDA_CheckFocus (WMX_USER+20+12)
#define VDA_Switch_CntxtPanic (WMX_USER+20+13)
/******** END -- DO NOT CHANGE THESE -- END ********/
#define VDA_Simulate_Hotkey (WMX_USER+20+14)
#define VDA_Set_VM_Title (WMX_USER+20+15)
#define VDA_Cancel_Close (WMX_USER+20+16)
#define VDA_Change_CodePage (WMX_USER+20+17) /* Used by JAPAN */
#define VDA_VM_Started (WMX_USER+20+18)
#define VDA_Protection_Event (WMX_USER+20+19)
#define VDA_Close_Clipboard (WMX_USER+20+20)
#define VDA_Flash_Icon (WMX_USER+20+21)
#define VDA_Notify_Close_Change (WMX_USER+20+22)
#define VDA_DynaWindow (WMX_USER+20+23)
#define VDA_Screensave (WMX_USER+20+24)
#define VDA_SystemSleep (WMX_USER+20+25)
#define VDA_MonitorPower (WMX_USER+20+26)
#ifdef DOS7
#define VDA_Inherit_New_VM ?
#endif
#define VDA_Last VDA_MonitorPower
/******************************************************************************
* * Messages WMX_USER+256 through WMX_USER+511 are reserved for * WinOldAp / VConD interaction. * *****************************************************************************/
#define VDA_Console_Spawn (WMX_USER+256)
#define VDA_Console_Set_Title (WMX_USER+257)
#define VDA_Console_State_Change (WMX_USER+258)
#define VDA_Console_Update_Window (WMX_USER+259)
/* flags for Update Console Window message sent by Console code to WinOldAp*/ #define UCW_HSCROLL 0x0001
#define UCW_VSCROLL 0x0002
#define UCW_SIZE 0x0004
/* messages for native grabber in WinOldAp */ #define GRABMSG_NOMSG 0x0000 // Nothing to do
#define GRABMSG_REPAINT 0x0001 // Repaint a rectangle
#define GRABMSG_MOVERECT 0x0002 // Move a rectangle
#define GRABMSG_SETSCREEN 0x0004 // Set virtual screen size
#define GRABMSG_SETCURPOS 0x0008 // Set virtual screen position
#define GRABMSG_SETCURINFO 0x0010 // Set cursor (caret) position/size
#define GRABMSG_CURTRACK 0x0020 // Position cursor in window
#define GRABMSG_TERMINATE 0x0040 // Screen buffer is terminating
/* Display event codes for notification of VCOND by WOA.*/ #define DE_ICONIZE 1 // iconized
#define DE_SIZECHANGE 2 // user changed window size
#define DE_WINDOW 3 // changed from fullscreen to window
#define DE_FULLSCREEN 4 // changed from window to fullscreen
#define DE_BEGINSELECT 5 // begin selection
#define DE_ENDSELECT 6 // end selection
#define DE_NATIVEMODE 7 // enter native mode
#define DE_PHYSICALMODE 8 // enter physical mode
#ifdef FE_VIME
/******************************************************************************
* * Messages WMX_USER+512 through WMX_USER+767 are reserved for * WinOldAp / VIME interaction. * *****************************************************************************/
#define VDA_Process_Key_Event (WMX_USER+512)
#define VDA_Control_IME (WMX_USER+513)
#define VDA_Init_VIMEUI (WMX_USER+514)
#define VDA_Get_Keyboard_Layout (WMX_USER+515)
/* Functions for VDA_Control_IME */ #define VIME_CIME_SetOpenStatus 1
#define VIME_CIME_SetCandidatePageStart 2
#define VIME_CIME_SetCandidatePageSize 3
#define VIME_CIME_EnableIME 4
/* Protect Mode API */ #define VIME_CMD_GetOption 2
#define VIME_CMD_Composition 3
#define VIME_CMD_CandOpen 4
#define VIME_CMD_CandClose 10
#define VIME_CMD_Draw 5
#define VIME_CMD_Return 6
#define VIME_CMD_Char 7
#define VIME_CMD_StartComp 8
#define VIME_CMD_EndComp 9
#define VIME_CMD_OpenStatus 11
#define VIME_CMD_ConversionMode 12
#define VIME_CMD_SentenceMode 13
#define VIME_CMD_WindowState 14
#define VIME_CMD_KeyDown 15
#define VIME_CMD_CandChange 16
#define VIME_CMD_Paste 17
#define VIME_CMD_ReqChangeKL 18
#define VIME_CMD_KeyboardLayout 19
#define VIME_CMD_InstallVIME 20
#define VIME_CMD_GetSync 21
/* detail info for VIME_CMD_ChangeIME */ #define VIME_CHG_NonIME 1
#define VIME_CHG_OldIME 2
#define VIME_CHG_NonNative 3
#endif // FE_VIME
/*
* This is a special "VMDOSAPP message" which actually results in no * message being sent to VMDOSAPP. It is used internally by the SHELL * to give the SYS VM a Boost, just as it does for normal events, but * without sending VMDOSAPP a message. */ #define VDA_Nul_Boost_Event 0x0FFFF
/*
* lParam is ALWAYS the "Event ID". This is used on the VMDOSAPP call backs * to the shell to identify the event which is being processed. */
/*
* On VDA_Hot_Key event wParam is the Key identifier (See following EQUs) * VMDOSAPP instance which gets the message is the "target" of the hot key */ #define VDA_HK_ALTSPACE 0
#define VDA_HK_ALTENTER 1
#define VDA_HK_DIRVM 2
/*
* On VDA_Terminated event wParam is 0 if this is a normal termination. If it is * non-zero, use SHELL_Get_TermInfo to get error information. * VMDOSAPP instance which gets the message has terminated. */
/*
* NOTE that VDA_Crash_Event is very much like VDA_Terminated, the only * real difference being the reason for the termination. * Use SHELL_Get_TermInfo to get error information. * wParam is not used * VMDOSAPP instance which gets the message has crashed */
/*
* On VDA_ClipBrd_Event, wParam is the Client_AX identifying the call. * VMDOSAPP instance which gets the message had a clipboard event */
/* This next one is documented in vmda.h */ /*
* On VDA_Display_Message event, wParam == 0 if normal message * != 0 if ASAP or SYSMODAL message * VMDOSAPP instance which gets the message is messaging VM */
/*
* On VDA_Paste_Complete event, wParam == 0 if normal completion * == 1 if paste canceled by user * == 2 if paste canceled for other reason * VMDOSAPP instance which gets the message has completed paste */
/*
* On VDA_Switch_Context event, wParam == 0 if context is switched to * VMDOSAPP instance which gets the message (that VM now has focus) * if wParam != 0, SYS VM now has the focus * VDA_Switch_CntxtPanic is an alternate form that should only occur with * wParam != 0 and indicates that the Windows activation should be moved * away from any VM (in other words, only a Windows app should be active * now). */
/* This next one is documented in vmda.h */ /*
* On VDA_Type_Chng event, wParam is not used * VMDOSAPP instance which gets the message has had its type changed by * protected mode code */
/*
* On VDA_FileSysChange, SEE SHELLFSC.INC */
/*
* VDA_CheckFocus This is sent as part of the Contention handling to deal with * a case where the the Focus is manipulated and needs to get reset. * wParam is not used. */
/* Reference data for VDA_Protection_Event
*/ #ifndef _WINNT_
typedef struct FAULTINFO { DWORD FI_VM; DWORD FI_CS; DWORD FI_EIP; DWORD FI_Addr; } FAULTINFO;
typedef FAULTINFO *PFAULTINFO; #endif
#ifdef _WSHIOCTL_H
/*****************************************************************************
* * SHELL_Create_VM * * ES:EDI -> struct VM_Descriptor (see shellvm.h) * DS:SI -> struct VM_AppWizInfo * * szProgram = program name, e.g., "C:\FOO.BAT" or "D:\BAR.EXE" * szParams = command tail * szDir = current directory at time of exec, e.g., C:\GAME * szPifFile = PIF file that controls this app * null string if PIF file belongs to command.com * space if app didn't have a custom PIF (need to create one) * */
/* H2INCSWITCHES -t */
typedef struct VMAPPWIZINFO { /* awi */ char szProgram[MAXVMPROGSIZE]; char szParams[MAXVMCMDSIZE]; char szDir[MAXVMDIRSIZE]; char szPifFile[MAXPIFPATHSIZE]; BYTE aAppFlags[4]; /* 1 dword of flags */ } VMAPPWIZINFO, *PVMAPPWIZINFO; /* H2INCSWITCHES -t- */
#endif /* _WSHIOCTL_H */
//
// Flags for app hack bits
//
#define DAHF_SPECIALSETTINGS 0x00000001 // App requires separate VM
#define DAHF_SPECIALSETTINGS_BIT 0 // (Winlie, SDAM, XMS cap...)
#define DAHF_NOPAGELOCKS 0x00000002 // Ignore DPMI PageLocks
#define DAHF_NOPAGELOCKS_BIT 1 // if not paging through DOS
#define DAHF_NOMSDOSWARN 0x00000004 // Do not suggest SDAM
#define DAHF_NOMSDOSWARN_BIT 2
#define DAHF_VALIDATELOCKS 0x00000008 // Do not let DPMI app lock
#define DAHF_VALIDATELOCKS_BIT 3 // memory it didn't allocate
#define DAHF_TRACESEGLOAD 0x00000010 // Enable trace flag hack for
#define DAHF_TRACESEGLOAD_BIT 4 // segment load faults
#ifdef NEC_98
#define DAHF_MAXENVSIZE 0x00000020 // Use maximize environment
#define DAHF_MAXENVSIZE_BIT 5 // size(=0xffff) for apps like
// Justsystem
#endif //NEC_98
/*****************************************************************************
* * SHELL_Get_TermInfo * * Private structure used to get detailed information when a VM crashed. * * If the VM terminated because the initial EXEC failed, the termination * error code will have high word zero and low byte equal to the DOS error * code. */
/* H2INCSWITCHES -t */
typedef struct VMFaultInfo2 { /* VMFI2 */
ULONG fl; /* Flags (this lives in the same place
* as the TermVMHnd) */
/* These fields form a TermStruc */
ULONG TermErrCd; /* Error code for termination */ ULONG TermErrCdRef; /* Reference data for termination */ ULONG TermExitCode; /* Application exit code */
/* These fields form a VMFaultInfo, meaningful only if we crashed. */ ULONG EIP; /* faulting EIP */ WORD CS; /* faulting CS */ WORD Ints; /* interrupts in service, if any */
/* These fields are valid only if the VM terminated by crashing */ char szCrashText[80]; /* Location of crash (if in a VxD) */ char VxdReported[9]; /* name of VxD who reported the crash */ } VMFAULTINFO2;
/*
* Flags for vmfi2_fl. */ #define VMFI2FL_BLANKSCREEN 1 /* Screen is blank */
#define VMFI2FL_RING0CRASH 2 /* Crashed at ring 0 */
/* Error codes.
* * For VDAE_InsMemDev and VDAE_DevNuke the error ref data points to * the 8 character device name. */ #define VDAE_PrivInst 0x00010001 /* Privledged instruction */
#define VDAE_InvalInst 0x00010002 /* Invalid instruction */
#define VDAE_InvalPgFlt 0x00010003 /* Invalid page fault */
#define VDAE_InvalGpFlt 0x00010004 /* Invalid GP fault */
#define VDAE_InvalFlt 0x00010005 /* Invalid fault, not any of abv */
#define VDAE_UserNuke 0x00010006 /* User requested NUKE of running */
/* VM */ #define VDAE_DevNuke 0x00010007 /* Device specific problem */
#define VDAE_DevNukeHdwr 0x00010008 /* Device specific prob, HW prgm */
#define VDAE_NukeNoMsg 0x00010009 /* Supress WINOA message */
#define VDAE_OkNukeMask 0x80000000 /* "Good" nuke bit */
#define VDAE_InsMemGeneric 0x00020000 /* Unknown VxD failed create */
#define VDAE_InsMemV86 0x00020001 /* base V86 mem - V86MMGR */
#define VDAE_InsV86Space 0x00020002 /* Kb Req too large - V86MMGR */
#define VDAE_InsMemXMS 0x00020003 /* XMS Kb Req - V86MMGR */
#define VDAE_InsMemEMS 0x00020004 /* EMS Kb Req - V86MMGR */
#define VDAE_InsMemV86Hi 0x00020005 /* Hi DOS V86 mem - DOSMGR */
/* V86MMGR */ #define VDAE_InsMemVid 0x00020006 /* Base Video mem - VDD */
#define VDAE_InsMemVM 0x00020007 /* Base VM mem - VMM */
/* CB, Inst Buffer */ #define VDAE_InsMemDev 0x00020008 /* Couldn't alloc base VM */
#define VDAE_CrtNoMsg 0x00020009 /* Supress WINOA message */
/*****************************************************************************
* * On SHELL_Set_Hotkey_Info, USER calls us with * * DS:AX -> array of HOTKEYSTRUCT structures * CX = number of entries in array (possibly zero) * DS:BX -> linked list of GLOBALHOTKEY structures * */
/* HOTKEYSTRUCT - Hotkeys of type 1
* * This structure is used with the WM_(SET/GET)HOTKEY messages * and the SC_HOTKEY syscommand. * * WARNING: Both USER and WinOlDAp use this structure */
#define HKFL_SHIFT 1 /* Either shift key down */
#define HKFL_CTRL 2 /* Either Ctrl key down */
#define HKFL_ALT 4 /* Either Alt key down */
#define HKFL_EXT 8 /* This is an extended key */
#define HKFL_WIN 16 /* Either Nexus flappy-window down */
/* XLATOFF */ #ifdef HOTKEYF_SHIFT
#if HKFL_SHIFT != HOTKEYF_SHIFT || \
HKFL_CTRL != HOTKEYF_CONTROL || \ HKFL_ALT != HOTKEYF_ALT || \ HKFL_EXT != HOTKEYF_EXT #error "Hotkey state bits don't match!"
#endif
#endif
/* XLATON */
typedef struct HOTKEYSTRUCT { /* hk */ #ifdef USER_IS_INCLUDING_VMDA
HWND_16 hwnd16; /* window that owns the hotkey */ #else
WORD hwnd16; /* window that owns the hotkey */ #endif
WORD key; /* LOBYTE = Window virtual key */ /* HIBYTE = Keystate modifieds (HKFL_*) */ WORD scan; /* OEM scan code for key (used by Shell.VxD) */ } HOTKEYSTRUCT; typedef HOTKEYSTRUCT NEAR *PHOTKEYSTRUCT;
/* GLOBALHOTKEY - Hotkeys of type 2
* * This structure is used with the (Un)RegisterHotkey functions * and the WM_HOTKEY message. * * WARNING: USER has its own definition for this structure. * * DOUBLE WARNING: The modifier states are *different* from those * for hotkeys of type 1! Aigh! */
#define GHKFL_ALT 1 /* Either Alt key down */
#define GHKFL_CTRL 2 /* Either Ctrl key down */
#define GHKFL_SHIFT 4 /* Either shift key down */
#define GHKFL_WIN 8 /* Either Nexus flappy-window down */
/* XLATOFF */ #ifdef MOD_WIN
#if GHKFL_SHIFT != MOD_SHIFT || \
GHKFL_CTRL != MOD_CONTROL || \ GHKFL_ALT != MOD_ALT || \ GHKFL_WIN != MOD_WIN #error "Global hotkey state bits don't match!"
#endif
#endif
/* XLATON */
typedef struct GLOBALHOTKEY { /* ghk */ #ifdef USER_IS_INCLUDING_VMDA
struct GLOBALHOTKEY NEAR *phkNext; #else
WORD phkNext; #endif
WORD hq; DWORD id; WORD hwnd16; WORD fsModifiers; WORD vk; WORD scan; } GLOBALHOTKEY, NEAR *PGLOBALHOTKEY;
/*****************************************************************************/
/* H2INCSWITCHES -t- */
#ifdef VK_NUMPAD0
#if (VK_NUMPAD0 != 0x60) || (VK_NUMPAD9 != 0x69)
#error "VK_ codes don't match!"
#endif
#else
#define VK_NUMPAD0 0x60
#define VK_NUMPAD9 0x69
#endif
/*****************************************************************************
* * Undocumented flag bits for SHELL_Event. * */
#if 0 // Historical purposes
#define SE_WP_SetFocusBoost 0x00010000 // Boost the SYS VM till a
#define SE_WP_SetFocusBoostBit 16 // Set_Focus call
//
#define SE_WP_SwitcherBoost 0x00020000 // Leftover from 3.1
#define SE_WP_SwitcherBoostBit 17 //
//
#define SE_WP_FilSysChgBoost 0x00040000 // Leftover from 3.1
#define SE_WP_FilSysChgBoostBit 18 //
//
#define SE_WP_ClipAPIBoost 0x00080000 // Boost the SYS VM during clipbrd
#define SE_WP_ClipAPIBoostBit 19 // API
#else // There is only one type of
// boost, so everybody shares.
#define SE_WP_SetFocusBoost SE_WP_PrtScBoost
#define SE_WP_SetFocusBoostBit SE_WP_PrtScBoostBit
#define SE_WP_ClipAPIBoost SE_WP_PrtScBoost
#define SE_WP_ClipAPIBoostBit SE_WP_PrtScBoostBit
#define SE_WP_Zombie 0x80000000 // Dead event but must linger
#define SE_WP_ZombieBit 31 // for buggy 3.1 VDDs
#endif
/* SE_WP_PrtScBoost is defined in shell.h */ /* SE_WP_DispUpdBoost is defined in shell.h */
|