📄 jwawinuser.pas
字号:
{******************************************************************************}
{ }
{ Windows User API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
{ Corporation. All Rights Reserved. }
{ }
{ The original file is: winuser.h, released June 2000. The original Pascal }
{ code is: WinUser.pas, released December 2000. The initial developer of the }
{ Pascal code is Marcel van Brakel (brakelm@chello.nl). }
{ }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
{ Marcel van Brakel. All Rights Reserved. }
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project JEDI home }
{ page, located at http://delphi-jedi.org or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
unit JwaWinUser;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "WinUser.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinBase, JwaWinGDI, JwaWinNT, JwaWinType;
const
UINT_MAX = UINT($FFFFFFFF); // from limits.h TODO
{$EXTERNALSYM UINT_MAX}
type
HDWP = HANDLE;
{$EXTERNALSYM HDWP}
MENUTEMPLATEA = Pointer;
{$EXTERNALSYM MENUTEMPLATEA}
MENUTEMPLATEW = Pointer;
{$EXTERNALSYM MENUTEMPLATEW}
{$IFDEF UNICODE}
MENUTEMPLATE = MENUTEMPLATEW;
{$EXTERNALSYM MENUTEMPLATE}
{$ELSE}
MENUTEMPLATE = MENUTEMPLATEA;
{$EXTERNALSYM MENUTEMPLATE}
{$ENDIF}
LPMENUTEMPLATEA = PVOID;
{$EXTERNALSYM LPMENUTEMPLATEA}
LPMENUTEMPLATEW = PVOID;
{$EXTERNALSYM LPMENUTEMPLATEW}
{$IFDEF UNICODE}
LPMENUTEMPLATE = LPMENUTEMPLATEW;
{$EXTERNALSYM LPMENUTEMPLATE}
{$ELSE}
LPMENUTEMPLATE = LPMENUTEMPLATEA;
{$EXTERNALSYM LPMENUTEMPLATE}
{$ENDIF}
WNDPROC = function (hWnd: HWND; uMsg: UINT; lParam: WPARAM; wParam: LPARAM): LRESULT;
{$EXTERNALSYM WNDPROC}
DLGPROC = function (hwndDlg: HWND; wMsg: UINT; wParam: WPARAM; lParam: LPARAM): INT_PTR; stdcall;
{$EXTERNALSYM DLGPROC}
TIMERPROC = procedure (hwnd: HWND; uMsg: UINT; idEvent: UINT_PTR; dwTime: DWORD); stdcall;
{$EXTERNALSYM TIMERPROC}
GRAYSTRINGPROC = function (hdc: HDC; lpData: LPARAM; cchData: Integer): BOOL; stdcall;
{$EXTERNALSYM GRAYSTRINGPROC}
WNDENUMPROC = function (hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
{$EXTERNALSYM WNDENUMPROC}
HOOKPROC = function (nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
{$EXTERNALSYM HOOKPROC}
SENDASYNCPROC = procedure (hwnd: HWND; uMsg: UINT; dwData: ULONG_PTR; lResult: LRESULT); stdcall;
{$EXTERNALSYM SENDASYNCPROC}
PROPENUMPROCA = function (hwnd: HWND; lpszString: LPCSTR; hData: HANDLE): BOOL; stdcall;
{$EXTERNALSYM PROPENUMPROCA}
PROPENUMPROCW = function (hwnd: HWND; lpszString: LPCWSTR; hData: HANDLE): BOOL; stdcall;
{$EXTERNALSYM PROPENUMPROCW}
PROPENUMPROCEXA = function (hwnd: HWND; lpszString: LPSTR; hData: HANDLE; dwData: ULONG_PTR): BOOL; stdcall;
{$EXTERNALSYM PROPENUMPROCEXA}
PROPENUMPROCEXW = function (hwnd: HWND; lpszString: LPWSTR; hData: HANDLE; dwData: ULONG_PTR): BOOL; stdcall;
{$EXTERNALSYM PROPENUMPROCEXW}
EDITWORDBREAKPROCA = function (lpch: LPSTR; ichCurrent: Integer; cch, code: Integer): Integer; stdcall;
{$EXTERNALSYM EDITWORDBREAKPROCA}
EDITWORDBREAKPROCW = function (lpch: LPWSTR; ichCurrent: Integer; cch, code: Integer): Integer; stdcall;
{$EXTERNALSYM EDITWORDBREAKPROCW}
DRAWSTATEPROC = function (hdc: HDC; lData: LPARAM; wData: WPARAM; cx, cy: Integer): BOOL; stdcall;
{$EXTERNALSYM DRAWSTATEPROC}
{$IFDEF UNICODE}
PROPENUMPROC = PROPENUMPROCW;
{$EXTERNALSYM PROPENUMPROC}
PROPENUMPROCEX = PROPENUMPROCEXW;
{$EXTERNALSYM PROPENUMPROCEX}
EDITWORDBREAKPROC = EDITWORDBREAKPROCW;
{$EXTERNALSYM EDITWORDBREAKPROC}
{$ELSE}
PROPENUMPROC = PROPENUMPROCA;
{$EXTERNALSYM PROPENUMPROC}
PROPENUMPROCEX = PROPENUMPROCEXA;
{$EXTERNALSYM PROPENUMPROCEX}
EDITWORDBREAKPROC = EDITWORDBREAKPROCA;
{$EXTERNALSYM EDITWORDBREAKPROC}
{$ENDIF}
NAMEENUMPROCA = function (lpstr: LPSTR; lParam: LPARAM): BOOL; stdcall;
{$EXTERNALSYM NAMEENUMPROCA}
NAMEENUMPROCW = function (lpstr: LPWSTR; lParam: LPARAM): BOOL; stdcall;
{$EXTERNALSYM NAMEENUMPROCW}
WINSTAENUMPROCA = NAMEENUMPROCA;
{$EXTERNALSYM WINSTAENUMPROCA}
DESKTOPENUMPROCA = NAMEENUMPROCA;
{$EXTERNALSYM DESKTOPENUMPROCA}
WINSTAENUMPROCW = NAMEENUMPROCW;
{$EXTERNALSYM WINSTAENUMPROCW}
DESKTOPENUMPROCW = NAMEENUMPROCW;
{$EXTERNALSYM DESKTOPENUMPROCW}
{$IFDEF UNICODE}
WINSTAENUMPROC = WINSTAENUMPROCW;
{$EXTERNALSYM WINSTAENUMPROC}
DESKTOPENUMPROC = DESKTOPENUMPROCW;
{$EXTERNALSYM DESKTOPENUMPROC}
{$ELSE}
WINSTAENUMPROC = WINSTAENUMPROCA;
{$EXTERNALSYM WINSTAENUMPROC}
DESKTOPENUMPROC = DESKTOPENUMPROCA;
{$EXTERNALSYM DESKTOPENUMPROC}
{$ENDIF}
function IS_INTRESOURCE(wInteger: WORD): BOOL;
{$EXTERNALSYM IS_INTRESOURCE}
type
MAKEINTRESOURCEA = LPSTR;
{$EXTERNALSYM MAKEINTRESOURCEA}
MAKEINTRESOURCEW = LPWSTR;
{$EXTERNALSYM MAKEINTRESOURCEW}
{$IFDEF UNICODE}
MAKEINTRESOURCE = MAKEINTRESOURCEW;
{$EXTERNALSYM MAKEINTRESOURCE}
{$ELSE}
MAKEINTRESOURCE = MAKEINTRESOURCEA;
{$EXTERNALSYM MAKEINTRESOURCE}
{$ENDIF}
//
// Predefined Resource Types
//
const
RT_CURSOR = MAKEINTRESOURCE(1);
{$EXTERNALSYM RT_CURSOR}
RT_BITMAP = MAKEINTRESOURCE(2);
{$EXTERNALSYM RT_BITMAP}
RT_ICON = MAKEINTRESOURCE(3);
{$EXTERNALSYM RT_ICON}
RT_MENU = MAKEINTRESOURCE(4);
{$EXTERNALSYM RT_MENU}
RT_DIALOG = MAKEINTRESOURCE(5);
{$EXTERNALSYM RT_DIALOG}
RT_STRING = MAKEINTRESOURCE(6);
{$EXTERNALSYM RT_STRING}
RT_FONTDIR = MAKEINTRESOURCE(7);
{$EXTERNALSYM RT_FONTDIR}
RT_FONT = MAKEINTRESOURCE(8);
{$EXTERNALSYM RT_FONT}
RT_ACCELERATOR = MAKEINTRESOURCE(9);
{$EXTERNALSYM RT_ACCELERATOR}
RT_RCDATA = MAKEINTRESOURCE(10);
{$EXTERNALSYM RT_RCDATA}
RT_MESSAGETABLE = MAKEINTRESOURCE(11);
{$EXTERNALSYM RT_MESSAGETABLE}
DIFFERENCE = 11;
{$EXTERNALSYM DIFFERENCE}
RT_GROUP_CURSOR = MAKEINTRESOURCE(ULONG_PTR(RT_CURSOR) + DIFFERENCE);
{$EXTERNALSYM RT_GROUP_CURSOR}
RT_GROUP_ICON = MAKEINTRESOURCE(ULONG_PTR(RT_ICON) + DIFFERENCE);
{$EXTERNALSYM RT_GROUP_ICON}
RT_VERSION = MAKEINTRESOURCE(16);
{$EXTERNALSYM RT_VERSION}
RT_DLGINCLUDE = MAKEINTRESOURCE(17);
{$EXTERNALSYM RT_DLGINCLUDE}
RT_PLUGPLAY = MAKEINTRESOURCE(19);
{$EXTERNALSYM RT_PLUGPLAY}
RT_VXD = MAKEINTRESOURCE(20);
{$EXTERNALSYM RT_VXD}
RT_ANICURSOR = MAKEINTRESOURCE(21);
{$EXTERNALSYM RT_ANICURSOR}
RT_ANIICON = MAKEINTRESOURCE(22);
{$EXTERNALSYM RT_ANIICON}
RT_HTML = MAKEINTRESOURCE(23);
{$EXTERNALSYM RT_HTML}
RT_MANIFEST = MAKEINTRESOURCE(24);
CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1);
{$EXTERNALSYM CREATEPROCESS_MANIFEST_RESOURCE_ID}
ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(2);
{$EXTERNALSYM ISOLATIONAWARE_MANIFEST_RESOURCE_ID}
ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(3);
{$EXTERNALSYM ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID}
MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1{inclusive});
{$EXTERNALSYM MINIMUM_RESERVED_MANIFEST_RESOURCE_ID}
MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(16{inclusive});
{$EXTERNALSYM MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID}
type
va_list = PChar;
{$EXTERNALSYM va_list}
function wvsprintfA(Output: LPSTR; Format: LPCSTR; arglist: va_list): Integer; stdcall;
{$EXTERNALSYM wvsprintfA}
function wvsprintfW(Output: LPWSTR; Format: LPCWSTR; arglist: va_list): Integer; stdcall;
{$EXTERNALSYM wvsprintfW}
{$IFDEF UNICODE}
function wvsprintf(Output: LPWSTR; Format: LPCWSTR; arglist: va_list): Integer; stdcall;
{$EXTERNALSYM wvsprintf}
{$ELSE}
function wvsprintf(Output: LPSTR; Format: LPCSTR; arglist: va_list): Integer; stdcall;
{$EXTERNALSYM wvsprintf}
{$ENDIF}
function wsprintfA(Output: LPSTR; Format: LPCSTR): Integer; stdcall;
{$EXTERNALSYM wsprintfA}
function wsprintfW(Output: LPWSTR; Format: LPCWSTR): Integer; stdcall;
{$EXTERNALSYM wsprintfW}
{$IFDEF UNICODE}
function wsprintf(Output: LPWSTR; Format: LPCWSTR): Integer; stdcall;
{$EXTERNALSYM wsprintf}
{$ELSE}
function wsprintf(Output: LPSTR; Format: LPCSTR): Integer; stdcall;
{$EXTERNALSYM wsprintf}
{$ENDIF}
//
// SPI_SETDESKWALLPAPER defined constants
//
const
SETWALLPAPER_DEFAULT = LPWSTR(-1);
{$EXTERNALSYM SETWALLPAPER_DEFAULT}
//
// Scroll Bar Constants
//
SB_HORZ = 0;
{$EXTERNALSYM SB_HORZ}
SB_VERT = 1;
{$EXTERNALSYM SB_VERT}
SB_CTL = 2;
{$EXTERNALSYM SB_CTL}
SB_BOTH = 3;
{$EXTERNALSYM SB_BOTH}
//
// Scroll Bar Commands
//
SB_LINEUP = 0;
{$EXTERNALSYM SB_LINEUP}
SB_LINELEFT = 0;
{$EXTERNALSYM SB_LINELEFT}
SB_LINEDOWN = 1;
{$EXTERNALSYM SB_LINEDOWN}
SB_LINERIGHT = 1;
{$EXTERNALSYM SB_LINERIGHT}
SB_PAGEUP = 2;
{$EXTERNALSYM SB_PAGEUP}
SB_PAGELEFT = 2;
{$EXTERNALSYM SB_PAGELEFT}
SB_PAGEDOWN = 3;
{$EXTERNALSYM SB_PAGEDOWN}
SB_PAGERIGHT = 3;
{$EXTERNALSYM SB_PAGERIGHT}
SB_THUMBPOSITION = 4;
{$EXTERNALSYM SB_THUMBPOSITION}
SB_THUMBTRACK = 5;
{$EXTERNALSYM SB_THUMBTRACK}
SB_TOP = 6;
{$EXTERNALSYM SB_TOP}
SB_LEFT = 6;
{$EXTERNALSYM SB_LEFT}
SB_BOTTOM = 7;
{$EXTERNALSYM SB_BOTTOM}
SB_RIGHT = 7;
{$EXTERNALSYM SB_RIGHT}
SB_ENDSCROLL = 8;
{$EXTERNALSYM SB_ENDSCROLL}
//
// ShowWindow() Commands
//
SW_HIDE = 0;
{$EXTERNALSYM SW_HIDE}
SW_SHOWNORMAL = 1;
{$EXTERNALSYM SW_SHOWNORMAL}
SW_NORMAL = 1;
{$EXTERNALSYM SW_NORMAL}
SW_SHOWMINIMIZED = 2;
{$EXTERNALSYM SW_SHOWMINIMIZED}
SW_SHOWMAXIMIZED = 3;
{$EXTERNALSYM SW_SHOWMAXIMIZED}
SW_MAXIMIZE = 3;
{$EXTERNALSYM SW_MAXIMIZE}
SW_SHOWNOACTIVATE = 4;
{$EXTERNALSYM SW_SHOWNOACTIVATE}
SW_SHOW = 5;
{$EXTERNALSYM SW_SHOW}
SW_MINIMIZE = 6;
{$EXTERNALSYM SW_MINIMIZE}
SW_SHOWMINNOACTIVE = 7;
{$EXTERNALSYM SW_SHOWMINNOACTIVE}
SW_SHOWNA = 8;
{$EXTERNALSYM SW_SHOWNA}
SW_RESTORE = 9;
{$EXTERNALSYM SW_RESTORE}
SW_SHOWDEFAULT = 10;
{$EXTERNALSYM SW_SHOWDEFAULT}
SW_FORCEMINIMIZE = 11;
{$EXTERNALSYM SW_FORCEMINIMIZE}
SW_MAX = 11;
{$EXTERNALSYM SW_MAX}
//
// Old ShowWindow() Commands
//
HIDE_WINDOW = 0;
{$EXTERNALSYM HIDE_WINDOW}
SHOW_OPENWINDOW = 1;
{$EXTERNALSYM SHOW_OPENWINDOW}
SHOW_ICONWINDOW = 2;
{$EXTERNALSYM SHOW_ICONWINDOW}
SHOW_FULLSCREEN = 3;
{$EXTERNALSYM SHOW_FULLSCREEN}
SHOW_OPENNOACTIVATE = 4;
{$EXTERNALSYM SHOW_OPENNOACTIVATE}
//
// Identifiers for the WM_SHOWWINDOW message
//
SW_PARENTCLOSING = 1;
{$EXTERNALSYM SW_PARENTCLOSING}
SW_OTHERZOOM = 2;
{$EXTERNALSYM SW_OTHERZOOM}
SW_PARENTOPENING = 3;
{$EXTERNALSYM SW_PARENTOPENING}
SW_OTHERUNZOOM = 4;
{$EXTERNALSYM SW_OTHERUNZOOM}
//
// AnimateWindow() Commands
//
AW_HOR_POSITIVE = $00000001;
{$EXTERNALSYM AW_HOR_POSITIVE}
AW_HOR_NEGATIVE = $00000002;
{$EXTERNALSYM AW_HOR_NEGATIVE}
AW_VER_POSITIVE = $00000004;
{$EXTERNALSYM AW_VER_POSITIVE}
AW_VER_NEGATIVE = $00000008;
{$EXTERNALSYM AW_VER_NEGATIVE}
AW_CENTER = $00000010;
{$EXTERNALSYM AW_CENTER}
AW_HIDE = $00010000;
{$EXTERNALSYM AW_HIDE}
AW_ACTIVATE = $00020000;
{$EXTERNALSYM AW_ACTIVATE}
AW_SLIDE = $00040000;
{$EXTERNALSYM AW_SLIDE}
AW_BLEND = $00080000;
{$EXTERNALSYM AW_BLEND}
//
// WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags
//
KF_EXTENDED = $0100;
{$EXTERNALSYM KF_EXTENDED}
KF_DLGMODE = $0800;
{$EXTERNALSYM KF_DLGMODE}
KF_MENUMODE = $1000;
{$EXTERNALSYM KF_MENUMODE}
KF_ALTDOWN = $2000;
{$EXTERNALSYM KF_ALTDOWN}
KF_REPEAT = $4000;
{$EXTERNALSYM KF_REPEAT}
KF_UP = $8000;
{$EXTERNALSYM KF_UP}
//
// Virtual Keys, Standard Set
//
VK_LBUTTON = $01;
{$EXTERNALSYM VK_LBUTTON}
VK_RBUTTON = $02;
{$EXTERNALSYM VK_RBUTTON}
VK_CANCEL = $03;
{$EXTERNALSYM VK_CANCEL}
VK_MBUTTON = $04; // NOT contiguous with L & RBUTTON
{$EXTERNALSYM VK_MBUTTON}
VK_XBUTTON1 = $05; // NOT contiguous with L & RBUTTON
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -