* patch by "Vasil" to fix various WinCE and Win32 API conversion issues

git-svn-id: trunk@15824 -
This commit is contained in:
florian 2010-08-15 19:39:31 +00:00
parent 1e0228d72b
commit 59702147ff
11 changed files with 1093 additions and 53 deletions

View File

@ -80,9 +80,6 @@
288 SHBorderRectangle
104 SHBox
103 SHBoxEx
114 SHChangeNotifyDeregister
115 SHChangeNotifyFree
113 SHChangeNotifyRegister
48 SHCheckForContextMenu
86 SHClearStartedBit
55 SHColorDisplay
@ -95,7 +92,6 @@
41 SHCreateContextMenu
43 SHCreateMainWindow
74 SHCreateMenuBarInternal
108 SHCreateNewItem
53 SHCreateSystemFont
35 SHCreateWorkerWindow
329 SHDeleteTodayWallpaper
@ -127,7 +123,6 @@
72 SHFontMgrManageFonts
33 SHForceBaseState
99 SHForceBaseStateEx
102 SHFreeContextMenuExtensions
120 SHFreeScanners
213 SHGetActiveDialog
292 SHGetBitmapDimensions
@ -136,9 +131,7 @@
224 SHGetCarrierBrandingFlag
96 SHGetDeviceFeatureLevel
299 SHGetDisplayRotation
128 SHGetEmergencyCallList
218 SHGetFontHeight
232 SHGetInputContext
133 SHGetKOBits
305 SHGetLandscapeRotationSettings
345 SHGetLegacySupportWindow
@ -168,11 +161,9 @@
149 SHInitPresetMessages
181 SHInsertPresetMessage
129 SHInvalidateScreen
101 SHInvokeContextMenuCommand
123 SHIsLocked
295 SHIsPreOzoneUpdate
94 SHIsPreRapierApp
100 SHLoadContextMenuExtensions
230 SHLoadFileContextMenuExtensions
313 SHLoadFontFromResource
91 SHLoadMenuPopup
@ -182,10 +173,6 @@
235 SHMakeValidFilename
32 SHMessageBox
80 SHNewProfileObj
155 SHNotificationAdd
173 SHNotificationGetData
157 SHNotificationRemove
156 SHNotificationUpdate
208 SHNotifyAppsOnCallConnect
210 SHNotifyAppsOnCarkit
165 SHNotifyAppsOnDock
@ -220,11 +207,9 @@
119 SHScanFile
97 SHSendBackToFocusWindow
169 SHSetAsWatermark
184 SHSetBack
161 SHSetBubbleRegion
298 SHSetDisplayRotation
131 SHSetForegroundLastActivePopup
231 SHSetInputContext
134 SHSetKOBits
154 SHSetPresetMessage
170 SHSetSimToolkitMenu
@ -284,6 +269,8 @@ unit aygshell;
interface
{$MODE OBJFPC}
uses windows;
{$calling cdecl}
@ -481,6 +468,140 @@ type
PSHCAMERACAPTURE=^TSHCAMERACAPTURE;
//====== File System Notification APIs ===============================
//
//
// File System Notification flags
//
const
SHCNE_RENAME = $00000001; // GOING AWAY
SHCNE_RENAMEITEM = $00000001;
SHCNE_CREATE = $00000002;
SHCNE_DELETE = $00000004;
SHCNE_MKDIR = $00000008;
SHCNE_RMDIR = $00000010;
SHCNE_MEDIAINSERTED = $00000020;
SHCNE_MEDIAREMOVED = $00000040;
SHCNE_DRIVEREMOVED = $00000080;
SHCNE_DRIVEADD = $00000100;
SHCNE_NETSHARE = $00000200;
SHCNE_NETUNSHARE = $00000400;
SHCNE_ATTRIBUTES = $00000800;
SHCNE_UPDATEDIR = $00001000;
SHCNE_UPDATEITEM = $00002000;
SHCNE_SERVERDISCONNECT = $00004000;
SHCNE_UPDATEIMAGE = $00008000;
SHCNE_DRIVEADDGUI = $00010000;
SHCNE_RENAMEFOLDER = $00020000;
SHCNE_ASSOCCHANGED = $08000000;
SHCNE_DISKEVENTS = $0002381F;
SHCNE_GLOBALEVENTS = $0C0181E0; // Events that dont match pidls first
SHCNE_ALLEVENTS = $7FFFFFFF;
SHCNE_INTERRUPT = $80000000; // The presence of this flag indicates
// that the event was generated by an
// interrupt. It is stripped out before
// the clients of SHCNNotify_ see it.
// Flags
// uFlags & SHCNF_TYPE is an ID which indicates what dwItem1 and dwItem2 mean
SHCNF_IDLIST = $0000; // LPITEMIDLIST
SHCNF_PATH = $0001; // path name
SHCNF_PRINTER = $0002; // printer friendly name
SHCNF_DWORD = $0003; // DWORD
SHCNF_TYPE = $00FF;
SHCNF_FLUSH = $1000;
SHCNF_FLUSHNOWAIT = $2000;
const
WM_FILECHANGEINFO = WM_APP + $0101;
type
_FILECHANGEINFO = record
cbSize:DWORD;
wEventId:LONG;
uFlags:ULONG;
dwItem1:DWORD;
dwItem2:DWORD;
dwAttributes:DWORD;
ftModified:FILETIME;
nFileSize:ULONG;
end;
FILECHANGEINFO = _FILECHANGEINFO;
LPFILECHANGEINFO = ^_FILECHANGEINFO;
LPCFILECHANGEINFO = ^FILECHANGEINFO;
tagFILECHANGENOTIFY = record
dwRefCount:DWORD;
fci:FILECHANGEINFO;
end;
FILECHANGENOTIFY = tagFILECHANGENOTIFY;
LPFILECHANGENOTIFY = ^tagFILECHANGENOTIFY;
tagSHCHANGENOTIFYENTRY = record
dwEventMask:DWORD; // Events to watch
pszWatchDir:LPTSTR; // Directory or root for the events we want. NULL means all.
fRecursive:BOOL; // Indicates whether look just for pszWatchDir or recursively.
end;
SHCHANGENOTIFYENTRY = tagSHCHANGENOTIFYENTRY;
LPSHCHANGENOTIFYENTRY = ^tagSHCHANGENOTIFYENTRY;
//////////////////////////////////////////////////////////////////////////////
//
// Input Context API
//
// These are definitions and APIs for the interacting with the input context
// properties of individual windows
//
{$PUSH}
{$PACKENUM 4}
// Word correct Options
type
SHIC_FEATURE = (SHIC_FEATURE_RESTOREDEFAULT := 0,
SHIC_FEATURE_AUTOCORRECT := $00000001,
SHIC_FEATURE_AUTOSUGGEST := $00000002,
SHIC_FEATURE_HAVETRAILER := $00000003,
SHIC_FEATURE_CLASS := $00000004);
{$POP}
const
// Predefined input context classes
SHIC_CLASS_DEFAULT = '';
SHIC_CLASS_EMAIL = 'email';
SHIC_CLASS_URL = 'url';
SHIC_CLASS_PHONE = 'phone';
SHIC_CLASS_NAME = 'name';
SHIC_CLASS_PHONE_AND_EMAIL = 'phoneAndEmail';
SHIC_CLASS_MAXLEN = MAX_PATH - 11;
//@topic Input Context Features |
// The input context API supports the following features and their corresponding values:
//
//@flag SHIC_FEATURE_RESTOREDEFAULT | Restore original input context state. (no corresponding value)
//@flag SHIC_FEATURE_AUTOCORRECT | Turn auto-corrections on and off. (TRUE, FALSE)
//@flag SHIC_FEATURE_AUTOCOMPLETE | Turn dictionary suggestions on and off. (TRUE, FALSE)
//@flag SHIC_FEATURE_HAVETRAILER | Specify whether to append trailer characters after replacing words.
// (TRUE, FALSE)
//@flag SHIC_FEATURE_CLASS | Make this control behave like a specific semantic type.
// (SHIC_CLASS_DEFAULT, SHIC_CLASS_EMAIL, SHIC_CLASS_URL,
// SHIC_CLASS_PHONE, SHIC_CLASS_NAME, SHIC_CLASS_PHONE_AND_EMAIL)
//
//@comm All SHIC_FEATUREs are inherited from parent if undefined. That is, if they are not defined in
// a window or the window's SHIC class, the API looks at the parent chain to find the setting
// that applies to the window.
//
//@xref <f SHSetInputContext> <f SHGetInputContext>
//
//
// end Input Context API
//
//////////////////////////////////////////////////////////////////////////////
//*****************************************************************************
// functions
//*****************************************************************************
@ -489,17 +610,45 @@ function PathAddBackslash(lpszPath:LPTSTR):LPTSTR; external UserDLLAyg name 'Pat
function PathCombine(lpszDest:LPTSTR; lpszDir:LPCTSTR; lpszFile:LPCTSTR):LPTSTR; external UserDLLAyg name 'PathCombine'; // index 26
function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL; external UserDLLAyg name 'ExitWindowsEx';
function SHChangeNotifyDeregister(_hwnd:HWND):BOOL; external UserDLLAyg name 'SHChangeNotifyDeregister'; // index 114
procedure SHChangeNotifyFree(pfcn:LPFILECHANGENOTIFY); external UserDLLAyg name 'SHChangeNotifyFree'; // index 115
function SHChangeNotifyRegister(_hwnd:HWND; pshcne:LPSHCHANGENOTIFYENTRY):BOOL; external UserDLLAyg name 'SHChangeNotifyRegister'; // index 113
function SHCloseApps( dwMemSought : DWORD ): WINBOOL; external UserDLLAyg name 'SHCloseApps';
function SHCreateMenuBar(pmbi : PSHMENUBARINFO ): WINBOOL; external UserDLLAyg name 'SHCreateMenuBar';
// SHCreateNewItem
// Creates a New item, as if an item were chosen from the
// global New menu dropdown.
function SHCreateNewItem(hwndOwner:HWND; clsid:PCLSID{REFCLSID}):HRESULT; external UserDLLAyg name 'SHCreateNewItem'; // index 108
function SHDoneButton(hwndRequester: HWND ; dwState : DWORD ): WINBOOL; external UserDLLAyg name 'SHDoneButton';
function SHFindMenuBar(hwnd:HWND) : HWND; external UserDLLAyg name 'SHFindMenuBar';
function SHFreeContextMenuExtensions(hCMExtensions:HANDLE):BOOL; external UserDLLAyg name 'SHFreeContextMenuExtensions'; // index 102
function SHFullScreen(hwmdRequester: hWnd; dwState: DWord): WINBOOL; external UserDLLAyg name 'SHFullScreen'; {Pocket PC special controls}
function SHGetAutoRunPath( pAutoRunPath : LPTSTR ): WINBOOL; external UserDLLAyg name 'SHGetAutoRunPath';
function SHGetAutoRunPath( pAutoRunPath : LPTSTR ): WINBOOL; external UserDLLAyg name 'SHGetAutoRunPath';
// SHGetEmergencyCallList
// Gets a list of emergency calls
function SHGetEmergencyCallList(pwszBuffer:PTCHAR; uLenBuf:UINT):HRESULT; external UserDLLAyg name 'SHGetEmergencyCallList'; // index 128
function SHHandleWMActivate(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO; dwFlags:DWORD ): WINBOOL; external UserDLLAyg index 84;
function SHHandleWMSettingChange(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO): WINBOOL; external UserDLLAyg index 83;
function SHInitDialog(pshidi: PSHINITDLGINFO): WINBOOL; external UserDLLAyg name 'SHInitDialog';
function SHInitExtraControls: WINBOOL; external UserDLLAyg name 'SHInitExtraControls';
procedure SHInputDialog(hwnd : HWND; uMsg : UINT; wParam: WPARAM ); external UserDLLAyg name 'SHInputDialog';
// Invokes a command from a context menu. Issues the command in the
// extension that added it to the menu.
function SHInvokeContextMenuCommand(hwndOwner:HWND; idCmd:UINT; hCMExtensions:HANDLE):BOOL; external UserDLLAyg name 'SHInvokeContextMenuCommand'; // index 101
function SHLoadContextMenuExtensions(punkOwner:IUnknown;
pszContext:LPCTSTR;
pszClass:LPCTSTR;
_hmenu:HMENU;
idCmdFirst:UINT;
idCmdLast:UINT;
phCMExtensions:LPHANDLE):BOOL; external UserDLLAyg name 'SHLoadContextMenuExtensions'; // index 100
function SHGetAppKeyAssoc( ptszApp: LPCTSTR ): Byte; external UserDLLAyg name 'SHGetAppKeyAssoc';
function SHSetAppKeyWndAssoc( bVk: BYTE ; hwnd : HWND ): WINBOOL; external UserDLLAyg name 'SHSetAppKeyWndAssoc';
function SHSetNavBarText(hwndRequester : HWND; pszText : LPCTSTR): WINBOOL; external UserDLLAyg name 'SHSetNavBarText';
@ -511,6 +660,382 @@ function SHSipPreference(hwnd: HWND ; st : SIPSTATE ) : WINBOOL; external UserDL
function SHRecognizeGesture(var shrg : SHRGINFO): DWORD; external UserDLLAyg name 'SHRecognizeGesture';
function SHCameraCapture(var shcc: TSHCAMERACAPTURE): HRESULT; external UserDLLAyg name 'SHCameraCapture';
//////////////////////////////////////////////////////////////////////////////
//
// Input Context API
//
// These are definitions and APIs for the interacting with the input context
// properties of individual windows
//
//++++++
//
//@func HRESULT | SHSetInputContext | Changes the state of an input context feature
//
//@parm HWND | hwnd | IN - Window whose context will be set
//@parm DWORD | dwFeature | IN - Input context feature to change
//@parm const LPVOID | lpValue | IN - New value assigned to feature
//
//@rdesc Returns one of the following values:
//@flag S_OK | If everything went well
//@flag ERROR_INVALID_PARAMETER | if hwnd was NULL or lpValue was NULL for a feature
// that does not support it, such as SHIC_FEATURE_AUTOCORRECT,
// SHIC_FEATURE_AUTOCOMPLETE and SHIC_FEATURE_HAVETRAILER.
//@flag ERROR_NOT_SUPPORTED | If the feature specified was invalid
//@flag ERROR_INVALID_DATA | If the specified value is not a legal option
//
//@xref <l Input_Context_Features> <f SHGetInputContext>
//
function SHSetInputContext(_hwnd:HWND; dwFeature:DWORD; lpValue:LPVOID):HRESULT; external UserDLLAyg name 'SHSetInputContext'; // index 231
//++++++
//
//@func HRESULT | SHGetInputContext | Retrieves current state of an input context feature
//
//@parm HWND | hwnd | IN - Window whose context will be retrieved
//@parm DWORD | dwFeature | IN - Input context feature to retrieve
//@parm LPVOID | lpValue | OUT - Buffer to hold current value of feature
//@parm LPDWORD | pdwSize | IN/OUT - size of the buffer passed in to retrieve the value
//
//@rdesc Returns one of the following values:
//@flag S_OK | If everything went well
//@flag ERROR_INVALID_PARAMETER | If hwnd or lpdwSize passed were NULL
//@flag ERROR_NOT_SUPPORTED | If the feature specified was invalid
//@flag ERROR_INSUFFICIENT_BUFFER | If buffer passed is too small
//
//@comm Retrieves the current state/value of the specified
// input context feature. If the value is not explicitly set, it
// looks at the features set by the context class. If no class was
// set explicitly, or the class didn't set that value, it returns
// the default value for that feature, which would be the
// currently active one.
// If lpValue is NULL and lpdwSize is not NULL, it returns the
// size of the buffer needed in lpdwSize.
//
//@xref <l Input_Context_Features> <f SHSetInputContext>
//
function SHGetInputContext(_hwnd:HWND; dwFeature:DWORD; lpValue:LPVOID; lpdwSize:LPDWORD):HRESULT; external UserDLLAyg name 'SHGetInputContext'; // index 232
//
// end Input Context API
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// SHNAPI - Shell Notification API
//
// These are definitions and APIs for the Shell Notifications system
//
// {
// notification priority
type
_SHNP = (SHNP_INFORM := $01B1, // bubble shown for duration, then goes away
SHNP_ICONIC // no bubble, icon shown for duration then goes away
);
SHNP = _SHNP;
const
// notification update mask
SHNUM_PRIORITY = $0001;
SHNUM_DURATION = $0002;
SHNUM_ICON = $0004;
SHNUM_HTML = $0008;
SHNUM_TITLE = $0010;
SHNUM_SOFTKEYS = $0020;
SHNUM_TODAYKEY = $0040;
SHNUM_TODAYEXEC = $0080;
SHNUM_SOFTKEYCMDS = $0100;
SHNUM_FLAGS = $0200;
// notification data
// Softkey Flags for use with SFTKEYNOTIFY structure
NOTIF_SOFTKEY_FLAGS_DISMISS = $0000; // Remove the notification when the softkey is pressed
NOTIF_SOFTKEY_FLAGS_HIDE = $0001; // Hide the notification when the softkey is pressed (but do not dismiss)
NOTIF_SOFTKEY_FLAGS_STAYOPEN = $0002; // Do not dismiss or hide the notification when the softkey is pressed
NOTIF_SOFTKEY_FLAGS_SUBMIT_FORM = $0004; // Submit the HTML form in the associated notification instead of sending WM_COMMAND to the sink
NOTIF_SOFTKEY_FLAGS_DISABLED = $0008; // This softkey is disabled
// Structure used to associate a command id from a notification's softkey bar
// with a particular behaviour.
type
SOFTKEYCMD = record
wpCmd:WPARAM; // command to send with WM_COMMAND when pressed.
grfFlags:DWORD; // define special behaviour for this softkey as
// per NOTIF_SOFTKEY_FLAGS
end;
LPSOFTKEYCMD = ^SOFTKEYCMD;
// structure to define a single softkey for use in SHNOTIFICATIONDATA
type
_SOFTKEYNOTIFY = record
pszTitle:LPCTSTR; // Title to use on the softkey
skc:SOFTKEYCMD; // Behaviour flags
end;
SOFTKEYNOTIFY = _SOFTKEYNOTIFY;
LPSOFTKEYNOTIFY = ^_SOFTKEYNOTIFY;
// structure to define a menu for use in SHNOTIFICATIONDATA
type
_SOFTKEYMENU = record
hMenu:HMENU;
prgskc:LPSOFTKEYCMD; // optional array of SOFTKEYCMD values
cskc:UINT; // number of members of pskCmd
end;
SOFTKEYMENU = _SOFTKEYMENU;
LPSOFTKEYMENU = ^_SOFTKEYMENU;
const
// number of soft keys on the notification soft key bar.
NOTIF_NUM_SOFTKEYS = 2;
type
_SHNOTIFICATIONDATA =record
cbStruct:DWORD; // for verification and versioning
dwID:DWORD; // identifier for this particular notification
npPriority:SHNP; // priority
csDuration:DWORD; // duration of the notification (usage depends on prio)
hicon:HICON; // the icon for the notification
grfFlags:DWORD; // flags - see SHNF_ flags below
clsid:CLSID; // unique identifier for the notification class
hwndSink:HWND; // window to receive command choices, dismiss, etc.
pszHTML:LPCTSTR; // HTML content for the bubble
pszTitle:LPCTSTR; // Optional title for bubble
lParam:LPARAM; // User-defined parameter
case longint of // Defines the softkey bar for the notification
0: (skm:SOFTKEYMENU; // Either pass an HMENU in skn (and set SHNF_HASMENU)
pszTodaySK:LPCTSTR; // Text to put on SK2 on the Today screen. If NULL, will default to "Notification"
pszTodayExec:LPCTSTR // What to execute when SK2 is pressed. If NULL, the toast will be displayed.
);
1: (rgskn:array[0..NOTIF_NUM_SOFTKEYS-1] of SOFTKEYNOTIFY; // or two softkeys in rgskn.
pszTodaySK1:LPCTSTR; // Text to put on SK2 on the Today screen. If NULL, will default to "Notification"
pszTodayExec1:LPCTSTR // What to execute when SK2 is pressed. If NULL, the toast will be displayed.
);
end;
SHNOTIFICATIONDATA = _SHNOTIFICATIONDATA;
LPSHNOTIFICATIONDATA = ^_SHNOTIFICATIONDATA;
// Flags
const
// For SHNP_INFORM priority and above, don't display the notification bubble
// when it's initially added; the icon will display for the duration then it
// will go straight into the tray. The user can view the icon / see the
// bubble by opening the tray.
SHNF_STRAIGHTTOTRAY = $00000001;
// Critical information - highlights the border and title of the bubble.
SHNF_CRITICAL = $00000002;
// Force the message (bubble) to display even if settings says not to.
SHNF_FORCEMESSAGE = $00000008;
// Force the display to turn on for notification.
SHNF_DISPLAYON = $00000010;
// Force the notification to be silent and not vibrate, regardless of Settings
SHNF_SILENT = $00000020;
// Softkey bar is created from an HMENU passed in skm structure
SHNF_HASMENU = $00000040;
// Draw the current time with the title
SHNF_TITLETIME = $00000080;
// A notification with "stack" support
SHNF_SPINNERS = $00000100;
// RE-play physical alerts on an update
SHNF_ALERTONUPDATE = $00000200;
//Capture the VK_TTALK button and forward it to the notification's sink window
SHNF_WANTVKTTALK = $00000400;
// notification message and codes for window-based notification
// the notification's dwID is in hdr.idFrom
type
_NMSHN = record
hdr:NMHDR;
lParam:LPARAM;
dwReturn:DWORD;
case longint of
0: (pszLink:LPCTSTR);
1: (fTimeout:BOOL);
2: (pt:POINT);
end;
NMSHN = _NMSHN;
LPNMSHN = ^_NMSHN;
//#define SHN_FIRST (0U-1000U) // Shell reserved
const
SHNN_FIRST = UINT(0)-UINT(1000); // Shell Notifications
SHNN_LAST = UINT(0)-UINT(1020); // Shell Notifications
//#define SHN_LAST (0U-11000U)
const
SHNN_LINKSEL = SHNN_FIRST - 0;
// nmshn.pszLink contains the link text of the choice that was selected
SHNN_DISMISS = SHNN_FIRST - 1;
// nmshn.fTimeout is TRUE if duration expired, FALSE if user tapped away
SHNN_SHOW = SHNN_FIRST - 2;
// nmshn.pt contains the point to which the bubble points
SHNN_NAVPREV = SHNN_FIRST - 3;
// Toast stack left spinner clicked / DPAD LEFT
SHNN_NAVNEXT = SHNN_FIRST - 4;
// Toast stack right spinner clicked / DPAD RIGHT
SHNN_ACTIVATE = SHNN_FIRST - 5;
// Toast DPAD Action
SHNN_ICONCLICKED = SHNN_FIRST - 6;
// nmshn.pt contains the point where the user clicked
SHNN_HOTKEY = SHNN_FIRST - 7;
// A hotkey has been pressed - modifiers are in the loword of the nmshn.lParam,
// the virtual key code is in the hiword.
// If the sink window returns 0 in response to this notification, then
// the notification toast will be hidden and VK_TTALK key default behavior
// will be performed.
//===========================================================================
//
// Interface: IShellNotificationCallback
//
// The IShellNotificationCallback interface is used by the Shell to advise
// the notification owner of actions taken on the notification.
//
// [Member functions]
//
// IShellNotificationCallback::OnShow
//
// Reserved. Return E_NOTIMPL.
//
// IShellNotificationCallback::OnCommandSelected
//
// This member function is called when the user selects a link of the form
// <A HREF="cmd:#">link</A>.
//
// Parameters:
// dwID -- the identifier of the notification
// wCmdID -- this is the # in the link
//
// IShellNotificationCallback::OnLinkSelected
//
// This member function is called when the user selects one of the action
// choice links in the notification bubble window.
//
// Parameters:
// dwID -- the identifier of the notification
// pszLink -- the link content that was selected
// lParam -- the lParam of the notification
//
// IShellNotificationCallback::OnDismiss
//
// This member function is called when the user taps away from the bubble
// window or if a SHNP_INFORM priority notification's duration expires.
//
// Parameters:
// dwID -- the identifier of the notification
// fTimeout -- the notification timed out (SHNP_INFORM only)
// lParam -- the lParam of the notification
//
//===========================================================================
const
IID_IShellNotificationCallback:TIID = '{000214C0-0000-0000-C000-000000000046}';
type
IShellNotificationCallback = interface(IUnknown)
['{000214C0-0000-0000-C000-000000000046}']
function OnShow(dwID:DWORD; pt:POINT; lParam:LPARAM):HRESULT; stdcall;
function OnCommandSelected(dwID:DWORD; wCmdID:word):HRESULT; stdcall;
function OnLinkSelected(dwID:DWORD; pszLink:LPCTSTR; lParam:LPARAM):HRESULT; stdcall;
function OnDismiss(dwID:DWORD; fTimeout:BOOL; lParam:LPARAM):HRESULT; stdcall;
end;
//++++++
//
// SHNotificationAdd
//
// Add a notification.
function SHNotificationAdd(pndAdd:LPSHNOTIFICATIONDATA):LRESULT; external UserDLLAyg name 'SHNotificationAdd'; // index 155
//
// End SHNotificationAdd
//
//------
//++++++
//
// SHNotificationUpdate
//
// Update aspects of a pending notification.
function SHNotificationUpdate(grnumUpdateMask:DWORD; pndNew:LPSHNOTIFICATIONDATA):LRESULT; external UserDLLAyg name 'SHNotificationUpdate'; // index 156
//
// End SHNotificationUpdate
//
//------
//++++++
//
// SHNotificationRemove
//
// Remove a notification. This is usually in reponse to some
// action taken on the data outside of the notification system - for example
// if a message is read or deleted.
function SHNotificationRemove(pclsid:LPCLSID; dwID:DWORD):LRESULT; external UserDLLAyg name 'SHNotificationRemove'; // index 157
//
// End SHNotificationRemove
//
//------
//++++++
//
// SHNotificationGetData
//
// Get the data for a notification. Used by a handler to get information
// stored in the notification by the poster.
function SHNotificationGetData(pclsid:LPCLSID; dwID:DWORD; pndBuffer:LPSHNOTIFICATIONDATA):LRESULT; external UserDLLAyg name 'SHNotificationGetData'; // index 173
//
// End SHNotificationGetData
//
//------
// }
//
// end SHNAPI
//
//////////////////////////////////////////////////////////////////////////////
// This function is not implemented.
// It is provided as a stub in the operating system (OS) for application compatibility.
procedure SHSetBack(eOp:longint; _hwnd:HWND); external UserDLLAyg name 'SHSetBack'; // index 184
implementation
end.

View File

@ -799,7 +799,7 @@ function ChooseContact(lpcc:LPCHOOSECONTACT):HRESULT; cdecl; external PIMStoreDL
// Returns a Contact object of the first closest match
function FindMatchingContact(pPOOM:IPOutlookApp; pszFind:LPCWSTR; dwFlags:DWORD; out ppContact:IItem; ppropid:CEPROPID):HRESULT; cdecl; external PIMStoreDLL name 'FindMatchingContact';
function FindMatchingContact(pPOOM:IPOutlookApp; pszFind:LPCWSTR; dwFlags:DWORD; out ppContact:IItem; ppropid:PCEPROPID):HRESULT; cdecl; external PIMStoreDLL name 'FindMatchingContact';
// Flags for FindMatchingContact
const

View File

@ -1681,9 +1681,12 @@
SIF_RANGE = 1;
SIF_DISABLENOSCROLL = 8;
{ GetStdHandle }
STD_INPUT_HANDLE = DWORD(-10);
STD_OUTPUT_HANDLE = DWORD(-11);
STD_ERROR_HANDLE = DWORD(-12);
STD_INPUT_HANDLE = HANDLE(-10);
STD_OUTPUT_HANDLE = HANDLE(-11);
STD_ERROR_HANDLE = HANDLE(-12);
INVALID_HANDLE_VALUE = HANDLE(-1);
@ -4005,6 +4008,7 @@ Type
ACS_AUTOPLAY = 4;
ACS_CENTER = 1;
ACS_TRANSPARENT = 2;
ACS_TIMER = 8; // don't use threads... use timers
{ MODEMDEVCAPS structure }
DIALOPTION_BILLING = 64;
DIALOPTION_QUIET = 128;
@ -5713,6 +5717,36 @@ const
IMAGE_FILE_MACHINE_M32R = $9041; // M32R little-endian
IMAGE_FILE_MACHINE_CEE = $C0EE;
// #if(WINVER >= 0x0500)
{/*
* WM_MENUDRAG return values.
*/}
const
MND_CONTINUE = 0;
MND_ENDMENU = 1;
{/*
* MENUGETOBJECTINFO dwFlags values
*/}
const
MNGOF_TOPGAP = $00000001;
MNGOF_BOTTOMGAP = $00000002;
{/*
* WM_MENUGETOBJECT return values
*/}
const
MNGO_NOINTERFACE = $00000000;
MNGO_NOERROR = $00000001;
//#endif /* WINVER >= 0x0500 */
// Menubar information
const
// Constants for the tagMENUBARINFO.FocusedBits bit mask
MBIFB_BAR_FOCUSED = $00000001;
MBIFB_FOCUSED = $00000002;
{$endif read_interface}
{$ifdef read_implementation}

View File

@ -1253,6 +1253,16 @@ function SignalObjectAndWait( hObjectToSignal:THANDLE; hObjectToWaitOn:THANDLE
function CancelWaitableTimer(hTimer:THandle):BOOL; external 'kernel32' name 'CancelWaitableTimer';
function GetComboBoxInfo(hwndCombo:HWND;pcbi:PCOMBOBOXINFO):BOOL; external 'user32' name 'GetComboBoxInfo';
function GetAncestor(HWnd: HWND; Flag: UINT): HWND; StdCall; External 'user32';
// #if(WINVER >= 0x0500)
function GetMenuInfo(_hmenu:HMENU; lpcmi:LPMENUINFO):BOOL; external 'user32' name 'GetMenuInfo';
function SetMenuInfo(_hmenu:HMENU; lpcmi:LPCMENUINFO):BOOL; external 'user32' name 'SetMenuInfo';
function EndMenu:BOOL; external 'user32' name 'EndMenu';
//#endif /* WINVER >= 0x0500 */
function GetMenuBarInfo(_hwnd:HWND; idObject:longint; idItem:longint; pmbi:LPMENUBARINFO):BOOL; external 'user32' name 'GetMenuBarInfo';
{$endif read_interface}

View File

@ -7514,6 +7514,37 @@ type
const
SECURITY_DESCRIPTOR_MIN_LENGTH = SIZEOF(SECURITY_DESCRIPTOR);
// #if(WINVER >= 0x0500)
type
tagMENUGETOBJECTINFO = packed record
dwFlags:DWORD;
uPos:UINT;
_hmenu:HMENU;
riid:PVOID;
pvObj:PVOID;
end;
MENUGETOBJECTINFO = tagMENUGETOBJECTINFO;
PMENUGETOBJECTINFO = ^tagMENUGETOBJECTINFO;
LPMENUGETOBJECTINFO = ^tagMENUGETOBJECTINFO;
//#endif /* WINVER >= 0x0500 */
// Menubar information
type
tagMENUBARINFO = packed record
cbSize:DWORD;
rcBar:Windows.RECT; // rect of bar, popup, item
_hmenu:HMENU; // real menu handle of bar, popup
hwndMenu:HWND; // hwnd of item submenu if one
// fBarFocused:1:BOOL; // bar, popup has the focus
// fFocused:1:BOOL; // item has the focus
FocusedBits:DWORD;
end;
MENUBARINFO = tagMENUBARINFO;
PMENUBARINFO = ^tagMENUBARINFO;
LPMENUBARINFO = ^tagMENUBARINFO;
{$endif read_interface}

View File

@ -56,7 +56,8 @@
type
MAKEINTRESOURCE = pwidechar;
ATOM = word; //windef
ATOM = word; //windef
TAtom = ATOM;
WINBOOL = longbool;
@ -472,9 +473,13 @@ type
{ argument types are unknown }
function HIWORD(l : longint) : WORD; //windef
type
LOBYTE = byte;
(*
{ was #define dname(params) def_expr }
{ argument types are unknown }
function LOBYTE(w : longint) : BYTE; //windef
*)
{ was #define dname(params) def_expr }
{ argument types are unknown }
@ -519,8 +524,7 @@ type
{ was #define dname(params) def_expr }
{ argument types are unknown }
function MAKEINTATOM(i : longint) : LPTSTR;
function MAKEINTATOM(i : longint) : LPTSTR;
{ was #define dname(params) def_expr }
{ argument types are unknown }
@ -838,16 +842,18 @@ type
HIWORD:=WORD(((DWORD(l)) shr 16) and $FFFF);
end;
(*
{ was #define dname(params) def_expr }
{ argument types are unknown }
function LOBYTE(w : longint) : BYTE;
begin
LOBYTE:=BYTE(w);
end;
*)
{ was #define dname(params) def_expr }
{ argument types are unknown }
function LOWORD(l : longint) : WORD;
function LOWORD(l : longint) : WORD; inline;
begin
LOWORD:=WORD(l);
end;
@ -911,12 +917,11 @@ type
{ was #define dname(params) def_expr }
{ argument types are unknown }
function MAKEINTATOM(i : longint) : LPTSTR;
function MAKEINTATOM(i : longint) : LPTSTR; inline;
begin
MAKEINTATOM:=LPTSTR(DWORD(WORD(i)));
end;
{ was #define dname(params) def_expr }
{ argument types are unknown }
{ return type might be wrong }

View File

@ -85,7 +85,6 @@
378 CacheSync
1EA CeChangeDatabaseLCID
1EF CeClearReplChangeBitsEx
2DB CeClearUserNotification
1D1 CeCreateDatabase
1D2 CeCreateDatabaseEx
1DC CeCreateDatabaseEx2
@ -111,10 +110,6 @@
1F0 CeGetReplOtherBitsEx
313 CeGetThreadPriority
315 CeGetThreadQuantum
2E2 CeGetUserNotification
2E1 CeGetUserNotificationHandles
2DF CeGetUserNotificationPreferences
2DE CeHandleAppNotifications
96 CeLogData
98 CeLogGetZones
99 CeLogReSync
@ -134,8 +129,6 @@
1F2 CeRegisterReplNotification
4E4 CeRemoveFontResource
15D CeResyncFilesys
2DD CeRunAppAtEvent
2DC CeRunAppAtTime
1D9 CeSeekDatabase
1E0 CeSeekDatabaseEx
1D3 CeSetDatabaseInfo
@ -149,8 +142,6 @@
1F1 CeSetReplOtherBitsEx
312 CeSetThreadPriority
314 CeSetThreadQuantum
2DA CeSetUserNotification
2E0 CeSetUserNotificationEx
1E6 CeUnmountDBVol
1E5 CeWriteRecordProps
2F CeZeroPointer
@ -206,7 +197,6 @@
C2 DDKReg_GetWindowInfo
3BF DebugNotify
38B DecompressBinaryBlock
FF DeleteAndRenameFile
37B DeleteTrackedItem
179 DeregisterAFS
17B DeregisterAFSName
@ -215,8 +205,6 @@
30C DumpKCallProfile
3DB EnableCaretSystemWide
553 EnableEUDC
50E EnumDisplayDevices
666 EnumDisplayMonitors
14D EnumUILanguagesW
374 ExtractResource
17F FileSystemPowerFunction
@ -247,7 +235,6 @@
405 GetKeyboardTarget
4B7 GetMessageWNoWait
30B GetModuleInformation
665 GetMonitorInfo
397 GetOwnerProcess
110 GetPasswordStatus
1B6 GetPrivateCallbacks
@ -259,7 +246,6 @@
371 GetRealTime
377 GetRomFileBytes
376 GetRomFileInfo
102 GetStoreInformation
2D0 GetUserDirectory
1B7 GetWindowTextWDirect
37E GiveKPhys
@ -277,7 +263,6 @@
4D Int_HeapFree
49 Int_HeapReAlloc
4B Int_HeapSize
15 InterlockedCompareExchange
3B1 InterruptDisable
3B0 InterruptDone
3AE InterruptInitialize
@ -298,8 +283,6 @@
396 KillAllOtherThreads
38E LeaveCritSec
3AA LoadDriver
151 LoadFSD
152 LoadFSDEx
3AB LoadIntChainHandler
3AD LoadKernelLibrary
3E LocalAllocInProcess
@ -350,7 +333,6 @@
484 QASetWindowsJournalHook
485 QAUnhookWindowsJournalHook
2F2 QueryAPISetID
91 Random
181 ReadFileWithSeek
3C0 ReadRegistryFromOEM
1BE RectangleAnimation
@ -362,7 +344,6 @@
17A RegisterAFSName
3B8 RegisterAPISet
33D RegisterDbgZones
4DB RegisterDesktop
1BD RegisterSIPanel
380 RegisterTrackedItem
E ReinitLocale
@ -374,14 +355,10 @@
3D RemoteLocalFree
3B RemoteLocalReAlloc
3C RemoteLocalSize
15A ResourceCreateList
15C ResourceRelease
15B ResourceRequest
2E6 SHCreateExplorerInstance
2E8 SHCreateShortcut
2EA SHCreateShortcutEx
2E9 SHGetShortcutTarget
2EC SHLoadDIBitmap
2EB SHShowOutOfMemory
11B SetACP
1C0 SetAssociatedMenu
@ -413,7 +390,6 @@
3B5 SetWDevicePowerHandler
406 ShellModalEnd
1C4 ShowStartupWindow
176 SignalStarted
361 SleepTillTick
648 StringCbCatA
64A StringCbCatExA
@ -2010,6 +1986,7 @@ function DefDlgProcW(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
function DeferWindowPos(hWinPosInfo:HDWP; hWnd:HWND; hWndInsertAfter:HWND; x:longint; y:longint;cx:longint; cy:longint; uFlags:UINT):HDWP; external KernelDLL name 'DeferWindowPos';
function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'DefWindowProcW';
function DefWindowProcW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'DefWindowProcW';
function DeleteAndRenameFile(lpszDestFile:LPCWSTR; lpszSourceFile:LPCWSTR):BOOL; external KernelDLL name 'DeleteAndRenameFile'; // index FF
procedure DeleteCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external KernelDLL name 'DeleteCriticalSection';
function DeleteDC(_para1:HDC):WINBOOL; external KernelDLL name 'DeleteDC';
function DeleteEnhMetaFile(_para1:HENHMETAFILE):WINBOOL; external KernelDLL name 'DeleteEnhMetaFile';
@ -2052,6 +2029,8 @@ function EnumCalendarInfo(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calen
function EnumCalendarInfoW(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external KernelDLL name 'EnumCalendarInfoW';
function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external KernelDLL name 'EnumDateFormatsW';
function EnumDateFormatsW(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external KernelDLL name 'EnumDateFormatsW';
function EnumDisplayDevices(lpDevice:LPCTSTR; iDevNum:DWORD; lpDisplayDevice:PDISPLAY_DEVICE; dwFlags:DWORD):BOOL; external KernelDLL name 'EnumDisplayDevices'; // index 50E
function EnumDisplayMonitors(_hdc:HDC; lprcClip:LPRECT; lpfnEnum:MONITORENUMPROC; dwData:LPARAM):BOOL; external KernelDLL name 'EnumDisplayMonitors'; // index 666
function EnumDisplaySettings(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODEW):WINBOOL; external KernelDLL name 'EnumDisplaySettings';
function EnumFonts(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external KernelDLL name 'EnumFontsW';
function EnumFontsW(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external KernelDLL name 'EnumFontsW';
@ -2212,6 +2191,7 @@ function GetModuleFileName(hModule:HMODULE; lpFilename:LPWSTR; nSize:DWORD):DWOR
function GetModuleFileNameW(hModule:HMODULE; lpFilename:LPWSTR; nSize:DWORD):DWORD; external KernelDLL name 'GetModuleFileNameW';
function GetModuleHandle(lpModuleName:LPCWSTR):HMODULE; external KernelDLL name 'GetModuleHandleW';
function GetModuleHandleW(lpModuleName:LPCWSTR):HMODULE; external KernelDLL name 'GetModuleHandleW';
function GetMonitorInfo(_hMonitor:HMONITOR; lpmi:LPMONITORINFO):BOOL; external KernelDLL name 'GetMonitorInfo'; // index 665
function GetMouseMovePoints(pptBuf:PPOINT; nBufPoints:UINT; pnPointsRetrieved:PUINT):BOOL; external KernelDLL name 'GetMouseMovePoints'; // index 481
function GetNearestColor(_para1:HDC; _para2:COLORREF):COLORREF; external KernelDLL name 'GetNearestColor';
function GetNearestPaletteIndex(_para1:HPALETTE; _para2:COLORREF):UINT; external KernelDLL name 'GetNearestPaletteIndex';
@ -2314,9 +2294,21 @@ function GlobalFindAtom(lpString:LPCWSTR):ATOM; external KernelDLL name 'GlobalF
function GlobalFindAtomW(lpString:LPCWSTR):ATOM; external KernelDLL name 'GlobalFindAtomW';
function GlobalFree(hMem:HGLOBAL):HGLOBAL;
function GlobalFreePtr(lp:Pointer):Pointer;
type
GlobalHandle = HGLOBAL;
{
function GlobalHandle(pMem:LPCVOID):HGLOBAL;
}
function GlobalLockPtr(lp:pointer):Pointer;
type
GlobalLock = LPVOID;
{
function GlobalLock(hMem:HGLOBAL):LPVOID;
}
function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
function GlobalReAllocPtr(lp:Pointer;cbNew,flags:DWord):Pointer;
function GlobalSize(hMem:HGLOBAL):DWORD;
@ -2472,6 +2464,16 @@ function LoadBitmap(hInstance:HINST; lpBitmapName:LPCWSTR):HBITMAP; external Ker
function LoadBitmapW(hInstance:HINST; lpBitmapName:LPCWSTR):HBITMAP; external KernelDLL name 'LoadBitmapW';
function LoadCursor(hInstance:HINST; lpCursorName:LPCWSTR):HCURSOR; external KernelDLL name 'LoadCursorW';
function LoadCursorW(hInstance:HINST; lpCursorName:LPCWSTR):HCURSOR; external KernelDLL name 'LoadCursorW';
// This function is called by a device driver to load its associated FSD.
// This function is obsolete in Windows CE .NET 4.0 and later.
// Instead, place a storage class identifier in the device driver registry setting
// to notify the Storage Manager of the block driver being loaded.
// The Storage Manager will then parse the partitions and load the appropriate
// file system.
function LoadFSD(hDevice:HANDLE; lpFSDName:LPCWSTR):BOOL; external KernelDLL name 'LoadFSD'; // index 151
function LoadFSDEx(hDevice:HANDLE; lpFSDName:LPCWSTR; dwFlag:DWORD):BOOL; external KernelDLL name 'LoadFSDEx'; // index 152
function LoadIcon(hInstance:HINST; lpIconName:LPCWSTR):HICON; external KernelDLL name 'LoadIconW';
function LoadIconW(hInstance:HINST; lpIconName:LPCWSTR):HICON; external KernelDLL name 'LoadIconW';
function LoadImage(_para1:HINST; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint;_para6:UINT):HANDLE; external KernelDLL name 'LoadImageW';
@ -2491,7 +2493,13 @@ function LocalAlloc(uFlags:UINT; uBytes:UINT):HLOCAL; external KernelDLL name 'L
function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
function LocalFileTimeToFileTime(lpLocalFileTime:LPFILETIME; lpFileTime:LPFILETIME):WINBOOL; external KernelDLL name 'LocalFileTimeToFileTime';
function LocalFree(hMem:HLOCAL):HLOCAL; external KernelDLL name 'LocalFree';
type
LocalHandle = HLOCAL;
{
function LocalHandle(pMem:LPCVOID):HLOCAL;
}
function LocalLock(hMem:HLOCAL):LPVOID;
function LocalReAlloc(hMem:HLOCAL; uBytes:UINT; uFlags:UINT):HLOCAL; external KernelDLL name 'LocalReAlloc';
function LocalSize(hMem:HLOCAL):UINT; external KernelDLL name 'LocalSize';
@ -2581,6 +2589,8 @@ function QueryInstructionSet(dwInstructionSet:DWORD; lpdwCurrentInstructionSet:L
function QueryPerformanceCounter(lpPerformanceCount:PLARGE_INTEGER):WINBOOL; external Kerneldll name 'QueryPerformanceCounter';
function QueryPerformanceFrequency(lpFrequency:PLARGE_INTEGER):WINBOOL; external Kerneldll name 'QueryPerformanceFrequency';
procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; lpArguments:LPDWORD); external KernelDLL name 'RaiseException';
// This function generates a random number.
function WINCE_Random:DWORD; external KernelDLL name 'Random'; // index 91
function ReadFile(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):BOOL; external KernelDLL name 'ReadFile'; // index F4
function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external KernelDLL name 'ReadProcessMemory';
function RealizePalette(_para1:HDC):UINT; external KernelDLL name 'RealizePalette'; // index 52F
@ -2609,6 +2619,7 @@ function RegisterClass(lpWndClass:LPWNDCLASS):ATOM; external KernelDLL name 'Reg
function RegisterClassW(lpWndClass:LPWNDCLASS):ATOM; external KernelDLL name 'RegisterClassW';
function RegisterClipboardFormat(lpszFormat:LPCWSTR):UINT; external KernelDLL name 'RegisterClipboardFormatW';
function RegisterClipboardFormatW(lpszFormat:LPCWSTR):UINT; external KernelDLL name 'RegisterClipboardFormatW';
function RegisterDesktop(_hwndDesktop:HWND):BOOL; external KernelDLL name 'RegisterDesktop'; // index 4DB
function RegisterDevice(lpszType:LPCWSTR; dwIndex:DWORD; lpszLib:LPCWSTR; dwInfo:DWORD):HANDLE; external KernelDLL name 'RegisterDevice'; // index 14F
function RegisterTaskBar(hwndTaskbar:HWND):BOOL; external KernelDLL name 'RegisterTaskBar'; // index 4D9
function RegisterTaskBarEx(hwndTaskbar:HWND; bTaskBarOnTop:BOOL):BOOL; external KernelDLL name 'RegisterTaskBarEx'; // index 4DA
@ -2638,6 +2649,12 @@ function RemoveMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT):WINBOOL; external
function RemoveProp(hWnd:HWND; lpString:LPCWSTR):HANDLE; external KernelDLL name 'RemoveProp';
function RequestDeviceNotifications(devclass:LPGUID; hMsgQ:HANDLE; fAll:BOOL):HANDLE; external KernelDLL name 'RequestDeviceNotifications'; // index 155
function ResetEvent(hEvent:HANDLE):WINBOOL;
function ResourceCreateList(dwResId:DWORD; dwMinimum:DWORD; dwCount:DWORD):BOOL; external KernelDLL name 'ResourceCreateList'; // index 15A
function ResourceRelease(dwResId:DWORD; dwId:DWORD; dwLen:DWORD):BOOL; external KernelDLL name 'ResourceRelease'; // index 15C
function ResourceRequest(dwResId:DWORD; dwId:DWORD; dwLen:DWORD):BOOL; external KernelDLL name 'ResourceRequest'; // index 15B
function ResourceDestroyList(dwResId:DWORD):BOOL; external KernelDLL name 'ResourceDestroyList';
function ResourceRequestEx(dwResId:DWORD; dwId:DWORD; dwLen:DWORD; dwFlags:DWORD):BOOL; external KernelDLL name 'ResourceRequestEx';
function ResourceMarkAsShareable(dwResId:DWORD; dwId:DWORD; dwLen:DWORD; fShareable:BOOL):BOOL; external KernelDLL name 'ResourceMarkAsShareable';
function RestoreDC(_para1:HDC; _para2:longint):WINBOOL; external KernelDLL name 'RestoreDC';
function ResumeThread(hThread:HANDLE):DWORD; external KernelDLL name 'ResumeThread';
function RoundRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:longint; _para7:longint):WINBOOL; external KernelDLL name 'RoundRect';
@ -2733,15 +2750,17 @@ function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconDataA): WINBOOL;
function ShellExecuteEx(lpExecInfo:LPSHELLEXECUTEINFO):WINBOOL; external KernelDLL name 'ShellExecuteEx';
function SHGetFileInfo(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external KernelDLL name 'SHGetFileInfo';
function SHGetFileInfoW(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external KernelDLL name 'SHGetFileInfo';
function SHLoadDIBitmap(szFileName:LPCTSTR):HBITMAP; external KernelDLL name 'SHLoadDIBitmap'; // index 2EC
function ShowCaret(hWnd:HWND):WINBOOL; external KernelDLL name 'ShowCaret';
function ShowCursor(bShow:WINBOOL):longint; external KernelDLL name 'ShowCursor';
function ShowWindow(hWnd:HWND; nCmdShow:longint):WINBOOL; external KernelDLL name 'ShowWindow';
procedure SignalStarted(dw:DWORD); external KernelDLL name 'SignalStarted'; // index 176
function SizeofResource(hModule:HINST; hResInfo:HRSRC):DWORD; external KernelDLL name 'SizeofResource';
procedure Sleep(dwMilliseconds:DWORD); external KernelDLL name 'Sleep';
function StartDoc(_para1:HDC; _para2:PDOCINFOW):longint; external KernelDLL name 'StartDocW';
function StartDocW(_para1:HDC; _para2:PDOCINFOW):longint; external KernelDLL name 'StartDocW';
function StartPage(_para1:HDC):longint; external KernelDLL name 'StartPage';
function StopDeviceNotifications(h: HANDLE):BOOL; external KernelDLL name 'StopDeviceNotifications';
function StopDeviceNotifications(h:HANDLE):BOOL; external KernelDLL name 'StopDeviceNotifications'; // index 156
function StretchBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:HDC; _para7:longint; _para8:longint; _para9:longint; _para10:longint;_para11:DWORD):WINBOOL; external KernelDLL name 'StretchBlt';
function StretchDIBits(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:pointer;var _para11:BITMAPINFO; _para12:UINT; _para13:DWORD):longint;
external KernelDLL name 'StretchDIBits';
@ -3065,11 +3084,13 @@ begin
GlobalFree:=LocalFree(hMem);
end;
{
function GlobalHandle(pMem:LPCVOID):HGLOBAL;
begin
//GlobalHandle:=LocalHandle(pMem);
GlobalHandle:=HLOCAL(pMem); //see localhandle
end;
}
function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
begin
@ -3081,11 +3102,13 @@ begin
GlobalSize:=LocalSize(hMem);
end;
{
function GlobalLock(hMem:HGLOBAL):LPVOID;
begin
//GlobalLock:=LocalLock(hMem);
GlobalLock:=LPVOID(hMem); //see locallock
end;
}
function GlobalUnlock(hMem:HGLOBAL):WINBOOL;
begin
@ -3462,11 +3485,12 @@ begin
ListView_Update:=SendMessage(hwndLV,LVM_UPDATE,WPARAM(i),0);
end;
{
function LocalHandle(pMem:LPCVOID):HLOCAL;
begin
LocalHandle:=HLOCAL(pMem);
end;
}
function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
begin
@ -3571,7 +3595,7 @@ begin
end;
function PropSheet_SetCurSelByID(hPropSheetDlg : HWND; id : longint) : LRESULT;
function PropSheet_SetCurSelByID(hPropSheetDlg : HWND; id : longint) : LRESULT; inline;
begin
PropSheet_SetCurSelByID:=SendMessage(hPropSheetDlg,PSM_SETCURSELID,0,LPARAM(id));
end;

View File

@ -2228,6 +2228,7 @@
MOD_CONTROL = 2;
MOD_SHIFT = 4;
MOD_WIN = 8;
MOD_KEYUP = $1000;
IDHOT_SNAPDESKTOP = -(2);
IDHOT_SNAPWINDOW = -(1);
{ RegNotifyChangeKeyValue }
@ -2657,6 +2658,9 @@
TPM_HORIZONTAL = 0;
TPM_BOTTOMALIGN = $20;
TPM_VERTICAL = $40;
TPM_NONOTIFY = $0080; //* Don't send any notification msgs */
TPM_RETURNCMD = $0100;
{ TranslateCharsetInfo }
TCI_SRCCHARSET = 1;
TCI_SRCCODEPAGE = 2;
@ -3866,6 +3870,7 @@
ACS_AUTOPLAY = 4;
ACS_CENTER = 1;
ACS_TRANSPARENT = 2;
ACS_TIMER = 8; // don't use threads... use timers
{ MODEMDEVCAPS structure }
DIALOPTION_BILLING = 64;
DIALOPTION_QUIET = 128;
@ -5799,6 +5804,254 @@ const
MSGSRC_SOFTWARE_POST = 1;
MSGSRC_HARDWARE_KEYBOARD = 2;
// define dwFlag values for LoadFSDEx function...
const
LOADFSD_ASYNCH = $0000;
LOADFSD_SYNCH = $0001;
// flag values for ResourceRequestEx()
const
RREXF_REQUEST_EXCLUSIVE = $0001;
{* File: ResMgr.h
*
* Purpose: Resource manager definitions
* The resource manager itself is part of the device manager (device.exe)
* and its affliated entry points are declared in winbase.h.
*
*}
// Resource ids less than BASE_OEM are reserved by Microsoft;
// Resource ids between these limits are for OEM use.
const
RESMGR_BASE_OEM = $00080000;
RESMGR_MAX_OEM = $000FFFFF;
// Resource ids greater than MAX_OEM are reserved for future use by Microsoft.
// --- FIVE hex digits (not four) in these constants!
const
RESMGR_IRQ = $00001;
RESMGR_IOSPACE = $00002;
// End-of-file ResMgr.h
const
MONITOR_DEFAULTTONULL = $00000000;
MONITOR_DEFAULTTOPRIMARY = $00000001;
MONITOR_DEFAULTTONEAREST = $00000002;
const
MONITORINFOF_PRIMARY = $00000001;
const
ENUM_CURRENT_SETTINGS = DWORD(-1);
ENUM_REGISTRY_SETTINGS = DWORD(-2);
// For EnumDisplayDevices
const
DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = $00000001;
DISPLAY_DEVICE_MULTI_DRIVER = $00000002;
DISPLAY_DEVICE_PRIMARY_DEVICE = $00000004;
DISPLAY_DEVICE_MIRRORING_DRIVER = $00000008;
DISPLAY_DEVICE_VGA_COMPATIBLE = $00000010;
DISPLAY_DEVICE_REMOVABLE = $00000020;
DISPLAY_DEVICE_MODESPRUNED = $08000000;
DISPLAY_DEVICE_REMOTE = $04000000;
DISPLAY_DEVICE_DISCONNECT = $02000000;
// Child device state
const
DISPLAY_DEVICE_ACTIVE = $00000001;
DISPLAY_DEVICE_ATTACHED = $00000002;
// winuserm.h
// Mobile extensions to winuser.h
//*** VK_T* Virtual keycodes for telephone keyboard
{
// the phone keypad maps to VK_* as shown below.
// some keys might not be present, e.g. VK_TFLIP
sofkey1 softkey2 VK_TSOFT1, VK_TSOFT2
^ VK_TUP
< + > VK_TLEFT, VK_TACTION, VK_TRIGHT
v VK_TDOWN
home back VK_THOME, VK_TBACK
talk end VK_TTALK, VK_TEND
1 2 3 VK_T0..VK_T9
4 5 6 ...
7 8 9 ...
* 0 # VK_TSTAR, VK_TPOUND
// other buttons include
VK_TRECORD
VK_TPOWER, VK_TVOLUMEUP, VK_TVOLUMEDOWN
VK_TFLIP
}
const
VK_TSOFT1 = VK_F1; // Softkey 1
VK_TSOFT2 = VK_F2; // Softkey 2
VK_TTALK = VK_F3; // Talk
VK_TEND = VK_F4; // End
VK_THOME = VK_LWIN; // Home
VK_TBACK = VK_ESCAPE; // Back
VK_TACTION = VK_RETURN; // Action
VK_TRECORD = VK_F10; // Record
VK_TFLIP = VK_F17; // Flip
VK_TPOWER = VK_F18; // Power
VK_TVOLUMEUP = VK_F6; // Volume Up
VK_TVOLUMEDOWN = VK_F7; // Volume Down
VK_TSPEAKERPHONE_TOGGLE = VK_F16;
VK_END_ALL_DATA_CALLS = VK_F15;
VK_TUP = VK_UP; // Up
VK_TDOWN = VK_DOWN; // Down
VK_TLEFT = VK_LEFT; // Left
VK_TRIGHT = VK_RIGHT; // Right
VK_T0 = longint(WideChar('0')); // 0 .. 9 keys
VK_T1 = longint(WideChar('1'));
VK_T2 = longint(WideChar('2'));
VK_T3 = longint(WideChar('3'));
VK_T4 = longint(WideChar('4'));
VK_T5 = longint(WideChar('5'));
VK_T6 = longint(WideChar('6'));
VK_T7 = longint(WideChar('7'));
VK_T8 = longint(WideChar('8'));
VK_T9 = longint(WideChar('9'));
VK_TSTAR = VK_F8; // *
VK_TPOUND = VK_F9; // #
VK_SYMBOL = VK_F11; // Symbol (SYM) key
VK_REDKEY = VK_F19; // Sent by a keypad that has a special red function key
VK_ROCKER = VK_F20; // Arrow keys came from a Rocker
VK_DPAD = VK_F21; // Arrow keys came from a DPAD
VK_ACTION = VK_F23; // Sent with VK_RETURN when doing Action on PPC rockers
VK_VOICEDIAL = VK_F24; // Key used to kick off voice dial recognition
VK_KEYLOCK = VK_F22; // Key used to lock the device
// Chorded keys. DONE is VK_RWIN + VK_F6 and MOJI is VK_RWIN + VK_F7
const
VK_DONE = VK_F6; // <OK/Close> hotkey code
MOD_DONE = MOD_WIN or MOD_KEYUP; // <OK/Close> hotkey modifiers
VK_MOJI = VK_F7; // Key used to switch between FE language layouts
MOD_MOJI = MOD_WIN or MOD_KEYUP; //Modifiers so MOJI goes to the shell
// App keys
const
VK_APP_FIRST = $C1;
VK_APP1 = $C1;
VK_APP2 = $C2;
VK_APP3 = $C3;
VK_APP4 = $C4;
VK_APP5 = $C5;
VK_APP6 = $C6;
VK_APP_LAST = $C6;
// Specifies keys whose autorepeats should be silent. (Used by the keyboard driver.)
// All keys except the nav keys should have silent autorepeats.
// #define SILENT_REPEAT(uVKey) (uVKey < VK_LEFT || uVKey > VK_DOWN)
function SILENT_REPEAT(uVKey:longint):BOOL; inline;
// #define Edit_GetInputMode(hwndCtl, fActual) ((int)(DWORD)SNDMSG((hwndCtl), EM_GETINPUTMODE, 0L, (LPARAM)(BOOL)(fActual)))
function Edit_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint;
// #define Edit_SetInputMode(hwndCtl, nInputMode) ((BOOL)(DWORD)SNDMSG((hwndCtl), EM_SETINPUTMODE, 0L, (LPARAM)(int)(nInputMode)))
function Edit_SetInputMode(hwndCtl:HWND; nInputMode:longint):Bool;
// #define Edit_SetSymbols(hwndCtl, pszSymbols) ((BOOL)(DWORD)SNDMSG((hwndCtl), EM_SETSYMBOLS, 0L, (LPARAM)(LPCTSTR)(pszSymbols)))
function Edit_SetSymbols(hwndCtl:HWND; pszSymbols:LPCTSTR):BOOL;
// #define Edit_SetExtendedStyle(hwndCtl, dwMask, dwExStyle) ((DWORD)SNDMSG((hwndCtl), EM_SETEXTENDEDSTYLE, (WPARAM)(DWORD)(dwMask), (LPARAM)(DWORD)(dwExStyle)))
function Edit_SetExtendedStyle(hwndCtl:HWND; dwMask:DWORD; dwExStyle:DWORD):DWORD;
// #define Edit_GetExtendedStyle(hwndCtl) ((DWORD)SNDMSG((hwndCtl), EM_GETEXTENDEDSTYLE, 0L, 0L))
function Edit_GetExtendedStyle(hwndCtl:HWND):DWORD;
// Edit control extended styles
const
ES_EX_CLEARONBACKPRESSHOLD = $00000001; // Clear all contents when user does Press&Hold of Back key.
ES_EX_FOCUSBORDERDISABLED = $00000002; // Prevent control from drawing a border when it gains focus.
// IME Input Modes
const
IM_SPELL = 0;
IM_AMBIG = 1;
IM_NUMBERS = 2;
IM_LAST = IM_NUMBERS;
IM_MASK = $0000FFFF; // Mask to access mode.
// IME Input Mode Modifier Flags
IMMF_SETCLR_SHIFT = $00010000; // In. Used to set/clear Shift.
IMMF_SETCLR_CAPSLOCK = $00020000; // In. Used to set/clear Capslock.
IMMF_SHIFT = $01000000; // In/Out. Shift state.
IMMF_CAPSLOCK = $02000000; // In/Out. CapsLock state.
IMMF_MASK = $FFFF0000; // Mask to access modifier flags.
// Input modes for EM_SETINPUTMODE/EM_GETINPUTMODE
EIM_SPELL = IM_SPELL; // Spell input mode
EIM_AMBIG = IM_AMBIG; // Ambiguous mode if input engine supports this mode. Else defaults to Spell mode.
EIM_NUMBERS = IM_NUMBERS; // Numbers mode.
EIM_TEXT = IM_LAST + 1; // User's preferred mode. This is the user's last Spell or Ambig mode selection
// in an EIM_TEXT edit control.
EIM_MASK = IM_MASK; // Mask to access mode.
// Macro to access mode
// #define EIM_MODE(x) (x & EIM_MASK)
function EIM_MODE(x:DWORD):DWORD;
// Input mode modifier flags
const
EIMMF_SETCLR_SHIFT = IMMF_SETCLR_SHIFT; // In. Used to set/clear Shift.
EIMMF_SETCLR_CAPSLOCK = IMMF_SETCLR_CAPSLOCK; // In. Used to set/clear Capslock.
EIMMF_SHIFT = IMMF_SHIFT; // In/Out. Shift state.
EIMMF_CAPSLOCK = IMMF_CAPSLOCK; // In/Out. CapsLock state.
EIMMF_MASK = IMMF_MASK; // Mask to access modifier flags.
// Macro to access modifier flags
// #define EIM_MODIFIERS(x) (x & EIMMF_MASK)
function EIM_MODIFIERS(x:DWORD):DWORD;
// #define ListBox_GetInputMode(hwndCtl, fActual) ((int)(DWORD)SNDMSG((hwndCtl), LB_GETINPUTMODE, 0L, (WPARAM)(BOOL)(fActual)))
function ListBox_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint;
// #define ListBox_SetInputMode(hwndCtl, nInputMode) ((BOOL)(DWORD)SNDMSG((hwndCtl), LB_SETINPUTMODE, 0L, (LPARAM)(int)(nInputMode)))
function ListBox_SetInputMode(hwndCtl:HWND; nInputMode:longint):BOOL;
// Input modes for LB_SETINPUTMODE/LB_GETINPUTMODE
const
LIM_SPELL = IM_SPELL; // Spell input mode
LIM_NUMBERS = IM_NUMBERS; // Numbers mode.
// wParam of WM_IME_REQUEST. Extension for Mobile.
const
IMR_ISIMEAWARE = $1000; // Is window IME aware?
// Return values of IMR_ISIMEAWARE
const
IMEAF_AWARE = $00000001; // Window is IME aware
IMEAF_SMART_CAPS = $00000002; // Window uses smart caps.
// Extension of WM_HOTKEY MOD_* values for Mobile
const
MOD_HOLD = $8000; // Was WM_HOTKEY caused by Press&Hold
const
MIIM_FULLSTR = $10000000;
const
SS_REALSIZEIMAGE = $00000800;
// End-of-winuserm.h
const
MAXINTATOM = ATOM($C000);
INVALID_ATOM = ATOM(0);
{$endif read_interface}
@ -5985,6 +6238,66 @@ const
GetFirstChild:=GetWindow(h,GW_CHILD);
end;
// winuserm.h
// Mobile extensions to winuser.h
// Specifies keys whose autorepeats should be silent. (Used by the keyboard driver.)
// All keys except the nav keys should have silent autorepeats.
// #define SILENT_REPEAT(uVKey) (uVKey < VK_LEFT || uVKey > VK_DOWN)
function SILENT_REPEAT(uVKey:longint):BOOL; inline;
begin
SILENT_REPEAT:=(uVKey<VK_LEFT) or (uVKey>VK_DOWN);
end;
function Edit_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint; inline;
begin
Edit_GetInputMode:=longint(SendMessage(hwndCtl,EM_GETINPUTMODE,WPARAM(0),LPARAM(fActual)));
end;
function Edit_SetInputMode(hwndCtl:HWND; nInputMode:longint):Bool; inline;
begin
Edit_SetInputMode:=BOOL(DWORD(SendMessage(hwndCtl,EM_SETINPUTMODE,WPARAM(0),LPARAM(nInputMode))));
end;
function Edit_SetSymbols(hwndCtl:HWND; pszSymbols:LPCTSTR):BOOL; inline;
begin
Edit_SetSymbols:=BOOL(SendMessage(hwndCtl,EM_SETSYMBOLS,WPARAM(0),LPARAM(pszSymbols)));
end;
function Edit_SetExtendedStyle(hwndCtl:HWND; dwMask:DWORD; dwExStyle:DWORD):DWORD; inline;
begin
Edit_SetExtendedStyle:=DWORD(SendMessage(hwndCtl,EM_SETEXTENDEDSTYLE,WPARAM(dwMask),LPARAM(dwExStyle)));
end;
function Edit_GetExtendedStyle(hwndCtl:HWND):DWORD; inline;
begin
Edit_GetExtendedStyle:=DWORD(SendMessage(hwndCtl,EM_GETEXTENDEDSTYLE,WPARAM(0),LPARAM(0)));
end;
function EIM_MODE(x:DWORD):DWORD; inline;
begin
EIM_MODE:=x and EIM_MASK;
end;
function EIM_MODIFIERS(x:DWORD):DWORD; inline;
begin
EIM_MODIFIERS:=x and EIMMF_MASK;
end;
function ListBox_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint; inline;
begin
ListBox_GetInputMode:=longint(SendMessage(hwndCtl,LB_GETINPUTMODE,WPARAM(0),LPARAM(fActual)));
end;
function ListBox_SetInputMode(hwndCtl:HWND; nInputMode:longint):BOOL; inline;
begin
ListBox_SetInputMode:=BOOL(SendMessage(hwndCtl,LB_SETINPUTMODE,WPARAM(0),LPARAM(nInputMode)));
end;
// End-of-winuserm.h
{$ifdef WINCE}
{$endif WINCE}

View File

@ -1132,6 +1132,55 @@
WM_XBUTTONUP = 524;
WM_XBUTTONDBLCLK = 525;
// winuserm.h
// Mobile extensions to winuser.h
// Edit control extensions for Mobile
const
// If lParam is FALSE, gets default input mode.
// If lParam is TRUE, gets actual input mode if control has focus, else
// gets default input mode. Returns EIM_*|EIMMF_*
EM_GETINPUTMODE = $00DD;
// Sets default input mode when control gets focus. lParam should be be EIM_*|EIMMF_*.
EM_SETINPUTMODE = $00DE;
// Sets symbols that are displayed when the user presses the 1 key in
// Multipress mode. lParam is a null-teminated string containing the symbols
// or NULL to revert to standard symbols.
EM_SETSYMBOLS = $00DF;
// Sets extended styles. wParam = Mask. lParam = Extended styles. Returns old styles.
EM_SETEXTENDEDSTYLE = $00E0;
// Gets extended styles.
EM_GETEXTENDEDSTYLE = $00E1;
// Listbox control extensions for Mobile. Supported only for single selection listboxes.
const
// If lParam is FALSE, gets default input mode.
// If lParam is TRUE, gets actual input mode if control has focus, else
// gets default input mode. Returns LIM_*
LB_GETINPUTMODE = $01C0;
// Sets default input mode when control gets focus. lParam should be be LIM_*.
LB_SETINPUTMODE = $01C1;
// Dialog message extensions
//
// Reset scroll info. To be sent by a dialog if it does a relayout of child
// controls after WM_INITDIALOG. Supported only if the dialog returns DLGC_SCROLL
// on WM_GETDLGCODE.
// wParam: TRUE to scroll back to top if user scrolled dialog. FALSE to leave
// dialog in position that user scrolled to.
// lParam: TRUE to recompute scroll information. FALSE to use previously computed
// scroll information.
const
DM_RESETSCROLL = WM_USER + 2;
// End-of-winuserm.h
Type
{$ifdef MESSAGESUNIT}

View File

@ -20,6 +20,7 @@
type
PIID = PGUID;
TIID = TGUID;
REFIID = ^TIID;
THANDLE = HANDLE;
PSmallRect = ^TSmallRect;

View File

@ -280,6 +280,7 @@
1: (TopLeft,BottomRight : TPoint);
end;
LPRECT = ^RECT;
LPCRECT = ^RECT;
_RECT = RECT;
TRECT = RECT;
PRECT = ^RECT;
@ -5347,11 +5348,18 @@
_GUID = GUID;
TGUID = GUID;
PGUID = ^GUID;
REFGUID = ^GUID;
CLSID = GUID;
LPCLSID = ^CLSID;
TCLSID = CLSID;
PCLSID = ^CLSID;
REFCLSID = ^CLSID;
FMTID = GUID;
LPFMTID = ^FMTID;
REFFMTID = ^FMTID;
SERVICE_INFO = record
lpServiceType : LPGUID;
@ -7721,6 +7729,46 @@ type
PINPUT = ^tagINPUT;
LPINPUT = ^tagINPUT;
// For EnumDisplayMonitors
type
MONITORENUMPROC = function(_hMonitor:HMONITOR; hdcMonitor:HDC; lprcMonitor:LPRECT; dwData:LPARAM):BOOL;
// For GetMonitorInfo
type
tagMONITORINFO = record
cbSize:DWORD;
rcMonitor:RECT;
rcWork:RECT;
dwFlags:DWORD;
end;
MONITORINFO = tagMONITORINFO;
LPMONITORINFO = ^tagMONITORINFO;
tagMONITORINFOEX = record
cbSize:DWORD;
rcMonitor:RECT;
rcWork:RECT;
dwFlags:DWORD;
szDevice:array[0..CCHDEVICENAME-1] of TCHAR;
end;
MONITORINFOEX = tagMONITORINFOEX;
LPMONITORINFOEX = ^tagMONITORINFOEX;
// For EnumDisplayDevices
type
_DISPLAY_DEVICE = record
cb:DWORD;
DeviceName:array[0..31] of TCHAR;
DeviceString:array[0..127] of TCHAR;
StateFlags:DWORD;
DeviceID:array[0..127] of TCHAR;
DeviceKey:array[0..127] of TCHAR;
end;
DISPLAY_DEVICE = _DISPLAY_DEVICE;
PDISPLAY_DEVICE = ^_DISPLAY_DEVICE;
LPDISPLAY_DEVICE = ^_DISPLAY_DEVICE;
{$endif read_interface}