summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <andreas@andreas-laptop>2010-05-29 00:39:33 +0200
committerAndreas Rumpf <andreas@andreas-laptop>2010-05-29 00:39:33 +0200
commit9a22ae02173d5c026a24a0c145e72531978c9268 (patch)
treeed0dfe1160b873b75e19f4357c4e1649ef9017bf
parentb34b1dbc6c7290a893149aa9f5ea5d54a37c8522 (diff)
parent286e5958d662038fdc852861ecd07c89256495ab (diff)
downloadNim-9a22ae02173d5c026a24a0c145e72531978c9268.tar.gz
resolved system.nim conflicts
-rwxr-xr-xdata/advopt.txt2
-rwxr-xr-xdoc/abstypes.txt80
-rwxr-xr-xdoc/effects.txt10
-rwxr-xr-xdoc/endb.txt2
-rwxr-xr-xdoc/lib.txt76
-rwxr-xr-xdoc/manual.txt5529
-rwxr-xr-xdoc/nimrodc.txt478
-rwxr-xr-xdoc/rst.txt22
-rwxr-xr-xexamples/hallo.nim4
-rwxr-xr-xexamples/iupex1.nim2
-rwxr-xr-xexamples/wingui.nim2
-rwxr-xr-xide/main.nim8
-rwxr-xr-xide/nimide.nim78
-rwxr-xr-xlib/pure/httpserver.nim60
-rwxr-xr-xlib/pure/osproc.nim22
-rwxr-xr-xlib/pure/strutils.nim1832
-rwxr-xr-xlib/pure/variants.nim22
-rw-r--r--[-rwxr-xr-x]lib/system.nim19
-rwxr-xr-xlib/system/sysstr.nim10
-rw-r--r--lib/windows/psapi.nim197
-rwxr-xr-xlib/windows/windows.nim47812
-rwxr-xr-xnimlib/pure/variants.nim22
-rwxr-xr-xnimlib/system/sysstr.nim10
-rwxr-xr-xrod/ccgexprs.nim1070
-rwxr-xr-xtests/accept/compile/techo.nim2
-rwxr-xr-xtests/accept/compile/thallo.nim12
-rwxr-xr-xtests/accept/compile/tio.nim2
-rwxr-xr-xtests/accept/compile/tloops.nim2
-rwxr-xr-xtests/accept/compile/tstreams.nim4
-rwxr-xr-xtests/accept/run/minit.nim2
-rwxr-xr-xtests/accept/run/tbintre2.nim4
-rwxr-xr-xtests/accept/run/tbintree.nim14
-rwxr-xr-xtests/accept/run/tinit.nim4
-rwxr-xr-xtests/accept/run/toverwr.nim4
-rwxr-xr-xtests/accept/run/tpos.nim4
-rwxr-xr-xtests/accept/run/tsimmeth.nim4
-rw-r--r--tests/tenuminh.nim10
37 files changed, 28956 insertions, 28481 deletions
diff --git a/data/advopt.txt b/data/advopt.txt
index a4895efe7..344b3475b 100755
--- a/data/advopt.txt
+++ b/data/advopt.txt
@@ -10,7 +10,7 @@ Advanced options:
   --warning[X]:on|off       turn specific warning X on|off
   --hints:on|off            turn all hints on|off
   --hint[X]:on|off          turn specific hint X on|off
-  --lib:PATH                set the system library path
+  --lib:PATH                set the path to the system.nim library
   -c, --compileOnly         compile only; do not assemble or link
   --noLinking               compile but do not link
   --noMain                  do not generate a main procedure
diff --git a/doc/abstypes.txt b/doc/abstypes.txt
index 44c3bb0c9..c5827745a 100755
--- a/doc/abstypes.txt
+++ b/doc/abstypes.txt
@@ -10,21 +10,21 @@ a `base type`:idx:.
 
 Use case 1: SQL strings
 -----------------------
-An SQL statement that is passed from Nimrod to an SQL database might be 
+An SQL statement that is passed from Nimrod to an SQL database might be
 modelled as a string. However, using string templates and filling in the
-values is vulnerable to the famous `SQL injection attack`:idx:\: 
+values is vulnerable to the famous `SQL injection attack`:idx:\:
 
 .. code-block:: nimrod
   proc query(db: TDbHandle, statement: TSQL) = ...
 
   var
     username: string
-  
+
   db.query("SELECT FROM users WHERE name = '$1'" % username)
-  # Horrible security whole, but the compiler does not mind!
-  
-This can be avoided by distinguishing strings that contain SQL from strings 
-that don't. Abstract types provide a means to introduce a new string type 
+  # Horrible security hole, but the compiler does not mind!
+
+This can be avoided by distinguishing strings that contain SQL from strings
+that don't. Abstract types provide a means to introduce a new string type
 ``TSQL`` that is incompatible with ``string``:
 
 .. code-block:: nimrod
@@ -35,26 +35,26 @@ that don't. Abstract types provide a means to introduce a new string type
 
   var
     username: string
-  
+
   db.query("SELECT FROM users WHERE name = '$1'" % username)
   # Error at compile time: `query` expects an SQL string!
-  
-  
+
+
 It is an essential property of abstract types that they **do not** imply a
 subtype relation between the abtract type and its base type. Explict type
-conversions from ``string`` to ``TSQL`` are allowed: 
+conversions from ``string`` to ``TSQL`` are allowed:
 
 .. code-block:: nimrod
-  proc properQuote(s: string): TSQL = 
+  proc properQuote(s: string): TSQL =
     # quotes a string properly for an SQL statement
     ...
-  
-  proc `%` (frmt: TSQL, values: openarray[string]): TSQL = 
+
+  proc `%` (frmt: TSQL, values: openarray[string]): TSQL =
     # quote each argument:
     var v = values.each(properQuote)
     # we need a temporary type for the type conversion :-(
     type TStrSeq = seq[string]
-    # call strutils.`%`: 
+    # call strutils.`%`:
     result = TSQL(string(frmt) % TStrSeq(v))
 
   db.query("SELECT FROM users WHERE name = $1".TSQL % username)
@@ -68,43 +68,43 @@ for nice looking ``TSQL`` string literals.
 Use case 2: Money
 -----------------
 Different currencies should not be mixed in monetary calculations. Abstract
-types are a perfect tool to model different currencies: 
+types are a perfect tool to model different currencies:
 
 .. code-block:: nimrod
   type
     TDollar = abstract int
     TEuro = abstract int
-  
+
   var
     d: TDollar
     e: TEuro
-    
-  echo d + 12  
+
+  echo d + 12
   # Error: cannot add a number with no unit with a ``TDollar``
 
-Unfortunetaly, ``d + 12.TDollar`` is not allowed either, 
+Unfortunetaly, ``d + 12.TDollar`` is not allowed either,
 because ``+`` is defined for ``int`` (among others), not for ``TDollar``. So
-we define our own ``+`` for dollars: 
+we define our own ``+`` for dollars:
 
-.. code-block:: 
-  proc `+` (x, y: TDollar): TDollar = 
+.. code-block::
+  proc `+` (x, y: TDollar): TDollar =
     result = TDollar(int(x) + int(y))
 
 It does not make sense to multiply a dollar with a dollar, but with a
 number without unit; and the same holds for division:
 
-.. code-block:: 
-  proc `*` (x: TDollar, y: int): TDollar = 
+.. code-block::
+  proc `*` (x: TDollar, y: int): TDollar =
     result = TDollar(int(x) * y)
 
-  proc `*` (x: int, y: TDollar): TDollar = 
+  proc `*` (x: int, y: TDollar): TDollar =
     result = TDollar(x * int(y))
-    
+
   proc `div` ...
 
-This quickly gets tedious. The implementations are trivial and the compiler 
+This quickly gets tedious. The implementations are trivial and the compiler
 should not generate all this code only to optimize it away later - after all
-``+`` for dollars should produce the same binary code as ``+`` for ints. 
+``+`` for dollars should produce the same binary code as ``+`` for ints.
 The pragma ``borrow`` has been designed to solve this problem; in principle
 it generates the trivial implementation for us:
 
@@ -113,40 +113,40 @@ it generates the trivial implementation for us:
   proc `*` (x: int, y: TDollar): TDollar {.borrow.}
   proc `div` (x: TDollar, y: int): TDollar {.borrow.}
 
-The ``borrow`` pragma makes the compiler use the same implementation as 
+The ``borrow`` pragma makes the compiler to use the same implementation as
 the proc that deals with the abstract type's base type, so no code is
-generated. 
+generated.
 
 But it seems we still have to repeat all this boilerplate code for
-the ``TEuro`` currency. Fortunately, Nimrod has a template mechanism: 
+the ``TEuro`` currency. Fortunately, Nimrod has a template mechanism:
 
 .. code-block:: nimrod
   template Additive(typ: typeDesc): stmt =
     proc `+` *(x, y: typ): typ {.borrow.}
     proc `-` *(x, y: typ): typ {.borrow.}
-    
+
     # unary operators:
     proc `+` *(x: typ): typ {.borrow.}
     proc `-` *(x: typ): typ {.borrow.}
-    
-  template Multiplicative(typ, base: typeDesc): stmt = 
+
+  template Multiplicative(typ, base: typeDesc): stmt =
     proc `*` *(x: typ, y: base): typ {.borrow.}
     proc `*` *(x: base, y: typ): typ {.borrow.}
     proc `div` *(x: typ, y: base): typ {.borrow.}
     proc `mod` *(x: typ, y: base): typ {.borrow.}
-    
-  template Comparable(typ: typeDesc): stmt = 
+
+  template Comparable(typ: typeDesc): stmt =
     proc `<` * (x, y: typ): bool {.borrow.}
     proc `<=` * (x, y: typ): bool {.borrow.}
     proc `==` * (x, y: typ): bool {.borrow.}
-  
-  template DefineCurrency(typ, base: expr): stmt = 
+
+  template DefineCurrency(typ, base: expr): stmt =
     type
       typ* = abstract base
     Additive(typ)
     Multiplicative(typ, base)
     Comparable(typ)
-    
+
   DefineCurrency(TDollar, int)
   DefineCurrency(TEuro, int)
 
diff --git a/doc/effects.txt b/doc/effects.txt
index 85de1ffdf..8084ae17a 100755
--- a/doc/effects.txt
+++ b/doc/effects.txt
@@ -9,7 +9,7 @@ explicit like in Haskell?
 The idea is that side effects and partial evaluation belong together:
 Iff a proc is side effect free and all its argument are evaluable at
 compile time, it can be evaluated by the compiler. However, really
-difficult is the ``newString`` proc: If it is simply wrapped, it 
+difficult is the ``newString`` proc: If it is simply wrapped, it
 should not be evaluated at compile time! On other occasions it can
 and should be evaluted:
 
@@ -20,22 +20,22 @@ and should be evaluted:
       result[i] = toUpper(s[i])
 
 No, it really can always be evaluated. The code generator should transform
-``s = "\0\0\0..."`` back into ``s = newString(...)``. 
+``s = "\0\0\0..."`` back into ``s = newString(...)``.
 
 
-``new`` cannot be evaluated at compile time either. 
+``new`` cannot be evaluated at compile time either.
 
 
 Raise statement
 ===============
 
-It is impractical to consider ``raise`` a statement with side effects.
+It is impractical to consider ``raise`` as a statement with side effects.
 
 
 Solution
 ========
 
 Being side effect free does not suffice for compile time evaluation. However,
-the evaluator can attempt to evaluate at compile time. 
+the evaluator can attempt to evaluate at compile time.
 
 
diff --git a/doc/endb.txt b/doc/endb.txt
index e2be59c50..3cc20cdb8 100755
--- a/doc/endb.txt
+++ b/doc/endb.txt
@@ -23,7 +23,7 @@ available for the debugger.
 

 If you start your program the debugger will immediately show

 a prompt on the console. You can now enter a command. The next sections

-deal with the possible commands. As usual for Nimrod for all commands

+deal with the possible commands. As usual in Nimrod in all commands

 underscores and case do not matter. Optional components of a command

 are listed in brackets ``[...]`` here.

 

diff --git a/doc/lib.txt b/doc/lib.txt
index 227a73405..fa29ff6ff 100755
--- a/doc/lib.txt
+++ b/doc/lib.txt
@@ -12,7 +12,7 @@ Nimrod Standard Library
 Though the Nimrod Standard Library is still evolving, it is already quite
 usable. It is divided into *pure libraries*, *impure libraries* and *wrappers*.
 
-Pure libraries do not depend on any external ``*.dll`` or ``lib*.so`` binary 
+Pure libraries do not depend on any external ``*.dll`` or ``lib*.so`` binary
 while impure libraries do. A wrapper is an impure library that is a very
 low-level interface to a C library.
 
@@ -31,7 +31,7 @@ Core
   implicitly by the compiler. Do not import it directly. It relies on compiler
   magic to work.
 
-* `macros <macros.html>`_ 
+* `macros <macros.html>`_
   Contains the AST API and documentation of Nimrod for writing macros.
 
 
@@ -39,8 +39,8 @@ String handling
 ---------------
 
 * `strutils <strutils.html>`_
-  This module contains common string handling operations like converting a
-  string into uppercase, splitting a string into substrings, searching for
+  This module contains common string handling operations like changing
+  case of a string, splitting a string into substrings, searching for
   substrings, replacing substrings.
 
 * `parseutils <parseutils.html>`_
@@ -52,7 +52,7 @@ String handling
   style-insensitive mode. An efficient string substitution operator ``%``
   for the string table is also provided.
 
-* `unicode <unicode.html>`_ 
+* `unicode <unicode.html>`_
   This module provides support to handle the Unicode UTF-8 encoding.
 
 * `re <re.html>`_
@@ -67,11 +67,11 @@ String handling
   Ropes can represent very long strings efficiently; especially concatenation
   is done in O(1) instead of O(n).
 
-* `unidecode <unidecode.html>`_ 
+* `unidecode <unidecode.html>`_
   This module provides Unicode to ASCII transliterations:
   It finds the sequence of ASCII characters that is the closest approximation
   to the Unicode string.
-  
+
 
 Generic Operating System Services
 ---------------------------------
@@ -97,8 +97,8 @@ Generic Operating System Services
   may provide other implementations for this standard stream interface.
 
 * `terminal <terminal.html>`_
-  This module contains a few procedures to control the *terminal* 
-  (also called *console*). The implementation simply uses ANSI escape 
+  This module contains a few procedures to control the *terminal*
+  (also called *console*). The implementation simply uses ANSI escape
   sequences and does not depend on any other module.
 
 
@@ -117,20 +117,20 @@ Internet Protocols and Support
 ------------------------------
 
 * `cgi <cgi.html>`_
-  This module implements helpers for CGI applictions. 
+  This module implements helpers for CGI applictions.
 
 * `sockets <sockets.html>`_
   This module implements a simple portable type-safe sockets layer.
 
 * `browsers <browsers.html>`_
-  This module implements procs for opening URLs with the user's default 
+  This module implements procs for opening URLs with the user's default
   browser.
-  
+
 * `httpserver <httpserver.html>`_
   This module implements a simple HTTP server.
-  
+
 * `httpclient <httpclient.html>`_
-  This module implements a simple HTTP client. 
+  This module implements a simple HTTP client.
 
 
 Parsers
@@ -149,14 +149,14 @@ Parsers
   as in the Nimrod programming language.
 
 * `parsexml <parsexml.html>`_
-  The ``parsexml`` module implements a simple high performance XML/HTML parser. 
+  The ``parsexml`` module implements a simple high performance XML/HTML parser.
   The only encoding that is supported is UTF-8. The parser has been designed
-  to be somewhat error correcting, so that even some "wild HTML" found on the 
-  web can be parsed with it.
+  to be somewhat error correcting, so that even some "wild HTML" found on the
+  Web can be parsed with it.
 
-* `parsecsv <parsecsv.html>`_ 
+* `parsecsv <parsecsv.html>`_
   The ``parsecsv`` module implements a simple high performance CSV parser.
-  
+
 * `parsesql <parsesql.html>`_
   The ``parsesql`` module implements a simple high performance SQL parser.
 
@@ -168,20 +168,20 @@ Parsers
 XML Processing
 --------------
 
-* `xmldom <xmldom.html>`_ 
+* `xmldom <xmldom.html>`_
   This module implements the XML DOM Level 2.
 
 * `xmldomparser <xmldomparser.html>`_
   This module parses an XML Document into a XML DOM Document representation.
 
 * `xmltree <xmltree.html>`_
-  A simple XML tree. More efficient and simpler than the DOM. It also 
+  A simple XML tree. More efficient and simpler than the DOM. It also
   contains a macro for XML/HTML code generation.
 
-* `xmlparser <xmlparser.html>`_ 
+* `xmlparser <xmlparser.html>`_
   This module parses an XML document and creates its XML tree representation.
-  
-* `htmlparser <htmlparser.html>`_ 
+
+* `htmlparser <htmlparser.html>`_
   This module parses an HTML document and creates its XML tree representation.
 
 
@@ -199,8 +199,8 @@ Cryptography and Hashing
 Multimedia support
 ------------------
 
-* `colors <colors.html>`_ 
-  This module implements color handling for Nimrod. It is used by 
+* `colors <colors.html>`_
+  This module implements color handling for Nimrod. It is used by
   the ``graphics`` module.
 
 
@@ -211,7 +211,7 @@ Impure libraries
 * `graphics <graphics.html>`_
   This module implements graphical output for Nimrod; the current
   implementation uses SDL but the interface is meant to support multiple
-  backends some day. 
+  backends some day.
 
 * `dialogs <dialogs.html>`_
   This module implements portable dialogs for Nimrod; the implementation
@@ -220,10 +220,10 @@ Impure libraries
 
 * `zipfiles <zipfiles.html>`_
   This module implements a zip archive creator/reader/modifier.
-  
+
 * `web <web.html>`_
   This module contains simple high-level procedures for dealing with the
-  web like loading the contents of a web page from an URL.
+  Web like loading the contents of a Web page from an URL.
 
 
 Database support
@@ -232,11 +232,11 @@ Database support
 * `db_postgres <db_postgres.html>`_
   A higher level PostgreSQL database wrapper. The same interface is implemented
   for other databases too.
- 
+
 * `db_mysql <db_mysql.html>`_
-  A higher level mySQL database wrapper. The same interface is implemented
+  A higher level MySQL database wrapper. The same interface is implemented
   for other databases too.
- 
+
 * `db_sqlite <db_sqlite.html>`_
   A higher level SQLite database wrapper. The same interface is implemented
   for other databases too.
@@ -255,7 +255,7 @@ not contained in the distribution. You can then find them on the website.
   Contains a wrapper for the Win32 API.
 * `mysql <mysql.html>`_
   Contains a wrapper for the mySQL API.
-* `sqlite3 <sqlite3.html>`_ 
+* `sqlite3 <sqlite3.html>`_
   Contains a wrapper for SQLite 3 API.
 * `libcurl <libcurl.html>`_
   Contains a wrapper for the libcurl library.
@@ -317,14 +317,14 @@ not contained in the distribution. You can then find them on the website.
   Part of the wrapper for Lua.
 * `lauxlib <lauxlib.html>`_
   Part of the wrapper for Lua.
-* `tcl <tcl.html>`_ 
+* `tcl <tcl.html>`_
   Wrapper for the TCL programming language.
 * `python <python.html>`_
   Wrapper for the Python programming language.
 * `odbcsql <odbcsql.html>`_
   interface to the ODBC driver.
 * `zlib <zlib.html>`_
-  Wrapper for the zlib library. 
+  Wrapper for the zlib library.
 * `sdl <sdl.html>`_
   Part of the wrapper for SDL.
 * `sdl_gfx <sdl_gfx.html>`_
@@ -379,7 +379,7 @@ not contained in the distribution. You can then find them on the website.
   Part of the wrapper for X11.
 * `libzip <libzip.html>`_
   Interface to the `lib zip <http://www.nih.at/libzip/index.html>`_ library by
-  Dieter Baron and Thomas Klausner. 
-* `iup <iup.html>`_ 
+  Dieter Baron and Thomas Klausner.
+* `iup <iup.html>`_
   Wrapper of the IUP GUI library.
-  
+
diff --git a/doc/manual.txt b/doc/manual.txt
index 3f2f9c404..490901b64 100755
--- a/doc/manual.txt
+++ b/doc/manual.txt
@@ -1,2765 +1,2764 @@
-=============
-Nimrod Manual
-=============
-
-:Author: Andreas Rumpf
-:Version: |nimrodversion|
-
-.. contents::
-
-
-  "Complexity" seems to be a lot like "energy": you can transfer it from the end
-  user to one/some of the other players, but the total amount seems to remain
-  pretty much constant for a given task. -- Ran
-
-About this document
-===================
-
-**Note**: This document is a draft! Several of Nimrod's features need more
-precise wording. This manual will evolve into a proper specification some
-day.
-
-This document describes the lexis, the syntax, and the semantics of Nimrod.
-
-The language constructs are explained using an extended BNF, in
-which ``(a)*`` means 0 or more ``a``'s, ``a+`` means 1 or more ``a``'s, and
-``(a)?`` means an optional *a*; an alternative spelling for optional parts is
-``[a]``. The ``|`` symbol is used to mark alternatives
-and has the lowest precedence. Parentheses may be used to group elements.
-Non-terminals start with a lowercase letter, abstract terminal symbols are in
-UPPERCASE. Verbatim terminal symbols (including keywords) are quoted
-with ``'``. An example::
-
-  ifStmt ::= 'if' expr ':' stmts ('elif' expr ':' stmts)* ['else' stmts]
-
-Other parts of Nimrod - like scoping rules or runtime semantics are only
-described in an informal manner. The reason is that formal semantics are
-difficult to write and understand. However, there is only one Nimrod
-implementation, so one may consider it as the formal specification;
-especially since the compiler's code is pretty clean (well, some parts of it).
-
-
-Definitions
-===========
-
-A Nimrod program specifies a computation that acts on a memory consisting of
-components called `locations`:idx:. A variable is basically a name for a
-location. Each variable and location is of a certain `type`:idx:. The
-variable's type is called `static type`:idx:, the location's type is called
-`dynamic type`:idx:. If the static type is not the same as the dynamic type,
-it is a super-type or subtype of the dynamic type.
-
-An `identifier`:idx: is a symbol declared as a name for a variable, type,
-procedure, etc. The region of the program over which a declaration applies is
-called the `scope`:idx: of the declaration. Scopes can be nested. The meaning
-of an identifier is determined by the smallest enclosing scope in which the
-identifier is declared.
-
-An expression specifies a computation that produces a value or location.
-Expressions that produce locations are called `l-values`:idx:. An l-value
-can denote either a location or the value the location contains, depending on
-the context. Expressions whose values can be determined statically are called
-`constant expressions`:idx:; they are never l-values.
-
-A `static error`:idx: is an error that the implementation detects before
-program execution. Unless explicitly classified, an error is a static error.
-
-A `checked runtime error`:idx: is an error that the implementation detects
-and reports at runtime. The method for reporting such errors is via *raising
-exceptions*. However, the implementation provides a means to disable these
-runtime checks. See the section pragmas_ for details.
-
-An `unchecked runtime error`:idx: is an error that is not guaranteed to be
-detected, and can cause the subsequent behavior of the computation to
-be arbitrary. Unchecked runtime errors cannot occur if only `safe`:idx:
-language features are used.
-
-
-Lexical Analysis
-================
-
-Encoding
---------
-
-All Nimrod source files are in the UTF-8 encoding (or its ASCII subset). Other
-encodings are not supported. Any of the standard platform line termination
-sequences can be used - the Unix form using ASCII LF (linefeed), the Windows
-form using the ASCII sequence CR LF (return followed by linefeed), or the old
-Macintosh form using the ASCII CR (return) character. All of these forms can be
-used equally, regardless of platform.
-
-
-Indentation
------------
-
-Nimrod's standard grammar describes an `indentation sensitive`:idx: language.
-This means that all the control structures are recognized by indentation.
-Indentation consists only of spaces; tabulators are not allowed.
-
-The terminals ``IND`` (indentation), ``DED`` (dedentation) and ``SAD``
-(same indentation) are generated by the scanner, denoting an indentation.
-
-These terminals are only generated for lines that are not empty.
-
-The parser and the scanner communicate over a stack which indentation terminal
-should be generated: the stack consists of integers counting the spaces. The
-stack is initialized with a zero on its top. The scanner reads from the stack:
-If the current indentation token consists of more spaces than the entry at the
-top of the stack, a ``IND`` token is generated, else if it consists of the same
-number of spaces, a ``SAD`` token is generated. If it consists of fewer spaces,
-a ``DED`` token is generated for any item on the stack that is greater than the
-current. These items are later popped from the stack by the parser. At the end
-of the file, a ``DED`` token is generated for each number remaining on the
-stack that is larger than zero.
-
-Because the grammar contains some optional ``IND`` tokens, the scanner cannot
-push new indentation levels. This has to be done by the parser. The symbol
-``indPush`` indicates that an ``IND`` token is expected; the current number of
-leading spaces is pushed onto the stack by the parser. The symbol ``indPop``
-denotes that the parser pops an item from the indentation stack. No token is
-consumed by ``indPop``.
-
-
-Comments
---------
-
-`Comments`:idx: start anywhere outside a string or character literal with the
-hash character ``#``.
-Comments consist of a concatenation of `comment pieces`:idx:. A comment piece
-starts with ``#`` and runs until the end of the line. The end of line characters
-belong to the piece. If the next line only consists of a comment piece which is
-aligned to the preceding one, it does not start a new comment:
-
-.. code-block:: nimrod
-
-  i = 0     # This is a single comment over multiple lines belonging to the
-            # assignment statement. The scanner merges these two pieces.
-  # This is a new comment belonging to the current block, but to no particular
-  # statement.
-  i = i + 1 # This a new comment that is NOT
-  echo(i)   # continued here, because this comment refers to the echo statement
-
-Comments are tokens; they are only allowed at certain places in the input file
-as they belong to the syntax tree! This feature enables perfect source-to-source
-transformations (such as pretty-printing) and superior documentation generators.
-A nice side-effect is that the human reader of the code always knows exactly
-which code snippet the comment refers to.
-
-
-Identifiers & Keywords
-----------------------
-
-`Identifiers`:idx: in Nimrod can be any string of letters, digits
-and underscores, beginning with a letter. Two immediate following
-underscores ``__`` are not allowed::
-
-  letter ::= 'A'..'Z' | 'a'..'z' | '\x80'..'\xff'
-  digit ::= '0'..'9'
-  IDENTIFIER ::= letter ( ['_'] letter | digit )*
-
-The following `keywords`:idx: are reserved and cannot be used as identifiers:
-
-.. code-block:: nimrod
-   :file: ../data/keywords.txt
-
-Some keywords are unused; they are reserved for future developments of the
-language.
-
-Nimrod is a `style-insensitive`:idx: language. This means that it is not
-case-sensitive and even underscores are ignored:
-**type** is a reserved word, and so is **TYPE** or **T_Y_P_E**. The idea behind
-this is that this allows programmers to use their own preferred spelling style
-and libraries written by different programmers cannot use incompatible
-conventions. A Nimrod-aware editor or IDE can show the identifiers as
-preferred. Another advantage is that it frees the programmer from remembering
-the exact spelling of an identifier.
-
-
-String literals
----------------
-
-`String literals`:idx: can be delimited by matching double quotes, and can
-contain the following `escape sequences`:idx:\ :
-
-==================         ===================================================
-  Escape sequence          Meaning
-==================         ===================================================
-  ``\n``                   `newline`:idx:
-  ``\r``, ``\c``           `carriage return`:idx:
-  ``\l``                   `line feed`:idx:
-  ``\f``                   `form feed`:idx:
-  ``\t``                   `tabulator`:idx:
-  ``\v``                   `vertical tabulator`:idx:
-  ``\\``                   `backslash`:idx:
-  ``\"``                   `quotation mark`:idx:
-  ``\'``                   `apostrophe`:idx:
-  ``\d+``                  `character with decimal value d`:idx:;
-                           all decimal digits directly
-                           following are used for the character
-  ``\a``                   `alert`:idx:
-  ``\b``                   `backspace`:idx:
-  ``\e``                   `escape`:idx: `[ESC]`:idx:
-  ``\xHH``                 `character with hex value HH`:idx:;
-                           exactly two hex digits are allowed
-==================         ===================================================
-
-
-Strings in Nimrod may contain any 8-bit value, except embedded zeros.
-
-
-Triple quoted string literals
------------------------------
-
-String literals can also be delimited by three double quotes
-``"""`` ... ``"""``.
-Literals in this form may run for several lines, may contain ``"`` and do not
-interpret any escape sequences.
-For convenience, when the opening ``"""`` is immediately followed by a newline,
-the newline is not included in the string. The ending of the string literal is
-defined by the pattern ``"""[^"]``, so this:
-  
-.. code-block:: nimrod 
-  """"long string within quotes""""
-  
-Produces::
-  
-  "long string within quotes"
-
-
-Raw string literals
--------------------
-
-There are also `raw string literals` that are preceded with the letter ``r``
-(or ``R``) and are delimited by matching double quotes (just like ordinary
-string literals) and do not interpret the escape sequences. This is especially
-convenient for regular expressions or Windows paths:
-
-.. code-block:: nimrod
-
-  var f = openFile(r"C:\texts\text.txt") # a raw string, so ``\t`` is no tab
-
-To produce a single ``"`` within a raw string literal, it has to be doubled:
-
-.. code-block:: nimrod
-
-  r"a""b"
-  
-Produces::
-  
-  a"b
-
-``r""""`` is not possible with this notation, because the three leading 
-quotes introduce a triple quoted string literal. 
-
-
-Generalized raw string literals
--------------------------------
-
-The construct ``identifier"string literal"`` (without whitespace between the
-identifier and the opening quotation mark) is a
-`generalized raw string literal`:idx:. It is a shortcut for the construct
-``identifier(r"string literal")``, so it denotes a procedure call with a
-raw string literal as its only argument. Generalized raw string literals
-are especially convenient for embedding mini languages directly into Nimrod
-(for example regular expressions).
-
-The construct ``identifier"""string literal"""`` exists too. It is a shortcut
-for ``identifier("""string literal""")``.
-
-
-Character literals
-------------------
-
-Character literals are enclosed in single quotes ``''`` and can contain the
-same escape sequences as strings - with one exception: ``\n`` is not allowed
-as it may be wider than one character (often it is the pair CR/LF for example).
-A character is not an Unicode character but a single byte. The reason for this
-is efficiency: for the overwhelming majority of use-cases, the resulting
-programs will still handle UTF-8 properly as UTF-8 was specially designed for
-this.
-Another reason is that Nimrod can thus support ``array[char, int]`` or
-``set[char]`` efficiently as many algorithms rely on this feature.
-
-
-Numerical constants
--------------------
-
-`Numerical constants`:idx: are of a single type and have the form::
-
-  hexdigit ::= digit | 'A'..'F' | 'a'..'f'
-  octdigit ::= '0'..'7'
-  bindigit ::= '0'..'1'
-  INT_LIT ::= digit ( ['_'] digit )*
-            | '0' ('x' | 'X' ) hexdigit ( ['_'] hexdigit )*
-            | '0o' octdigit ( ['_'] octdigit )*
-            | '0' ('b' | 'B' ) bindigit ( ['_'] bindigit )*
-
-  INT8_LIT ::= INT_LIT '\'' ('i' | 'I' ) '8'
-  INT16_LIT ::= INT_LIT '\'' ('i' | 'I' ) '16'
-  INT32_LIT ::= INT_LIT '\'' ('i' | 'I' ) '32'
-  INT64_LIT ::= INT_LIT '\'' ('i' | 'I' ) '64'
-
-  exponent ::= ('e' | 'E' ) ['+' | '-'] digit ( ['_'] digit )*
-  FLOAT_LIT ::= digit (['_'] digit)*  ('.' (['_'] digit)* [exponent] |exponent)
-  FLOAT32_LIT ::= ( FLOAT_LIT | INT_LIT ) '\'' ('f' | 'F') '32'
-  FLOAT64_LIT ::= ( FLOAT_LIT | INT_LIT ) '\'' ('f' | 'F') '64'
-
-
-As can be seen in the productions, numerical constants can contain underscores
-for readability. Integer and floating point literals may be given in decimal (no
-prefix), binary (prefix ``0b``), octal (prefix ``0o``) and hexadecimal
-(prefix ``0x``) notation.
-
-There exists a literal for each numerical type that is
-defined. The suffix starting with an apostrophe ('\'') is called a
-`type suffix`:idx:. Literals without a type suffix are of the type ``int``,
-unless the literal contains a dot or ``E|e`` in which case it is of
-type ``float``.
-
-The type suffixes are:
-
-=================    =========================
-  Type Suffix        Resulting type of literal
-=================    =========================
-  ``'i8``            int8
-  ``'i16``           int16
-  ``'i32``           int32
-  ``'i64``           int64
-  ``'f32``           float32
-  ``'f64``           float64
-=================    =========================
-
-Floating point literals may also be in binary, octal or hexadecimal
-notation:
-``0B0_10001110100_0000101001000111101011101111111011000101001101001001'f64``
-is approximately 1.72826e35 according to the IEEE floating point standard.
-
-
-
-Other tokens
-------------
-
-The following strings denote other tokens::
-
-       (     )     {     }     [     ]     ,  ;   [.    .]  {.   .}  (.  .)
-       :     =     ^     ..    `
-
-`..`:tok: takes precedence over other tokens that contain a dot: `{..}`:tok: are
-the three tokens `{`:tok:, `..`:tok:, `}`:tok: and not the two tokens
-`{.`:tok:, `.}`:tok:.
-
-In Nimrod one can define his own operators. An `operator`:idx: is any
-combination of the following characters that is not listed above::
-
-       +     -     *     /     <     >
-       =     @     $     ~     &     %
-       !     ?     ^     .     |     \
-
-These keywords are also operators:
-``and or not xor shl shr div mod in notin is isnot``.
-
-
-Syntax
-======
-
-This section lists Nimrod's standard syntax in ENBF. How the parser receives
-indentation tokens is already described in the `Lexical Analysis`_ section.
-
-Nimrod allows user-definable operators.
-Binary operators have 8 different levels of precedence. For user-defined
-operators, the precedence depends on the first character the operator consists
-of. All binary operators are left-associative.
-
-================  ==============================================  ==================  ===============
-Precedence level    Operators                                     First characters    Terminal symbol
-================  ==============================================  ==================  ===============
-  7 (highest)                                                     ``$``               OP7
-  6               ``*    /    div   mod   shl  shr  %``           ``* % \  /``        OP6
-  5               ``+    -``                                      ``+  ~  |``         OP5
-  4               ``&``                                           ``&``               OP4
-  3               ``==  <= < >= > !=  in  not_in  is  isnot``     ``= <  > !``        OP3
-  2               ``and``                                                             OP2
-  1               ``or xor``                                                          OP1
-  0 (lowest)                                                      ``? @ ^ ` : .``     OP0
-================  ==============================================  ==================  ===============
-
-
-The grammar's start symbol is ``module``.
-
-.. include:: grammar.txt
-   :literal:
-
-
-
-Semantics
-=========
-
-Constants
----------
-
-`Constants`:idx: are symbols which are bound to a value. The constant's value
-cannot change. The compiler must be able to evaluate the expression in a
-constant declaration at compile time.
-
-Nimrod contains a sophisticated compile-time evaluator, so procedures which
-have no side-effect can be used in constant expressions too:
-
-.. code-block:: nimrod
-  import strutils
-  const
-    constEval = contains("abc", 'b') # computed at compile time!
-
-
-Types
------
-
-All expressions have a `type`:idx: which is known at compile time. Nimrod
-is statically typed. One can declare new types, which is in essence defining
-an identifier that can be used to denote this custom type.
-
-These are the major type classes:
-
-* ordinal types (consist of integer, bool, character, enumeration
-  (and subranges thereof) types)
-* floating point types
-* string type
-* structured types
-* reference (pointer) type
-* procedural type
-* generic type
-
-
-Ordinal types
-~~~~~~~~~~~~~
-`Ordinal types`:idx: have the following characteristics:
-
-- Ordinal types are countable and ordered. This property allows
-  the operation of functions as ``Inc``, ``Ord``, ``Dec`` on ordinal types to
-  be defined.
-- Ordinal values have a smallest possible value. Trying to count further
-  down than the smallest value gives a checked runtime or static error.
-- Ordinal values have a largest possible value. Trying to count further
-  than the largest value gives a checked runtime or static error.
-
-Integers, bool, characters and enumeration types (and subranges of these
-types) belong to ordinal types.
-
-
-Pre-defined integer types
-~~~~~~~~~~~~~~~~~~~~~~~~~
-These integer types are pre-defined:
-
-``int``
-  the generic signed integer type; its size is platform dependent
-  (the compiler chooses the processor's fastest integer type).
-  This type should be used in general. An integer literal that has no type
-  suffix is of this type.
-
-intXX
-  additional signed integer types of XX bits use this naming scheme
-  (example: int16 is a 16 bit wide integer).
-  The current implementation supports ``int8``, ``int16``, ``int32``, ``int64``.
-  Literals of these types have the suffix 'iXX.
-
-
-There are no `unsigned integer`:idx: types, only `unsigned operations`:idx:
-that treat their arguments as unsigned. Unsigned operations all wrap around;
-they cannot lead to over- or underflow errors. Unsigned operations use the
-``%`` suffix as convention:
-
-======================   ======================================================
-operation                meaning
-======================   ======================================================
-``a +% b``               unsigned integer addition
-``a -% b``               unsigned integer subtraction
-``a *% b``               unsigned integer multiplication
-``a /% b``               unsigned integer division
-``a %% b``               unsigned integer modulo operation
-``a <% b``               treat ``a`` and ``b`` as unsigned and compare
-``a <=% b``              treat ``a`` and ``b`` as unsigned and compare
-``ze(a)``                extends the bits of ``a`` with zeros until it has the
-                         width of the ``int`` type
-``toU8(a)``              treats ``a`` as unsigned and converts it to an
-                         unsigned integer of 8 bits (but still the
-                         ``int8`` type)
-``toU16(a)``             treats ``a`` as unsigned and converts it to an
-                         unsigned integer of 16 bits (but still the
-                         ``int16`` type)
-``toU32(a)``             treats ``a`` as unsigned and converts it to an
-                         unsigned integer of 32 bits (but still the
-                         ``int32`` type)
-======================   ======================================================
-
-`Automatic type conversion`:idx: is performed in expressions where different
-kinds of integer types are used: the smaller type is converted to the larger.
-For further details, see `Convertible relation`_.
-
-
-Pre-defined floating point types
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following floating point types are pre-defined:
-
-``float``
-  the generic floating point type; its size is platform dependent
-  (the compiler chooses the processor's fastest floating point type).
-  This type should be used in general.
-
-floatXX
-  an implementation may define additional floating point types of XX bits using
-  this naming scheme (example: float64 is a 64 bit wide float). The current
-  implementation supports ``float32`` and ``float64``. Literals of these types
-  have the suffix 'fXX.
-
-
-Automatic type conversion in expressions with different kinds
-of floating point types is performed: See `Convertible relation`_ for further
-details. Arithmetic performed on floating point types follows the IEEE
-standard. Integer types are not converted to floating point types automatically
-and vice versa.
-
-The IEEE standard defines five types of floating-point exceptions:
-
-* Invalid: operations with mathematically invalid operands,
-  for example 0.0/0.0, sqrt(-1.0), and log(-37.8).
-* Division by zero: divisor is zero and dividend is a finite nonzero number,
-  for example 1.0/0.0.
-* Overflow: operation produces a result that exceeds the range of the exponent, 
-  for example MAXDOUBLE+0.0000000000001e308.
-* Underflow: operation produces a result that is too small to be represented 
-  as a normal number, for example, MINDOUBLE * MINDOUBLE.
-* Inexact: operation produces a result that cannot be represented with infinite 
-  precision, for example, 2.0 / 3.0, log(1.1) and 0.1 in input.
-
-The IEEE exceptions are either ignored at runtime or mapped to the 
-Nimrod exceptions: `EFloatInvalidOp`:idx, `EFloatDivByZero`:idx:,
-`EFloatOverflow`:idx:, `EFloatUnderflow`:idx:, and `EFloatInexact`:idx:\. 
-These exceptions inherit from the `EFloatingPoint`:idx: base class.
-
-Nimrod provides the pragmas `NaNChecks`:idx and `InfChecks`:idx:\ to control
-whether the IEEE exceptions are ignored or trap a Nimrod exception:
-
-.. code-block:: nimrod
-  {.NanChecks: on, InfChecks: on.}
-  var a = 1.0
-  var b = 0.0
-  echo b / b # raises EFloatInvalidOp
-  echo a / b # raises EFloatOverflow
-
-In the current implementation ``EFloatDivByZero`` and ``EFloatInexact`` are 
-never raised. ``EFloatOverflow`` is raised instead of ``EFloatDivByZero``.
-There is also a `floatChecks`:idx: pragma that is a short-cut for the 
-combination of ``NaNChecks`` and ``InfChecks`` pragmas. ``floatChecks`` are
-turned off as default.
-
-The only operations that are affected by the ``floatChecks`` pragma are
-the ``+``, ``-``, ``*``, ``/`` operators for floating point types.
-
-
-Boolean type
-~~~~~~~~~~~~
-The `boolean`:idx: type is named ``bool`` in Nimrod and can be one of the two
-pre-defined values ``true`` and ``false``. Conditions in while,
-if, elif, when statements need to be of type bool.
-
-This condition holds::
-
-  ord(false) == 0 and ord(true) == 1
-
-The operators ``not, and, or, xor, <, <=, >, >=, !=, ==`` are defined
-for the bool type. The ``and`` and ``or`` operators perform short-cut
-evaluation. Example:
-
-.. code-block:: nimrod
-
-  while p != nil and p.name != "xyz":
-    # p.name is not evaluated if p == nil
-    p = p.next
-
-
-The size of the bool type is one byte.
-
-
-Character type
-~~~~~~~~~~~~~~
-The `character type`:idx: is named ``char`` in Nimrod. Its size is one byte.
-Thus it cannot represent an UTF-8 character, but a part of it.
-The reason for this is efficiency: for the overwhelming majority of use-cases,
-the resulting programs will still handle UTF-8 properly as UTF-8 was specially
-designed for this.
-Another reason is that Nimrod can support ``array[char, int]`` or
-``set[char]`` efficiently as many algorithms rely on this feature. The
-`TRune` type is used for Unicode characters, it can represent any Unicode
-character. ``TRune`` is declared in the ``unicode`` module.
-
-
-
-Enumeration types
-~~~~~~~~~~~~~~~~~
-`Enumeration`:idx: types define a new type whose values consist of the ones
-specified. The values are ordered. Example:
-
-.. code-block:: nimrod
-
-  type
-    TDirection = enum
-      north, east, south, west
-
-
-Now the following holds::
-
-  ord(north) == 0
-  ord(east) == 1
-  ord(south) == 2
-  ord(west) == 3
-
-Thus, north < east < south < west. The comparison operators can be used
-with enumeration types.
-
-For better interfacing to other programming languages, the fields of enum
-types can be assigned an explicit ordinal value. However, the ordinal values
-have to be in ascending order. A field whose ordinal value is not
-explicitly given is assigned the value of the previous field + 1.
-
-An explicit ordered enum can have *holes*:
-
-.. code-block:: nimrod
-  type
-    TTokenType = enum
-      a = 2, b = 4, c = 89 # holes are valid
-
-However, it is then not an ordinal anymore, so it is not possible to use these
-enums as an index type for arrays. The procedures ``inc``, ``dec``, ``succ``
-and ``pred`` are not available for them either.
-
-
-Subrange types
-~~~~~~~~~~~~~~
-A `subrange`:idx: type is a range of values from an ordinal type (the base
-type). To define a subrange type, one must specify it's limiting values: the
-lowest and highest value of the type:
-
-.. code-block:: nimrod
-  type
-    TSubrange = range[0..5]
-
-
-``TSubrange`` is a subrange of an integer which can only hold the values 0
-to 5. Assigning any other value to a variable of type ``TSubrange`` is a
-checked runtime error (or static error if it can be statically
-determined). Assignments from the base type to one of its subrange types
-(and vice versa) are allowed.
-
-A subrange type has the same size as its base type (``int`` in the example).
-
-
-String type
-~~~~~~~~~~~
-All string literals are of the type `string`:idx:. A string in Nimrod is very
-similar to a sequence of characters. However, strings in Nimrod are both
-zero-terminated and have a length field. One can retrieve the length with the
-builtin ``len`` procedure; the length never counts the terminating zero.
-The assignment operator for strings always copies the string.
-The ``&`` operator concatenates strings.
-
-Strings are compared by their lexicographical order. All comparison operators
-are available. Strings can be indexed like arrays (lower bound is 0). Unlike
-arrays, they can be used in case statements:
-
-.. code-block:: nimrod
-
-  case paramStr(i)
-  of "-v": incl(options, optVerbose)
-  of "-h", "-?": incl(options, optHelp)
-  else: write(stdout, "invalid command line option!\n")
-
-Per convention, all strings are UTF-8 strings, but this is not enforced. For
-example, when reading strings from binary files, they are merely a sequence of
-bytes. The index operation ``s[i]`` means the i-th *char* of ``s``, not the
-i-th *unichar*. The iterator ``runes`` from the ``unicode``
-module can be used for iteration over all Unicode characters.
-
-
-Structured types
-~~~~~~~~~~~~~~~~
-A variable of a `structured type`:idx: can hold multiple values at the same
-time. Structured types can be nested to unlimited levels. Arrays, sequences,
-tuples, objects and sets belong to the structured types.
-
-Array and sequence types
-~~~~~~~~~~~~~~~~~~~~~~~~
-`Arrays`:idx: are a homogeneous type, meaning that each element in the array
-has the same type. Arrays always have a fixed length which is specified at
-compile time (except for open arrays). They can be indexed by any ordinal type.
-A parameter ``A`` may be an *open array*, in which case it is indexed by
-integers from 0 to ``len(A)-1``. An array expression may be constructed by the
-array constructor ``[]``.
-
-`Sequences`:idx: are similar to arrays but of dynamic length which may change
-during runtime (like strings). A sequence ``S`` is always indexed by integers
-from 0 to ``len(S)-1`` and its bounds are checked. Sequences can be
-constructed by the array constructor ``[]`` in conjunction with the array to
-sequence operator ``@``. Another way to allocate space for a sequence is to
-call the built-in ``newSeq`` procedure.
-
-A sequence may be passed to a parameter that is of type *open array*.
-
-Example:
-
-.. code-block:: nimrod
-
-  type
-    TIntArray = array[0..5, int] # an array that is indexed with 0..5
-    TIntSeq = seq[int] # a sequence of integers
-  var
-    x: TIntArray
-    y: TIntSeq
-  x = [1, 2, 3, 4, 5, 6]  # [] is the array constructor
-  y = @[1, 2, 3, 4, 5, 6] # the @ turns the array into a sequence
-
-The lower bound of an array or sequence may be received by the built-in proc
-``low()``, the higher bound by ``high()``. The length may be
-received by ``len()``. ``low()`` for a sequence or an open array always returns
-0, as this is the first valid index.
-One can append elements to a sequence with the ``add()`` proc or the ``&``
-operator, and remove (and get) the last element of a sequence with the
-``pop()`` proc.
-
-The notation ``x[i]`` can be used to access the i-th element of ``x``.
-
-Arrays are always bounds checked (at compile-time or at runtime). These
-checks can be disabled via pragmas or invoking the compiler with the
-``--boundChecks:off`` command line switch.
-
-An open array is  also a means to implement passing a variable number of
-arguments to a procedure. The compiler converts the list of arguments
-to an array automatically:
-
-.. code-block:: nimrod
-  proc myWriteln(f: TFile, a: openarray[string]) =
-    for s in items(a):
-      write(f, s)
-    write(f, "\n")
-
-  myWriteln(stdout, "abc", "def", "xyz")
-  # is transformed by the compiler to:
-  myWriteln(stdout, ["abc", "def", "xyz"])
-
-This transformation is only done if the openarray parameter is the
-last parameter in the procedure header. The current implementation does not
-support nested open arrays.
-
-
-Tuples and object types
-~~~~~~~~~~~~~~~~~~~~~~~
-A variable of a `tuple`:idx: or `object`:idx: type is a heterogeneous storage
-container.
-A tuple or object defines various named *fields* of a type. A tuple also
-defines an *order* of the fields. Tuples are meant for heterogeneous storage
-types with no overhead and few abstraction possibilities. The constructor ``()``
-can be used to construct tuples. The order of the fields in the constructor
-must match the order of the tuple's definition. Different tuple-types are
-*equivalent* if they specify the same fields of the same type in the same
-order.
-
-The assignment operator for tuples copies each component.
-The default assignment operator for objects copies each component. Overloading
-of the assignment operator for objects is not possible, but this may change in
-future versions of the compiler.
-
-.. code-block:: nimrod
-
-  type
-    TPerson = tuple[name: string, age: int] # type representing a person
-                                            # a person consists of a name
-                                            # and an age
-  var
-    person: TPerson
-  person = (name: "Peter", age: 30)
-  # the same, but less readable:
-  person = ("Peter", 30)
-
-The implementation aligns the fields for best access performance. The alignment
-is compatible with the way the C compiler does it.
-
-Objects provide many features that tuples do not. Object provide inheritance
-and information hiding. Objects have access to their type at runtime, so that
-the ``is`` operator can be used to determine the object's type.
-
-.. code-block:: nimrod
-
-  type
-    TPerson = object
-      name*: string   # the * means that `name` is accessible from other modules
-      age: int        # no * means that the field is hidden
-
-    TStudent = object of TPerson # a student is a person
-      id: int                    # with an id field
-
-  var
-    student: TStudent
-    person: TPerson
-  assert(student is TStudent) # is true
-
-Object fields that should be visible from outside the defining module, have to
-be marked by ``*``. In contrast to tuples, different object types are
-never *equivalent*.
-
-
-Object variants
-~~~~~~~~~~~~~~~
-Often an object hierarchy is overkill in certain situations where simple
-`variant`:idx: types are needed.
-
-An example:
-
-.. code-block:: nimrod
-
-  # This is an example how an abstract syntax tree could be modelled in Nimrod
-  type
-    TNodeKind = enum  # the different node types
-      nkInt,          # a leaf with an integer value
-      nkFloat,        # a leaf with a float value
-      nkString,       # a leaf with a string value
-      nkAdd,          # an addition
-      nkSub,          # a subtraction
-      nkIf            # an if statement
-    PNode = ref TNode
-    TNode = object
-      case kind: TNodeKind  # the ``kind`` field is the discriminator
-      of nkInt: intVal: int
-      of nkFloat: floatVal: float
-      of nkString: strVal: string
-      of nkAdd, nkSub:
-        leftOp, rightOp: PNode
-      of nkIf:
-        condition, thenPart, elsePart: PNode
-
-  var
-    n: PNode
-  new(n)  # creates a new node
-  n.kind = nkFloat
-  n.floatVal = 0.0 # valid, because ``n.kind==nkFloat``, so that it fits
-
-  # the following statement raises an `EInvalidField` exception, because
-  # n.kind's value does not fit:
-  n.strVal = ""
-
-As can been seen from the example, an advantage to an object hierarchy is that
-no casting between different object types is needed. Yet, access to invalid
-object fields raises an exception.
-
-
-Set type
-~~~~~~~~
-The `set type`:idx: models the mathematical notion of a set. The set's
-basetype can only be an ordinal type. The reason is that sets are implemented
-as high performance bit vectors.
-
-Sets can be constructed via the set constructor: ``{}`` is the empty set. The
-empty set is type compatible with any special set type. The constructor
-can also be used to include elements (and ranges of elements) in the set:
-
-.. code-block:: nimrod
-
-  {'a'..'z', '0'..'9'} # This constructs a set that contains the
-                       # letters from 'a' to 'z' and the digits
-                       # from '0' to '9'
-
-These operations are supported by sets:
-
-==================    ========================================================
-operation             meaning
-==================    ========================================================
-``A + B``             union of two sets
-``A * B``             intersection of two sets
-``A - B``             difference of two sets (A without B's elements)
-``A == B``            set equality
-``A <= B``            subset relation (A is subset of B or equal to B)
-``A < B``             strong subset relation (A is a real subset of B)
-``e in A``            set membership (A contains element e)
-``A -+- B``           symmetric set difference (= (A - B) + (B - A))
-``card(A)``           the cardinality of A (number of elements in A)
-``incl(A, elem)``     same as A = A + {elem}
-``excl(A, elem)``     same as A = A - {elem}
-==================    ========================================================
-
-
-Reference and pointer types
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-References (similar to `pointers`:idx: in other programming languages) are a
-way to introduce many-to-one relationships. This means different references can
-point to and modify the same location in memory.
-
-Nimrod distinguishes between `traced`:idx: and `untraced`:idx: references.
-Untraced references are also called *pointers*. Traced references point to
-objects of a garbage collected heap, untraced references point to
-manually allocated objects or to objects somewhere else in memory. Thus
-untraced references are *unsafe*. However for certain low-level operations
-(accessing the hardware) untraced references are unavoidable.
-
-Traced references are declared with the **ref** keyword, untraced references
-are declared with the **ptr** keyword.
-
-The ``^`` operator can be used to derefer a reference, the ``addr`` procedure
-returns the address of an item. An address is always an untraced reference.
-Thus the usage of ``addr`` is an *unsafe* feature.
-
-The ``.`` (access a tuple/object field operator)
-and ``[]`` (array/string/sequence index operator) operators perform implicit
-dereferencing operations for reference types:
-
-.. code-block:: nimrod
-
-  type
-    PNode = ref TNode
-    TNode = object
-      le, ri: PNode
-      data: int
-
-  var
-    n: PNode
-  new(n)
-  n.data = 9 # no need to write n^ .data
-
-To allocate a new traced object, the built-in procedure ``new`` has to be used.
-To deal with untraced memory, the procedures ``alloc``, ``dealloc`` and
-``realloc`` can be used. The documentation of the system module contains
-further information.
-
-If a reference points to *nothing*, it has the value ``nil``.
-
-Special care has to be taken if an untraced object contains traced objects like
-traced references, strings or sequences: in order to free everything properly,
-the built-in procedure ``GCunref`` has to be called before freeing the
-untraced memory manually!
-
-.. XXX finalizers for traced objects
-
-Procedural type
-~~~~~~~~~~~~~~~
-A `procedural type`:idx: is internally a pointer to a procedure. ``nil`` is
-an allowed value for variables of a procedural type. Nimrod uses procedural
-types to achieve `functional`:idx: programming techniques.
-
-Example:
-
-.. code-block:: nimrod
-
-  type
-    TCallback = proc (x: int) {.cdecl.}
-
-  proc printItem(x: Int) = ...
-
-  proc forEach(c: TCallback) =
-    ...
-
-  forEach(printItem)  # this will NOT work because calling conventions differ
-
-A subtle issue with procedural types is that the calling convention of the
-procedure influences the type compatibility: procedural types are only
-compatible if they have the same calling convention.
-
-Nimrod supports these `calling conventions`:idx:, which are all incompatible to
-each other:
-
-`stdcall`:idx:
-    This the stdcall convention as specified by Microsoft. The generated C
-    procedure is declared with the ``__stdcall`` keyword.
-
-`cdecl`:idx:
-    The cdecl convention means that a procedure shall use the same convention
-    as the C compiler. Under windows the generated C procedure is declared with
-    the ``__cdecl`` keyword.
-
-`safecall`:idx:
-    This is the safecall convention as specified by Microsoft. The generated C
-    procedure is declared with the ``__safecall`` keyword. The word *safe*
-    refers to the fact that all hardware registers shall be pushed to the
-    hardware stack.
-
-`inline`:idx:
-    The inline convention means the the caller should not call the procedure,
-    but inline its code directly. Note that Nimrod does not inline, but leaves
-    this to the C compiler. Thus it generates ``__inline`` procedures. This is
-    only a hint for the compiler: it may completely ignore it and
-    it may inline procedures that are not marked as ``inline``.
-
-`fastcall`:idx:
-    Fastcall means different things to different C compilers. One gets whatever
-    the C ``__fastcall`` means.
-
-`nimcall`:idx:
-    Nimcall is the default convention used for Nimrod procedures. It is the
-    same as ``fastcall``, but only for C compilers that support ``fastcall``.
-
-`closure`:idx:
-    indicates that the procedure expects a context, a closure that needs
-    to be passed to the procedure. The calling convention ``nimcall`` is
-    compatible to ``closure``.
-
-`syscall`:idx:
-    The syscall convention is the same as ``__syscall`` in C. It is used for
-    interrupts.
-
-`noconv`:idx:
-    The generated C code will not have any explicit calling convention and thus
-    use the C compiler's default calling convention. This is needed because
-    Nimrod's default calling convention for procedures is ``fastcall`` to
-    improve speed.
-
-Most calling conventions exist only for the Windows 32-bit platform.
-
-Assigning/passing a procedure to a procedural variable is only allowed if one
-of the following conditions hold:
-1) The procedure that is accessed resists in the current module.
-2) The procedure is marked with the ``procvar`` pragma (see `procvar pragma`_).
-3) The procedure has a calling convention that differs from ``nimcall``.
-4) The procedure is anonymous.
-
-The rules' purpose is to prevent the case that extending a non-``procvar`` 
-procedure with default parameters breaks client code.
-
-
-Distinct type
-~~~~~~~~~~~~~
-
-A distinct type is new type derived from a `base type`:idx: that is
-incompatible with its base type. In particular, it is an essential property
-of a distinct type that it **does not** imply a subtype relation between it
-and its base type. Explicit type conversions from a distinct type to its
-base type and vice versa are allowed.
-
-A distinct type can be used to model different physical `units`:idx: with a
-numerical base type, for example. The following example models currencies.
-
-Different currencies should not be mixed in monetary calculations. Distinct
-types are a perfect tool to model different currencies:
-
-.. code-block:: nimrod
-  type
-    TDollar = distinct int
-    TEuro = distinct int
-  
-  var
-    d: TDollar
-    e: TEuro
-
-  echo d + 12
-  # Error: cannot add a number with no unit and a ``TDollar``
-
-Unfortunately, ``d + 12.TDollar`` is not allowed either,
-because ``+`` is defined for ``int`` (among others), not for ``TDollar``. So
-a ``+`` for dollars needs to be defined:
-
-.. code-block::
-  proc `+` (x, y: TDollar): TDollar =
-    result = TDollar(int(x) + int(y))
-
-It does not make sense to multiply a dollar with a dollar, but with a
-number without unit; and the same holds for division:
-
-.. code-block::
-  proc `*` (x: TDollar, y: int): TDollar =
-    result = TDollar(int(x) * y)
-
-  proc `*` (x: int, y: TDollar): TDollar =
-    result = TDollar(x * int(y))
-    
-  proc `div` ...
-
-This quickly gets tedious. The implementations are trivial and the compiler
-should not generate all this code only to optimize it away later - after all
-``+`` for dollars should produce the same binary code as ``+`` for ints.
-The pragma ``borrow`` has been designed to solve this problem; in principle
-it generates the above trivial implementations:
-
-.. code-block:: nimrod
-  proc `*` (x: TDollar, y: int): TDollar {.borrow.}
-  proc `*` (x: int, y: TDollar): TDollar {.borrow.}
-  proc `div` (x: TDollar, y: int): TDollar {.borrow.}
-
-The ``borrow`` pragma makes the compiler use the same implementation as
-the proc that deals with the distinct type's base type, so no code is
-generated.
-
-But it seems all this boilerplate code needs to be repeated for the ``TEuro``
-currency. This can be solved with templates_.
-
-.. code-block:: nimrod
-  template Additive(typ: typeDesc): stmt =
-    proc `+` *(x, y: typ): typ {.borrow.}
-    proc `-` *(x, y: typ): typ {.borrow.}
-    
-    # unary operators:
-    proc `+` *(x: typ): typ {.borrow.}
-    proc `-` *(x: typ): typ {.borrow.}
-
-  template Multiplicative(typ, base: typeDesc): stmt =
-    proc `*` *(x: typ, y: base): typ {.borrow.}
-    proc `*` *(x: base, y: typ): typ {.borrow.}
-    proc `div` *(x: typ, y: base): typ {.borrow.}
-    proc `mod` *(x: typ, y: base): typ {.borrow.}
-
-  template Comparable(typ: typeDesc): stmt =
-    proc `<` * (x, y: typ): bool {.borrow.}
-    proc `<=` * (x, y: typ): bool {.borrow.}
-    proc `==` * (x, y: typ): bool {.borrow.}
-
-  template DefineCurrency(typ, base: expr): stmt =
-    type
-      typ* = distinct base
-    Additive(typ)
-    Multiplicative(typ, base)
-    Comparable(typ)
-    
-  DefineCurrency(TDollar, int)
-  DefineCurrency(TEuro, int)
-
-
-
-Type relations
---------------
-
-The following section defines several relations on types that are needed to
-describe the type checking done by the compiler.
-
-
-Type equality
-~~~~~~~~~~~~~
-Nimrod uses structural type equivalence for most types. Only for objects,
-enumerations and distinct types name equivalence is used. The following
-algorithm (in pseudo-code) determines type equality:
-
-.. code-block:: nimrod
-  proc typeEqualsAux(a, b: PType,
-                     s: var set[PType * PType]): bool =
-    if (a,b) in s: return true
-    incl(s, (a,b))
-    if a.kind == b.kind:
-      case a.kind
-      of int, intXX, float, floatXX, char, string, cstring, pointer, bool, nil:
-        # leaf type: kinds identical; nothing more to check
-        result = true
-      of ref, ptr, var, set, seq, openarray:
-        result = typeEqualsAux(a.baseType, b.baseType, s)
-      of range:
-        result = typeEqualsAux(a.baseType, b.baseType, s) and
-          (a.rangeA == b.rangeA) and (a.rangeB == b.rangeB)
-      of array:
-        result = typeEqualsAux(a.baseType, b.baseType, s) and
-                 typeEqualsAux(a.indexType, b.indexType, s)
-      of tuple:
-        if a.tupleLen == b.tupleLen:
-          for i in 0..a.tupleLen-1:
-            if not typeEqualsAux(a[i], b[i], s): return false
-          result = true
-      of object, enum, distinct:
-        result = a == b
-      of proc:
-        result = typeEqualsAux(a.parameterTuple, b.parameterTuple, s) and
-                 typeEqualsAux(a.resultType, b.resultType, s) and
-                 a.callingConvention == b.callingConvention
-
-  proc typeEquals(a, b: PType): bool =
-    var s: set[PType * PType] = {}
-    result = typeEqualsAux(a, b, s)
-
-Since types are graphs which can have cycles, the above algorithm needs an
-auxiliary set ``s`` to detect this case.
-
-
-Subtype relation
-~~~~~~~~~~~~~~~~
-If object ``a`` inherits from ``b``, ``a`` is a subtype of ``b``. This subtype
-relation is extended to the types ``var``, ``ref``, ``ptr``:
-
-.. code-block:: nimrod
-  proc isSubtype(a, b: PType): bool =
-    if a.kind == b.kind:
-      case a.kind
-      of object:
-        var aa = a.baseType
-        while aa != nil and aa != b: aa = aa.baseType
-        result = aa == b
-      of var, ref, ptr:
-        result = isSubtype(a.baseType, b.baseType)
-
-.. XXX nil is a special value!
-
-
-Convertible relation
-~~~~~~~~~~~~~~~~~~~~
-A type ``a`` is **implicitly** convertible to type ``b`` iff the following
-algorithm returns true:
-
-.. code-block:: nimrod
-  # XXX range types?
-  proc isImplicitlyConvertible(a, b: PType): bool =
-    case a.kind
-    of proc:
-      if b.kind == proc:
-        var x = a.parameterTuple
-        var y = b.parameterTuple
-        if x.tupleLen == y.tupleLen:
-          for i in 0.. x.tupleLen-1:
-            if not isSubtype(x[i], y[i]): return false
-          result = isSubType(b.resultType, a.resultType)
-    of int8:    result = b.kind in {int16, int32, int64, int}
-    of int16:   result = b.kind in {int32, int64, int}
-    of int32:   result = b.kind in {int64, int}
-    of float:   result = b.kind in {float32, float64}
-    of float32: result = b.kind in {float64, float}
-    of float64: result = b.kind in {float32, float}
-    of seq:
-      result = b.kind == openArray and typeEquals(a.baseType, b.baseType)
-    of array:
-      result = b.kind == openArray and typeEquals(a.baseType, b.baseType)
-      if a.baseType == char and a.indexType.rangeA == 0:
-        result = b.kind = cstring
-    of cstring, ptr:
-      result = b.kind == pointer
-    of string:
-      result = b.kind == cstring
-
-A type ``a`` is **explicitly** convertible to type ``b`` iff the following
-algorithm returns true:
- 
-.. code-block:: nimrod
-  proc isIntegralType(t: PType): bool =
-    result = isOrdinal(t) or t.kind in {float, float32, float64}
-
-  proc isExplicitlyConvertible(a, b: PType): bool =
-    if isImplicitlyConvertible(a, b): return true
-    if isIntegralType(a) and isIntegralType(b): return true
-    if isSubtype(a, b) or isSubtype(b, a): return true
-    if a.kind == distinct and typeEquals(a.baseType, b): return true
-    if b.kind == distinct and typeEquals(b.baseType, a): return true
-    return false
-    
-
-Assignment compatibility
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-An expression ``b`` can be assigned to an expression ``a`` iff ``a`` is an
-`l-value` and ``isImplicitlyConvertible(b.typ, a.typ)`` holds.
-
-
-Overloading resolution
-~~~~~~~~~~~~~~~~~~~~~~
-
-To be written.
-
-
-Statements and expressions
---------------------------
-Nimrod uses the common statement/expression paradigm: `Statements`:idx: do not
-produce a value in contrast to expressions. Call expressions are statements.
-If the called procedure returns a value, it is not a valid statement
-as statements do not produce values. To evaluate an expression for
-side-effects and throw its value away, one can use the ``discard`` statement.
-
-Statements are separated into `simple statements`:idx: and
-`complex statements`:idx:.
-Simple statements are statements that cannot contain other statements like
-assignments, calls or the ``return`` statement; complex statements can
-contain other statements. To avoid the `dangling else problem`:idx:, complex
-statements always have to be intended::
-
-  simpleStmt ::= returnStmt
-             | yieldStmt
-             | discardStmt
-             | raiseStmt
-             | breakStmt
-             | continueStmt
-             | pragma
-             | importStmt
-             | fromStmt
-             | includeStmt
-             | exprStmt
-  complexStmt ::= ifStmt | whileStmt | caseStmt | tryStmt | forStmt
-                   | blockStmt | asmStmt
-                   | procDecl | iteratorDecl | macroDecl | templateDecl
-                   | constSection | typeSection | whenStmt | varSection
-
-
-
-Discard statement
-~~~~~~~~~~~~~~~~~
-
-Syntax::
-
-  discardStmt ::= 'discard' expr
-
-Example:
-
-.. code-block:: nimrod
-
-  discard proc_call("arg1", "arg2") # discard the return value of `proc_call`
-
-The `discard`:idx: statement evaluates its expression for side-effects and
-throws the expression's resulting value away. If the expression has no
-side-effects, this generates a static error. Ignoring the return value of a
-procedure without using a discard statement is a static error too.
-
-
-Var statement
-~~~~~~~~~~~~~
-
-Syntax::
-
-  colonOrEquals ::= ':' typeDesc ['=' expr] | '=' expr
-  varField ::= symbol ['*'] [pragma]
-  varPart ::= symbol (comma symbol)* [comma] colonOrEquals [COMMENT | IND COMMENT]
-  varSection ::= 'var' (varPart
-                     | indPush (COMMENT|varPart)
-                       (SAD (COMMENT|varPart))* DED indPop)
-
-
-`Var`:idx: statements declare new local and global variables and
-initialize them. A comma separated list of variables can be used to specify
-variables of the same type:
-
-.. code-block:: nimrod
-
-  var
-    a: int = 0
-    x, y, z: int
-
-If an initializer is given the type can be omitted: the variable is then of the
-same type as the initializing expression. Variables are always initialized
-with a default value if there is no initializing expression. The default
-value depends on the type and is always a zero in binary.
-
-============================    ==============================================
-Type                            default value
-============================    ==============================================
-any integer type                0
-any float                       0.0
-char                            '\\0'
-bool                            false
-ref or pointer type             nil
-procedural type                 nil
-sequence                        nil (*not* ``@[]``)
-string                          nil (*not* "")
-tuple[x: A, y: B, ...]          (default(A), default(B), ...)
-                                (analogous for objects)
-array[0..., T]                  [default(T), ...]
-range[T]                        default(T); this may be out of the valid range
-T = enum                        cast[T](0); this may be an invalid value
-============================    ==============================================
-
-
-Const section
-~~~~~~~~~~~~~
-
-Syntax::
-
-  colonAndEquals ::= [':' typeDesc] '=' expr
-
-  constDecl ::= symbol ['*'] [pragma] colonAndEquals [COMMENT | IND COMMENT]
-              | COMMENT
-  constSection ::= 'const' indPush constDecl (SAD constDecl)* DED indPop
-
-
-Example:
-
-.. code-block:: nimrod
-
-  const
-    MyFilename = "/home/my/file.txt"
-    debugMode: bool = false
-
-The `const`:idx: section declares symbolic constants. A symbolic constant is
-a name for a constant expression. Symbolic constants only allow read-access.
-
-
-If statement
-~~~~~~~~~~~~
-
-Syntax::
-
-  ifStmt ::= 'if' expr ':' stmt ('elif' expr ':' stmt)* ['else' ':' stmt]
-
-Example:
-
-.. code-block:: nimrod
-
-  var name = readLine(stdin)
-
-  if name == "Andreas":
-    echo("What a nice name!")
-  elif name == "":
-    echo("Don't you have a name?")
-  else:
-    echo("Boring name...")
-
-The `if`:idx: statement is a simple way to make a branch in the control flow:
-The expression after the keyword ``if`` is evaluated, if it is true
-the corresponding statements after the ``:`` are executed. Otherwise
-the expression after the ``elif`` is evaluated (if there is an
-``elif`` branch), if it is true the corresponding statements after
-the ``:`` are executed. This goes on until the last ``elif``. If all
-conditions fail, the ``else`` part is executed. If there is no ``else``
-part, execution continues with the statement after the ``if`` statement.
-
-
-Case statement
-~~~~~~~~~~~~~~
-
-Syntax::
-
-  caseStmt ::= 'case' expr [':'] ('of' sliceExprList ':' stmt)*
-                                 ('elif' expr ':' stmt)*
-                                 ['else' ':' stmt]
-
-Example:
-
-.. code-block:: nimrod
-
-  case readline(stdin)
-  of "delete-everything", "restart-computer":
-    echo("permission denied")
-  of "go-for-a-walk":     echo("please yourself")
-  else:                   echo("unknown command")
-
-The `case`:idx: statement is similar to the if statement, but it represents
-a multi-branch selection. The expression after the keyword ``case`` is
-evaluated and if its value is in a *slicelist* the corresponding statements
-(after the ``of`` keyword) are executed. If the value is not in any
-given *slicelist* the ``else`` part is executed. If there is no ``else``
-part and not all possible values that ``expr`` can hold occur in a 
-``slicelist``, a static error occurs. This holds only for expressions of 
-ordinal types.
-If the expression is not of an ordinal type, and no ``else`` part is
-given, control passes after the ``case`` statement.
-
-To suppress the static error in the ordinal case an ``else`` part with a ``nil``
-statement can be used.
-
-
-When statement
-~~~~~~~~~~~~~~
-
-Syntax::
-
-  whenStmt ::= 'when' expr ':' stmt ('elif' expr ':' stmt)* ['else' ':' stmt]
-
-Example:
-
-.. code-block:: nimrod
-
-  when sizeof(int) == 2:
-    echo("running on a 16 bit system!")
-  elif sizeof(int) == 4:
-    echo("running on a 32 bit system!")
-  elif sizeof(int) == 8:
-    echo("running on a 64 bit system!")
-  else:
-    echo("cannot happen!")
-
-The `when`:idx: statement is almost identical to the ``if`` statement with some
-exceptions:
-
-* Each ``expr`` has to be a constant expression (of type ``bool``).
-* The statements do not open a new scope.
-* The statements that belong to the expression that evaluated to true are
-  translated by the compiler, the other statements are not checked for
-  semantics! However, each ``expr`` is checked for semantics.
-
-The ``when`` statement enables conditional compilation techniques. As
-a special syntactic extension, the ``when`` construct is also available
-within ``object`` definitions.
-
-
-Raise statement
-~~~~~~~~~~~~~~~
-
-Syntax::
-
-  raiseStmt ::= 'raise' [expr]
-
-Example:
-
-.. code-block:: nimrod
-  raise newEOS("operating system failed")
-
-Apart from built-in operations like array indexing, memory allocation, etc.
-the ``raise`` statement is the only way to raise an exception.
-
-.. XXX document this better!
-
-If no exception name is given, the current exception is `re-raised`:idx:. The
-`ENoExceptionToReraise`:idx: exception is raised if there is no exception to
-re-raise. It follows that the ``raise`` statement *always* raises an
-exception.
-
-
-Try statement
-~~~~~~~~~~~~~
-
-Syntax::
-
-  qualifiedIdent ::= symbol ['.' symbol]
-  exceptList ::= [qualifiedIdent (comma qualifiedIdent)* [comma]]
-  tryStmt ::= 'try' ':' stmt
-             ('except' exceptList ':' stmt)*
-             ['finally' ':' stmt]
-
-Example:
-
-.. code-block:: nimrod
-  # read the first two lines of a text file that should contain numbers
-  # and tries to add them
-  var
-    f: TFile
-  if open(f, "numbers.txt"):
-    try:
-      var a = readLine(f)
-      var b = readLine(f)
-      echo("sum: " & $(parseInt(a) + parseInt(b)))
-    except EOverflow:
-      echo("overflow!")
-    except EInvalidValue:
-      echo("could not convert string to integer")
-    except EIO:
-      echo("IO error!")
-    except:
-      echo("Unknown exception!")
-    finally:
-      close(f)
-
-The statements after the `try`:idx: are executed in sequential order unless
-an exception ``e`` is raised. If the exception type of ``e`` matches any
-of the list ``exceptlist`` the corresponding statements are executed.
-The statements following the ``except`` clauses are called
-`exception handlers`:idx:.
-
-The empty `except`:idx: clause is executed if there is an exception that is
-in no list. It is similar to an ``else`` clause in ``if`` statements.
-
-If there is a `finally`:idx: clause, it is always executed after the
-exception handlers.
-
-The exception is *consumed* in an exception handler. However, an
-exception handler may raise another exception. If the exception is not
-handled, it is propagated through the call stack. This means that often
-the rest of the procedure - that is not within a ``finally`` clause -
-is not executed (if an exception occurs).
-
-
-Return statement
-~~~~~~~~~~~~~~~~
-
-Syntax::
-
-  returnStmt ::= 'return' [expr]
-
-Example:
-
-.. code-block:: nimrod
-  return 40+2
-
-The `return`:idx: statement ends the execution of the current procedure.
-It is only allowed in procedures. If there is an ``expr``, this is syntactic
-sugar for:
-
-.. code-block:: nimrod
-  result = expr
-  return result
-
-``return`` without an expression is a short notation for ``return result`` if
-the proc has a return type. The `result`:idx: variable is always the return
-value of the procedure. It is automatically declared by the compiler. As all
-variables, ``result`` is initialized to (binary) zero:
-
-.. code-block:: nimrod
-  proc returnZero(): int =
-    # implicitly returns 0
-
-
-Yield statement
-~~~~~~~~~~~~~~~
-
-Syntax::
-
-  yieldStmt ::= 'yield' expr
-
-Example:
-
-.. code-block:: nimrod
-  yield (1, 2, 3)
-
-The `yield`:idx: statement is used instead of the ``return`` statement in
-iterators. It is only valid in iterators. Execution is returned to the body
-of the for loop that called the iterator. Yield does not end the iteration
-process, but execution is passed back to the iterator if the next iteration
-starts. See the section about iterators (`Iterators and the for statement`_)
-for further information.
-
-
-Block statement
-~~~~~~~~~~~~~~~
-
-Syntax::
-
-  blockStmt ::= 'block' [symbol] ':' stmt
-
-Example:
-
-.. code-block:: nimrod
-  var found = false
-  block myblock:
-    for i in 0..3:
-      for j in 0..3:
-        if a[j][i] == 7:
-          found = true
-          break myblock # leave the block, in this case both for-loops
-  echo(found)
-
-The block statement is a means to group statements to a (named) `block`:idx:.
-Inside the block, the ``break`` statement is allowed to leave the block
-immediately. A ``break`` statement can contain a name of a surrounding
-block to specify which block is to leave.
-
-
-Break statement
-~~~~~~~~~~~~~~~
-
-Syntax::
-
-  breakStmt ::= 'break' [symbol]
-
-Example:
-
-.. code-block:: nimrod
-  break
-
-The `break`:idx: statement is used to leave a block immediately. If ``symbol``
-is given, it is the name of the enclosing block that is to leave. If it is
-absent, the innermost block is left.
-
-
-While statement
-~~~~~~~~~~~~~~~
-
-Syntax::
-
-  whileStmt ::= 'while' expr ':' stmt
-
-Example:
-
-.. code-block:: nimrod
-  echo("Please tell me your password: \n")
-  var pw = readLine(stdin)
-  while pw != "12345":
-    echo("Wrong password! Next try: \n")
-    pw = readLine(stdin)
-
-
-The `while`:idx: statement is executed until the ``expr`` evaluates to false.
-Endless loops are no error. ``while`` statements open an `implicit block`,
-so that they can be left with a ``break`` statement.
-
-
-Continue statement
-~~~~~~~~~~~~~~~~~~
-
-Syntax::
-
-  continueStmt ::= 'continue'
-
-A `continue`:idx: statement leads to the immediate next iteration of the
-surrounding loop construct. It is only allowed within a loop. A continue
-statement is syntactic sugar for a nested block:
-
-.. code-block:: nimrod
-  while expr1:
-    stmt1
-    continue
-    stmt2
-
-Is equivalent to:
-
-.. code-block:: nimrod
-  while expr1:
-    block myBlockName:
-      stmt1
-      break myBlockName
-      stmt2
-
-
-Assembler statement
-~~~~~~~~~~~~~~~~~~~
-Syntax::
-
-  asmStmt ::= 'asm' [pragma] (STR_LIT | RSTR_LIT | TRIPLESTR_LIT)
-
-The direct embedding of `assembler`:idx: code into Nimrod code is supported
-by the unsafe ``asm`` statement. Identifiers in the assembler code that refer to
-Nimrod identifiers shall be enclosed in a special character which can be
-specified in the statement's pragmas. The default special character is ``'`'``.
-
-
-If expression
-~~~~~~~~~~~~~
-
-An `if expression` is almost like an if statement, but it is an expression.
-Example:
-
-.. code-block:: nimrod
-  p(if x > 8: 9 else: 10)
-
-An if expression always results in a value, so the ``else`` part is
-required. ``Elif`` parts are also allowed (but unlikely to be good
-style).
-
-
-Type conversions
-~~~~~~~~~~~~~~~~
-Syntactically a `type conversion` is like a procedure call, but a
-type name replaces the procedure name. A type conversion is always
-safe in the sense that a failure to convert a type to another
-results in an exception (if it cannot be determined statically).
-
-
-Type casts
-~~~~~~~~~~
-Example:
-
-.. code-block:: nimrod
-  cast[int](x)
-
-Type casts are a crude mechanism to interpret the bit pattern of
-an expression as if it would be of another type. Type casts are
-only needed for low-level programming and are inherently unsafe.
-
-
-The addr operator
-~~~~~~~~~~~~~~~~~
-The `addr` operator returns the address of an l-value. If the
-type of the location is ``T``, the `addr` operator result is
-of the type ``ptr T``. Taking the address of an object that resides
-on the stack is **unsafe**, as the pointer may live longer than the
-object on the stack and can thus reference a non-existing object.
-
-
-Procedures
-~~~~~~~~~~
-What most programming languages call `methods`:idx: or `functions`:idx: are
-called `procedures`:idx: in Nimrod (which is the correct terminology). A
-procedure declaration defines an identifier and associates it with a block
-of code. 
-A procedure may call itself recursively. A parameter may be given a default
-value that is used if the caller does not provide a value for this parameter.
-The syntax is::
-
-  param ::= symbol (comma symbol)* (':' typeDesc ['=' expr] | '=' expr)
-  paramList ::= ['(' [param (comma param)*] optPar ')'] [':' typeDesc]
-
-  genericParam ::= symbol [':' typeDesc] ['=' expr]
-  genericParams ::= '[' genericParam (comma genericParam)* optPar ']'
-
-  routineDecl := symbol ['*'] [genericParams] paramList [pragma] ['=' stmt]
-  procDecl ::= 'proc' routineDecl
-
-
-If the ``= stmt`` part is missing, it is a `forward`:idx: declaration. If
-the proc returns a value, the procedure body can access an implicitly declared
-variable named `result`:idx: that represents the return value. Procs can be
-overloaded. The overloading resolution algorithm tries to find the proc that is
-the best match for the arguments. Example:
-
-.. code-block:: nimrod
-
-  proc toLower(c: Char): Char = # toLower for characters
-    if c in {'A'..'Z'}:
-      result = chr(ord(c) + (ord('a') - ord('A')))
-    else:
-      result = c
-
-  proc toLower(s: string): string = # toLower for strings
-    result = newString(len(s))
-    for i in 0..len(s) - 1:
-      result[i] = toLower(s[i]) # calls toLower for characters; no recursion!
-
-Calling a procedure can be done in many different ways:
-
-.. code-block:: nimrod
-  proc callme(x, y: int, s: string = "", c: char, b: bool = false) = ...
-
-  # call with positional arguments # parameter bindings:
-  callme(0, 1, "abc", '\t', true)  # (x=0, y=1, s="abc", c='\t', b=true)
-  # call with named and positional arguments:
-  callme(y=1, x=0, "abd", '\t')    # (x=0, y=1, s="abd", c='\t', b=false)
-  # call with named arguments (order is not relevant):
-  callme(c='\t', y=1, x=0)         # (x=0, y=1, s="", c='\t', b=false)
-  # call as a command statement: no () needed:
-  callme 0, 1, "abc", '\t'
-
-
-A procedure cannot modify its parameters (unless the parameters have the type
-`var`).
-
-`Operators`:idx: are procedures with a special operator symbol as identifier:
-
-.. code-block:: nimrod
-  proc `$` (x: int): string =
-    # converts an integer to a string; this is a prefix operator.
-    return intToStr(x)
-
-Operators with one parameter are prefix operators, operators with two
-parameters are infix operators. (However, the parser distinguishes these from
-the operator's position within an expression.) There is no way to declare
-postfix operators: all postfix operators are built-in and handled by the
-grammar explicitly.
-
-Any operator can be called like an ordinary proc with the '`opr`'
-notation. (Thus an operator can have more than two parameters):
-
-.. code-block:: nimrod
-  proc `*+` (a, b, c: int): int =
-    # Multiply and add
-    return a * b + c
-
-  assert `*+`(3, 4, 6) == `*`(a, `+`(b, c))
-
-
-
-Var parameters
-~~~~~~~~~~~~~~
-The type of a parameter may be prefixed with the ``var`` keyword:
-
-.. code-block:: nimrod
-  proc divmod(a, b: int,
-              res, remainder: var int) =
-    res = a div b
-    remainder = a mod b
-
-  var
-    x, y: int
-
-  divmod(8, 5, x, y) # modifies x and y
-  assert x == 1
-  assert y == 3
-
-In the example, ``res`` and ``remainder`` are `var parameters`.
-Var parameters can be modified by the procedure and the changes are
-visible to the caller. The argument passed to a var parameter has to be
-an l-value. Var parameters are implemented as hidden pointers. The
-above example is equivalent to:
-
-.. code-block:: nimrod
-  proc divmod(a, b: int,
-              res, remainder: ptr int) =
-    res^ = a div b
-    remainder^ = a mod b
-
-  var
-    x, y: int
-  divmod(8, 5, addr(x), addr(y))
-  assert x == 1
-  assert y == 3
-
-In the examples, var parameters or pointers are used to provide two
-return values. This can be done in a cleaner way by returning a tuple:
-
-.. code-block:: nimrod
-  proc divmod(a, b: int): tuple[res, remainder: int] =
-    return (a div b, a mod b)
-
-  var t = divmod(8, 5)
-  assert t.res == 1
-  assert t.remainder = 3
-
-One can use `tuple unpacking`:idx: to access the tuple's fields:
-
-.. code-block:: nimrod
-  var (x, y) = divmod(8, 5) # tuple unpacking
-  assert x == 1
-  assert y == 3
-
-
-Overloading of the subscript operator
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The ``[]`` subscript operator for arrays/openarrays/sequences can be overloaded.
-Overloading support is only possible if the first parameter has no type that
-already supports the built-in ``[]`` notation. Currently the compiler currently
-does not check this. XXX Multiple indexes
-
-
-Multi-methods
-~~~~~~~~~~~~~
-
-Procedures always use static dispatch. `Multi-methods`:idx: use dynamic
-dispatch.
-
-.. code-block:: nimrod
-  type
-    TExpr = object ## abstract base class for an expression
-    TLiteral = object of TExpr
-      x: int
-    TPlusExpr = object of TExpr
-      a, b: ref TExpr
-      
-  method eval(e: ref TExpr): int =
-    # override this base method
-    quit "to override!"
-  
-  method eval(e: ref TLiteral): int = return e.x
-
-  method eval(e: ref TPlusExpr): int =
-    # watch out: relies on dynamic binding
-    return eval(e.a) + eval(e.b)
-  
-  proc newLit(x: int): ref TLiteral =
-    new(result)
-    result.x = x
-    
-  proc newPlus(a, b: ref TExpr): ref TPlusExpr =
-    new(result)
-    result.a = a
-    result.b = b
-  
-  echo eval(newPlus(newPlus(newLit(1), newLit(2)), newLit(4)))
-  
-In the example the constructors ``newLit`` and ``newPlus`` are procs
-because they should use static binding, but ``eval`` is a method because it
-requires dynamic binding.
-
-In a multi-method all parameters that have an object type are used for the
-dispatching:
-
-.. code-block:: nimrod
-  type
-    TThing = object
-    TUnit = object of TThing
-      x: int
-      
-  method collide(a, b: TThing) {.inline.} =
-    quit "to override!"
-    
-  method collide(a: TThing, b: TUnit) {.inline.} =
-    echo "1"
-  
-  method collide(a: TUnit, b: TThing) {.inline.} =
-    echo "2"
-  
-  var
-    a, b: TUnit
-  collide(a, b) # output: 2
-
-
-Invocation of a multi-method cannot be ambiguous: collide 2 is preferred over 
-collide 1 because the resolution works from left to right. 
-In the example ``TUnit, TThing`` is prefered over ``TThing, TUnit``.
-
-**Performance note**: Nimrod does not produce a virtual method table, but
-generates dispatch trees. This avoids the expensive indirect branch for method
-calls and enables inlining. However, other optimizations like compile time
-evaluation or dead code elimination do not work with methods.
-
-
-Iterators and the for statement
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Syntax::
-
-  forStmt ::= 'for' symbol (comma symbol)* [comma] 'in' expr ['..' expr] ':' stmt
-
-  param ::= symbol (comma symbol)* [comma] ':' typeDesc
-  paramList ::= ['(' [param (comma param)* [comma]] ')'] [':' typeDesc]
-
-  genericParam ::= symbol [':' typeDesc]
-  genericParams ::= '[' genericParam (comma genericParam)* [comma] ']'
-
-  iteratorDecl ::= 'iterator' symbol ['*'] [genericParams] paramList [pragma]
-               ['=' stmt]
-
-The `for`:idx: statement is an abstract mechanism to iterate over the elements
-of a container. It relies on an `iterator`:idx: to do so. Like ``while``
-statements, ``for`` statements open an `implicit block`:idx:, so that they
-can be left with a ``break`` statement. The ``for`` loop declares
-iteration variables (``x`` in the example) - their scope reaches until the
-end of the loop body. The iteration variables' types are inferred by the
-return type of the iterator.
-
-An iterator is similar to a procedure, except that it is always called in the
-context of a ``for`` loop. Iterators provide a way to specify the iteration over
-an abstract type. A key role in the execution of a ``for`` loop plays the
-``yield`` statement in the called iterator. Whenever a ``yield`` statement is
-reached the data is bound to the ``for`` loop variables and control continues
-in the body of the ``for`` loop. The iterator's local variables and execution
-state are automatically saved between calls. Example:
-
-.. code-block:: nimrod
-  # this definition exists in the system module
-  iterator items*(a: string): char {.inline.} =
-    var i = 0
-    while i < len(a):
-      yield a[i]
-      inc(i)
-
-  for ch in items("hello world"): # `ch` is an iteration variable
-    echo(ch)
-
-The compiler generates code as if the programmer would have written this:
-
-.. code-block:: nimrod
-  var i = 0
-  while i < len(a):
-    var ch = a[i]
-    echo(ch)
-    inc(i)
-
-The current implementation always inlines the iterator code leading to zero
-overhead for the abstraction. But this may increase the code size. Later
-versions of the compiler will only inline iterators which have the calling
-convention ``inline``.
-
-If the iterator yields a tuple, there have to be as many iteration variables
-as there are components in the tuple. The i'th iteration variable's type is
-the one of the i'th component.
-
-
-Type sections
-~~~~~~~~~~~~~
-
-Syntax::
-
-  typeDef ::= typeDesc | objectDef | enumDef
-
-  genericParam ::= symbol [':' typeDesc]
-  genericParams ::= '[' genericParam (comma genericParam)* [comma] ']'
-
-  typeDecl ::= COMMENT
-             | symbol ['*'] [genericParams] ['=' typeDef] [COMMENT|IND COMMENT]
-
-  typeSection ::= 'type' indPush typeDecl (SAD typeDecl)* DED indPop
-
-
-Example:
-
-.. code-block:: nimrod
-  type # example demonstrates mutually recursive types
-    PNode = ref TNode # a traced pointer to a TNode
-    TNode = object
-      le, ri: PNode   # left and right subtrees
-      sym: ref TSym   # leaves contain a reference to a TSym
-
-    TSym = object     # a symbol
-      name: string    # the symbol's name
-      line: int       # the line the symbol was declared in
-      code: PNode     # the symbol's abstract syntax tree
-
-A `type`:idx: section begins with the ``type`` keyword. It contains multiple
-type definitions. A type definition binds a type to a name. Type definitions
-can be recursive or even mutually recursive. Mutually recursive types are only
-possible within a single ``type`` section.
-
-
-Generics
-~~~~~~~~
-
-Example:
-
-.. code-block:: nimrod
-  type
-    TBinaryTree[T] = object      # TBinaryTree is a generic type with
-                                 # with generic param ``T``
-      le, ri: ref TBinaryTree[T] # left and right subtrees; may be nil
-      data: T                    # the data stored in a node
-    PBinaryTree[T] = ref TBinaryTree[T] # a shorthand for notational convenience
-
-  proc newNode[T](data: T): PBinaryTree[T] = # constructor for a node
-    new(result)
-    result.dat = data
-
-  proc add[T](root: var PBinaryTree[T], n: PBinaryTree[T]) =
-    if root == nil:
-      root = n
-    else:
-      var it = root
-      while it != nil:
-        var c = cmp(it.data, n.data) # compare the data items; uses
-                                     # the generic ``cmd`` proc that works for
-                                     # any type that has a ``==`` and ``<``
-                                     # operator
-        if c < 0:
-          if it.le == nil:
-            it.le = n
-            return
-          it = it.le
-        else:
-          if it.ri == nil:
-            it.ri = n
-            return
-          it = it.ri
-
-  iterator inorder[T](root: PBinaryTree[T]): T =
-    # inorder traversal of a binary tree
-    # recursive iterators are not yet implemented, so this does not work in
-    # the current compiler!
-    if root.le != nil: yield inorder(root.le)
-    yield root.data
-    if root.ri != nil: yield inorder(root.ri)
-
-  var
-    root: PBinaryTree[string] # instantiate a PBinaryTree with the type string
-  add(root, newNode("hallo")) # instantiates generic procs ``newNode`` and
-  add(root, newNode("world")) # ``add``
-  for str in inorder(root):
-    writeln(stdout, str)
-
-`Generics`:idx: are Nimrod's means to parametrize procs, iterators or types with
-`type parameters`:idx:. Depending on context, the brackets are used either to
-introduce type parameters or to instantiate a generic proc, iterator or type.
-
-
-Templates
-~~~~~~~~~
-
-A `template`:idx: is a simple form of a macro: It is a simple substitution
-mechanism that operates on Nimrod's abstract syntax trees. It is processed in
-the semantic pass of the compiler.
-
-The syntax to *invoke* a template is the same as calling a procedure.
-
-Example:
-
-.. code-block:: nimrod
-  template `!=` (a, b: expr): expr =
-    # this definition exists in the System module
-    not (a == b)
-
-  assert(5 != 6) # the compiler rewrites that to: assert(not (5 == 6))
-
-The ``!=``, ``>``, ``>=``, ``in``, ``notin``, ``isnot`` operators are in fact 
-templates:
-
-| ``a > b`` is transformed into ``b < a``.
-| ``a in b`` is transformed into ``contains(b, a)``. 
-| ``notin`` and ``isnot`` have the obvious meanings.
-
-The "types" of templates can be the symbols ``expr`` (stands for *expression*), 
-``stmt`` (stands for *statement*) or ``typedesc`` (stands for *type 
-description*). These are no real types, they just help the compiler parsing.
-Real types can be used too; this implies that expressions are expected.
-However, for parameter type checking the arguments are semantically checked
-before being passed to the template. Other arguments are not semantically
-checked before being passed to the template.
-
-The template body does not open a new scope. To open a new scope a ``block``
-statement can be used:
-
-.. code-block:: nimrod
-  template declareInScope(x: expr, t: typeDesc): stmt = 
-    var x: t
-    
-  template declareInNewScope(x: expr, t: typeDesc): stmt = 
-    # open a new scope:
-    block: 
-      var x: t
-
-  declareInScope(a, int)
-  a = 42  # works, `a` is known here
-  
-  declareInNewScope(b, int)
-  b = 42  # does not work, `b` is unknown
-
-
-If there is a ``stmt`` parameter it should be the last in the template
-declaration, because statements are passed to a template via a
-special ``:`` syntax:
-
-.. code-block:: nimrod
-
-  template withFile(f, fn, mode: expr, actions: stmt): stmt =
-    block:
-      var f: TFile
-      if open(f, fn, mode):
-        try:
-          actions
-        finally:
-          close(f)
-      else:
-        quit("cannot open: " & fn)
-      
-  withFile(txt, "ttempl3.txt", fmWrite):
-    txt.writeln("line 1")
-    txt.writeln("line 2")
-  
-In the example the two ``writeln`` statements are bound to the ``actions``
-parameter. 
-
-**Note:** Symbol binding rules in templates might change!
-
-Symbol binding within templates happens after template instantation: 
-
-.. code-block:: nimrod
-  # Module A
-  var 
-    lastId = 0
-  
-  template genId*: expr =
-    inc(lastId)
-    lastId
-
-.. code-block:: nimrod
-  # Module B
-  import A
-  
-  echo genId() # Error: undeclared identifier: 'lastId'
-
-Exporting a template is a often a leaky abstraction. However, to compensate for
-this case, the ``bind`` operator can be used: All identifiers within a ``bind``
-context are bound early (i.e. when the template is parsed).
-The affected identifiers are then always bound early even if the other
-occurences are in no ``bind`` context: 
-
-.. code-block:: nimrod
-  # Module A
-  var 
-    lastId = 0
-  
-  template genId*: expr =
-    inc(bind lastId)
-    lastId
-
-.. code-block:: nimrod
-  # Module B
-  import A
-  
-  echo genId() # Works
-
-
-**Style note**: For code readability, it is the best idea to use the least
-powerful programming construct that still suffices. So the "check list" is:
-
-(1) Use an ordinary proc/iterator, if possible.
-(2) Else: Use a generic proc/iterator, if possible.
-(3) Else: Use a template, if possible.
-(4) Else: Use a macro.
-
-
-Macros
-------
-
-`Macros`:idx: are the most powerful feature of Nimrod. They can be used
-to implement `domain specific languages`:idx:.
-
-While macros enable advanced compile-time code transformations, they
-cannot change Nimrod's syntax. However, this is no real restriction because
-Nimrod's syntax is flexible enough anyway.
-
-To write macros, one needs to know how the Nimrod concrete syntax is converted
-to an abstract syntax tree.
-
-There are two ways to invoke a macro:
-(1) invoking a macro like a procedure call (`expression macros`)
-(2) invoking a macro with the special ``macrostmt`` syntax (`statement macros`)
-
-
-Expression Macros
-~~~~~~~~~~~~~~~~~
-
-The following example implements a powerful ``debug`` command that accepts a
-variable number of arguments:
-
-.. code-block:: nimrod
-  # to work with Nimrod syntax trees, we need an API that is defined in the
-  # ``macros`` module:
-  import macros
-
-  macro debug(n: expr): stmt =
-    # `n` is a Nimrod AST that contains the whole macro invocation
-    # this macro returns a list of statements:
-    result = newNimNode(nnkStmtList, n)
-    # iterate over any argument that is passed to this macro:
-    for i in 1..n.len-1:
-      # add a call to the statement list that writes the expression;
-      # `toStrLit` converts an AST to its string representation:
-      add(result, newCall("write", newIdentNode("stdout"), toStrLit(n[i])))
-      # add a call to the statement list that writes ": "
-      add(result, newCall("write", newIdentNode("stdout"), newStrLitNode(": ")))
-      # add a call to the statement list that writes the expressions value:
-      add(result, newCall("writeln", newIdentNode("stdout"), n[i]))
-
-  var
-    a: array [0..10, int]
-    x = "some string"
-  a[0] = 42
-  a[1] = 45
-
-  debug(a[0], a[1], x)
-
-The macro call expands to:
-
-.. code-block:: nimrod
-  write(stdout, "a[0]")
-  write(stdout, ": ")
-  writeln(stdout, a[0])
-
-  write(stdout, "a[1]")
-  write(stdout, ": ")
-  writeln(stdout, a[1])
-
-  write(stdout, "x")
-  write(stdout, ": ")
-  writeln(stdout, x)
-
-
-Statement Macros
-~~~~~~~~~~~~~~~~
-
-Statement macros are defined just as expression macros. However, they are
-invoked by an expression following a colon::
-
-  exprStmt ::= lowestExpr ['=' expr | [expr (comma expr)* [comma]] [macroStmt]]
-  macroStmt ::= ':' [stmt] ('of' [sliceExprList] ':' stmt
-                          | 'elif' expr ':' stmt
-                          | 'except' exceptList ':' stmt )*
-                           ['else' ':' stmt]
-
-The following example outlines a macro that generates a lexical analyzer from
-regular expressions:
-
-.. code-block:: nimrod
-  import macros
-
-  macro case_token(n: stmt): stmt =
-    # creates a lexical analyzer from regular expressions
-    # ... (implementation is an exercise for the reader :-)
-    nil
-
-  case_token: # this colon tells the parser it is a macro statement
-  of r"[A-Za-z_]+[A-Za-z_0-9]*":
-    return tkIdentifier
-  of r"0-9+":
-    return tkInteger
-  of r"[\+\-\*\?]+":
-    return tkOperator
-  else:
-    return tkUnknown
-
-
-
-Modules
--------
-Nimrod supports splitting a program into pieces by a `module`:idx: concept.
-Each module needs to be in its own file and has its own `namespace`:idx:.
-Modules enable `information hiding`:idx: and `separate compilation`:idx:.
-A module may gain access to symbols of another module by the `import`:idx:
-statement. `Recursive module dependencies`:idx: are allowed, but slightly
-subtle. Only top-level symbols that are marked with an asterisk (``*``) are
-exported.
-
-The algorithm for compiling modules is:
-
-- compile the whole module as usual, following import statements recursively
-- if there is a cycle only import the already parsed symbols (that are
-  exported); if an unknown identifier occurs then abort
-
-This is best illustrated by an example:
-
-.. code-block:: nimrod
-  # Module A
-  type
-    T1* = int  # Module A exports the type ``T1``
-  import B     # the compiler starts parsing B
-
-  proc main() =
-    var i = p(3) # works because B has been parsed completely here
-
-  main()
-
-
-.. code-block:: nimrod
-  # Module B
-  import A  # A is not parsed here! Only the already known symbols
-            # of A are imported.
-
-  proc p*(x: A.T1): A.T1 =
-    # this works because the compiler has already
-    # added T1 to A's interface symbol table
-    return x + 1
-
-
-Scope rules
------------
-Identifiers are valid from the point of their declaration until the end of
-the block in which the declaration occurred. The range where the identifier
-is known is the `scope`:idx: of the identifier. The exact scope of an
-identifier depends on the way it was declared.
-
-Block scope
-~~~~~~~~~~~
-The *scope* of a variable declared in the declaration part of a block
-is valid from the point of declaration until the end of the block. If a
-block contains a second block, in which the identifier is redeclared,
-then inside this block, the second declaration will be valid. Upon
-leaving the inner block, the first declaration is valid again. An
-identifier cannot be redefined in the same block, except if valid for
-procedure or iterator overloading purposes.
-
-
-Tuple or object scope
-~~~~~~~~~~~~~~~~~~~~~
-The field identifiers inside a tuple or object definition are valid in the
-following places:
-
-* To the end of the tuple/object definition.
-* Field designators of a variable of the given tuple/object type.
-* In all descendant types of the object type.
-
-Module scope
-~~~~~~~~~~~~
-All identifiers of a module are valid from the point of declaration until
-the end of the module. Identifiers from indirectly dependent modules are *not* 
-available. The `system`:idx: module is automatically imported in every other 
-module.
-
-If a module imports an identifier by two different modules, each occurrence of
-the identifier has to be qualified, unless it is an overloaded procedure or
-iterator in which case the overloading resolution takes place:
-
-.. code-block:: nimrod
-  # Module A
-  var x*: string
-
-.. code-block:: nimrod
-  # Module B
-  var x*: int
-
-.. code-block:: nimrod
-  # Module C
-  import A, B
-  write(stdout, x) # error: x is ambiguous
-  write(stdout, A.x) # no error: qualifier used
-
-  var x = 4
-  write(stdout, x) # not ambiguous: uses the module C's x
-
-
-Messages
-========
-
-The Nimrod compiler emits different kinds of messages: `hint`:idx:,
-`warning`:idx:, and `error`:idx: messages. An *error* message is emitted if
-the compiler encounters any static error.
-
-
-Pragmas
-=======
-
-Syntax::
-
-  colonExpr ::= expr [':' expr]
-  colonExprList ::= [colonExpr (comma colonExpr)* [comma]]
-
-  pragma ::= '{.' optInd (colonExpr [comma])* [SAD] ('.}' | '}')
-
-Pragmas are Nimrod's method to give the compiler additional information/
-commands without introducing a massive number of new keywords. Pragmas are
-processed on the fly during semantic checking. Pragmas are enclosed in the
-special ``{.`` and ``.}`` curly brackets. Pragmas are also often used as a
-first implementation to play with a language feature before a nicer syntax
-to access the feature becomes available.
-
-
-noSideEffect pragma
--------------------
-The `noSideEffect`:idx: pragma is used to mark a proc/iterator to have no side
-effects. This means that the proc/iterator only changes locations that are
-reachable from its parameters and the return value only depends on the
-arguments. If none of its parameters have the type ``var T``
-or ``ref T`` or ``ptr T`` this means no locations are modified. It is a static
-error to mark a proc/iterator to have no side effect if the compiler cannot
-verify this.
-
-**Future directions**: ``func`` may become a keyword and syntactic sugar for a
-proc with no side effects:
-
-.. code-block:: nimrod
-  func `+` (x, y: int): int
-
-
-procvar pragma
---------------
-The `procvar`:idx: pragma is used to mark a proc that it can be passed to a
-procedural variable.
-
-
-compileTime pragma
-------------------
-The `compileTime`:idx: pragma is used to mark a proc to be used at compile
-time only. No code will be generated for it. Compile time procs are useful
-as helpers for macros.
-
-
-noReturn pragma
----------------
-The `noreturn`:idx: pragma is used to mark a proc that it never returns. 
-
-
-Acyclic pragma
---------------
-The `acyclic`:idx: pragma can be used for object types to mark them as acyclic
-even though they seem to be cyclic. This is an **optimization** for the garbage
-collector to not consider objects of this type as part of a cycle:
-
-.. code-block:: nimrod
-  type
-    PNode = ref TNode
-    TNode {.acyclic, final.} = object
-      left, right: PNode
-      data: string
-
-In the example a tree structure is declared with the ``TNode`` type. Note that
-the type definition is recursive and the GC has to assume that objects of
-this type may form a cyclic graph. The ``acyclic`` pragma passes the
-information that this cannot happen to the GC. If the programmer uses the
-``acyclic`` pragma for data types that are in reality cyclic, the GC may leak
-memory, but nothing worse happens.
-
-**Future directions**: The ``acyclic`` pragma may become a property of a
-``ref`` type:
-
-.. code-block:: nimrod
-  type
-    PNode = acyclic ref TNode
-    TNode = object
-      left, right: PNode
-      data: string
-
-
-Final pragma
-------------
-The `final`:idx: pragma can be used for an object type to specify that it
-cannot be inherited from.
-
-
-Pure pragma
------------
-The `pure`:idx: pragma serves two completely different purposes:
-1) To mark a procedure that Nimrod should not generate any exit statements like
-   ``return result;`` in the generated code. This is useful for procs that only
-   consist of an assembler statement.
-2) To mark an object type so that its type field should be omitted. This is
-   necessary for binary compatibility with other compiled languages.
-
-
-error pragma
-------------
-The `error`:idx: pragma is used to make the compiler output an error message
-with the given content. Compilation currently aborts after an error, but this
-may be changed in later versions.
-
-
-fatal pragma
-------------
-The `fatal`:idx: pragma is used to make the compiler output an error message
-with the given content. In contrast to the ``error`` pragma, compilation
-is guaranteed to be aborted by this pragma.
-
-warning pragma
---------------
-The `warning`:idx: pragma is used to make the compiler output a warning message
-with the given content. Compilation continues after the warning.
-
-hint pragma
------------
-The `hint`:idx: pragma is used to make the compiler output a hint message with
-the given content. Compilation continues after the hint.
-
-
-compilation option pragmas
---------------------------
-The listed pragmas here can be used to override the code generation options
-for a section of code.
-
-The implementation currently provides the following possible options (various
-others may be added later).
-
-===============  ===============  ============================================
-pragma           allowed values   description
-===============  ===============  ============================================
-checks           on|off           Turns the code generation for all runtime
-                                  checks on or off.
-boundChecks      on|off           Turns the code generation for array bound
-                                  checks on or off.
-overflowChecks   on|off           Turns the code generation for over- or
-                                  underflow checks on or off.
-nilChecks        on|off           Turns the code generation for nil pointer
-                                  checks on or off.
-assertions       on|off           Turns the code generation for assertions
-                                  on or off.
-warnings         on|off           Turns the warning messages of the compiler
-                                  on or off.
-hints            on|off           Turns the hint messages of the compiler
-                                  on or off.
-optimization     none|speed|size  Optimize the code for speed or size, or
-                                  disable optimization.
-callconv         cdecl|...        Specifies the default calling convention for
-                                  all procedures (and procedure types) that
-                                  follow.
-===============  ===============  ============================================
-
-Example:
-
-.. code-block:: nimrod
-  {.checks: off, optimization: speed.}
-  # compile without runtime checks and optimize for speed
-
-
-push and pop pragmas
---------------------
-The `push/pop`:idx: pragmas are very similar to the option directive,
-but are used to override the settings temporarily. Example:
-
-.. code-block:: nimrod
-  {.push checks: off.}
-  # compile this section without runtime checks as it is
-  # speed critical
-  # ... some code ...
-  {.pop.} # restore old settings
-
-
-Register pragma
----------------
-The `register`:idx: pragma is for variables only. It declares the variable as
-``register``, giving the compiler a hint that the variable should be placed
-in a hardware register for faster access. C compilers usually ignore this
-though and for good reasons: Often they do a better job without it anyway.
-
-In highly specific cases (a dispatch loop of an bytecode interpreter for
-example) it may provide benefits, though.
-
-
-DeadCodeElim pragma
--------------------
-The `deadCodeElim`:idx: pragma only applies to whole modules: It tells the
-compiler to activate (or deactivate) dead code elimination for the module the
-pragma appers in.
-
-The ``--deadCodeElim:on`` command line switch has the same effect as marking
-every module with ``{.deadCodeElim:on}``. However, for some modules such as
-the GTK wrapper it makes sense to *always* turn on dead code elimination -
-no matter if it is globally active or not.
-
-Example:
-
-.. code-block:: nimrod
-  {.deadCodeElim: on.}
-
-
-Disabling certain messages
---------------------------
-Nimrod generates some warnings and hints ("line too long") that may annoy the
-user. A mechanism for disabling certain messages is provided: Each hint
-and warning message contains a symbol in brackets. This is the message's
-identifier that can be used to enable or disable it:
-
-.. code-block:: Nimrod
-  {.warning[LineTooLong]: off.} # turn off warning about too long lines
-
-This is often better than disabling all warnings at once.
-
-
-Foreign function interface
-==========================
-
-Nimrod's `FFI`:idx: (foreign function interface) is extensive and only the
-parts that scale to other future backends (like the LLVM/EcmaScript backends)
-are documented here.
-
-
-Importc pragma
---------------
-The `importc`:idx: pragma provides a means to import a proc or a variable
-from C. The optional argument is a string containing the C identifier. If
-the argument is missing, the C name is the Nimrod identifier *exactly as
-spelled*:
-
-.. code-block::
-  proc printf(formatstr: cstring) {.importc: "printf", varargs.}
-
-Note that this pragma is somewhat of a misnomer: Other backends will provide
-the same feature under the same name.
-
-
-Exportc pragma
---------------
-The `exportc`:idx: pragma provides a means to export a type, a variable, or a
-procedure to C. The optional argument is a string containing the C identifier.
-If the argument is missing, the C name is the Nimrod
-identifier *exactly as spelled*:
-
-.. code-block:: Nimrod
-  proc callme(formatstr: cstring) {.exportc: "callMe", varargs.}
-
-Note that this pragma is somewhat of a misnomer: Other backends will provide
-the same feature under the same name.
-
-
-Varargs pragma
---------------
-The `varargs`:idx: pragma can be applied to procedures only (and procedure 
-types). It tells Nimrod that the proc can take a variable number of parameters 
-after the last specified parameter. Nimrod string values will be converted to C
-strings automatically:
-
-.. code-block:: Nimrod
-  proc printf(formatstr: cstring) {.nodecl, varargs.}
-
-  printf("hallo %s", "world") # "world" will be passed as C string
-
-
-Dynlib pragma
--------------
-With the `dynlib`:idx: pragma a procedure can be imported from
-a dynamic library (``.dll`` files for Windows, ``lib*.so`` files for UNIX). The
-non-optional argument has to be the name of the dynamic library:
-
-.. code-block:: Nimrod
-  proc gtk_image_new(): PGtkWidget {.cdecl, dynlib: "libgtk-x11-2.0.so", importc.}
-
-In general, importing a dynamic library does not require any special linker
-options or linking with import libraries. This also implies that no *devel*
-packages need to be installed.
-
-The ``dynlib`` import mechanism supports a versioning scheme: 
-
-.. code-block:: nimrod 
-  proc Tcl_Eval(interp: pTcl_Interp, script: cstring): int {.cdecl, 
-    importc, dynlib: "libtcl(|8.5|8.4|8.3).so.(1|0)".}
-
-At runtime the dynamic library is searched for (in this order)::
-  
-  libtcl.so.1
-  libtcl.so.0
-  libtcl8.5.so.1  
-  libtcl8.5.so.0
-  libtcl8.4.so.1
-  libtcl8.4.so.0
-  libtcl8.3.so.1
-  libtcl8.3.so.0
-
-The ``dynlib`` pragma supports not only constant strings as argument but also
-string expressions in general:
-
-.. code-block:: nimrod
-  import os
-
-  proc getDllName: string = 
-    result = "mylib.dll"
-    if ExistsFile(result): return
-    result = "mylib2.dll"
-    if ExistsFile(result): return
-    quit("could not load dynamic library")
-  
-  proc myImport(s: cstring) {.cdecl, importc, dynlib: getDllName().}
-
-**Note**: Patterns like ``libtcl(|8.5|8.4).so`` are only supported in constant
-strings, because they are precompiled.
+=============

+Nimrod Manual

+=============

+

+:Author: Andreas Rumpf

+:Version: |nimrodversion|

+

+.. contents::

+

+

+  "Complexity" seems to be a lot like "energy": you can transfer it from the end

+  user to one/some of the other players, but the total amount seems to remain

+  pretty much constant for a given task. -- Ran

+

+About this document

+===================

+

+**Note**: This document is a draft! Several of Nimrod's features need more

+precise wording. This manual will evolve into a proper specification some

+day.

+

+This document describes the lexis, the syntax, and the semantics of Nimrod.

+

+The language constructs are explained using an extended BNF, in

+which ``(a)*`` means 0 or more ``a``'s, ``a+`` means 1 or more ``a``'s, and

+``(a)?`` means an optional *a*; an alternative spelling for optional parts is

+``[a]``. The ``|`` symbol is used to mark alternatives

+and has the lowest precedence. Parentheses may be used to group elements.

+Non-terminals start with a lowercase letter, abstract terminal symbols are in

+UPPERCASE. Verbatim terminal symbols (including keywords) are quoted

+with ``'``. An example::

+

+  ifStmt ::= 'if' expr ':' stmts ('elif' expr ':' stmts)* ['else' stmts]

+

+Other parts of Nimrod - like scoping rules or runtime semantics are only

+described in an informal manner. The reason is that formal semantics are

+difficult to write and understand. However, there is only one Nimrod

+implementation, so one may consider it as the formal specification;

+especially since the compiler's code is pretty clean (well, some parts of it).

+

+

+Definitions

+===========

+

+A Nimrod program specifies a computation that acts on a memory consisting of

+components called `locations`:idx:. A variable is basically a name for a

+location. Each variable and location is of a certain `type`:idx:. The

+variable's type is called `static type`:idx:, the location's type is called

+`dynamic type`:idx:. If the static type is not the same as the dynamic type,

+it is a super-type or subtype of the dynamic type.

+

+An `identifier`:idx: is a symbol declared as a name for a variable, type,

+procedure, etc. The region of the program over which a declaration applies is

+called the `scope`:idx: of the declaration. Scopes can be nested. The meaning

+of an identifier is determined by the smallest enclosing scope in which the

+identifier is declared.

+

+An expression specifies a computation that produces a value or location.

+Expressions that produce locations are called `l-values`:idx:. An l-value

+can denote either a location or the value the location contains, depending on

+the context. Expressions whose values can be determined statically are called

+`constant expressions`:idx:; they are never l-values.

+

+A `static error`:idx: is an error that the implementation detects before

+program execution. Unless explicitly classified, an error is a static error.

+

+A `checked runtime error`:idx: is an error that the implementation detects

+and reports at runtime. The method for reporting such errors is via *raising

+exceptions*. However, the implementation provides a means to disable these

+runtime checks. See the section pragmas_ for details.

+

+An `unchecked runtime error`:idx: is an error that is not guaranteed to be

+detected, and can cause the subsequent behavior of the computation to

+be arbitrary. Unchecked runtime errors cannot occur if only `safe`:idx:

+language features are used.

+

+

+Lexical Analysis

+================

+

+Encoding

+--------

+

+All Nimrod source files are in the UTF-8 encoding (or its ASCII subset). Other

+encodings are not supported. Any of the standard platform line termination

+sequences can be used - the Unix form using ASCII LF (linefeed), the Windows

+form using the ASCII sequence CR LF (return followed by linefeed), or the old

+Macintosh form using the ASCII CR (return) character. All of these forms can be

+used equally, regardless of platform.

+

+

+Indentation

+-----------

+

+Nimrod's standard grammar describes an `indentation sensitive`:idx: language.

+This means that all the control structures are recognized by indentation.

+Indentation consists only of spaces; tabulators are not allowed.

+

+The terminals ``IND`` (indentation), ``DED`` (dedentation) and ``SAD``

+(same indentation) are generated by the scanner, denoting an indentation.

+

+These terminals are only generated for lines that are not empty.

+

+The parser and the scanner communicate over a stack which indentation terminal

+should be generated: the stack consists of integers counting the spaces. The

+stack is initialized with a zero on its top. The scanner reads from the stack:

+If the current indentation token consists of more spaces than the entry at the

+top of the stack, a ``IND`` token is generated, else if it consists of the same

+number of spaces, a ``SAD`` token is generated. If it consists of fewer spaces,

+a ``DED`` token is generated for any item on the stack that is greater than the

+current. These items are later popped from the stack by the parser. At the end

+of the file, a ``DED`` token is generated for each number remaining on the

+stack that is larger than zero.

+

+Because the grammar contains some optional ``IND`` tokens, the scanner cannot

+push new indentation levels. This has to be done by the parser. The symbol

+``indPush`` indicates that an ``IND`` token is expected; the current number of

+leading spaces is pushed onto the stack by the parser. The symbol ``indPop``

+denotes that the parser pops an item from the indentation stack. No token is

+consumed by ``indPop``.

+

+

+Comments

+--------

+

+`Comments`:idx: start anywhere outside a string or character literal with the

+hash character ``#``.

+Comments consist of a concatenation of `comment pieces`:idx:. A comment piece

+starts with ``#`` and runs until the end of the line. The end of line characters

+belong to the piece. If the next line only consists of a comment piece which is

+aligned to the preceding one, it does not start a new comment:

+

+.. code-block:: nimrod

+

+  i = 0     # This is a single comment over multiple lines belonging to the

+            # assignment statement. The scanner merges these two pieces.

+  # This is a new comment belonging to the current block, but to no particular

+  # statement.

+  i = i + 1 # This a new comment that is NOT

+  echo(i)   # continued here, because this comment refers to the echo statement

+

+Comments are tokens; they are only allowed at certain places in the input file

+as they belong to the syntax tree! This feature enables perfect source-to-source

+transformations (such as pretty-printing) and superior documentation generators.

+A nice side-effect is that the human reader of the code always knows exactly

+which code snippet the comment refers to.

+

+

+Identifiers & Keywords

+----------------------

+

+`Identifiers`:idx: in Nimrod can be any string of letters, digits

+and underscores, beginning with a letter. Two immediate following

+underscores ``__`` are not allowed::

+

+  letter ::= 'A'..'Z' | 'a'..'z' | '\x80'..'\xff'

+  digit ::= '0'..'9'

+  IDENTIFIER ::= letter ( ['_'] letter | digit )*

+

+The following `keywords`:idx: are reserved and cannot be used as identifiers:

+

+.. code-block:: nimrod

+   :file: ../data/keywords.txt

+

+Some keywords are unused; they are reserved for future developments of the

+language.

+

+Nimrod is a `style-insensitive`:idx: language. This means that it is not

+case-sensitive and even underscores are ignored:

+**type** is a reserved word, and so is **TYPE** or **T_Y_P_E**. The idea behind

+this is that this allows programmers to use their own preferred spelling style

+and libraries written by different programmers cannot use incompatible

+conventions. A Nimrod-aware editor or IDE can show the identifiers as

+preferred. Another advantage is that it frees the programmer from remembering

+the exact spelling of an identifier.

+

+

+String literals

+---------------

+

+`String literals`:idx: can be delimited by matching double quotes, and can

+contain the following `escape sequences`:idx:\ :

+

+==================         ===================================================

+  Escape sequence          Meaning

+==================         ===================================================

+  ``\n``                   `newline`:idx:

+  ``\r``, ``\c``           `carriage return`:idx:

+  ``\l``                   `line feed`:idx:

+  ``\f``                   `form feed`:idx:

+  ``\t``                   `tabulator`:idx:

+  ``\v``                   `vertical tabulator`:idx:

+  ``\\``                   `backslash`:idx:

+  ``\"``                   `quotation mark`:idx:

+  ``\'``                   `apostrophe`:idx:

+  ``\d+``                  `character with decimal value d`:idx:;

+                           all decimal digits directly

+                           following are used for the character

+  ``\a``                   `alert`:idx:

+  ``\b``                   `backspace`:idx:

+  ``\e``                   `escape`:idx: `[ESC]`:idx:

+  ``\xHH``                 `character with hex value HH`:idx:;

+                           exactly two hex digits are allowed

+==================         ===================================================

+

+

+Strings in Nimrod may contain any 8-bit value, except embedded zeros.

+

+

+Triple quoted string literals

+-----------------------------

+

+String literals can also be delimited by three double quotes

+``"""`` ... ``"""``.

+Literals in this form may run for several lines, may contain ``"`` and do not

+interpret any escape sequences.

+For convenience, when the opening ``"""`` is immediately followed by a newline,

+the newline is not included in the string. The ending of the string literal is

+defined by the pattern ``"""[^"]``, so this:

+  

+.. code-block:: nimrod 

+  """"long string within quotes""""

+  

+Produces::

+  

+  "long string within quotes"

+

+

+Raw string literals

+-------------------

+

+There are also `raw string literals` that are preceded with the letter ``r``

+(or ``R``) and are delimited by matching double quotes (just like ordinary

+string literals) and do not interpret the escape sequences. This is especially

+convenient for regular expressions or Windows paths:

+

+.. code-block:: nimrod

+

+  var f = openFile(r"C:\texts\text.txt") # a raw string, so ``\t`` is no tab

+

+To produce a single ``"`` within a raw string literal, it has to be doubled:

+

+.. code-block:: nimrod

+

+  r"a""b"

+  

+Produces::

+  

+  a"b

+

+``r""""`` is not possible with this notation, because the three leading 

+quotes introduce a triple quoted string literal. 

+

+

+Generalized raw string literals

+-------------------------------

+

+The construct ``identifier"string literal"`` (without whitespace between the

+identifier and the opening quotation mark) is a

+`generalized raw string literal`:idx:. It is a shortcut for the construct

+``identifier(r"string literal")``, so it denotes a procedure call with a

+raw string literal as its only argument. Generalized raw string literals

+are especially convenient for embedding mini languages directly into Nimrod

+(for example regular expressions).

+

+The construct ``identifier"""string literal"""`` exists too. It is a shortcut

+for ``identifier("""string literal""")``.

+

+

+Character literals

+------------------

+

+Character literals are enclosed in single quotes ``''`` and can contain the

+same escape sequences as strings - with one exception: ``\n`` is not allowed

+as it may be wider than one character (often it is the pair CR/LF for example).

+A character is not an Unicode character but a single byte. The reason for this

+is efficiency: for the overwhelming majority of use-cases, the resulting

+programs will still handle UTF-8 properly as UTF-8 was specially designed for

+this.

+Another reason is that Nimrod can thus support ``array[char, int]`` or

+``set[char]`` efficiently as many algorithms rely on this feature.

+

+

+Numerical constants

+-------------------

+

+`Numerical constants`:idx: are of a single type and have the form::

+

+  hexdigit ::= digit | 'A'..'F' | 'a'..'f'

+  octdigit ::= '0'..'7'

+  bindigit ::= '0'..'1'

+  INT_LIT ::= digit ( ['_'] digit )*

+            | '0' ('x' | 'X' ) hexdigit ( ['_'] hexdigit )*

+            | '0o' octdigit ( ['_'] octdigit )*

+            | '0' ('b' | 'B' ) bindigit ( ['_'] bindigit )*

+

+  INT8_LIT ::= INT_LIT '\'' ('i' | 'I' ) '8'

+  INT16_LIT ::= INT_LIT '\'' ('i' | 'I' ) '16'

+  INT32_LIT ::= INT_LIT '\'' ('i' | 'I' ) '32'

+  INT64_LIT ::= INT_LIT '\'' ('i' | 'I' ) '64'

+

+  exponent ::= ('e' | 'E' ) ['+' | '-'] digit ( ['_'] digit )*

+  FLOAT_LIT ::= digit (['_'] digit)*  ('.' (['_'] digit)* [exponent] |exponent)

+  FLOAT32_LIT ::= ( FLOAT_LIT | INT_LIT ) '\'' ('f' | 'F') '32'

+  FLOAT64_LIT ::= ( FLOAT_LIT | INT_LIT ) '\'' ('f' | 'F') '64'

+

+

+As can be seen in the productions, numerical constants can contain underscores

+for readability. Integer and floating point literals may be given in decimal (no

+prefix), binary (prefix ``0b``), octal (prefix ``0o``) and hexadecimal

+(prefix ``0x``) notation.

+

+There exists a literal for each numerical type that is

+defined. The suffix starting with an apostrophe ('\'') is called a

+`type suffix`:idx:. Literals without a type suffix are of the type ``int``,

+unless the literal contains a dot or ``E|e`` in which case it is of

+type ``float``.

+

+The type suffixes are:

+

+=================    =========================

+  Type Suffix        Resulting type of literal

+=================    =========================

+  ``'i8``            int8

+  ``'i16``           int16

+  ``'i32``           int32

+  ``'i64``           int64

+  ``'f32``           float32

+  ``'f64``           float64

+=================    =========================

+

+Floating point literals may also be in binary, octal or hexadecimal

+notation:

+``0B0_10001110100_0000101001000111101011101111111011000101001101001001'f64``

+is approximately 1.72826e35 according to the IEEE floating point standard.

+

+

+

+Other tokens

+------------

+

+The following strings denote other tokens::

+

+       (     )     {     }     [     ]     ,  ;   [.    .]  {.   .}  (.  .)

+       :     =     ^     ..    `

+

+`..`:tok: takes precedence over other tokens that contain a dot: `{..}`:tok: are

+the three tokens `{`:tok:, `..`:tok:, `}`:tok: and not the two tokens

+`{.`:tok:, `.}`:tok:.

+

+In Nimrod one can define his own operators. An `operator`:idx: is any

+combination of the following characters that is not listed above::

+

+       +     -     *     /     <     >

+       =     @     $     ~     &     %

+       !     ?     ^     .     |     \

+

+These keywords are also operators:

+``and or not xor shl shr div mod in notin is isnot``.

+

+

+Syntax

+======

+

+This section lists Nimrod's standard syntax in ENBF. How the parser receives

+indentation tokens is already described in the `Lexical Analysis`_ section.

+

+Nimrod allows user-definable operators.

+Binary operators have 8 different levels of precedence. For user-defined

+operators, the precedence depends on the first character the operator consists

+of. All binary operators are left-associative.

+

+================  ==============================================  ==================  ===============

+Precedence level    Operators                                     First characters    Terminal symbol

+================  ==============================================  ==================  ===============

+  7 (highest)                                                     ``$``               OP7

+  6               ``*    /    div   mod   shl  shr  %``           ``* % \  /``        OP6

+  5               ``+    -``                                      ``+  ~  |``         OP5

+  4               ``&``                                           ``&``               OP4

+  3               ``==  <= < >= > !=  in  not_in  is  isnot``     ``= <  > !``        OP3

+  2               ``and``                                                             OP2

+  1               ``or xor``                                                          OP1

+  0 (lowest)                                                      ``? @ ^ ` : .``     OP0

+================  ==============================================  ==================  ===============

+

+

+The grammar's start symbol is ``module``.

+

+.. include:: grammar.txt

+   :literal:

+

+

+

+Semantics

+=========

+

+Constants

+---------

+

+`Constants`:idx: are symbols which are bound to a value. The constant's value

+cannot change. The compiler must be able to evaluate the expression in a

+constant declaration at compile time.

+

+Nimrod contains a sophisticated compile-time evaluator, so procedures which

+have no side-effect can be used in constant expressions too:

+

+.. code-block:: nimrod

+  import strutils

+  const

+    constEval = contains("abc", 'b') # computed at compile time!

+

+

+Types

+-----

+

+All expressions have a `type`:idx: which is known at compile time. Nimrod

+is statically typed. One can declare new types, which is in essence defining

+an identifier that can be used to denote this custom type.

+

+These are the major type classes:

+

+* ordinal types (consist of integer, bool, character, enumeration

+  (and subranges thereof) types)

+* floating point types

+* string type

+* structured types

+* reference (pointer) type

+* procedural type

+* generic type

+

+

+Ordinal types

+~~~~~~~~~~~~~

+`Ordinal types`:idx: have the following characteristics:

+

+- Ordinal types are countable and ordered. This property allows

+  the operation of functions as ``Inc``, ``Ord``, ``Dec`` on ordinal types to

+  be defined.

+- Ordinal values have a smallest possible value. Trying to count further

+  down than the smallest value gives a checked runtime or static error.

+- Ordinal values have a largest possible value. Trying to count further

+  than the largest value gives a checked runtime or static error.

+

+Integers, bool, characters and enumeration types (and subranges of these

+types) belong to ordinal types.

+

+

+Pre-defined integer types

+~~~~~~~~~~~~~~~~~~~~~~~~~

+These integer types are pre-defined:

+

+``int``

+  the generic signed integer type; its size is platform dependent

+  (the compiler chooses the processor's fastest integer type).

+  This type should be used in general. An integer literal that has no type

+  suffix is of this type.

+

+intXX

+  additional signed integer types of XX bits use this naming scheme

+  (example: int16 is a 16 bit wide integer).

+  The current implementation supports ``int8``, ``int16``, ``int32``, ``int64``.

+  Literals of these types have the suffix 'iXX.

+

+

+There are no `unsigned integer`:idx: types, only `unsigned operations`:idx:

+that treat their arguments as unsigned. Unsigned operations all wrap around;

+they cannot lead to over- or underflow errors. Unsigned operations use the

+``%`` suffix as convention:

+

+======================   ======================================================

+operation                meaning

+======================   ======================================================

+``a +% b``               unsigned integer addition

+``a -% b``               unsigned integer subtraction

+``a *% b``               unsigned integer multiplication

+``a /% b``               unsigned integer division

+``a %% b``               unsigned integer modulo operation

+``a <% b``               treat ``a`` and ``b`` as unsigned and compare

+``a <=% b``              treat ``a`` and ``b`` as unsigned and compare

+``ze(a)``                extends the bits of ``a`` with zeros until it has the

+                         width of the ``int`` type

+``toU8(a)``              treats ``a`` as unsigned and converts it to an

+                         unsigned integer of 8 bits (but still the

+                         ``int8`` type)

+``toU16(a)``             treats ``a`` as unsigned and converts it to an

+                         unsigned integer of 16 bits (but still the

+                         ``int16`` type)

+``toU32(a)``             treats ``a`` as unsigned and converts it to an

+                         unsigned integer of 32 bits (but still the

+                         ``int32`` type)

+======================   ======================================================

+

+`Automatic type conversion`:idx: is performed in expressions where different

+kinds of integer types are used: the smaller type is converted to the larger.

+For further details, see `Convertible relation`_.

+

+

+Pre-defined floating point types

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+

+The following floating point types are pre-defined:

+

+``float``

+  the generic floating point type; its size is platform dependent

+  (the compiler chooses the processor's fastest floating point type).

+  This type should be used in general.

+

+floatXX

+  an implementation may define additional floating point types of XX bits using

+  this naming scheme (example: float64 is a 64 bit wide float). The current

+  implementation supports ``float32`` and ``float64``. Literals of these types

+  have the suffix 'fXX.

+

+

+Automatic type conversion in expressions with different kinds

+of floating point types is performed: See `Convertible relation`_ for further

+details. Arithmetic performed on floating point types follows the IEEE

+standard. Integer types are not converted to floating point types automatically

+and vice versa.

+

+The IEEE standard defines five types of floating-point exceptions:

+

+* Invalid: operations with mathematically invalid operands,

+  for example 0.0/0.0, sqrt(-1.0), and log(-37.8).

+* Division by zero: divisor is zero and dividend is a finite nonzero number,

+  for example 1.0/0.0.

+* Overflow: operation produces a result that exceeds the range of the exponent, 

+  for example MAXDOUBLE+0.0000000000001e308.

+* Underflow: operation produces a result that is too small to be represented 

+  as a normal number, for example, MINDOUBLE * MINDOUBLE.

+* Inexact: operation produces a result that cannot be represented with infinite 

+  precision, for example, 2.0 / 3.0, log(1.1) and 0.1 in input.

+

+The IEEE exceptions are either ignored at runtime or mapped to the 

+Nimrod exceptions: `EFloatInvalidOp`:idx, `EFloatDivByZero`:idx:,

+`EFloatOverflow`:idx:, `EFloatUnderflow`:idx:, and `EFloatInexact`:idx:\. 

+These exceptions inherit from the `EFloatingPoint`:idx: base class.

+

+Nimrod provides the pragmas `NaNChecks`:idx and `InfChecks`:idx:\ to control

+whether the IEEE exceptions are ignored or trap a Nimrod exception:

+

+.. code-block:: nimrod

+  {.NanChecks: on, InfChecks: on.}

+  var a = 1.0

+  var b = 0.0

+  echo b / b # raises EFloatInvalidOp

+  echo a / b # raises EFloatOverflow

+

+In the current implementation ``EFloatDivByZero`` and ``EFloatInexact`` are 

+never raised. ``EFloatOverflow`` is raised instead of ``EFloatDivByZero``.

+There is also a `floatChecks`:idx: pragma that is a short-cut for the 

+combination of ``NaNChecks`` and ``InfChecks`` pragmas. ``floatChecks`` are

+turned off as default.

+

+The only operations that are affected by the ``floatChecks`` pragma are

+the ``+``, ``-``, ``*``, ``/`` operators for floating point types.

+

+

+Boolean type

+~~~~~~~~~~~~

+The `boolean`:idx: type is named ``bool`` in Nimrod and can be one of the two

+pre-defined values ``true`` and ``false``. Conditions in while,

+if, elif, when statements need to be of type bool.

+

+This condition holds::

+

+  ord(false) == 0 and ord(true) == 1

+

+The operators ``not, and, or, xor, <, <=, >, >=, !=, ==`` are defined

+for the bool type. The ``and`` and ``or`` operators perform short-cut

+evaluation. Example:

+

+.. code-block:: nimrod

+

+  while p != nil and p.name != "xyz":

+    # p.name is not evaluated if p == nil

+    p = p.next

+

+

+The size of the bool type is one byte.

+

+

+Character type

+~~~~~~~~~~~~~~

+The `character type`:idx: is named ``char`` in Nimrod. Its size is one byte.

+Thus it cannot represent an UTF-8 character, but a part of it.

+The reason for this is efficiency: for the overwhelming majority of use-cases,

+the resulting programs will still handle UTF-8 properly as UTF-8 was specially

+designed for this.

+Another reason is that Nimrod can support ``array[char, int]`` or

+``set[char]`` efficiently as many algorithms rely on this feature. The

+`TRune` type is used for Unicode characters, it can represent any Unicode

+character. ``TRune`` is declared in the ``unicode`` module.

+

+

+

+Enumeration types

+~~~~~~~~~~~~~~~~~

+`Enumeration`:idx: types define a new type whose values consist of the ones

+specified. The values are ordered. Example:

+

+.. code-block:: nimrod

+

+  type

+    TDirection = enum

+      north, east, south, west

+

+

+Now the following holds::

+

+  ord(north) == 0

+  ord(east) == 1

+  ord(south) == 2

+  ord(west) == 3

+

+Thus, north < east < south < west. The comparison operators can be used

+with enumeration types.

+

+For better interfacing to other programming languages, the fields of enum

+types can be assigned an explicit ordinal value. However, the ordinal values

+have to be in ascending order. A field whose ordinal value is not

+explicitly given is assigned the value of the previous field + 1.

+

+An explicit ordered enum can have *holes*:

+

+.. code-block:: nimrod

+  type

+    TTokenType = enum

+      a = 2, b = 4, c = 89 # holes are valid

+

+However, it is then not an ordinal anymore, so it is not possible to use these

+enums as an index type for arrays. The procedures ``inc``, ``dec``, ``succ``

+and ``pred`` are not available for them either.

+

+

+Subrange types

+~~~~~~~~~~~~~~

+A `subrange`:idx: type is a range of values from an ordinal type (the base

+type). To define a subrange type, one must specify it's limiting values: the

+lowest and highest value of the type:

+

+.. code-block:: nimrod

+  type

+    TSubrange = range[0..5]

+

+

+``TSubrange`` is a subrange of an integer which can only hold the values 0

+to 5. Assigning any other value to a variable of type ``TSubrange`` is a

+checked runtime error (or static error if it can be statically

+determined). Assignments from the base type to one of its subrange types

+(and vice versa) are allowed.

+

+A subrange type has the same size as its base type (``int`` in the example).

+

+

+String type

+~~~~~~~~~~~

+All string literals are of the type `string`:idx:. A string in Nimrod is very

+similar to a sequence of characters. However, strings in Nimrod are both

+zero-terminated and have a length field. One can retrieve the length with the

+builtin ``len`` procedure; the length never counts the terminating zero.

+The assignment operator for strings always copies the string.

+The ``&`` operator concatenates strings.

+

+Strings are compared by their lexicographical order. All comparison operators

+are available. Strings can be indexed like arrays (lower bound is 0). Unlike

+arrays, they can be used in case statements:

+

+.. code-block:: nimrod

+

+  case paramStr(i)

+  of "-v": incl(options, optVerbose)

+  of "-h", "-?": incl(options, optHelp)

+  else: write(stdout, "invalid command line option!\n")

+

+Per convention, all strings are UTF-8 strings, but this is not enforced. For

+example, when reading strings from binary files, they are merely a sequence of

+bytes. The index operation ``s[i]`` means the i-th *char* of ``s``, not the

+i-th *unichar*. The iterator ``runes`` from the ``unicode``

+module can be used for iteration over all Unicode characters.

+

+

+Structured types

+~~~~~~~~~~~~~~~~

+A variable of a `structured type`:idx: can hold multiple values at the same

+time. Structured types can be nested to unlimited levels. Arrays, sequences,

+tuples, objects and sets belong to the structured types.

+

+Array and sequence types

+~~~~~~~~~~~~~~~~~~~~~~~~

+`Arrays`:idx: are a homogeneous type, meaning that each element in the array

+has the same type. Arrays always have a fixed length which is specified at

+compile time (except for open arrays). They can be indexed by any ordinal type.

+A parameter ``A`` may be an *open array*, in which case it is indexed by

+integers from 0 to ``len(A)-1``. An array expression may be constructed by the

+array constructor ``[]``.

+

+`Sequences`:idx: are similar to arrays but of dynamic length which may change

+during runtime (like strings). A sequence ``S`` is always indexed by integers

+from 0 to ``len(S)-1`` and its bounds are checked. Sequences can be

+constructed by the array constructor ``[]`` in conjunction with the array to

+sequence operator ``@``. Another way to allocate space for a sequence is to

+call the built-in ``newSeq`` procedure.

+

+A sequence may be passed to a parameter that is of type *open array*.

+

+Example:

+

+.. code-block:: nimrod

+

+  type

+    TIntArray = array[0..5, int] # an array that is indexed with 0..5

+    TIntSeq = seq[int] # a sequence of integers

+  var

+    x: TIntArray

+    y: TIntSeq

+  x = [1, 2, 3, 4, 5, 6]  # [] is the array constructor

+  y = @[1, 2, 3, 4, 5, 6] # the @ turns the array into a sequence

+

+The lower bound of an array or sequence may be received by the built-in proc

+``low()``, the higher bound by ``high()``. The length may be

+received by ``len()``. ``low()`` for a sequence or an open array always returns

+0, as this is the first valid index.

+One can append elements to a sequence with the ``add()`` proc or the ``&``

+operator, and remove (and get) the last element of a sequence with the

+``pop()`` proc.

+

+The notation ``x[i]`` can be used to access the i-th element of ``x``.

+

+Arrays are always bounds checked (at compile-time or at runtime). These

+checks can be disabled via pragmas or invoking the compiler with the

+``--boundChecks:off`` command line switch.

+

+An open array is  also a means to implement passing a variable number of

+arguments to a procedure. The compiler converts the list of arguments

+to an array automatically:

+

+.. code-block:: nimrod

+  proc myWriteln(f: TFile, a: openarray[string]) =

+    for s in items(a):

+      write(f, s)

+    write(f, "\n")

+

+  myWriteln(stdout, "abc", "def", "xyz")

+  # is transformed by the compiler to:

+  myWriteln(stdout, ["abc", "def", "xyz"])

+

+This transformation is only done if the openarray parameter is the

+last parameter in the procedure header. The current implementation does not

+support nested open arrays.

+

+

+Tuples and object types

+~~~~~~~~~~~~~~~~~~~~~~~

+A variable of a `tuple`:idx: or `object`:idx: type is a heterogeneous storage

+container.

+A tuple or object defines various named *fields* of a type. A tuple also

+defines an *order* of the fields. Tuples are meant for heterogeneous storage

+types with no overhead and few abstraction possibilities. The constructor ``()``

+can be used to construct tuples. The order of the fields in the constructor

+must match the order of the tuple's definition. Different tuple-types are

+*equivalent* if they specify the same fields of the same type in the same

+order.

+

+The assignment operator for tuples copies each component.

+The default assignment operator for objects copies each component. Overloading

+of the assignment operator for objects is not possible, but this may change in

+future versions of the compiler.

+

+.. code-block:: nimrod

+

+  type

+    TPerson = tuple[name: string, age: int] # type representing a person

+                                            # a person consists of a name

+                                            # and an age

+  var

+    person: TPerson

+  person = (name: "Peter", age: 30)

+  # the same, but less readable:

+  person = ("Peter", 30)

+

+The implementation aligns the fields for best access performance. The alignment

+is compatible with the way the C compiler does it.

+

+Objects provide many features that tuples do not. Object provide inheritance

+and information hiding. Objects have access to their type at runtime, so that

+the ``is`` operator can be used to determine the object's type.

+

+.. code-block:: nimrod

+

+  type

+    TPerson = object

+      name*: string   # the * means that `name` is accessible from other modules

+      age: int        # no * means that the field is hidden

+

+    TStudent = object of TPerson # a student is a person

+      id: int                    # with an id field

+

+  var

+    student: TStudent

+    person: TPerson

+  assert(student is TStudent) # is true

+

+Object fields that should be visible from outside the defining module, have to

+be marked by ``*``. In contrast to tuples, different object types are

+never *equivalent*.

+

+

+Object variants

+~~~~~~~~~~~~~~~

+Often an object hierarchy is overkill in certain situations where simple

+`variant`:idx: types are needed.

+

+An example:

+

+.. code-block:: nimrod

+

+  # This is an example how an abstract syntax tree could be modelled in Nimrod

+  type

+    TNodeKind = enum  # the different node types

+      nkInt,          # a leaf with an integer value

+      nkFloat,        # a leaf with a float value

+      nkString,       # a leaf with a string value

+      nkAdd,          # an addition

+      nkSub,          # a subtraction

+      nkIf            # an if statement

+    PNode = ref TNode

+    TNode = object

+      case kind: TNodeKind  # the ``kind`` field is the discriminator

+      of nkInt: intVal: int

+      of nkFloat: floatVal: float

+      of nkString: strVal: string

+      of nkAdd, nkSub:

+        leftOp, rightOp: PNode

+      of nkIf:

+        condition, thenPart, elsePart: PNode

+

+  var

+    n: PNode

+  new(n)  # creates a new node

+  n.kind = nkFloat

+  n.floatVal = 0.0 # valid, because ``n.kind==nkFloat``, so that it fits

+

+  # the following statement raises an `EInvalidField` exception, because

+  # n.kind's value does not fit:

+  n.strVal = ""

+

+As can been seen from the example, an advantage to an object hierarchy is that

+no casting between different object types is needed. Yet, access to invalid

+object fields raises an exception.

+

+

+Set type

+~~~~~~~~

+The `set type`:idx: models the mathematical notion of a set. The set's

+basetype can only be an ordinal type. The reason is that sets are implemented

+as high performance bit vectors.

+

+Sets can be constructed via the set constructor: ``{}`` is the empty set. The

+empty set is type compatible with any special set type. The constructor

+can also be used to include elements (and ranges of elements) in the set:

+

+.. code-block:: nimrod

+

+  {'a'..'z', '0'..'9'} # This constructs a set that contains the

+                       # letters from 'a' to 'z' and the digits

+                       # from '0' to '9'

+

+These operations are supported by sets:

+

+==================    ========================================================

+operation             meaning

+==================    ========================================================

+``A + B``             union of two sets

+``A * B``             intersection of two sets

+``A - B``             difference of two sets (A without B's elements)

+``A == B``            set equality

+``A <= B``            subset relation (A is subset of B or equal to B)

+``A < B``             strong subset relation (A is a real subset of B)

+``e in A``            set membership (A contains element e)

+``A -+- B``           symmetric set difference (= (A - B) + (B - A))

+``card(A)``           the cardinality of A (number of elements in A)

+``incl(A, elem)``     same as A = A + {elem}

+``excl(A, elem)``     same as A = A - {elem}

+==================    ========================================================

+

+

+Reference and pointer types

+~~~~~~~~~~~~~~~~~~~~~~~~~~~

+References (similar to `pointers`:idx: in other programming languages) are a

+way to introduce many-to-one relationships. This means different references can

+point to and modify the same location in memory.

+

+Nimrod distinguishes between `traced`:idx: and `untraced`:idx: references.

+Untraced references are also called *pointers*. Traced references point to

+objects of a garbage collected heap, untraced references point to

+manually allocated objects or to objects somewhere else in memory. Thus

+untraced references are *unsafe*. However for certain low-level operations

+(accessing the hardware) untraced references are unavoidable.

+

+Traced references are declared with the **ref** keyword, untraced references

+are declared with the **ptr** keyword.

+

+The ``^`` operator can be used to derefer a reference, the ``addr`` procedure

+returns the address of an item. An address is always an untraced reference.

+Thus the usage of ``addr`` is an *unsafe* feature.

+

+The ``.`` (access a tuple/object field operator)

+and ``[]`` (array/string/sequence index operator) operators perform implicit

+dereferencing operations for reference types:

+

+.. code-block:: nimrod

+

+  type

+    PNode = ref TNode

+    TNode = object

+      le, ri: PNode

+      data: int

+

+  var

+    n: PNode

+  new(n)

+  n.data = 9 # no need to write n^ .data

+

+To allocate a new traced object, the built-in procedure ``new`` has to be used.

+To deal with untraced memory, the procedures ``alloc``, ``dealloc`` and

+``realloc`` can be used. The documentation of the system module contains

+further information.

+

+If a reference points to *nothing*, it has the value ``nil``.

+

+Special care has to be taken if an untraced object contains traced objects like

+traced references, strings or sequences: in order to free everything properly,

+the built-in procedure ``GCunref`` has to be called before freeing the

+untraced memory manually!

+

+.. XXX finalizers for traced objects

+

+Procedural type

+~~~~~~~~~~~~~~~

+A `procedural type`:idx: is internally a pointer to a procedure. ``nil`` is

+an allowed value for variables of a procedural type. Nimrod uses procedural

+types to achieve `functional`:idx: programming techniques.

+

+Example:

+

+.. code-block:: nimrod

+

+  type

+    TCallback = proc (x: int) {.cdecl.}

+

+  proc printItem(x: Int) = ...

+

+  proc forEach(c: TCallback) =

+    ...

+

+  forEach(printItem)  # this will NOT work because calling conventions differ

+

+A subtle issue with procedural types is that the calling convention of the

+procedure influences the type compatibility: procedural types are only

+compatible if they have the same calling convention.

+

+Nimrod supports these `calling conventions`:idx:, which are all incompatible to

+each other:

+

+`stdcall`:idx:

+    This the stdcall convention as specified by Microsoft. The generated C

+    procedure is declared with the ``__stdcall`` keyword.

+

+`cdecl`:idx:

+    The cdecl convention means that a procedure shall use the same convention

+    as the C compiler. Under windows the generated C procedure is declared with

+    the ``__cdecl`` keyword.

+

+`safecall`:idx:

+    This is the safecall convention as specified by Microsoft. The generated C

+    procedure is declared with the ``__safecall`` keyword. The word *safe*

+    refers to the fact that all hardware registers shall be pushed to the

+    hardware stack.

+

+`inline`:idx:

+    The inline convention means the the caller should not call the procedure,

+    but inline its code directly. Note that Nimrod does not inline, but leaves

+    this to the C compiler. Thus it generates ``__inline`` procedures. This is

+    only a hint for the compiler: it may completely ignore it and

+    it may inline procedures that are not marked as ``inline``.

+

+`fastcall`:idx:

+    Fastcall means different things to different C compilers. One gets whatever

+    the C ``__fastcall`` means.

+

+`nimcall`:idx:

+    Nimcall is the default convention used for Nimrod procedures. It is the

+    same as ``fastcall``, but only for C compilers that support ``fastcall``.

+

+`closure`:idx:

+    indicates that the procedure expects a context, a closure that needs

+    to be passed to the procedure. The calling convention ``nimcall`` is

+    compatible to ``closure``.

+

+`syscall`:idx:

+    The syscall convention is the same as ``__syscall`` in C. It is used for

+    interrupts.

+

+`noconv`:idx:

+    The generated C code will not have any explicit calling convention and thus

+    use the C compiler's default calling convention. This is needed because

+    Nimrod's default calling convention for procedures is ``fastcall`` to

+    improve speed.

+

+Most calling conventions exist only for the Windows 32-bit platform.

+

+Assigning/passing a procedure to a procedural variable is only allowed if one

+of the following conditions hold:

+1) The procedure that is accessed resists in the current module.

+2) The procedure is marked with the ``procvar`` pragma (see `procvar pragma`_).

+3) The procedure has a calling convention that differs from ``nimcall``.

+4) The procedure is anonymous.

+

+The rules' purpose is to prevent the case that extending a non-``procvar`` 

+procedure with default parameters breaks client code.

+

+

+Distinct type

+~~~~~~~~~~~~~

+

+A distinct type is new type derived from a `base type`:idx: that is

+incompatible with its base type. In particular, it is an essential property

+of a distinct type that it **does not** imply a subtype relation between it

+and its base type. Explicit type conversions from a distinct type to its

+base type and vice versa are allowed.

+

+A distinct type can be used to model different physical `units`:idx: with a

+numerical base type, for example. The following example models currencies.

+

+Different currencies should not be mixed in monetary calculations. Distinct

+types are a perfect tool to model different currencies:

+

+.. code-block:: nimrod

+  type

+    TDollar = distinct int

+    TEuro = distinct int

+  

+  var

+    d: TDollar

+    e: TEuro

+

+  echo d + 12

+  # Error: cannot add a number with no unit and a ``TDollar``

+

+Unfortunately, ``d + 12.TDollar`` is not allowed either,

+because ``+`` is defined for ``int`` (among others), not for ``TDollar``. So

+a ``+`` for dollars needs to be defined:

+

+.. code-block::

+  proc `+` (x, y: TDollar): TDollar =

+    result = TDollar(int(x) + int(y))

+

+It does not make sense to multiply a dollar with a dollar, but with a

+number without unit; and the same holds for division:

+

+.. code-block::

+  proc `*` (x: TDollar, y: int): TDollar =

+    result = TDollar(int(x) * y)

+

+  proc `*` (x: int, y: TDollar): TDollar =

+    result = TDollar(x * int(y))

+    

+  proc `div` ...

+

+This quickly gets tedious. The implementations are trivial and the compiler

+should not generate all this code only to optimize it away later - after all

+``+`` for dollars should produce the same binary code as ``+`` for ints.

+The pragma ``borrow`` has been designed to solve this problem; in principle

+it generates the above trivial implementations:

+

+.. code-block:: nimrod

+  proc `*` (x: TDollar, y: int): TDollar {.borrow.}

+  proc `*` (x: int, y: TDollar): TDollar {.borrow.}

+  proc `div` (x: TDollar, y: int): TDollar {.borrow.}

+

+The ``borrow`` pragma makes the compiler use the same implementation as

+the proc that deals with the distinct type's base type, so no code is

+generated.

+

+But it seems all this boilerplate code needs to be repeated for the ``TEuro``

+currency. This can be solved with templates_.

+

+.. code-block:: nimrod

+  template Additive(typ: typeDesc): stmt =

+    proc `+` *(x, y: typ): typ {.borrow.}

+    proc `-` *(x, y: typ): typ {.borrow.}

+    

+    # unary operators:

+    proc `+` *(x: typ): typ {.borrow.}

+    proc `-` *(x: typ): typ {.borrow.}

+

+  template Multiplicative(typ, base: typeDesc): stmt =

+    proc `*` *(x: typ, y: base): typ {.borrow.}

+    proc `*` *(x: base, y: typ): typ {.borrow.}

+    proc `div` *(x: typ, y: base): typ {.borrow.}

+    proc `mod` *(x: typ, y: base): typ {.borrow.}

+

+  template Comparable(typ: typeDesc): stmt =

+    proc `<` * (x, y: typ): bool {.borrow.}

+    proc `<=` * (x, y: typ): bool {.borrow.}

+    proc `==` * (x, y: typ): bool {.borrow.}

+

+  template DefineCurrency(typ, base: expr): stmt =

+    type

+      typ* = distinct base

+    Additive(typ)

+    Multiplicative(typ, base)

+    Comparable(typ)

+    

+  DefineCurrency(TDollar, int)

+  DefineCurrency(TEuro, int)

+

+

+

+Type relations

+--------------

+

+The following section defines several relations on types that are needed to

+describe the type checking done by the compiler.

+

+

+Type equality

+~~~~~~~~~~~~~

+Nimrod uses structural type equivalence for most types. Only for objects,

+enumerations and distinct types name equivalence is used. The following

+algorithm (in pseudo-code) determines type equality:

+

+.. code-block:: nimrod

+  proc typeEqualsAux(a, b: PType,

+                     s: var set[PType * PType]): bool =

+    if (a,b) in s: return true

+    incl(s, (a,b))

+    if a.kind == b.kind:

+      case a.kind

+      of int, intXX, float, floatXX, char, string, cstring, pointer, bool, nil:

+        # leaf type: kinds identical; nothing more to check

+        result = true

+      of ref, ptr, var, set, seq, openarray:

+        result = typeEqualsAux(a.baseType, b.baseType, s)

+      of range:

+        result = typeEqualsAux(a.baseType, b.baseType, s) and

+          (a.rangeA == b.rangeA) and (a.rangeB == b.rangeB)

+      of array:

+        result = typeEqualsAux(a.baseType, b.baseType, s) and

+                 typeEqualsAux(a.indexType, b.indexType, s)

+      of tuple:

+        if a.tupleLen == b.tupleLen:

+          for i in 0..a.tupleLen-1:

+            if not typeEqualsAux(a[i], b[i], s): return false

+          result = true

+      of object, enum, distinct:

+        result = a == b

+      of proc:

+        result = typeEqualsAux(a.parameterTuple, b.parameterTuple, s) and

+                 typeEqualsAux(a.resultType, b.resultType, s) and

+                 a.callingConvention == b.callingConvention

+

+  proc typeEquals(a, b: PType): bool =

+    var s: set[PType * PType] = {}

+    result = typeEqualsAux(a, b, s)

+

+Since types are graphs which can have cycles, the above algorithm needs an

+auxiliary set ``s`` to detect this case.

+

+

+Subtype relation

+~~~~~~~~~~~~~~~~

+If object ``a`` inherits from ``b``, ``a`` is a subtype of ``b``. This subtype

+relation is extended to the types ``var``, ``ref``, ``ptr``:

+

+.. code-block:: nimrod

+  proc isSubtype(a, b: PType): bool =

+    if a.kind == b.kind:

+      case a.kind

+      of object:

+        var aa = a.baseType

+        while aa != nil and aa != b: aa = aa.baseType

+        result = aa == b

+      of var, ref, ptr:

+        result = isSubtype(a.baseType, b.baseType)

+

+.. XXX nil is a special value!

+

+

+Convertible relation

+~~~~~~~~~~~~~~~~~~~~

+A type ``a`` is **implicitly** convertible to type ``b`` iff the following

+algorithm returns true:

+

+.. code-block:: nimrod

+  # XXX range types?

+  proc isImplicitlyConvertible(a, b: PType): bool =

+    case a.kind

+    of proc:

+      if b.kind == proc:

+        var x = a.parameterTuple

+        var y = b.parameterTuple

+        if x.tupleLen == y.tupleLen:

+          for i in 0.. x.tupleLen-1:

+            if not isSubtype(x[i], y[i]): return false

+          result = isSubType(b.resultType, a.resultType)

+    of int8:    result = b.kind in {int16, int32, int64, int}

+    of int16:   result = b.kind in {int32, int64, int}

+    of int32:   result = b.kind in {int64, int}

+    of float:   result = b.kind in {float32, float64}

+    of float32: result = b.kind in {float64, float}

+    of float64: result = b.kind in {float32, float}

+    of seq:

+      result = b.kind == openArray and typeEquals(a.baseType, b.baseType)

+    of array:

+      result = b.kind == openArray and typeEquals(a.baseType, b.baseType)

+      if a.baseType == char and a.indexType.rangeA == 0:

+        result = b.kind = cstring

+    of cstring, ptr:

+      result = b.kind == pointer

+    of string:

+      result = b.kind == cstring

+

+A type ``a`` is **explicitly** convertible to type ``b`` iff the following

+algorithm returns true:

+ 

+.. code-block:: nimrod

+  proc isIntegralType(t: PType): bool =

+    result = isOrdinal(t) or t.kind in {float, float32, float64}

+

+  proc isExplicitlyConvertible(a, b: PType): bool =

+    if isImplicitlyConvertible(a, b): return true

+    if isIntegralType(a) and isIntegralType(b): return true

+    if isSubtype(a, b) or isSubtype(b, a): return true

+    if a.kind == distinct and typeEquals(a.baseType, b): return true

+    if b.kind == distinct and typeEquals(b.baseType, a): return true

+    return false

+    

+

+Assignment compatibility

+~~~~~~~~~~~~~~~~~~~~~~~~

+

+An expression ``b`` can be assigned to an expression ``a`` iff ``a`` is an

+`l-value` and ``isImplicitlyConvertible(b.typ, a.typ)`` holds.

+

+

+Overloading resolution

+~~~~~~~~~~~~~~~~~~~~~~

+

+To be written.

+

+

+Statements and expressions

+--------------------------

+Nimrod uses the common statement/expression paradigm: `Statements`:idx: do not

+produce a value in contrast to expressions. Call expressions are statements.

+If the called procedure returns a value, it is not a valid statement

+as statements do not produce values. To evaluate an expression for

+side-effects and throw its value away, one can use the ``discard`` statement.

+

+Statements are separated into `simple statements`:idx: and

+`complex statements`:idx:.

+Simple statements are statements that cannot contain other statements like

+assignments, calls or the ``return`` statement; complex statements can

+contain other statements. To avoid the `dangling else problem`:idx:, complex

+statements always have to be intended::

+

+  simpleStmt ::= returnStmt

+             | yieldStmt

+             | discardStmt

+             | raiseStmt

+             | breakStmt

+             | continueStmt

+             | pragma

+             | importStmt

+             | fromStmt

+             | includeStmt

+             | exprStmt

+  complexStmt ::= ifStmt | whileStmt | caseStmt | tryStmt | forStmt

+                   | blockStmt | asmStmt

+                   | procDecl | iteratorDecl | macroDecl | templateDecl

+                   | constSection | typeSection | whenStmt | varSection

+

+

+

+Discard statement

+~~~~~~~~~~~~~~~~~

+

+Syntax::

+

+  discardStmt ::= 'discard' expr

+

+Example:

+

+.. code-block:: nimrod

+

+  discard proc_call("arg1", "arg2") # discard the return value of `proc_call`

+

+The `discard`:idx: statement evaluates its expression for side-effects and

+throws the expression's resulting value away. If the expression has no

+side-effects, this generates a static error. Ignoring the return value of a

+procedure without using a discard statement is a static error too.

+

+

+Var statement

+~~~~~~~~~~~~~

+

+Syntax::

+

+  colonOrEquals ::= ':' typeDesc ['=' expr] | '=' expr

+  varField ::= symbol ['*'] [pragma]

+  varPart ::= symbol (comma symbol)* [comma] colonOrEquals [COMMENT | IND COMMENT]

+  varSection ::= 'var' (varPart

+                     | indPush (COMMENT|varPart)

+                       (SAD (COMMENT|varPart))* DED indPop)

+

+

+`Var`:idx: statements declare new local and global variables and

+initialize them. A comma separated list of variables can be used to specify

+variables of the same type:

+

+.. code-block:: nimrod

+

+  var

+    a: int = 0

+    x, y, z: int

+

+If an initializer is given the type can be omitted: the variable is then of the

+same type as the initializing expression. Variables are always initialized

+with a default value if there is no initializing expression. The default

+value depends on the type and is always a zero in binary.

+

+============================    ==============================================

+Type                            default value

+============================    ==============================================

+any integer type                0

+any float                       0.0

+char                            '\\0'

+bool                            false

+ref or pointer type             nil

+procedural type                 nil

+sequence                        nil (*not* ``@[]``)

+string                          nil (*not* "")

+tuple[x: A, y: B, ...]          (default(A), default(B), ...)

+                                (analogous for objects)

+array[0..., T]                  [default(T), ...]

+range[T]                        default(T); this may be out of the valid range

+T = enum                        cast[T](0); this may be an invalid value

+============================    ==============================================

+

+

+Const section

+~~~~~~~~~~~~~

+

+Syntax::

+

+  colonAndEquals ::= [':' typeDesc] '=' expr

+

+  constDecl ::= symbol ['*'] [pragma] colonAndEquals [COMMENT | IND COMMENT]

+              | COMMENT

+  constSection ::= 'const' indPush constDecl (SAD constDecl)* DED indPop

+

+

+Example:

+

+.. code-block:: nimrod

+

+  const

+    MyFilename = "/home/my/file.txt"

+    debugMode: bool = false

+

+The `const`:idx: section declares symbolic constants. A symbolic constant is

+a name for a constant expression. Symbolic constants only allow read-access.

+

+

+If statement

+~~~~~~~~~~~~

+

+Syntax::

+

+  ifStmt ::= 'if' expr ':' stmt ('elif' expr ':' stmt)* ['else' ':' stmt]

+

+Example:

+

+.. code-block:: nimrod

+

+  var name = readLine(stdin)

+

+  if name == "Andreas":

+    echo("What a nice name!")

+  elif name == "":

+    echo("Don't you have a name?")

+  else:

+    echo("Boring name...")

+

+The `if`:idx: statement is a simple way to make a branch in the control flow:

+The expression after the keyword ``if`` is evaluated, if it is true

+the corresponding statements after the ``:`` are executed. Otherwise

+the expression after the ``elif`` is evaluated (if there is an

+``elif`` branch), if it is true the corresponding statements after

+the ``:`` are executed. This goes on until the last ``elif``. If all

+conditions fail, the ``else`` part is executed. If there is no ``else``

+part, execution continues with the statement after the ``if`` statement.

+

+

+Case statement

+~~~~~~~~~~~~~~

+

+Syntax::

+

+  caseStmt ::= 'case' expr [':'] ('of' sliceExprList ':' stmt)*

+                                 ('elif' expr ':' stmt)*

+                                 ['else' ':' stmt]

+

+Example:

+

+.. code-block:: nimrod

+

+  case readline(stdin)

+  of "delete-everything", "restart-computer":

+    echo("permission denied")

+  of "go-for-a-walk":     echo("please yourself")

+  else:                   echo("unknown command")

+

+The `case`:idx: statement is similar to the if statement, but it represents

+a multi-branch selection. The expression after the keyword ``case`` is

+evaluated and if its value is in a *slicelist* the corresponding statements

+(after the ``of`` keyword) are executed. If the value is not in any

+given *slicelist* the ``else`` part is executed. If there is no ``else``

+part and not all possible values that ``expr`` can hold occur in a 

+``slicelist``, a static error occurs. This holds only for expressions of 

+ordinal types.

+If the expression is not of an ordinal type, and no ``else`` part is

+given, control passes after the ``case`` statement.

+

+To suppress the static error in the ordinal case an ``else`` part with a ``nil``

+statement can be used.

+

+

+When statement

+~~~~~~~~~~~~~~

+

+Syntax::

+

+  whenStmt ::= 'when' expr ':' stmt ('elif' expr ':' stmt)* ['else' ':' stmt]

+

+Example:

+

+.. code-block:: nimrod

+

+  when sizeof(int) == 2:

+    echo("running on a 16 bit system!")

+  elif sizeof(int) == 4:

+    echo("running on a 32 bit system!")

+  elif sizeof(int) == 8:

+    echo("running on a 64 bit system!")

+  else:

+    echo("cannot happen!")

+

+The `when`:idx: statement is almost identical to the ``if`` statement with some

+exceptions:

+

+* Each ``expr`` has to be a constant expression (of type ``bool``).

+* The statements do not open a new scope.

+* The statements that belong to the expression that evaluated to true are

+  translated by the compiler, the other statements are not checked for

+  semantics! However, each ``expr`` is checked for semantics.

+

+The ``when`` statement enables conditional compilation techniques. As

+a special syntactic extension, the ``when`` construct is also available

+within ``object`` definitions.

+

+

+Raise statement

+~~~~~~~~~~~~~~~

+

+Syntax::

+

+  raiseStmt ::= 'raise' [expr]

+

+Example:

+

+.. code-block:: nimrod

+  raise newEOS("operating system failed")

+

+Apart from built-in operations like array indexing, memory allocation, etc.

+the ``raise`` statement is the only way to raise an exception.

+

+.. XXX document this better!

+

+If no exception name is given, the current exception is `re-raised`:idx:. The

+`ENoExceptionToReraise`:idx: exception is raised if there is no exception to

+re-raise. It follows that the ``raise`` statement *always* raises an

+exception.

+

+

+Try statement

+~~~~~~~~~~~~~

+

+Syntax::

+

+  qualifiedIdent ::= symbol ['.' symbol]

+  exceptList ::= [qualifiedIdent (comma qualifiedIdent)* [comma]]

+  tryStmt ::= 'try' ':' stmt

+             ('except' exceptList ':' stmt)*

+             ['finally' ':' stmt]

+

+Example:

+

+.. code-block:: nimrod

+  # read the first two lines of a text file that should contain numbers

+  # and tries to add them

+  var

+    f: TFile

+  if open(f, "numbers.txt"):

+    try:

+      var a = readLine(f)

+      var b = readLine(f)

+      echo("sum: " & $(parseInt(a) + parseInt(b)))

+    except EOverflow:

+      echo("overflow!")

+    except EInvalidValue:

+      echo("could not convert string to integer")

+    except EIO:

+      echo("IO error!")

+    except:

+      echo("Unknown exception!")

+    finally:

+      close(f)

+

+The statements after the `try`:idx: are executed in sequential order unless

+an exception ``e`` is raised. If the exception type of ``e`` matches any

+of the list ``exceptlist`` the corresponding statements are executed.

+The statements following the ``except`` clauses are called

+`exception handlers`:idx:.

+

+The empty `except`:idx: clause is executed if there is an exception that is

+in no list. It is similar to an ``else`` clause in ``if`` statements.

+

+If there is a `finally`:idx: clause, it is always executed after the

+exception handlers.

+

+The exception is *consumed* in an exception handler. However, an

+exception handler may raise another exception. If the exception is not

+handled, it is propagated through the call stack. This means that often

+the rest of the procedure - that is not within a ``finally`` clause -

+is not executed (if an exception occurs).

+

+

+Return statement

+~~~~~~~~~~~~~~~~

+

+Syntax::

+

+  returnStmt ::= 'return' [expr]

+

+Example:

+

+.. code-block:: nimrod

+  return 40+2

+

+The `return`:idx: statement ends the execution of the current procedure.

+It is only allowed in procedures. If there is an ``expr``, this is syntactic

+sugar for:

+

+.. code-block:: nimrod

+  result = expr

+  return result

+

+``return`` without an expression is a short notation for ``return result`` if

+the proc has a return type. The `result`:idx: variable is always the return

+value of the procedure. It is automatically declared by the compiler. As all

+variables, ``result`` is initialized to (binary) zero:

+

+.. code-block:: nimrod

+  proc returnZero(): int =

+    # implicitly returns 0

+

+

+Yield statement

+~~~~~~~~~~~~~~~

+

+Syntax::

+

+  yieldStmt ::= 'yield' expr

+

+Example:

+

+.. code-block:: nimrod

+  yield (1, 2, 3)

+

+The `yield`:idx: statement is used instead of the ``return`` statement in

+iterators. It is only valid in iterators. Execution is returned to the body

+of the for loop that called the iterator. Yield does not end the iteration

+process, but execution is passed back to the iterator if the next iteration

+starts. See the section about iterators (`Iterators and the for statement`_)

+for further information.

+

+

+Block statement

+~~~~~~~~~~~~~~~

+

+Syntax::

+

+  blockStmt ::= 'block' [symbol] ':' stmt

+

+Example:

+

+.. code-block:: nimrod

+  var found = false

+  block myblock:

+    for i in 0..3:

+      for j in 0..3:

+        if a[j][i] == 7:

+          found = true

+          break myblock # leave the block, in this case both for-loops

+  echo(found)

+

+The block statement is a means to group statements to a (named) `block`:idx:.

+Inside the block, the ``break`` statement is allowed to leave the block

+immediately. A ``break`` statement can contain a name of a surrounding

+block to specify which block is to leave.

+

+

+Break statement

+~~~~~~~~~~~~~~~

+

+Syntax::

+

+  breakStmt ::= 'break' [symbol]

+

+Example:

+

+.. code-block:: nimrod

+  break

+

+The `break`:idx: statement is used to leave a block immediately. If ``symbol``

+is given, it is the name of the enclosing block that is to leave. If it is

+absent, the innermost block is left.

+

+

+While statement

+~~~~~~~~~~~~~~~

+

+Syntax::

+

+  whileStmt ::= 'while' expr ':' stmt

+

+Example:

+

+.. code-block:: nimrod

+  echo("Please tell me your password: \n")

+  var pw = readLine(stdin)

+  while pw != "12345":

+    echo("Wrong password! Next try: \n")

+    pw = readLine(stdin)

+

+

+The `while`:idx: statement is executed until the ``expr`` evaluates to false.

+Endless loops are no error. ``while`` statements open an `implicit block`,

+so that they can be left with a ``break`` statement.

+

+

+Continue statement

+~~~~~~~~~~~~~~~~~~

+

+Syntax::

+

+  continueStmt ::= 'continue'

+

+A `continue`:idx: statement leads to the immediate next iteration of the

+surrounding loop construct. It is only allowed within a loop. A continue

+statement is syntactic sugar for a nested block:

+

+.. code-block:: nimrod

+  while expr1:

+    stmt1

+    continue

+    stmt2

+

+Is equivalent to:

+

+.. code-block:: nimrod

+  while expr1:

+    block myBlockName:

+      stmt1

+      break myBlockName

+      stmt2

+

+

+Assembler statement

+~~~~~~~~~~~~~~~~~~~

+Syntax::

+

+  asmStmt ::= 'asm' [pragma] (STR_LIT | RSTR_LIT | TRIPLESTR_LIT)

+

+The direct embedding of `assembler`:idx: code into Nimrod code is supported

+by the unsafe ``asm`` statement. Identifiers in the assembler code that refer to

+Nimrod identifiers shall be enclosed in a special character which can be

+specified in the statement's pragmas. The default special character is ``'`'``.

+

+

+If expression

+~~~~~~~~~~~~~

+

+An `if expression` is almost like an if statement, but it is an expression.

+Example:

+

+.. code-block:: nimrod

+  p(if x > 8: 9 else: 10)

+

+An if expression always results in a value, so the ``else`` part is

+required. ``Elif`` parts are also allowed (but unlikely to be good

+style).

+

+

+Type conversions

+~~~~~~~~~~~~~~~~

+Syntactically a `type conversion` is like a procedure call, but a

+type name replaces the procedure name. A type conversion is always

+safe in the sense that a failure to convert a type to another

+results in an exception (if it cannot be determined statically).

+

+

+Type casts

+~~~~~~~~~~

+Example:

+

+.. code-block:: nimrod

+  cast[int](x)

+

+Type casts are a crude mechanism to interpret the bit pattern of

+an expression as if it would be of another type. Type casts are

+only needed for low-level programming and are inherently unsafe.

+

+

+The addr operator

+~~~~~~~~~~~~~~~~~

+The `addr` operator returns the address of an l-value. If the

+type of the location is ``T``, the `addr` operator result is

+of the type ``ptr T``. Taking the address of an object that resides

+on the stack is **unsafe**, as the pointer may live longer than the

+object on the stack and can thus reference a non-existing object.

+

+

+Procedures

+~~~~~~~~~~

+What most programming languages call `methods`:idx: or `functions`:idx: are

+called `procedures`:idx: in Nimrod (which is the correct terminology). A

+procedure declaration defines an identifier and associates it with a block

+of code. 

+A procedure may call itself recursively. A parameter may be given a default

+value that is used if the caller does not provide a value for this parameter.

+The syntax is::

+

+  param ::= symbol (comma symbol)* (':' typeDesc ['=' expr] | '=' expr)

+  paramList ::= ['(' [param (comma param)*] [SAD] ')'] [':' typeDesc]

+

+  genericParam ::= symbol [':' typeDesc] ['=' expr]

+  genericParams ::= '[' genericParam (comma genericParam)* [SAD] ']'

+

+  procDecl ::= 'proc' symbol ['*'] [genericParams] paramList [pragma]

+               ['=' stmt]

+

+If the ``= stmt`` part is missing, it is a `forward`:idx: declaration. If

+the proc returns a value, the procedure body can access an implicitly declared

+variable named `result`:idx: that represents the return value. Procs can be

+overloaded. The overloading resolution algorithm tries to find the proc that is

+the best match for the arguments. Example:

+

+.. code-block:: nimrod

+

+  proc toLower(c: Char): Char = # toLower for characters

+    if c in {'A'..'Z'}:

+      result = chr(ord(c) + (ord('a') - ord('A')))

+    else:

+      result = c

+

+  proc toLower(s: string): string = # toLower for strings

+    result = newString(len(s))

+    for i in 0..len(s) - 1:

+      result[i] = toLower(s[i]) # calls toLower for characters; no recursion!

+

+Calling a procedure can be done in many different ways:

+

+.. code-block:: nimrod

+  proc callme(x, y: int, s: string = "", c: char, b: bool = false) = ...

+

+  # call with positional arguments # parameter bindings:

+  callme(0, 1, "abc", '\t', true)  # (x=0, y=1, s="abc", c='\t', b=true)

+  # call with named and positional arguments:

+  callme(y=1, x=0, "abd", '\t')    # (x=0, y=1, s="abd", c='\t', b=false)

+  # call with named arguments (order is not relevant):

+  callme(c='\t', y=1, x=0)         # (x=0, y=1, s="", c='\t', b=false)

+  # call as a command statement: no () needed:

+  callme 0, 1, "abc", '\t'

+

+

+A procedure cannot modify its parameters (unless the parameters have the type

+`var`).

+

+`Operators`:idx: are procedures with a special operator symbol as identifier:

+

+.. code-block:: nimrod

+  proc `$` (x: int): string =

+    # converts an integer to a string; this is a prefix operator.

+    return intToStr(x)

+

+Operators with one parameter are prefix operators, operators with two

+parameters are infix operators. (However, the parser distinguishes these from

+the operator's position within an expression.) There is no way to declare

+postfix operators: all postfix operators are built-in and handled by the

+grammar explicitly.

+

+Any operator can be called like an ordinary proc with the '`opr`'

+notation. (Thus an operator can have more than two parameters):

+

+.. code-block:: nimrod

+  proc `*+` (a, b, c: int): int =

+    # Multiply and add

+    return a * b + c

+

+  assert `*+`(3, 4, 6) == `*`(a, `+`(b, c))

+

+

+

+Var parameters

+~~~~~~~~~~~~~~

+The type of a parameter may be prefixed with the ``var`` keyword:

+

+.. code-block:: nimrod

+  proc divmod(a, b: int,

+              res, remainder: var int) =

+    res = a div b

+    remainder = a mod b

+

+  var

+    x, y: int

+

+  divmod(8, 5, x, y) # modifies x and y

+  assert x == 1

+  assert y == 3

+

+In the example, ``res`` and ``remainder`` are `var parameters`.

+Var parameters can be modified by the procedure and the changes are

+visible to the caller. The argument passed to a var parameter has to be

+an l-value. Var parameters are implemented as hidden pointers. The

+above example is equivalent to:

+

+.. code-block:: nimrod

+  proc divmod(a, b: int,

+              res, remainder: ptr int) =

+    res^ = a div b

+    remainder^ = a mod b

+

+  var

+    x, y: int

+  divmod(8, 5, addr(x), addr(y))

+  assert x == 1

+  assert y == 3

+

+In the examples, var parameters or pointers are used to provide two

+return values. This can be done in a cleaner way by returning a tuple:

+

+.. code-block:: nimrod

+  proc divmod(a, b: int): tuple[res, remainder: int] =

+    return (a div b, a mod b)

+

+  var t = divmod(8, 5)

+  assert t.res == 1

+  assert t.remainder = 3

+

+One can use `tuple unpacking`:idx: to access the tuple's fields:

+

+.. code-block:: nimrod

+  var (x, y) = divmod(8, 5) # tuple unpacking

+  assert x == 1

+  assert y == 3

+

+

+Overloading of the subscript operator

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+

+The ``[]`` subscript operator for arrays/openarrays/sequences can be overloaded.

+Overloading support is only possible if the first parameter has no type that

+already supports the built-in ``[]`` notation. Currently the compiler currently

+does not check this. XXX Multiple indexes

+

+

+Multi-methods

+~~~~~~~~~~~~~

+

+Procedures always use static dispatch. `Multi-methods`:idx: use dynamic

+dispatch.

+

+.. code-block:: nimrod

+  type

+    TExpr = object ## abstract base class for an expression

+    TLiteral = object of TExpr

+      x: int

+    TPlusExpr = object of TExpr

+      a, b: ref TExpr

+      

+  method eval(e: ref TExpr): int =

+    # override this base method

+    quit "to override!"

+  

+  method eval(e: ref TLiteral): int = return e.x

+

+  method eval(e: ref TPlusExpr): int =

+    # watch out: relies on dynamic binding

+    return eval(e.a) + eval(e.b)

+  

+  proc newLit(x: int): ref TLiteral =

+    new(result)

+    result.x = x

+    

+  proc newPlus(a, b: ref TExpr): ref TPlusExpr =

+    new(result)

+    result.a = a

+    result.b = b

+  

+  echo eval(newPlus(newPlus(newLit(1), newLit(2)), newLit(4)))

+  

+In the example the constructors ``newLit`` and ``newPlus`` are procs

+because they should use static binding, but ``eval`` is a method because it

+requires dynamic binding.

+

+In a multi-method all parameters that have an object type are used for the

+dispatching:

+

+.. code-block:: nimrod

+  type

+    TThing = object

+    TUnit = object of TThing

+      x: int

+      

+  method collide(a, b: TThing) {.inline.} =

+    quit "to override!"

+    

+  method collide(a: TThing, b: TUnit) {.inline.} =

+    echo "1"

+  

+  method collide(a: TUnit, b: TThing) {.inline.} =

+    echo "2"

+  

+  var

+    a, b: TUnit

+  collide(a, b) # output: 2

+

+

+Invocation of a multi-method cannot be ambiguous: collide 2 is preferred over 

+collide 1 because the resolution works from left to right. 

+In the example ``TUnit, TThing`` is prefered over ``TThing, TUnit``.

+

+**Performance note**: Nimrod does not produce a virtual method table, but

+generates dispatch trees. This avoids the expensive indirect branch for method

+calls and enables inlining. However, other optimizations like compile time

+evaluation or dead code elimination do not work with methods.

+

+

+Iterators and the for statement

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+

+Syntax::

+

+  forStmt ::= 'for' symbol (comma symbol)* [comma] 'in' expr ['..' expr] ':' stmt

+

+  param ::= symbol (comma symbol)* [comma] ':' typeDesc

+  paramList ::= ['(' [param (comma param)* [comma]] ')'] [':' typeDesc]

+

+  genericParam ::= symbol [':' typeDesc]

+  genericParams ::= '[' genericParam (comma genericParam)* [comma] ']'

+

+  iteratorDecl ::= 'iterator' symbol ['*'] [genericParams] paramList [pragma]

+               ['=' stmt]

+

+The `for`:idx: statement is an abstract mechanism to iterate over the elements

+of a container. It relies on an `iterator`:idx: to do so. Like ``while``

+statements, ``for`` statements open an `implicit block`:idx:, so that they

+can be left with a ``break`` statement. The ``for`` loop declares

+iteration variables (``x`` in the example) - their scope reaches until the

+end of the loop body. The iteration variables' types are inferred by the

+return type of the iterator.

+

+An iterator is similar to a procedure, except that it is always called in the

+context of a ``for`` loop. Iterators provide a way to specify the iteration over

+an abstract type. A key role in the execution of a ``for`` loop plays the

+``yield`` statement in the called iterator. Whenever a ``yield`` statement is

+reached the data is bound to the ``for`` loop variables and control continues

+in the body of the ``for`` loop. The iterator's local variables and execution

+state are automatically saved between calls. Example:

+

+.. code-block:: nimrod

+  # this definition exists in the system module

+  iterator items*(a: string): char {.inline.} =

+    var i = 0

+    while i < len(a):

+      yield a[i]

+      inc(i)

+

+  for ch in items("hello world"): # `ch` is an iteration variable

+    echo(ch)

+

+The compiler generates code as if the programmer would have written this:

+

+.. code-block:: nimrod

+  var i = 0

+  while i < len(a):

+    var ch = a[i]

+    echo(ch)

+    inc(i)

+

+The current implementation always inlines the iterator code leading to zero

+overhead for the abstraction. But this may increase the code size. Later

+versions of the compiler will only inline iterators which have the calling

+convention ``inline``.

+

+If the iterator yields a tuple, there have to be as many iteration variables

+as there are components in the tuple. The i'th iteration variable's type is

+the one of the i'th component.

+

+

+Type sections

+~~~~~~~~~~~~~

+

+Syntax::

+

+  typeDef ::= typeDesc | objectDef | enumDef

+

+  genericParam ::= symbol [':' typeDesc]

+  genericParams ::= '[' genericParam (comma genericParam)* [comma] ']'

+

+  typeDecl ::= COMMENT

+             | symbol ['*'] [genericParams] ['=' typeDef] [COMMENT|IND COMMENT]

+

+  typeSection ::= 'type' indPush typeDecl (SAD typeDecl)* DED indPop

+

+

+Example:

+

+.. code-block:: nimrod

+  type # example demonstrates mutually recursive types

+    PNode = ref TNode # a traced pointer to a TNode

+    TNode = object

+      le, ri: PNode   # left and right subtrees

+      sym: ref TSym   # leaves contain a reference to a TSym

+

+    TSym = object     # a symbol

+      name: string    # the symbol's name

+      line: int       # the line the symbol was declared in

+      code: PNode     # the symbol's abstract syntax tree

+

+A `type`:idx: section begins with the ``type`` keyword. It contains multiple

+type definitions. A type definition binds a type to a name. Type definitions

+can be recursive or even mutually recursive. Mutually recursive types are only

+possible within a single ``type`` section.

+

+

+Generics

+~~~~~~~~

+

+Example:

+

+.. code-block:: nimrod

+  type

+    TBinaryTree[T] = object      # TBinaryTree is a generic type with

+                                 # with generic param ``T``

+      le, ri: ref TBinaryTree[T] # left and right subtrees; may be nil

+      data: T                    # the data stored in a node

+    PBinaryTree[T] = ref TBinaryTree[T] # a shorthand for notational convenience

+

+  proc newNode[T](data: T): PBinaryTree[T] = # constructor for a node

+    new(result)

+    result.dat = data

+

+  proc add[T](root: var PBinaryTree[T], n: PBinaryTree[T]) =

+    if root == nil:

+      root = n

+    else:

+      var it = root

+      while it != nil:

+        var c = cmp(it.data, n.data) # compare the data items; uses

+                                     # the generic ``cmd`` proc that works for

+                                     # any type that has a ``==`` and ``<``

+                                     # operator

+        if c < 0:

+          if it.le == nil:

+            it.le = n

+            return

+          it = it.le

+        else:

+          if it.ri == nil:

+            it.ri = n

+            return

+          it = it.ri

+

+  iterator inorder[T](root: PBinaryTree[T]): T =

+    # inorder traversal of a binary tree

+    # recursive iterators are not yet implemented, so this does not work in

+    # the current compiler!

+    if root.le != nil: yield inorder(root.le)

+    yield root.data

+    if root.ri != nil: yield inorder(root.ri)

+

+  var

+    root: PBinaryTree[string] # instantiate a PBinaryTree with the type string

+  add(root, newNode("hallo")) # instantiates generic procs ``newNode`` and

+  add(root, newNode("world")) # ``add``

+  for str in inorder(root):

+    writeln(stdout, str)

+

+`Generics`:idx: are Nimrod's means to parametrize procs, iterators or types with

+`type parameters`:idx:. Depending on context, the brackets are used either to

+introduce type parameters or to instantiate a generic proc, iterator or type.

+

+

+Templates

+~~~~~~~~~

+

+A `template`:idx: is a simple form of a macro: It is a simple substitution

+mechanism that operates on Nimrod's abstract syntax trees. It is processed in

+the semantic pass of the compiler.

+

+The syntax to *invoke* a template is the same as calling a procedure.

+

+Example:

+

+.. code-block:: nimrod

+  template `!=` (a, b: expr): expr =

+    # this definition exists in the System module

+    not (a == b)

+

+  assert(5 != 6) # the compiler rewrites that to: assert(not (5 == 6))

+

+The ``!=``, ``>``, ``>=``, ``in``, ``notin``, ``isnot`` operators are in fact 

+templates:

+

+| ``a > b`` is transformed into ``b < a``.

+| ``a in b`` is transformed into ``contains(b, a)``. 

+| ``notin`` and ``isnot`` have the obvious meanings.

+

+The "types" of templates can be the symbols ``expr`` (stands for *expression*), 

+``stmt`` (stands for *statement*) or ``typedesc`` (stands for *type 

+description*). These are no real types, they just help the compiler parsing.

+Real types can be used too; this implies that expressions are expected.

+However, for parameter type checking the arguments are semantically checked

+before being passed to the template. Other arguments are not semantically

+checked before being passed to the template.

+

+The template body does not open a new scope. To open a new scope a ``block``

+statement can be used:

+

+.. code-block:: nimrod

+  template declareInScope(x: expr, t: typeDesc): stmt = 

+    var x: t

+    

+  template declareInNewScope(x: expr, t: typeDesc): stmt = 

+    # open a new scope:

+    block: 

+      var x: t

+

+  declareInScope(a, int)

+  a = 42  # works, `a` is known here

+  

+  declareInNewScope(b, int)

+  b = 42  # does not work, `b` is unknown

+

+

+If there is a ``stmt`` parameter it should be the last in the template

+declaration, because statements are passed to a template via a

+special ``:`` syntax:

+

+.. code-block:: nimrod

+

+  template withFile(f, fn, mode: expr, actions: stmt): stmt =

+    block:

+      var f: TFile

+      if open(f, fn, mode):

+        try:

+          actions

+        finally:

+          close(f)

+      else:

+        quit("cannot open: " & fn)

+      

+  withFile(txt, "ttempl3.txt", fmWrite):

+    txt.writeln("line 1")

+    txt.writeln("line 2")

+  

+In the example the two ``writeln`` statements are bound to the ``actions``

+parameter. 

+

+**Note:** Symbol binding rules in templates might change!

+

+Symbol binding within templates happens after template instantation: 

+

+.. code-block:: nimrod

+  # Module A

+  var 

+    lastId = 0

+  

+  template genId*: expr =

+    inc(lastId)

+    lastId

+

+.. code-block:: nimrod

+  # Module B

+  import A

+  

+  echo genId() # Error: undeclared identifier: 'lastId'

+

+Exporting a template is a often a leaky abstraction. However, to compensate for

+this case, the ``bind`` operator can be used: All identifiers within a ``bind``

+context are bound early (i.e. when the template is parsed).

+The affected identifiers are then always bound early even if the other

+occurences are in no ``bind`` context: 

+

+.. code-block:: nimrod

+  # Module A

+  var 

+    lastId = 0

+  

+  template genId*: expr =

+    inc(bind lastId)

+    lastId

+

+.. code-block:: nimrod

+  # Module B

+  import A

+  

+  echo genId() # Works

+

+

+**Style note**: For code readability, it is the best idea to use the least

+powerful programming construct that still suffices. So the "check list" is:

+

+(1) Use an ordinary proc/iterator, if possible.

+(2) Else: Use a generic proc/iterator, if possible.

+(3) Else: Use a template, if possible.

+(4) Else: Use a macro.

+

+

+Macros

+------

+

+`Macros`:idx: are the most powerful feature of Nimrod. They can be used

+to implement `domain specific languages`:idx:.

+

+While macros enable advanced compile-time code transformations, they

+cannot change Nimrod's syntax. However, this is no real restriction because

+Nimrod's syntax is flexible enough anyway.

+

+To write macros, one needs to know how the Nimrod concrete syntax is converted

+to an abstract syntax tree.

+

+There are two ways to invoke a macro:

+(1) invoking a macro like a procedure call (`expression macros`)

+(2) invoking a macro with the special ``macrostmt`` syntax (`statement macros`)

+

+

+Expression Macros

+~~~~~~~~~~~~~~~~~

+

+The following example implements a powerful ``debug`` command that accepts a

+variable number of arguments:

+

+.. code-block:: nimrod

+  # to work with Nimrod syntax trees, we need an API that is defined in the

+  # ``macros`` module:

+  import macros

+

+  macro debug(n: expr): stmt =

+    # `n` is a Nimrod AST that contains the whole macro invocation

+    # this macro returns a list of statements:

+    result = newNimNode(nnkStmtList, n)

+    # iterate over any argument that is passed to this macro:

+    for i in 1..n.len-1:

+      # add a call to the statement list that writes the expression;

+      # `toStrLit` converts an AST to its string representation:

+      add(result, newCall("write", newIdentNode("stdout"), toStrLit(n[i])))

+      # add a call to the statement list that writes ": "

+      add(result, newCall("write", newIdentNode("stdout"), newStrLitNode(": ")))

+      # add a call to the statement list that writes the expressions value:

+      add(result, newCall("writeln", newIdentNode("stdout"), n[i]))

+

+  var

+    a: array [0..10, int]

+    x = "some string"

+  a[0] = 42

+  a[1] = 45

+

+  debug(a[0], a[1], x)

+

+The macro call expands to:

+

+.. code-block:: nimrod

+  write(stdout, "a[0]")

+  write(stdout, ": ")

+  writeln(stdout, a[0])

+

+  write(stdout, "a[1]")

+  write(stdout, ": ")

+  writeln(stdout, a[1])

+

+  write(stdout, "x")

+  write(stdout, ": ")

+  writeln(stdout, x)

+

+

+Statement Macros

+~~~~~~~~~~~~~~~~

+

+Statement macros are defined just as expression macros. However, they are

+invoked by an expression following a colon::

+

+  exprStmt ::= lowestExpr ['=' expr | [expr (comma expr)* [comma]] [macroStmt]]

+  macroStmt ::= ':' [stmt] ('of' [sliceExprList] ':' stmt

+                          | 'elif' expr ':' stmt

+                          | 'except' exceptList ':' stmt )*

+                           ['else' ':' stmt]

+

+The following example outlines a macro that generates a lexical analyzer from

+regular expressions:

+

+.. code-block:: nimrod

+  import macros

+

+  macro case_token(n: stmt): stmt =

+    # creates a lexical analyzer from regular expressions

+    # ... (implementation is an exercise for the reader :-)

+    nil

+

+  case_token: # this colon tells the parser it is a macro statement

+  of r"[A-Za-z_]+[A-Za-z_0-9]*":

+    return tkIdentifier

+  of r"0-9+":

+    return tkInteger

+  of r"[\+\-\*\?]+":

+    return tkOperator

+  else:

+    return tkUnknown

+

+

+

+Modules

+-------

+Nimrod supports splitting a program into pieces by a `module`:idx: concept.

+Each module needs to be in its own file and has its own `namespace`:idx:.

+Modules enable `information hiding`:idx: and `separate compilation`:idx:.

+A module may gain access to symbols of another module by the `import`:idx:

+statement. `Recursive module dependencies`:idx: are allowed, but slightly

+subtle. Only top-level symbols that are marked with an asterisk (``*``) are

+exported.

+

+The algorithm for compiling modules is:

+

+- compile the whole module as usual, following import statements recursively

+- if there is a cycle only import the already parsed symbols (that are

+  exported); if an unknown identifier occurs then abort

+

+This is best illustrated by an example:

+

+.. code-block:: nimrod

+  # Module A

+  type

+    T1* = int  # Module A exports the type ``T1``

+  import B     # the compiler starts parsing B

+

+  proc main() =

+    var i = p(3) # works because B has been parsed completely here

+

+  main()

+

+

+.. code-block:: nimrod

+  # Module B

+  import A  # A is not parsed here! Only the already known symbols

+            # of A are imported.

+

+  proc p*(x: A.T1): A.T1 =

+    # this works because the compiler has already

+    # added T1 to A's interface symbol table

+    return x + 1

+

+

+Scope rules

+-----------

+Identifiers are valid from the point of their declaration until the end of

+the block in which the declaration occurred. The range where the identifier

+is known is the `scope`:idx: of the identifier. The exact scope of an

+identifier depends on the way it was declared.

+

+Block scope

+~~~~~~~~~~~

+The *scope* of a variable declared in the declaration part of a block

+is valid from the point of declaration until the end of the block. If a

+block contains a second block, in which the identifier is redeclared,

+then inside this block, the second declaration will be valid. Upon

+leaving the inner block, the first declaration is valid again. An

+identifier cannot be redefined in the same block, except if valid for

+procedure or iterator overloading purposes.

+

+

+Tuple or object scope

+~~~~~~~~~~~~~~~~~~~~~

+The field identifiers inside a tuple or object definition are valid in the

+following places:

+

+* To the end of the tuple/object definition.

+* Field designators of a variable of the given tuple/object type.

+* In all descendant types of the object type.

+

+Module scope

+~~~~~~~~~~~~

+All identifiers of a module are valid from the point of declaration until

+the end of the module. Identifiers from indirectly dependent modules are *not* 

+available. The `system`:idx: module is automatically imported in every other 

+module.

+

+If a module imports an identifier by two different modules, each occurrence of

+the identifier has to be qualified, unless it is an overloaded procedure or

+iterator in which case the overloading resolution takes place:

+

+.. code-block:: nimrod

+  # Module A

+  var x*: string

+

+.. code-block:: nimrod

+  # Module B

+  var x*: int

+

+.. code-block:: nimrod

+  # Module C

+  import A, B

+  write(stdout, x) # error: x is ambiguous

+  write(stdout, A.x) # no error: qualifier used

+

+  var x = 4

+  write(stdout, x) # not ambiguous: uses the module C's x

+

+

+Messages

+========

+

+The Nimrod compiler emits different kinds of messages: `hint`:idx:,

+`warning`:idx:, and `error`:idx: messages. An *error* message is emitted if

+the compiler encounters any static error.

+

+

+Pragmas

+=======

+

+Syntax::

+

+  colonExpr ::= expr [':' expr]

+  colonExprList ::= [colonExpr (comma colonExpr)* [comma]]

+

+  pragma ::= '{.' optInd (colonExpr [comma])* [SAD] ('.}' | '}')

+

+Pragmas are Nimrod's method to give the compiler additional information /

+commands without introducing a massive number of new keywords. Pragmas are

+processed on the fly during semantic checking. Pragmas are enclosed in the

+special ``{.`` and ``.}`` curly brackets. Pragmas are also often used as a

+first implementation to play with a language feature before a nicer syntax

+to access the feature becomes available.

+

+

+noSideEffect pragma

+-------------------

+The `noSideEffect`:idx: pragma is used to mark a proc/iterator to have no side

+effects. This means that the proc/iterator only changes locations that are

+reachable from its parameters and the return value only depends on the

+arguments. If none of its parameters have the type ``var T``

+or ``ref T`` or ``ptr T`` this means no locations are modified. It is a static

+error to mark a proc/iterator to have no side effect if the compiler cannot

+verify this.

+

+**Future directions**: ``func`` may become a keyword and syntactic sugar for a

+proc with no side effects:

+

+.. code-block:: nimrod

+  func `+` (x, y: int): int

+

+

+procvar pragma

+--------------

+The `procvar`:idx: pragma is used to mark a proc that it can be passed to a

+procedural variable.

+

+

+compileTime pragma

+------------------

+The `compileTime`:idx: pragma is used to mark a proc to be used at compile

+time only. No code will be generated for it. Compile time procs are useful

+as helpers for macros.

+

+

+noReturn pragma

+---------------

+The `noreturn`:idx: pragma is used to mark a proc that it never returns. 

+

+

+Acyclic pragma

+--------------

+The `acyclic`:idx: pragma can be used for object types to mark them as acyclic

+even though they seem to be cyclic. This is an **optimization** for the garbage

+collector to not consider objects of this type as part of a cycle:

+

+.. code-block:: nimrod

+  type

+    PNode = ref TNode

+    TNode {.acyclic, final.} = object

+      left, right: PNode

+      data: string

+

+In the example a tree structure is declared with the ``TNode`` type. Note that

+the type definition is recursive and the GC has to assume that objects of

+this type may form a cyclic graph. The ``acyclic`` pragma passes the

+information that this cannot happen to the GC. If the programmer uses the

+``acyclic`` pragma for data types that are in reality cyclic, the GC may leak

+memory, but nothing worse happens.

+

+**Future directions**: The ``acyclic`` pragma may become a property of a

+``ref`` type:

+

+.. code-block:: nimrod

+  type

+    PNode = acyclic ref TNode

+    TNode = object

+      left, right: PNode

+      data: string

+

+

+Final pragma

+------------

+The `final`:idx: pragma can be used for an object type to specify that it

+cannot be inherited from.

+

+

+Pure pragma

+-----------

+The `pure`:idx: pragma serves two completely different purposes:

+1) To mark a procedure that Nimrod should not generate any exit statements like

+   ``return result;`` in the generated code. This is useful for procs that only

+   consist of an assembler statement.

+2) To mark an object type so that its type field should be omitted. This is

+   necessary for binary compatibility with other compiled languages.

+

+

+error pragma

+------------

+The `error`:idx: pragma is used to make the compiler output an error message

+with the given content. Compilation currently aborts after an error, but this

+may be changed in later versions.

+

+

+fatal pragma

+------------

+The `fatal`:idx: pragma is used to make the compiler output an error message

+with the given content. In contrast to the ``error`` pragma, compilation

+is guaranteed to be aborted by this pragma.

+

+warning pragma

+--------------

+The `warning`:idx: pragma is used to make the compiler output a warning message

+with the given content. Compilation continues after the warning.

+

+hint pragma

+-----------

+The `hint`:idx: pragma is used to make the compiler output a hint message with

+the given content. Compilation continues after the hint.

+

+

+compilation option pragmas

+--------------------------

+The listed pragmas here can be used to override the code generation options

+for a section of code.

+

+The implementation currently provides the following possible options (various

+others may be added later).

+

+===============  ===============  ============================================

+pragma           allowed values   description

+===============  ===============  ============================================

+checks           on|off           Turns the code generation for all runtime

+                                  checks on or off.

+boundChecks      on|off           Turns the code generation for array bound

+                                  checks on or off.

+overflowChecks   on|off           Turns the code generation for over- or

+                                  underflow checks on or off.

+nilChecks        on|off           Turns the code generation for nil pointer

+                                  checks on or off.

+assertions       on|off           Turns the code generation for assertions

+                                  on or off.

+warnings         on|off           Turns the warning messages of the compiler

+                                  on or off.

+hints            on|off           Turns the hint messages of the compiler

+                                  on or off.

+optimization     none|speed|size  Optimize the code for speed or size, or

+                                  disable optimization.

+callconv         cdecl|...        Specifies the default calling convention for

+                                  all procedures (and procedure types) that

+                                  follow.

+===============  ===============  ============================================

+

+Example:

+

+.. code-block:: nimrod

+  {.checks: off, optimization: speed.}

+  # compile without runtime checks and optimize for speed

+

+

+push and pop pragmas

+--------------------

+The `push/pop`:idx: pragmas are very similar to the option directive,

+but are used to override the settings temporarily. Example:

+

+.. code-block:: nimrod

+  {.push checks: off.}

+  # compile this section without runtime checks as it is

+  # speed critical

+  # ... some code ...

+  {.pop.} # restore old settings

+

+

+Register pragma

+---------------

+The `register`:idx: pragma is for variables only. It declares the variable as

+``register``, giving the compiler a hint that the variable should be placed

+in a hardware register for faster access. C compilers usually ignore this

+though and for good reasons: Often they do a better job without it anyway.

+

+In highly specific cases (a dispatch loop of an bytecode interpreter for

+example) it may provide benefits, though.

+

+

+DeadCodeElim pragma

+-------------------

+The `deadCodeElim`:idx: pragma only applies to whole modules: It tells the

+compiler to activate (or deactivate) dead code elimination for the module the

+pragma appers in.

+

+The ``--deadCodeElim:on`` command line switch has the same effect as marking

+every module with ``{.deadCodeElim:on}``. However, for some modules such as

+the GTK wrapper it makes sense to *always* turn on dead code elimination -

+no matter if it is globally active or not.

+

+Example:

+

+.. code-block:: nimrod

+  {.deadCodeElim: on.}

+

+

+Disabling certain messages

+--------------------------

+Nimrod generates some warnings and hints ("line too long") that may annoy the

+user. A mechanism for disabling certain messages is provided: Each hint

+and warning message contains a symbol in brackets. This is the message's

+identifier that can be used to enable or disable it:

+

+.. code-block:: Nimrod

+  {.warning[LineTooLong]: off.} # turn off warning about too long lines

+

+This is often better than disabling all warnings at once.

+

+

+Foreign function interface

+==========================

+

+Nimrod's `FFI`:idx: (foreign function interface) is extensive and only the

+parts that scale to other future backends (like the LLVM/EcmaScript backends)

+are documented here.

+

+

+Importc pragma

+--------------

+The `importc`:idx: pragma provides a means to import a proc or a variable

+from C. The optional argument is a string containing the C identifier. If

+the argument is missing, the C name is the Nimrod identifier *exactly as

+spelled*:

+

+.. code-block::

+  proc printf(formatstr: cstring) {.importc: "printf", varargs.}

+

+Note that this pragma is somewhat of a misnomer: Other backends will provide

+the same feature under the same name.

+

+

+Exportc pragma

+--------------

+The `exportc`:idx: pragma provides a means to export a type, a variable, or a

+procedure to C. The optional argument is a string containing the C identifier.

+If the argument is missing, the C name is the Nimrod

+identifier *exactly as spelled*:

+

+.. code-block:: Nimrod

+  proc callme(formatstr: cstring) {.exportc: "callMe", varargs.}

+

+Note that this pragma is somewhat of a misnomer: Other backends will provide

+the same feature under the same name.

+

+

+Varargs pragma

+--------------

+The `varargs`:idx: pragma can be applied to procedures only (and procedure 

+types). It tells Nimrod that the proc can take a variable number of parameters 

+after the last specified parameter. Nimrod string values will be converted to C

+strings automatically:

+

+.. code-block:: Nimrod

+  proc printf(formatstr: cstring) {.nodecl, varargs.}

+

+  printf("hallo %s", "world") # "world" will be passed as C string

+

+

+Dynlib pragma

+-------------

+With the `dynlib`:idx: pragma a procedure can be imported from

+a dynamic library (``.dll`` files for Windows, ``lib*.so`` files for UNIX). The

+non-optional argument has to be the name of the dynamic library:

+

+.. code-block:: Nimrod

+  proc gtk_image_new(): PGtkWidget {.cdecl, dynlib: "libgtk-x11-2.0.so", importc.}

+

+In general, importing a dynamic library does not require any special linker

+options or linking with import libraries. This also implies that no *devel*

+packages need to be installed.

+

+The ``dynlib`` import mechanism supports a versioning scheme: 

+

+.. code-block:: nimrod 

+  proc Tcl_Eval(interp: pTcl_Interp, script: cstring): int {.cdecl, 

+    importc, dynlib: "libtcl(|8.5|8.4|8.3).so.(1|0)".}

+

+At runtime the dynamic library is searched for (in this order)::

+  

+  libtcl.so.1

+  libtcl.so.0

+  libtcl8.5.so.1  

+  libtcl8.5.so.0

+  libtcl8.4.so.1

+  libtcl8.4.so.0

+  libtcl8.3.so.1

+  libtcl8.3.so.0

+

+The ``dynlib`` pragma supports not only constant strings as argument but also

+string expressions in general:

+

+.. code-block:: nimrod

+  import os

+

+  proc getDllName: string = 

+    result = "mylib.dll"

+    if ExistsFile(result): return

+    result = "mylib2.dll"

+    if ExistsFile(result): return

+    quit("could not load dynamic library")

+  

+  proc myImport(s: cstring) {.cdecl, importc, dynlib: getDllName().}

+

+**Note**: Patterns like ``libtcl(|8.5|8.4).so`` are only supported in constant

+strings, because they are precompiled.

diff --git a/doc/nimrodc.txt b/doc/nimrodc.txt
index 79ce06ad1..cdad6efa8 100755
--- a/doc/nimrodc.txt
+++ b/doc/nimrodc.txt
@@ -1,239 +1,239 @@
-===================================
-   Nimrod Compiler User Guide
-===================================
-
-:Author: Andreas Rumpf
-:Version: |nimrodversion|
-
-.. contents::
-
-  "Look at you, hacker. A pathetic creature of meat and bone, panting and
-  sweating as you run through my corridors. How can you challenge a perfect,
-  immortal machine?"
-
-
-Introduction
-============
-
-This document describes the usage of the *Nimrod compiler*
-on the different supported platforms. It is not a definition of the Nimrod
-programming language (therefore is the `manual <manual>`_).
-
-Nimrod is free software; it is licensed under the
-`GNU General Public License <gpl.html>`_.
-
-
-Compiler Usage
-==============
-
-Command line switches
----------------------
-Basis command line switches are:
-
-.. include:: ../data/basicopt.txt
-
-Advanced command line switches are:
-
-.. include:: ../data/advopt.txt
-
-
-Configuration file
-------------------
-The default configuration file is ``nimrod.cfg``. The ``nimrod`` executable
-looks for it in the following directories (in this order):
-
-1. ``/home/$user/.config/nimrod.cfg`` (UNIX) or ``%APPDATA%/nimrod.cfg`` (Windows)
-2. ``$nimrod/config/nimrod.cfg`` (UNIX, Windows)
-3. ``/etc/nimrod.cfg`` (UNIX)
-
-The search stops as soon as a configuration file has been found. The reading
-of ``nimrod.cfg`` can be suppressed by the ``--skipCfg`` command line option.
-
-**Note:** The *project file name* is the name of the ``.nim`` file that is 
-passed as a command line argument to the compiler. 
-
-Configuration settings can be overwritten in a project specific
-configuration file that is read automatically. This specific file has to
-be in the same directory as the project and be of the same name, except
-that its extension should be ``.cfg``.
-
-Command line settings have priority over configuration file settings.
-
-
-Generated C code directory
---------------------------
-The generated files that Nimrod produces all go into a subdirectory called
-``nimcache`` in your project directory. This makes it easy to delete all
-generated files.
-
-However, the generated C code is not platform independant. C code generated for
-Linux does not compile on Windows, for instance. The comment on top of the
-C file lists the OS, CPU and CC the file has been compiled for.
-
-
-Additional Features
-===================
-
-This section describes Nimrod's additional features that are not listed in the
-Nimrod manual. Some of the features here only make sense for the C code
-generator and are subject to change.
-
-
-NoDecl pragma
--------------
-The `noDecl`:idx: pragma can be applied to almost any symbol (variable, proc,
-type, etc.) and is sometimes useful for interoperability with C:
-It tells Nimrod that it should not generate a declaration for the symbol in
-the C code. For example:
-
-.. code-block:: Nimrod
-  var
-    EACCES {.importc, noDecl.}: cint # pretend EACCES was a variable, as
-                                     # Nimrod does not know its value
-
-However, the ``header`` pragma is often the better alternative.
-
-**Note**: This will not work for the LLVM backend.
-
-
-Header pragma
--------------
-The `header`:idx: pragma is very similar to the ``noDecl`` pragma: It can be
-applied to almost any symbol and specifies that it should not be declared 
-and instead the generated code should contain an ``#include``:
-
-.. code-block:: Nimrod
-  type
-    PFile {.importc: "FILE*", header: "<stdio.h>".} = distinct pointer
-      # import C's FILE* type; Nimrod will treat it as a new pointer type
-
-The ``header`` pragma always expects a string constant. The string contant
-contains the header file: As usual for C, a system header file is enclosed
-in angle brackets: ``<>``. If no angle brackets are given, Nimrod
-encloses the header file in ``""`` in the generated C code.
-
-**Note**: This will not work for the LLVM backend.
-
-
-LineDir option
---------------
-The `lineDir`:idx: option can be turned on or off. If turned on the 
-generated C code contains ``#line`` directives. This may be helpful for 
-debugging with GDB.
-
-
-StackTrace option
------------------
-If the `stackTrace`:idx: option is turned on, the generated C contains code to
-ensure that proper stack traces are given if the program crashes or an
-uncaught exception is raised.
-
-
-LineTrace option
-----------------
-The `lineTrace`:idx: option implies the ``stackTrace`` option. If turned on,
-the generated C contains code to ensure that proper stack traces with line
-number information are given if the program crashes or an uncaught exception
-is raised.
-
-Debugger option
----------------
-The `debugger`:idx: option enables or disables the *Embedded Nimrod Debugger*.
-See the documentation of endb_ for further information.
-
-
-Breakpoint pragma
------------------
-The *breakpoint* pragma was specially added for the sake of debugging with
-ENDB. See the documentation of `endb <endb.html>`_ for further information.
-
-
-Volatile pragma
----------------
-The `volatile`:idx: pragma is for variables only. It declares the variable as
-``volatile``, whatever that means in C/C++.
-
-**Note**: This pragma will not exist for the LLVM backend.
-
-
-Debugging with Nimrod
-=====================
-
-Nimrod comes with its own *Embedded Nimrod Debugger*. See
-the documentation of endb_ for further information.
-
-
-Optimizing for Nimrod
-=====================
-
-Nimrod has no separate optimizer, but the C code that is produced is very
-efficient. Most C compilers have excellent optimizers, so usually it is
-not needed to optimize one's code. Nimrod has been designed to encourage
-efficient code: The most readable code in Nimrod is often the most efficient
-too.
-
-However, sometimes one has to optimize. Do it in the following order:
-
-1. switch off the embedded debugger (it is **slow**!)
-2. turn on the optimizer and turn off runtime checks
-3. profile your code to find where the bottlenecks are
-4. try to find a better algorithm
-5. do low-level optimizations
-
-This section can only help you with the last item. 
-
-
-Optimizing string handling
---------------------------
-
-String assignments are sometimes expensive in Nimrod: They are required to
-copy the whole string. However, the compiler is often smart enough to not copy
-strings. Due to the argument passing semantics, strings are never copied when
-passed to subroutines. The compiler does not copy strings that are a result from
-a procedure call, because the callee returns a new string anyway.
-Thus it is efficient to do:
-
-.. code-block:: Nimrod
-  var s = procA() # assignment will not copy the string; procA allocates a new
-                  # string already
-
-However it is not efficient to do:
-
-.. code-block:: Nimrod
-  var s = varA    # assignment has to copy the whole string into a new buffer!
-
-..
-  String case statements are optimized too. A hashing scheme is used for them
-  if several different string constants are used. This is likely to be more
-  efficient than any hand-coded scheme.
-
-
-..
-  The ECMAScript code generator
-  =============================
-  
-  Note: As of version 0.7.0 the ECMAScript code generator is not maintained any
-  longer. Help if you are interested.
-  
-  Note: I use the term `ECMAScript`:idx: here instead of `JavaScript`:idx:,
-  since it is the proper term.
-  
-  The ECMAScript code generator is experimental!
-  
-  Nimrod targets ECMAScript 1.5 which is supported by any widely used browser.
-  Since ECMAScript does not have a portable means to include another module,
-  Nimrod just generates a long ``.js`` file.
-  
-  Features or modules that the ECMAScript platform does not support are not
-  available. This includes:
-  
-  * manual memory management (``alloc``, etc.)
-  * casting and other unsafe operations (``cast`` operator, ``zeroMem``, etc.)
-  * file management
-  * most modules of the Standard library
-  * proper 64 bit integer arithmetic
-  * proper unsigned integer arithmetic
-  
-  However, the modules `strutils`:idx:, `math`:idx:, and `times`:idx: are
-  available! To access the DOM, use the `dom`:idx: module that is only
-  available for the ECMAScript platform.
+===================================

+   Nimrod Compiler User Guide

+===================================

+

+:Author: Andreas Rumpf

+:Version: |nimrodversion|

+

+.. contents::

+

+  "Look at you, hacker. A pathetic creature of meat and bone, panting and

+  sweating as you run through my corridors. How can you challenge a perfect,

+  immortal machine?"

+

+

+Introduction

+============

+

+This document describes the usage of the *Nimrod compiler*

+on the different supported platforms. It is not a definition of the Nimrod

+programming language (therefore is the `manual <manual>`_).

+

+Nimrod is free software; it is licensed under the

+`GNU General Public License <gpl.html>`_.

+

+

+Compiler Usage

+==============

+

+Command line switches

+---------------------

+Basis command line switches are:

+

+.. include:: ../data/basicopt.txt

+

+Advanced command line switches are:

+

+.. include:: ../data/advopt.txt

+

+

+Configuration file

+------------------

+The default configuration file is ``nimrod.cfg``. The ``nimrod`` executable

+looks for it in the following directories (in this order):

+

+1. ``/home/$user/.config/nimrod.cfg`` (UNIX) or ``%APPDATA%/nimrod.cfg`` (Windows)

+2. ``$nimrod/config/nimrod.cfg`` (UNIX), ``%NIMROD%/config/nimrod.cfg`` (Windows)

+3. ``/etc/nimrod.cfg`` (UNIX)

+

+The search stops as soon as a configuration file has been found. The reading

+of ``nimrod.cfg`` can be suppressed by the ``--skipCfg`` command line option.

+

+**Note:** The *project file name* is the name of the ``.nim`` file that is 

+passed as a command line argument to the compiler. 

+

+Configuration settings can be overwritten individually in a project specific

+configuration file that is read automatically. This specific file has to

+be in the same directory as the project and be of the same name, except

+that its extension should be ``.cfg``.

+

+Command line settings have priority over configuration file settings.

+

+

+Generated C code directory

+--------------------------

+The generated files that Nimrod produces all go into a subdirectory called

+``nimcache`` in your project directory. This makes it easy to delete all

+generated files.

+

+However, the generated C code is not platform independant. C code generated for

+Linux does not compile on Windows, for instance. The comment on top of the

+C file lists the OS, CPU and CC the file has been compiled for.

+

+

+Additional Features

+===================

+

+This section describes Nimrod's additional features that are not listed in the

+Nimrod manual. Some of the features here only make sense for the C code

+generator and are subject to change.

+

+

+NoDecl pragma

+-------------

+The `noDecl`:idx: pragma can be applied to almost any symbol (variable, proc,

+type, etc.) and is sometimes useful for interoperability with C:

+It tells Nimrod that it should not generate a declaration for the symbol in

+the C code. For example:

+

+.. code-block:: Nimrod

+  var

+    EACCES {.importc, noDecl.}: cint # pretend EACCES was a variable, as

+                                     # Nimrod does not know its value

+

+However, the ``header`` pragma is often the better alternative.

+

+**Note**: This will not work for the LLVM backend.

+

+

+Header pragma

+-------------

+The `header`:idx: pragma is very similar to the ``noDecl`` pragma: It can be

+applied to almost any symbol and specifies that it should not be declared

+and instead the generated code should contain an ``#include``:

+

+.. code-block:: Nimrod

+  type

+    PFile {.importc: "FILE*", header: "<stdio.h>".} = distinct pointer

+      # import C's FILE* type; Nimrod will treat it as a new pointer type

+

+The ``header`` pragma always expects a string constant. The string contant

+contains the header file: As usual for C, a system header file is enclosed

+in angle brackets: ``<>``. If no angle brackets are given, Nimrod

+encloses the header file in ``""`` in the generated C code.

+

+**Note**: This will not work for the LLVM backend.

+

+

+LineDir option

+--------------

+The `lineDir`:idx: option can be turned on or off. If turned on the

+generated C code contains ``#line`` directives. This may be helpful for

+debugging with GDB.

+

+

+StackTrace option

+-----------------

+If the `stackTrace`:idx: option is turned on, the generated C contains code to

+ensure that proper stack traces are given if the program crashes or an

+uncaught exception is raised.

+

+

+LineTrace option

+----------------

+The `lineTrace`:idx: option implies the ``stackTrace`` option. If turned on,

+the generated C contains code to ensure that proper stack traces with line

+number information are given if the program crashes or an uncaught exception

+is raised.

+

+Debugger option

+---------------

+The `debugger`:idx: option enables or disables the *Embedded Nimrod Debugger*.

+See the documentation of endb_ for further information.

+

+

+Breakpoint pragma

+-----------------

+The *breakpoint* pragma was specially added for the sake of debugging with

+ENDB. See the documentation of `endb <endb.html>`_ for further information.

+

+

+Volatile pragma

+---------------

+The `volatile`:idx: pragma is for variables only. It declares the variable as

+``volatile``, whatever that means in C/C++.

+

+**Note**: This pragma will not exist for the LLVM backend.

+

+

+Debugging with Nimrod

+=====================

+

+Nimrod comes with its own *Embedded Nimrod Debugger*. See

+the documentation of endb_ for further information.

+

+

+Optimizing for Nimrod

+=====================

+

+Nimrod has no separate optimizer, but the C code that is produced is very

+efficient. Most C compilers have excellent optimizers, so usually it is

+not needed to optimize one's code. Nimrod has been designed to encourage

+efficient code: The most readable code in Nimrod is often the most efficient

+too.

+

+However, sometimes one has to optimize. Do it in the following order:

+

+1. switch off the embedded debugger (it is **slow**!)

+2. turn on the optimizer and turn off runtime checks

+3. profile your code to find where the bottlenecks are

+4. try to find a better algorithm

+5. do low-level optimizations

+

+This section can only help you with the last item.

+

+

+Optimizing string handling

+--------------------------

+

+String assignments are sometimes expensive in Nimrod: They are required to

+copy the whole string. However, the compiler is often smart enough to not copy

+strings. Due to the argument passing semantics, strings are never copied when

+passed to subroutines. The compiler does not copy strings that are a result from

+a procedure call, because the callee returns a new string anyway.

+Thus it is efficient to do:

+

+.. code-block:: Nimrod

+  var s = procA() # assignment will not copy the string; procA allocates a new

+                  # string already

+

+However it is not efficient to do:

+

+.. code-block:: Nimrod

+  var s = varA    # assignment has to copy the whole string into a new buffer!

+

+..

+  String case statements are optimized too. A hashing scheme is used for them

+  if several different string constants are used. This is likely to be more

+  efficient than any hand-coded scheme.

+

+

+..

+  The ECMAScript code generator

+  =============================

+

+  Note: As of version 0.7.0 the ECMAScript code generator is not maintained any

+  longer. Help if you are interested.

+

+  Note: I use the term `ECMAScript`:idx: here instead of `JavaScript`:idx:,

+  since it is the proper term.

+

+  The ECMAScript code generator is experimental!

+

+  Nimrod targets ECMAScript 1.5 which is supported by any widely used browser.

+  Since ECMAScript does not have a portable means to include another module,

+  Nimrod just generates a long ``.js`` file.

+

+  Features or modules that the ECMAScript platform does not support are not

+  available. This includes:

+

+  * manual memory management (``alloc``, etc.)

+  * casting and other unsafe operations (``cast`` operator, ``zeroMem``, etc.)

+  * file management

+  * most modules of the Standard library

+  * proper 64 bit integer arithmetic

+  * proper unsigned integer arithmetic

+

+  However, the modules `strutils`:idx:, `math`:idx:, and `times`:idx: are

+  available! To access the DOM, use the `dom`:idx: module that is only

+  available for the ECMAScript platform.

diff --git a/doc/rst.txt b/doc/rst.txt
index 79d0eb9c4..4199598d1 100755
--- a/doc/rst.txt
+++ b/doc/rst.txt
@@ -5,16 +5,16 @@
 :Author: Andreas Rumpf
 :Version: |nimrodversion|
 
-.. contents:: 
+.. contents::
 
 Introduction
 ============
 
-This document describes the subset of `Docutils`_' `reStructuredText`_ as it 
+This document describes the subset of `Docutils`_' `reStructuredText`_ as it
 has been implemented in the Nimrod compiler for generating documentation.
-Elements of |rst| that are not listed here have not been implemented. 
+Elements of |rst| that are not listed here have not been implemented.
 Unfortunately, the specification of |rst| is quite vague, so Nimrod is not as
-compatible to the original implementation as one would like.  
+compatible to the original implementation as one would like.
 
 Even though Nimrod's |rst| parser does not parse all constructs, it is pretty
 usable. The missing features can easily be circumvented. An indication of this
@@ -26,13 +26,13 @@ Docutils' parser.)
 Inline elements
 ===============
 
-Ordinary text may contain *inline elements*. 
+Ordinary text may contain *inline elements*.
 
 
 Bullet lists
 ============
 
-*Bullet lists* look like this:: 
+*Bullet lists* look like this::
 
   * Item 1
   * Item 2 that
@@ -60,8 +60,8 @@ Enumerated lists
 *Enumerated lists*
 
 
-Defintion lists
-===============
+Definition lists
+================
 
 Save this code to the file "greeting.nim". Now compile and run it:
 
@@ -77,14 +77,14 @@ appending them after the filename that is to be compiled and run:
 Tables
 ======
 
-Nimrod only implements simple tables of the form:: 
+Nimrod only implements simple tables of the form::
 
   ==================      ===============       ===================
   header 1                header 2              header n
   ==================      ===============       ===================
   Cell 1                  Cell 2                Cell 3
   Cell 4                  Cell 5; any           Cell 6
-                          cell that is 
+                          cell that is
                           not in column 1
                           may span over
                           multiple lines
@@ -97,7 +97,7 @@ header 1                header 2              header n
 ==================      ===============       ===================
 Cell 1                  Cell 2                Cell 3
 Cell 4                  Cell 5; any           Cell 6
-                        cell that is 
+                        cell that is
                         not in column 1
                         may span over
                         multiple lines
diff --git a/examples/hallo.nim b/examples/hallo.nim
index 20aa4695c..58b7f6281 100755
--- a/examples/hallo.nim
+++ b/examples/hallo.nim
@@ -1,3 +1,3 @@
-# Hallo world program
+# Hello world program
 
-echo "Hallo world!"
+echo "Hello world!"
diff --git a/examples/iupex1.nim b/examples/iupex1.nim
index 89e85e776..bf7ed2f1c 100755
--- a/examples/iupex1.nim
+++ b/examples/iupex1.nim
@@ -29,7 +29,7 @@ Iup.SetAttribute(box, "GAP", "10")
 
 var dlg = Iup.Dialog(box)
 Iup.SetAttribute(dlg, "TITLE", "IupTabs")
-Iup.SetAttribute(dlg, "SIZE", "200x80")
+Iup.SetAttribute(dlg, "SIZE", "200x100")
 
 discard ShowXY(dlg, IUP_CENTER, IUP_CENTER)
 discard MainLoop()
diff --git a/examples/wingui.nim b/examples/wingui.nim
index f4941bcc7..2c2c387bb 100755
--- a/examples/wingui.nim
+++ b/examples/wingui.nim
@@ -6,4 +6,4 @@ import
 #proc MessageBox(hWnd: int, lpText, lpCaption: CString, uType: uint): int
 #  {stdcall, import: "MessageBox", header: "<windows.h>"}
 
-discard MessageBox(0, "Hallo World!", "Nimrod GUI application", 0)
+discard MessageBox(0, "Hello World!", "Nimrod GUI Application", 0)
diff --git a/ide/main.nim b/ide/main.nim
index a7e9bb642..2ccf0262f 100755
--- a/ide/main.nim
+++ b/ide/main.nim
@@ -26,10 +26,10 @@ type
 proc on_about_menu_item_activate(menuItem: PGtkMenuItem,
                                  e: var TMyTextEditor) {.cdecl.} =
   gtk_show_about_dialog(e.window,
-    "comments", "A fast and leight-weight IDE for Nimrod",
-    "copyright", "Copyright \xc2\xa9 2008 Andreas Rumpf",
+    "comments", "A fast and lightweight IDE for Nimrod",
+    "copyright", "Copyright \xc2\xa9 2010 Andreas Rumpf",
     "version", "0.1",
-    "website", "http://nimrod.ethexor.com",
+    "website", "http://force7.de/nimrod/",
     "program-name", "Nimrod IDE",
     nil)
 
@@ -70,7 +70,7 @@ proc write_file(e: var TMyTextEditor, filename: string) =
     buffer: PGtkTextBuffer
     start, ende: TGtkTextIter
   # add Saving message to status bar and ensure GUI is current
-  gtk_statusbar_push(e.statusbar, e.statusbar_context_id, "Saving....")
+  gtk_statusbar_push(e.statusbar, e.statusbar_context_id, "Saving...")
   while gtk_events_pending(): gtk_main_iteration()
 
   # disable text view and get contents of buffer
diff --git a/ide/nimide.nim b/ide/nimide.nim
index 741f71afb..687098d1e 100755
--- a/ide/nimide.nim
+++ b/ide/nimide.nim
@@ -15,7 +15,7 @@ type
     hbox: PGtkHBox
     e: PEditor
   PTab = ptr TTab
-    
+
   TEditor = object of TObject
     window: PGtkWindow
     statusbar: PGtkStatusBar
@@ -26,20 +26,20 @@ type
     currTab: int
   PEditor = ptr TEditor
 
-proc onWindowDestroy(obj: PGtkObject, event: PGdkEvent, 
+proc onWindowDestroy(obj: PGtkObject, event: PGdkEvent,
                      data: pointer): gboolean {.cdecl.} =
   gtkMainQuit()
 
 proc onAboutMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
   gtkShowAboutDialog(e.window,
-    "comments", "A fast and leight-weight IDE for Nimrod",
-    "copyright", "Copyright \xc2\xa9 2009 Andreas Rumpf",
+    "comments", "A fast and lightweight IDE for Nimrod",
+    "copyright", "Copyright \xc2\xa9 2010 Andreas Rumpf",
     "version", "0.1",
-    "website", "http://nimrod.ethexor.com",
+    "website", "http://force7.de/nimrod/",
     "program-name", "Nimrod IDE",
     nil)
 
-proc getTabIndex(e: PEditor, tab: PTab): int = 
+proc getTabIndex(e: PEditor, tab: PTab): int =
   var i = 0
   while true:
     var w = gtkNotebookGetNthPage(e.notebook, i)
@@ -47,43 +47,43 @@ proc getTabIndex(e: PEditor, tab: PTab): int =
     var v = gtkNotebookGetTabLabel(e.notebook, w)
     if tab.hbox == v: return i
     inc(i)
-  
-proc getActiveTab(e: PEditor): PTab = 
+
+proc getActiveTab(e: PEditor): PTab =
   nil
-  
+
 type
   TAnswer = enum
     answerYes, answerNo, answerCancel
-  
-proc askWhetherToSave(e: PEditor): TAnswer = 
-  var dialog = gtkDialogNewWithButtons("Should the changes be saved?", 
+
+proc askWhetherToSave(e: PEditor): TAnswer =
+  var dialog = gtkDialogNewWithButtons("Should the changes be saved?",
     e.window, GTK_DIALOG_MODAL, GTK_STOCK_SAVE, 1, "gtk-discard", 2,
     GTK_STOCK_CANCEL, 3, nil)
   result = TAnswer(gtkDialogRun(dialog)+1)
   gtkWidgetDestroy(dialog)
 
-proc saveTab(tab: PTab) = 
-  if tab.untitled: 
+proc saveTab(tab: PTab) =
+  if tab.untitled:
     tab.filename = ChooseFileToSave(tab.e.window, getRoot(tab))
     tab.untitled = false
   XXX
-  
-proc OnCloseTab(button: PGtkButton, tab: PTab) {.cdecl.} = 
+
+proc OnCloseTab(button: PGtkButton, tab: PTab) {.cdecl.} =
   var idx = -1
-  for i in 0..high(tab.e.tabs): 
-    if tab.e.tabs[i] == tab: 
+  for i in 0..high(tab.e.tabs):
+    if tab.e.tabs[i] == tab:
       idx = i
       break
-  if idx >= 0: 
+  if idx >= 0:
     if gtkTextBufferGetModified(gtkTextViewGetBuffer(tab.textView)):
       case askWhetherToSave(tab.e)
       of answerCancel: return
       of answerYes: saveTab(tab)
       of answerNo: nil
-    
+
     gtkNotebookRemovePage(tab.e.notebook, idx)
     if idx < high(tab.e.tabs):
-      for i in idx..high(tab.e.tabs)-1:  
+      for i in idx..high(tab.e.tabs)-1:
         tab.e.tabs[i] = tab.e.tabs[i+1]
     else:
       dec currTab
@@ -92,7 +92,7 @@ proc OnCloseTab(button: PGtkButton, tab: PTab) {.cdecl.} =
   #var idx = getTabIndex(tab.e, tab)
   #if idx >= 0: gtk_notebook_remove_page(tab.e.notebook, idx)
 
-proc createTab(e: PEditor, filename: string, untitled: bool) = 
+proc createTab(e: PEditor, filename: string, untitled: bool) =
   var t = cast[PTab](alloc0(sizeof(TTab)))
   t.textview = gtkTextViewNewWithBuffer(gtkTextBufferNew(nil))
   var fontDesc = pangoFontDescriptionFromString("monospace 10")
@@ -104,7 +104,7 @@ proc createTab(e: PEditor, filename: string, untitled: bool) =
   var scroll = gtkScrolledWindowNew(nil, nil)
   gtkContainerAdd(scroll, t.textview)
   gtkWidgetShow(scroll)
-  
+
   t.e = e
   t.hbox = gtkHboxNew(false, 0)
   var image = gtkImageNewFromStock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU)
@@ -114,16 +114,16 @@ proc createTab(e: PEditor, filename: string, untitled: bool) =
   gtkButtonSetRelief(button, GTK_RELIEF_NONE)
   gtkBoxPackStart(t.hbox, lab, false, false, 2)
   gtkBoxPackEnd(t.hbox, button, false, false, 0)
-  
+
   discard gSignalConnect(button, "clicked", G_Callback(onCloseTab), t)
   gtkWidgetShow(button)
   gtkWidgetShow(lab)
- 
+
   var idx = gtkNotebookAppendPage(e.notebook, scroll, t.hbox)
   e.currTab = idx
   add(e.tabs, t)
   gtkNotebookSetCurrentPage(e.notebook, idx)
-  
+
 
 proc onOpenMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
   var files = ChooseFilesToOpen(e.window, getRoot(getActiveTab(e)))
@@ -131,8 +131,8 @@ proc onOpenMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
 
 proc onSaveMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
   var cp = gtkNotebookGetCurrentPage(e.notebook)
-  
-  
+
+
 proc onSaveAsMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
   nil
 
@@ -140,7 +140,7 @@ proc onNewMenuItemActivate(menuItem: PGtkMenuItem, e: PEditor) {.cdecl.} =
   inc(e.tabname)
   createTab(e, "untitled-" & $e.tabname, true)
 
-proc main(e: PEditor) = 
+proc main(e: PEditor) =
   var builder = gladeXmlNew(getApplicationDir() / GuiTemplate, nil, nil)
   if builder == nil: quit("cannot open: " & GuiTemplate)
   # get the components:
@@ -155,27 +155,27 @@ proc main(e: PEditor) =
   gladeXmlSignalConnect(builder, "on_window_destroy",
                         GCallback(onWindowDestroy))
   var about = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "about_menu_item"))
-  discard gSignalConnect(about, "activate", 
+  discard gSignalConnect(about, "activate",
                          G_CALLBACK(onAboutMenuItemActivate), e)
 
   var newItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "new_menu_item"))
-  discard gSignalConnect(newItem, "activate", 
+  discard gSignalConnect(newItem, "activate",
                          G_CALLBACK(onNewMenuItemActivate), e)
 
   var quitItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "quit_menu_item"))
-  discard gSignalConnect(quitItem, "activate", 
+  discard gSignalConnect(quitItem, "activate",
                          G_CALLBACK(onWindowDestroy), e)
 
   var openItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "open_menu_item"))
-  discard gSignalConnect(openItem, "activate", 
+  discard gSignalConnect(openItem, "activate",
                          G_CALLBACK(onOpenMenuItemActivate), e)
-  
-  var saveItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_menu_item")) 
-  discard gSignalConnect(saveItem, "activate", 
+
+  var saveItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_menu_item"))
+  discard gSignalConnect(saveItem, "activate",
                          G_CALLBACK(onSaveMenuItemActivate), e)
-  
-  var saveAsItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_as_menu_item")) 
-  discard gSignalConnect(saveAsItem, "activate", 
+
+  var saveAsItem = GTK_MENU_ITEM(gladeXmlGetWidget(builder, "save_as_menu_item"))
+  discard gSignalConnect(saveAsItem, "activate",
                          G_CALLBACK(onSaveAsMenuItemActivate), e)
 
   gtkWindowSetDefaultIconName(GTK_STOCK_EDIT)
diff --git a/lib/pure/httpserver.nim b/lib/pure/httpserver.nim
index 2c85d8137..bff1b381d 100755
--- a/lib/pure/httpserver.nim
+++ b/lib/pure/httpserver.nim
@@ -7,19 +7,19 @@
 #    distribution, for details about the copyright.
 #
 
-## This module implements a simple HTTP-Server. 
+## This module implements a simple HTTP-Server.
 ##
-## Example: 
+## Example:
 ##
 ## .. code-block:: nimrod
 ##  import strutils, sockets, httpserver
-##  
+##
 ##  var counter = 0
 ##  proc handleRequest(client: TSocket, path, query: string): bool {.procvar.} =
 ##    inc(counter)
-##    client.send("Hallo for the $#th time." % $counter & wwwNL)
+##    client.send("Hello for the $#th time." % $counter & wwwNL)
 ##    return false # do not stop processing
-##  
+##
 ##  run(handleRequest, TPort(80))
 ##
 
@@ -47,7 +47,7 @@ proc cannotExec(client: TSocket) =
   sendTextContentType(client)
   send(client, "<P>Error prohibited CGI execution." & wwwNL)
 
-proc headers(client: TSocket, filename: string) = 
+proc headers(client: TSocket, filename: string) =
   # XXX could use filename to determine file type
   send(client, "HTTP/1.0 200 OK" & wwwNL)
   send(client, ServerSig)
@@ -60,16 +60,16 @@ proc notFound(client: TSocket) =
   send(client, "<html><title>Not Found</title>" & wwwNL)
   send(client, "<body><p>The server could not fulfill" & wwwNL)
   send(client, "your request because the resource specified" & wwwNL)
-  send(client, "is unavailable or nonexistent." & wwwNL)
+  send(client, "is unavailable or nonexistent.</p>" & wwwNL)
   send(client, "</body></html>" & wwwNL)
 
 proc unimplemented(client: TSocket) =
   send(client, "HTTP/1.0 501 Method Not Implemented" & wwwNL)
   send(client, ServerSig)
   sendTextContentType(client)
-  send(client, "<html><head><title>Method Not Implemented" & 
+  send(client, "<html><head><title>Method Not Implemented" &
                "</title></head>" &
-               "<body><p>HTTP request method not supported." &
+               "<body><p>HTTP request method not supported.</p>" &
                "</body></HTML>" & wwwNL)
 
 # ----------------- file serving ---------------------------------------------
@@ -78,7 +78,7 @@ proc discardHeaders(client: TSocket) = skip(client)
 
 proc serveFile(client: TSocket, filename: string) =
   discardHeaders(client)
-  
+
   var f: TFile
   if open(f, filename):
     headers(client, filename)
@@ -109,7 +109,7 @@ proc executeCgi(client: TSocket, path, query: string, meth: TRequestMethod) =
   case meth
   of reqGet:
     discardHeaders(client)
-    
+
     env["REQUEST_METHOD"] = "GET"
     env["QUERY_STRING"] = query
   of reqPost:
@@ -122,16 +122,16 @@ proc executeCgi(client: TSocket, path, query: string, meth: TRequestMethod) =
         var i = len("content-length:")
         while L[i] in Whitespace: inc(i)
         contentLength = parseInt(copy(L, i))
-    
+
     if contentLength < 0:
       badRequest(client)
       return
 
     env["REQUEST_METHOD"] = "POST"
     env["CONTENT_LENGTH"] = $contentLength
-  
+
   send(client, "HTTP/1.0 200 OK" & wwwNL)
-  
+
   var process = startProcess(command=path, env=env)
   if meth == reqPost:
     # get from client and post to CGI program:
@@ -139,7 +139,7 @@ proc executeCgi(client: TSocket, path, query: string, meth: TRequestMethod) =
     if recv(client, buf, contentLength) != contentLength: OSError()
     var inp = process.inputStream
     inp.writeData(inp, buf, contentLength)
-  
+
   var outp = process.outputStream
   while running(process) or not outp.atEnd(outp):
     var line = outp.readLine()
@@ -165,11 +165,11 @@ proc acceptRequest(client: TSocket) =
     meth = reqPost
   else:
     unimplemented(client)
-    
+
   var path = data[1]
   if path[path.len-1] == '/' or existsDir(path):
     path = path / "index.html"
-  
+
   if not ExistsFile(path):
     discardHeaders(client)
     notFound(client)
@@ -193,15 +193,15 @@ type
     port: TPort
     client*: TSocket      ## the socket to write the file data to
     path*, query*: string ## path and query the client requested
-    
-proc open*(s: var TServer, port = TPort(80)) = 
+
+proc open*(s: var TServer, port = TPort(80)) =
   ## creates a new server at port `port`. If ``port == 0`` a free port is
-  ## aquired that can be accessed later by the ``port`` proc.
+  ## acquired that can be accessed later by the ``port`` proc.
   s.socket = socket(AF_INET)
   if s.socket == InvalidSocket: OSError()
   bindAddr(s.socket, port)
   listen(s.socket)
-  
+
   if port == TPort(0):
     s.port = getSockName(s.socket)
   else:
@@ -209,12 +209,12 @@ proc open*(s: var TServer, port = TPort(80)) =
   s.client = InvalidSocket
   s.path = ""
   s.query = ""
-  
-proc port*(s: var TServer): TPort = 
-  ## get the port number the server has aquired.
+
+proc port*(s: var TServer): TPort =
+  ## get the port number the server has acquired.
   result = s.port
-  
-proc next*(s: var TServer) = 
+
+proc next*(s: var TServer) =
   ## proceed to the first/next request.
   s.client = accept(s.socket)
   headers(s.client, "")
@@ -236,13 +236,13 @@ proc close*(s: TServer) =
   ## closes the server (and the socket the server uses).
   close(s.socket)
 
-proc run*(handleRequest: proc (client: TSocket, path, query: string): bool, 
+proc run*(handleRequest: proc (client: TSocket, path, query: string): bool,
           port = TPort(80)) =
   ## encapsulates the server object and main loop
   var s: TServer
   open(s, port)
   #echo("httpserver running on port ", s.port)
-  while true: 
+  while true:
     next(s)
     if handleRequest(s.client, s.path, s.query): break
     close(s.client)
@@ -252,8 +252,8 @@ when isMainModule:
   var counter = 0
   proc handleRequest(client: TSocket, path, query: string): bool {.procvar.} =
     inc(counter)
-    client.send("Hallo, Andreas for the $#th time." % $counter & wwwNL)
+    client.send("Hello, Andreas, for the $#th time." % $counter & wwwNL)
     return false # do not stop processing
-  
+
   run(handleRequest, TPort(80))
 
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index bbdea1eee..c9bd729d9 100755
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -57,7 +57,7 @@ proc execCmd*(command: string): int
 proc executeCommand*(command: string): int {.deprecated.} =
   ## **Deprecated since version 0.8.2**: Use `execCmd` instead.
   result = execCmd(command)
-  
+
 
 proc startProcess*(command: string,
                    workingDir: string = "",
@@ -115,7 +115,7 @@ when defined(macosx) or defined(bsd):
               a: var int, b: pointer, c: int): cint {.
              importc: "sysctl", header: "<sys/sysctl.h>".}
 
-proc countProcessors*(): int = 
+proc countProcessors*(): int =
   ## returns the numer of the processors/cores the machine has.
   ## Returns 0 if it cannot be determined.
   when defined(windows):
@@ -186,7 +186,7 @@ proc execProcesses*(cmds: openArray[string],
             inc(i)
             if i > high(cmds): break
     for i in 0..m-1:
-      result = max(waitForExit(q[i]), result)  
+      result = max(waitForExit(q[i]), result)
   else:
     for i in 0..high(cmds):
       var p = startProcessAux(cmds[i], options=options)
@@ -243,7 +243,7 @@ when defined(Windows):
     if a == 0 and br != 0: OSError()
     s.atTheEnd = br < bufLen
     result = br
-  
+
   proc hsWriteData(s: PFileHandleStream, buffer: pointer, bufLen: int) =
     var bytesWritten: int32
     var a = winlean.writeFile(s.handle, buffer, bufLen, bytesWritten, nil)
@@ -256,10 +256,10 @@ when defined(Windows):
     result.atEnd = hsAtEnd
     result.readData = hsReadData
     result.writeData = hsWriteData
-    
+
   proc buildCommandLine(a: string, args: openarray[string]): cstring =
     var res = quoteIfContainsWhite(a)
-    for i in 0..high(args): 
+    for i in 0..high(args):
       res.add(' ')
       res.add(quoteIfContainsWhite(args[i]))
     result = cast[cstring](alloc0(res.len+1))
@@ -324,7 +324,7 @@ when defined(Windows):
       result.inputHandle = si.hStdInput
       result.outputHandle = si.hStdOutput
       result.errorHandle = si.hStdError
-    
+
     var cmdl: cstring
     if false: # poUseShell in options:
       cmdl = buildCommandLine(getEnv("COMSPEC"), @["/c", command] & args)
@@ -337,13 +337,13 @@ when defined(Windows):
     if poEchoCmd in options: echo($cmdl)
     success = winlean.CreateProcess(nil,
       cmdl, nil, nil, 1, NORMAL_PRIORITY_CLASS, e, wd, SI, ProcInfo)
-    
+
     if poParentStreams notin options:
       FileClose(si.hStdInput)
       FileClose(si.hStdOutput)
       if poStdErrToStdOut notin options:
         FileClose(si.hStdError)
-      
+
     if e != nil: dealloc(e)
     dealloc(cmdl)
     if success == 0: OSError()
@@ -382,7 +382,7 @@ when defined(Windows):
   proc errorStream(p: PProcess): PStream =
     result = newFileHandleStream(p.errorHandle)
 
-  proc execCmd(command: string): int = 
+  proc execCmd(command: string): int =
     var
       SI: TStartupInfo
       ProcInfo: TProcessInformation
@@ -535,7 +535,7 @@ else:
 
   proc csystem(cmd: cstring): cint {.nodecl, importc: "system".}
 
-  proc execCmd(command: string): int = 
+  proc execCmd(command: string): int =
     result = csystem(command)
 
 when isMainModule:
diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim
index 6854999e3..961c875ac 100755
--- a/lib/pure/strutils.nim
+++ b/lib/pure/strutils.nim
@@ -1,914 +1,918 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2010 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-## This module contains various string utility routines.
-## See the module `regexprs` for regular expression support.
-
-import parseutils
-
-{.deadCodeElim: on.}
-
-{.push debugger:off .} # the user does not want to trace a part
-                       # of the standard library!
-
-type
-  TCharSet* = set[char] # for compatibility with Nim
-
-const
-  Whitespace* = {' ', '\t', '\v', '\r', '\l', '\f'}
-    ## All the characters that count as whitespace.
-    
-  Letters* = {'A'..'Z', 'a'..'z'}
-    ## the set of letters
-  
-  Digits* = {'0'..'9'}
-    ## the set of digits
-  
-  IdentChars* = {'a'..'z', 'A'..'Z', '0'..'9', '_'}
-    ## the set of characters an identifier can consist of
-  
-  IdentStartChars* = {'a'..'z', 'A'..'Z', '_'}
-    ## the set of characters an identifier can start with
-
-proc `%` *(formatstr: string, a: openarray[string]): string {.noSideEffect.}
-  ## The `substitution`:idx: operator performs string substitutions in
-  ## `formatstr` and returns a modified `formatstr`. This is often called
-  ## `string interpolation`:idx:.
-  ##
-  ## This is best explained by an example:
-  ##
-  ## .. code-block:: nimrod
-  ##   "$1 eats $2." % ["The cat", "fish"]
-  ##
-  ## Results in:
-  ##
-  ## .. code-block:: nimrod
-  ##   "The cat eats fish."
-  ##
-  ## The substitution variables (the thing after the ``$``) are enumerated
-  ## from 1 to ``a.len``.
-  ## The notation ``$#`` can be used to refer to the next substitution variable:
-  ##
-  ## .. code-block:: nimrod
-  ##   "$# eats $#." % ["The cat", "fish"]
-  ##
-  ## Substitution variables can also be words (that is
-  ## ``[A-Za-z_]+[A-Za-z0-9_]*``) in which case the arguments in `a` with even
-  ## indices are keys and with odd indices are the corresponding values.
-  ## An example:
-  ##
-  ## .. code-block:: nimrod
-  ##   "$animal eats $food." % ["animal", "The cat", "food", "fish"]
-  ##
-  ## Results in:
-  ##
-  ## .. code-block:: nimrod
-  ##   "The cat eats fish."
-  ##
-  ## The variables are compared with `cmpIgnoreStyle`. `EInvalidValue` is
-  ## raised if an ill-formed format string has been passed to the `%` operator.
-
-proc `%` *(formatstr, a: string): string {.noSideEffect.}
-  ## This is the same as ``formatstr % [a]``.
-
-proc addf*(s: var string, formatstr: string, a: openarray[string])
-  ## The same as ``add(s, formatstr % a)``, but more efficient.
-
-proc strip*(s: string, leading = true, trailing = true): string {.noSideEffect.}
-  ## Strips whitespace from `s` and returns the resulting string.
-  ## If `leading` is true, leading whitespace is stripped.
-  ## If `trailing` is true, trailing whitespace is stripped.
-
-proc toLower*(s: string): string {.noSideEffect, procvar.}
-  ## Converts `s` into lower case. This works only for the letters A-Z.
-  ## See `unicode.toLower` for a version that works for any Unicode character.
-
-proc toLower*(c: Char): Char {.noSideEffect, procvar.}
-  ## Converts `c` into lower case. This works only for the letters A-Z.
-  ## See `unicode.toLower` for a version that works for any Unicode character.
-
-proc toUpper*(s: string): string {.noSideEffect, procvar.}
-  ## Converts `s` into upper case. This works only for the letters a-z.
-  ## See `unicode.toUpper` for a version that works for any Unicode character.
-
-proc toUpper*(c: Char): Char {.noSideEffect, procvar.}
-  ## Converts `c` into upper case. This works only for the letters a-z.
-  ## See `unicode.toUpper` for a version that works for any Unicode character.
-
-proc capitalize*(s: string): string {.noSideEffect, procvar.}
-  ## Converts the first character of `s` into upper case.
-  ## This works only for the letters a-z.
-
-proc normalize*(s: string): string {.noSideEffect, procvar.}
-  ## Normalizes the string `s`. That means to convert it to lower case and
-  ## remove any '_'. This is needed for Nimrod identifiers for example.
-
-proc find*(s, sub: string, start: int = 0): int {.noSideEffect.}
-  ## Searches for `sub` in `s` starting at position `start`. Searching is
-  ## case-sensitive. If `sub` is not in `s`, -1 is returned.
-
-proc find*(s: string, sub: char, start: int = 0): int {.noSideEffect.}
-  ## Searches for `sub` in `s` starting at position `start`. Searching is
-  ## case-sensitive. If `sub` is not in `s`, -1 is returned.
-
-proc find*(s: string, chars: set[char], start: int = 0): int {.noSideEffect.}
-  ## Searches for `chars` in `s` starting at position `start`. If `s` contains
-  ## none of the characters in `chars`, -1 is returned.
-
-proc replaceStr*(s, sub, by: string): string {.noSideEffect, deprecated.}
-  ## Replaces `sub` in `s` by the string `by`.
-  ## **Deprecated since version 0.8.0**: Use `replace` instead.
-
-proc replaceStr*(s: string, sub, by: char): string {.noSideEffect, deprecated.}
-  ## optimized version for characters.
-  ## **Deprecated since version 0.8.0**: Use `replace` instead.
-
-proc deleteStr*(s: var string, first, last: int) {.deprecated.}
-  ## Deletes in `s` the characters at position `first` .. `last`. This modifies
-  ## `s` itself, it does not return a copy.
-  ## **Deprecated since version 0.8.0**: Use `delete` instead.
-
-proc toOctal*(c: char): string
-  ## Converts a character `c` to its octal representation. The resulting
-  ## string may not have a leading zero. Its length is always exactly 3.
-
-iterator split*(s: string, seps: set[char] = Whitespace): string =
-  ## Splits the string `s` into substrings.
-  ##
-  ## Substrings are separated by a substring containing only `seps`.
-  ## Examples:
-  ##
-  ## .. code-block:: nimrod
-  ##   for word in split("  this is an  example  "):
-  ##     writeln(stdout, word)
-  ##
-  ## Results in:
-  ##
-  ## .. code-block:: nimrod
-  ##   "this"
-  ##   "is"
-  ##   "an"
-  ##   "example"
-  ##
-  ##   for word in split(";;this;is;an;;example;;;", {';'}):
-  ##     writeln(stdout, word)
-  ##
-  ## produces the same output.
-  var last = 0
-  assert(not ('\0' in seps))
-  while last < len(s):
-    while s[last] in seps: inc(last)
-    var first = last
-    while last < len(s) and s[last] not_in seps: inc(last) # BUGFIX!
-    if first <= last-1:
-      yield copy(s, first, last-1)
-
-iterator split*(s: string, sep: char): string =
-  ## Splits the string `s` into substrings.
-  ##
-  ## Substrings are separated by the character `sep`.
-  ## Example:
-  ##
-  ## .. code-block:: nimrod
-  ##   for word in split(";;this;is;an;;example;;;", ';'):
-  ##     writeln(stdout, word)
-  ##
-  ## Results in:
-  ##
-  ## .. code-block:: nimrod
-  ##   ""
-  ##   ""
-  ##   "this"
-  ##   "is"
-  ##   "an"
-  ##   ""
-  ##   "example"
-  ##   ""
-  ##   ""
-  ##   ""
-  ##
-  var last = 0
-  assert('\0' != sep)
-  if len(s) > 0:
-    # `<=` is correct here for the edge cases!
-    while last <= len(s):
-      var first = last
-      while last < len(s) and s[last] != sep: inc(last)
-      yield copy(s, first, last-1)
-      inc(last)
-
-iterator splitLines*(s: string): string =
-  ## Splits the string `s` into its containing lines. Every newline
-  ## combination (CR, LF, CR-LF) is supported. The result strings contain
-  ## no trailing ``\n``.
-  ##
-  ## Example:
-  ##
-  ## .. code-block:: nimrod
-  ##   for line in lines("\nthis\nis\nan\n\nexample\n"):
-  ##     writeln(stdout, line)
-  ##
-  ## Results in:
-  ##
-  ## .. code-block:: nimrod
-  ##   ""
-  ##   "this"
-  ##   "is"
-  ##   "an"
-  ##   ""
-  ##   "example"
-  ##   ""
-  var first = 0
-  var last = 0
-  while true:
-    while s[last] notin {'\0', '\c', '\l'}: inc(last)
-    yield copy(s, first, last-1)
-    # skip newlines:
-    if s[last] == '\l': inc(last)
-    elif s[last] == '\c':
-      inc(last)
-      if s[last] == '\l': inc(last)
-    else: break # was '\0'
-    first = last
-
-proc splitLinesSeq*(s: string): seq[string] {.noSideEffect, deprecated.} =
-  ## The same as `splitLines`, but is a proc that returns a sequence 
-  ## of substrings.
-  ## **Deprecated since version 0.8.0**: Use `splitLines` instead.
-  accumulateResult(splitLines(s))
-
-proc splitSeq*(s: string, seps: set[char] = Whitespace): seq[string] {.
-  noSideEffect, deprecated.} =
-  ## The same as `split`, but is a proc that returns a sequence of substrings.
-  ## **Deprecated since version 0.8.0**: Use `split` instead.
-  accumulateResult(split(s, seps))
-
-proc splitSeq*(s: string, sep: char): seq[string] {.noSideEffect, 
-                                                    deprecated.} =
-  ## The same as `split`, but is a proc that returns a sequence of substrings.
-  ## **Deprecated since version 0.8.0**: Use `split` instead.
-  accumulateResult(split(s, sep))
-
-proc splitLines*(s: string): seq[string] {.noSideEffect.} =
-  ## The same as the `splitLines` iterator, but is a proc that returns a 
-  ## sequence of substrings.
-  accumulateResult(splitLines(s))
-
-proc split*(s: string, seps: set[char] = Whitespace): seq[string] {.
-  noSideEffect.} =
-  ## The same as the `split` iterator, but is a proc that returns a
-  ## sequence of substrings.
-  accumulateResult(split(s, seps))
-
-proc split*(s: string, sep: char): seq[string] {.noSideEffect.} =
-  ## The same as the `split` iterator, but is a proc that returns a sequence
-  ## of substrings.
-  accumulateResult(split(s, sep))
-
-proc cmpIgnoreCase*(a, b: string): int {.noSideEffect.}
-  ## Compares two strings in a case insensitive manner. Returns:
-  ##
-  ## | 0 iff a == b
-  ## | < 0 iff a < b
-  ## | > 0 iff a > b
-
-proc cmpIgnoreStyle*(a, b: string): int {.noSideEffect.}
-  ## Compares two strings normalized (i.e. case and
-  ## underscores do not matter). Returns:
-  ##
-  ## | 0 iff a == b
-  ## | < 0 iff a < b
-  ## | > 0 iff a > b
-
-proc contains*(s: string, c: char): bool {.noSideEffect.}
-  ## Same as ``find(s, c) >= 0``.
-
-proc contains*(s, sub: string): bool {.noSideEffect.}
-  ## Same as ``find(s, sub) >= 0``.
-
-proc contains*(s: string, chars: set[char]): bool {.noSideEffect.}
-  ## Same as ``find(s, chars) >= 0``.
-
-proc toHex*(x: BiggestInt, len: int): string {.noSideEffect.}
-  ## Converts `x` to its hexadecimal representation. The resulting string
-  ## will be exactly `len` characters long. No prefix like ``0x``
-  ## is generated. `x` is treated as an unsigned value.
-
-proc intToStr*(x: int, minchars: int = 1): string
-  ## Converts `x` to its decimal representation. The resulting string
-  ## will be minimally `minchars` characters long. This is achieved by
-  ## adding leading zeros.
-
-proc ParseInt*(s: string): int {.noSideEffect, procvar.}
-  ## Parses a decimal integer value contained in `s`. If `s` is not
-  ## a valid integer, `EInvalidValue` is raised.
-
-proc ParseBiggestInt*(s: string): biggestInt {.noSideEffect, procvar.}
-  ## Parses a decimal integer value contained in `s`. If `s` is not
-  ## a valid integer, `EInvalidValue` is raised.
-
-proc ParseFloat*(s: string): float {.noSideEffect, procvar.}
-  ## Parses a decimal floating point value contained in `s`. If `s` is not
-  ## a valid floating point number, `EInvalidValue` is raised. ``NAN``,
-  ## ``INF``, ``-INF`` are also supported (case insensitive comparison).
-
-proc ParseHexInt*(s: string): int {.noSideEffect, procvar.} 
-  ## Parses a hexadecimal integer value contained in `s`. If `s` is not
-  ## a valid integer, `EInvalidValue` is raised. `s` can have one of the
-  ## following optional prefixes: ``0x``, ``0X``, ``#``. 
-  ## Underscores within `s` are ignored.
-
-# the stringify and format operators:
-proc toString*[Ty](x: Ty): string {.deprecated.}
-  ## This generic proc is the same as the stringify operator `$`.
-  ##
-  ## **Deprecated since version 0.8.2:** Use `$` instead.
-
-proc repeatChar*(count: int, c: Char = ' '): string
-  ## Returns a string of length `count` consisting only of
-  ## the character `c`.
-
-proc startsWith*(s, prefix: string): bool {.noSideEffect.}
-  ## Returns true iff ``s`` starts with ``prefix``.
-  ## If ``prefix == ""`` true is returned.
-
-proc endsWith*(s, suffix: string): bool {.noSideEffect.}
-  ## Returns true iff ``s`` ends with ``suffix``.
-  ## If ``suffix == ""`` true is returned.
-
-proc addSep*(dest: var string, sep = ", ", startLen = 0) {.noSideEffect,
-                                                           inline.} = 
-  ## A shorthand for: 
-  ## 
-  ## .. code-block:: nimrod
-  ##   if dest.len > startLen: add(dest, sep)
-  ## 
-  ## This is often useful for generating some code where the items need to
-  ## be *separated* by `sep`. `sep` is only added if `dest` is longer than
-  ## `startLen`. The following example creates a string describing
-  ## an array of integers:  
-  ## 
-  ## .. code-block:: nimrod
-  ##   var arr = "["
-  ##   for x in items([2, 3, 5, 7, 11]):
-  ##     addSep(arr, startLen=len("["))
-  ##     add(arr, $x)
-  ##   add(arr, "]")
-  if dest.len > startLen: add(dest, sep)
-
-proc allCharsInSet*(s: string, theSet: TCharSet): bool =
-  ## returns true iff each character of `s` is in the set `theSet`.
-  for c in items(s):
-    if c notin theSet: return false
-  return true
-
-proc quoteIfContainsWhite*(s: string): string =
-  ## returns ``'"' & s & '"'`` if `s` contains a space and does not
-  ## start with a quote, else returns `s`
-  if find(s, {' ', '\t'}) >= 0 and s[0] != '"':
-    result = '"' & s & '"'
-  else:
-    result = s
-
-proc startsWith(s, prefix: string): bool =
-  var i = 0
-  while true:
-    if prefix[i] == '\0': return true
-    if s[i] != prefix[i]: return false
-    inc(i)
-
-proc endsWith(s, suffix: string): bool =
-  var
-    i = 0
-    j = len(s) - len(suffix)
-  while true:
-    if suffix[i] == '\0': return true
-    if s[i+j] != suffix[i]: return false
-    inc(i)
-
-when false:
-  proc abbrev(s: string, possibilities: openarray[string]): int = 
-    ## returns the index of the first item in `possibilities` if not
-    ## ambiguous; -1 if no item has been found; -2 if multiple items
-    ## match.
-    result = -1 # none found
-    for i in 0..possibilities.len-1: 
-      if possibilities[i].startsWith(s): 
-        if result >= 0: return -2 # ambiguous
-        result = i
-
-proc repeatChar(count: int, c: Char = ' '): string =
-  result = newString(count)
-  for i in 0..count-1:
-    result[i] = c
-
-proc intToStr(x: int, minchars: int = 1): string =
-  result = $abs(x)
-  for i in 1 .. minchars - len(result):
-    result = '0' & result
-  if x < 0:
-    result = '-' & result
-
-proc toString[Ty](x: Ty): string = return $x
-
-proc toOctal(c: char): string =
-  result = newString(3)
-  var val = ord(c)
-  for i in countdown(2, 0):
-    result[i] = Chr(val mod 8 + ord('0'))
-    val = val div 8
-
-proc `%`(formatstr: string, a: string): string =
-  return formatstr % [a]
-
-proc findNormalized(x: string, inArray: openarray[string]): int =
-  var i = 0
-  while i < high(inArray):
-    if cmpIgnoreStyle(x, inArray[i]) == 0: return i
-    inc(i, 2) # incrementing by 1 would probably result in a
-              # security hole ...
-  return -1
-
-proc addf(s: var string, formatstr: string, a: openarray[string]) =
-  const PatternChars = {'a'..'z', 'A'..'Z', '0'..'9', '\128'..'\255', '_'}
-  var i = 0
-  var num = 0
-  while i < len(formatstr):
-    if formatstr[i] == '$':
-      case formatstr[i+1] # again we use the fact that strings
-                          # are zero-terminated here
-      of '#':
-        add s, a[num]
-        inc i, 2
-        inc num
-      of '$':
-        add s, '$'
-        inc(i, 2)
-      of '1'..'9':
-        var j = 0
-        inc(i) # skip $
-        while formatstr[i] in {'0'..'9'}:
-          j = j * 10 + ord(formatstr[i]) - ord('0')
-          inc(i)
-        num = j
-        add s, a[j - 1]
-      of '{':
-        var j = i+1
-        while formatstr[j] notin {'\0', '}'}: inc(j)
-        var x = findNormalized(copy(formatstr, i+2, j-1), a)
-        if x >= 0 and x < high(a): add s, a[x+1]
-        else: raise newException(EInvalidValue, "invalid format string")
-        i = j+1
-      of 'a'..'z', 'A'..'Z', '\128'..'\255', '_':
-        var j = i+1
-        while formatstr[j] in PatternChars: inc(j)
-        var x = findNormalized(copy(formatstr, i+1, j-1), a)
-        if x >= 0 and x < high(a): add s, a[x+1]
-        else: raise newException(EInvalidValue, "invalid format string")
-        i = j
-      else: raise newException(EInvalidValue, "invalid format string")
-    else:
-      add s, formatstr[i]
-      inc(i)
-  
-proc `%`(formatstr: string, a: openarray[string]): string =
-  result = ""
-  addf(result, formatstr, a)
-
-proc cmpIgnoreCase(a, b: string): int =
-  var i = 0
-  while i < a.len and i < b.len:
-    result = ord(toLower(a[i])) - ord(toLower(b[i]))
-    if result != 0: return
-    inc(i)
-  result = a.len - b.len
-
-
-{.push checks: off, line_trace: off .} # this is a hot-spot in the compiler!
-                                       # thus we compile without checks here
-
-proc cmpIgnoreStyle(a, b: string): int =
-  var i = 0
-  var j = 0
-  while True:
-    while a[i] == '_': inc(i)
-    while b[j] == '_': inc(j) # BUGFIX: typo
-    var aa = toLower(a[i])
-    var bb = toLower(b[j])
-    result = ord(aa) - ord(bb)
-    if result != 0 or aa == '\0': break
-    inc(i)
-    inc(j)
-
-{.pop.}
-
-# ---------------------------------------------------------------------------
-
-proc join*(a: openArray[string], sep: string): string =
-  ## concatenates all strings in `a` separating them with `sep`.
-  if len(a) > 0:
-    var L = sep.len * (a.len-1)
-    for i in 0..high(a): inc(L, a[i].len)
-    result = newString(L)
-    setLen(result, 0)
-    add(result, a[0])
-    for i in 1..high(a):
-      add(result, sep)
-      add(result, a[i])
-  else:
-    result = ""
-  
-proc join*(a: openArray[string]): string =
-  ## concatenates all strings in `a`.
-  if len(a) > 0:
-    var L = 0
-    for i in 0..high(a): inc(L, a[i].len)
-    result = newString(L)
-    setLen(result, 0)
-    for i in 0..high(a): add(result, a[i])
-  else:
-    result = ""
-
-proc strip(s: string, leading = true, trailing = true): string =
-  const
-    chars: set[Char] = Whitespace
-  var
-    first = 0
-    last = len(s)-1
-  if leading: 
-    while s[first] in chars: inc(first)
-  if trailing:
-    while last >= 0 and s[last] in chars: dec(last)
-  result = copy(s, first, last)
-
-proc toLower(c: Char): Char =
-  if c in {'A'..'Z'}:
-    result = chr(ord(c) + (ord('a') - ord('A')))
-  else:
-    result = c
-
-proc toLower(s: string): string =
-  result = newString(len(s))
-  for i in 0..len(s) - 1:
-    result[i] = toLower(s[i])
-
-proc toUpper(c: Char): Char =
-  if c in {'a'..'z'}:
-    result = Chr(Ord(c) - (Ord('a') - Ord('A')))
-  else:
-    result = c
-
-proc toUpper(s: string): string =
-  result = newString(len(s))
-  for i in 0..len(s) - 1:
-    result[i] = toUpper(s[i])
-
-proc capitalize(s: string): string =
-  result = toUpper(s[0]) & copy(s, 1)
-
-proc normalize(s: string): string =
-  result = ""
-  for i in 0..len(s) - 1:
-    if s[i] in {'A'..'Z'}:
-      add result, Chr(Ord(s[i]) + (Ord('a') - Ord('A')))
-    elif s[i] != '_':
-      add result, s[i]
-
-type
-  TSkipTable = array[Char, int]
-
-proc preprocessSub(sub: string, a: var TSkipTable) =
-  var m = len(sub)
-  for i in 0..0xff: a[chr(i)] = m+1
-  for i in 0..m-1: a[sub[i]] = m-i
-
-proc findAux(s, sub: string, start: int, a: TSkipTable): int =
-  # fast "quick search" algorithm:
-  var
-    m = len(sub)
-    n = len(s)
-  # search:
-  var j = start
-  while j <= n - m:
-    block match:
-      for k in 0..m-1:
-        if sub[k] != s[k+j]: break match
-      return j
-    inc(j, a[s[j+m]])
-  return -1
-
-proc find(s, sub: string, start: int = 0): int =
-  var a: TSkipTable
-  preprocessSub(sub, a)
-  result = findAux(s, sub, start, a)
-
-proc find(s: string, sub: char, start: int = 0): int =
-  for i in start..len(s)-1:
-    if sub == s[i]: return i
-  return -1
- 
-proc find(s: string, chars: set[char], start: int = 0): int =
-  for i in start..s.len-1:
-    if s[i] in chars: return i
-  return -1 
-
-proc contains(s: string, chars: set[char]): bool =
-  return find(s, chars) >= 0
-
-proc contains(s: string, c: char): bool =
-  return find(s, c) >= 0
-
-proc contains(s, sub: string): bool =
-  return find(s, sub) >= 0
-
-proc replace*(s, sub, by: string): string =
-  ## Replaces `sub` in `s` by the string `by`.
-  var a: TSkipTable
-  result = ""
-  preprocessSub(sub, a)
-  var i = 0
-  while true:
-    var j = findAux(s, sub, i, a)
-    if j < 0: break
-    add result, copy(s, i, j - 1)
-    add result, by
-    i = j + len(sub)
-  # copy the rest:
-  add result, copy(s, i)
-
-proc replace*(s: string, sub, by: char): string =
-  ## optimized version for characters.
-  result = newString(s.len)
-  var i = 0
-  while i < s.len:
-    if s[i] == sub: result[i] = by
-    else: result[i] = s[i]
-    inc(i)
-
-proc delete*(s: var string, first, last: int) =
-  ## Deletes in `s` the characters at position `first`..`last`. This modifies
-  ## `s` itself, it does not return a copy.
-  var i = first
-  var j = last+1
-  var newLen = len(s)-j+i
-  while i < newLen:
-    s[i] = s[j]
-    inc(i)
-    inc(j)
-  setlen(s, newLen)
-
-proc replaceStr(s, sub, by: string): string = return replace(s, sub, by)
-proc replaceStr(s: string, sub, by: char): string = return replace(s, sub, by)
-proc deleteStr(s: var string, first, last: int) = delete(s, first, last)
-
-# parsing numbers:
-
-proc toHex(x: BiggestInt, len: int): string =
-  const
-    HexChars = "0123456789ABCDEF"
-  var
-    shift: BiggestInt
-  result = newString(len)
-  for j in countdown(len-1, 0):
-    result[j] = HexChars[toU32(x shr shift) and 0xF'i32]
-    shift = shift + 4
-
-proc parseInt(s: string): int =
-  var L = parseutils.parseInt(s, result, 0)
-  if L != s.len: raise newException(EInvalidValue, "invalid integer: " & s)
-
-proc ParseBiggestInt(s: string): biggestInt =
-  var L = parseutils.parseBiggestInt(s, result, 0)
-  if L != s.len: raise newException(EInvalidValue, "invalid integer: " & s)
-
-proc ParseOctInt*(s: string): int =
-  var i = 0
-  if s[i] == '0' and (s[i+1] == 'o' or s[i+1] == 'O'): inc(i, 2)
-  while true: 
-    case s[i]
-    of '_': inc(i)
-    of '0'..'7': 
-      result = result shl 3 or (ord(s[i]) - ord('0'))
-      inc(i)
-    of '\0': break
-    else: raise newException(EInvalidValue, "invalid integer: " & s)
-
-proc ParseHexInt(s: string): int = 
-  var i = 0
-  if s[i] == '0' and (s[i+1] == 'x' or s[i+1] == 'X'): inc(i, 2)
-  elif s[i] == '#': inc(i)
-  while true: 
-    case s[i]
-    of '_': inc(i)
-    of '0'..'9': 
-      result = result shl 4 or (ord(s[i]) - ord('0'))
-      inc(i)
-    of 'a'..'f': 
-      result = result shl 4 or (ord(s[i]) - ord('a') + 10)
-      inc(i)
-    of 'A'..'F': 
-      result = result shl 4 or (ord(s[i]) - ord('A') + 10)
-      inc(i)
-    of '\0': break
-    else: raise newException(EInvalidValue, "invalid integer: " & s)
-
-proc ParseFloat(s: string): float =
-  var L = parseutils.parseFloat(s, result, 0)
-  if L != s.len: raise newException(EInvalidValue, "invalid float: " & s)
-
-proc toOct*(x: BiggestInt, len: int): string =
-  ## converts `x` into its octal representation. The resulting string is
-  ## always `len` characters long. No leading ``0o`` prefix is generated.
-  var
-    mask: BiggestInt = 7
-    shift: BiggestInt = 0
-  assert(len > 0)
-  result = newString(len)
-  for j in countdown(len-1, 0):
-    result[j] = chr(int((x and mask) shr shift) + ord('0'))
-    shift = shift + 3
-    mask = mask shl 3
-
-proc toBin*(x: BiggestInt, len: int): string =
-  ## converts `x` into its binary representation. The resulting string is
-  ## always `len` characters long. No leading ``0b`` prefix is generated.
-  var
-    mask: BiggestInt = 1
-    shift: BiggestInt = 0
-  assert(len > 0)
-  result = newString(len)
-  for j in countdown(len-1, 0):
-    result[j] = chr(int((x and mask) shr shift) + ord('0'))
-    shift = shift + 1
-    mask = mask shl 1
-
-proc insertSep*(s: string, sep = '_', digits = 3): string = 
-  ## inserts the separator `sep` after `digits` digits from right to left.
-  ## Even though the algorithm works with any string `s`, it is only useful 
-  ## if `s` contains a number.
-  ## Example: ``insertSep("1000000") == "1_000_000"`` 
-  var L = (s.len-1) div digits + s.len
-  result = newString(L)
-  var j = 0
-  dec(L)
-  for i in countdown(len(s)-1, 0): 
-    if j == digits: 
-      result[L] = sep
-      dec(L)
-      j = 0
-    result[L] = s[i]
-    inc(j)
-    dec(L)
-
-proc escape*(s: string, prefix = "\"", suffix = "\""): string =
-  ## Escapes a string `s`. This does these operations (at the same time):
-  ## * replaces any ``\`` by ``\\``
-  ## * replaces any ``'`` by ``\'``
-  ## * replaces any ``"`` by ``\"``
-  ## * replaces any other character in the set ``{'\0'..'\31', '\128'..'\255'}``
-  ##   by ``\xHH`` where ``HH`` is its hexadecimal value.
-  ## The procedure has been designed so that its output is usable for many
-  ## different common syntaxes. The resulting string is prefixed with
-  ## ``prefix`` and suffixed with ``suffix``. Both may be empty strings.
-  result = prefix
-  for c in items(s):
-    case c
-    of '\0'..'\31', '\128'..'\255':
-      add(result, '\\')
-      add(result, toHex(ord(c), 2))
-    of '\\': add(result, "\\\\")
-    of '\'': add(result, "\\'")
-    of '\"': add(result, "\\\"")
-    else: add(result, c)
-  add(result, suffix)
-
-proc validEmailAddress*(s: string): bool = 
-  ## returns true if `s` seems to be a valid e-mail address. 
-  ## The checking also uses a domain list.
-  ## Note: This will be moved into another module soon.
-  const
-    chars = Letters + Digits + {'!','#','$','%','&',
-      '\'','*','+','/','=','?','^','_','`','{','}','|','~','-','.'}
-  var i = 0
-  if s[i] notin chars or s[i] == '.': return false
-  while s[i] in chars: 
-    if s[i] == '.' and s[i+1] == '.': return false
-    inc(i)
-  if s[i] != '@': return false
-  var j = len(s)-1
-  if s[j] notin letters: return false
-  while j >= i and s[j] in letters: dec(j)
-  inc(i) # skip '@'
-  while s[i] in {'0'..'9', 'a'..'z', '-', '.'}: inc(i) 
-  if s[i] != '\0': return false
-  
-  var x = copy(s, j+1)
-  if len(x) == 2 and x[0] in Letters and x[1] in Letters: return true
-  case toLower(x)
-  of "com", "org", "net", "gov", "mil", "biz", "info", "mobi", "name",
-     "aero", "jobs", "museum": return true
-  return false
-  
-proc validIdentifier*(s: string): bool = 
-  ## returns true if `s` is a valid identifier. A valid identifier starts
-  ## with a character of the set `IdentStartChars` and is followed by any
-  ## number of characters of the set `IdentChars`.
-  if s[0] in IdentStartChars:
-    for i in 1..s.len-1:
-      if s[i] notin IdentChars: return false
-    return true
-  
-proc editDistance*(a, b: string): int =
-  ## returns the edit distance between `a` and `b`. This uses the Levenshtein
-  ## distance algorithm with only a linear memory overhead. This implementation
-  ## is highly optimized!
-  var len1 = a.len
-  var len2 = b.len
-  if len1 > len2:
-    # make `b` the longer string
-    return editDistance(b, a)
-
-  # strip common prefix:
-  var s = 0
-  while a[s] == b[s] and a[s] != '\0':
-    inc(s)
-    dec(len1)
-    dec(len2)
-  # strip common suffix:
-  while len1 > 0 and len2 > 0 and a[s+len1-1] == b[s+len2-1]:
-    dec(len1)
-    dec(len2)
-  # trivial cases:
-  if len1 == 0: return len2
-  if len2 == 0: return len1
-
-  # another special case:
-  if len1 == 1:
-    for j in s..len2-1:
-      if a[s] == b[j]: return len2 - 1
-    return len2
-
-  inc(len1)
-  inc(len2)
-  var half = len1 shr 1
-  # initalize first row:
-  #var row = cast[ptr array[0..high(int) div 8, int]](alloc(len2 * sizeof(int)))
-  var row: seq[int]
-  newSeq(row, len2)
-  var e = s + len2 - 1 # end marker
-  for i in 1..len2 - half - 1: row[i] = i
-  row[0] = len1 - half - 1
-  for i in 1 .. len1 - 1:
-    var char1 = a[i + s - 1]
-    var char2p: int
-    var D, x: int
-    var p: int
-    if i >= len1 - half:
-      # skip the upper triangle:
-      var offset = i - len1 + half
-      char2p = offset
-      p = offset
-      var c3 = row[p] + ord(char1 != b[s + char2p])
-      inc(p)
-      inc(char2p)
-      x = row[p] + 1
-      D = x
-      if x > c3: x = c3
-      row[p] = x
-      inc(p)
-    else:
-      p = 1
-      char2p = 0
-      D = i
-      x = i
-    if i <= half + 1:
-      # skip the lower triangle:
-      e = len2 + i - half - 2
-    # main:
-    while p <= e:
-      dec(D)
-      var c3 = D + ord(char1 != b[char2p + s])
-      inc(char2p)
-      inc(x)
-      if x > c3: x = c3
-      D = row[p] + 1
-      if x > D: x = D
-      row[p] = x
-      inc(p)
-    # lower triangle sentinel:
-    if i <= half:
-      dec(D)
-      var c3 = D + ord(char1 != b[char2p + s])
-      inc(x)
-      if x > c3: x = c3
-      row[p] = x
-  result = row[e]
-  #dealloc(row)
-
-{.pop.}
+#

+#

+#            Nimrod's Runtime Library

+#        (c) Copyright 2010 Andreas Rumpf

+#

+#    See the file "copying.txt", included in this

+#    distribution, for details about the copyright.

+#

+

+## This module contains various string utility routines.

+## See the module `regexprs` for regular expression support.

+## See the module `pegs` for PEG support.

+

+import parseutils

+

+{.deadCodeElim: on.}

+

+{.push debugger:off .} # the user does not want to trace a part

+                       # of the standard library!

+

+type

+  TCharSet* = set[char] # for compatibility with Nim

+

+const

+  Whitespace* = {' ', '\t', '\v', '\r', '\l', '\f'}

+    ## All the characters that count as whitespace.

+    

+  Letters* = {'A'..'Z', 'a'..'z'}

+    ## the set of letters

+  

+  Digits* = {'0'..'9'}

+    ## the set of digits

+  

+  HexDigits* = {'0'..'9', 'A'..'F', 'a'..'f'}

+    ## the set of hexadecimal digits

+

+  IdentChars* = {'a'..'z', 'A'..'Z', '0'..'9', '_'}

+    ## the set of characters an identifier can consist of

+  

+  IdentStartChars* = {'a'..'z', 'A'..'Z', '_'}

+    ## the set of characters an identifier can start with

+

+proc `%` *(formatstr: string, a: openarray[string]): string {.noSideEffect.}

+  ## The `substitution`:idx: operator performs string substitutions in

+  ## `formatstr` and returns a modified `formatstr`. This is often called

+  ## `string interpolation`:idx:.

+  ##

+  ## This is best explained by an example:

+  ##

+  ## .. code-block:: nimrod

+  ##   "$1 eats $2." % ["The cat", "fish"]

+  ##

+  ## Results in:

+  ##

+  ## .. code-block:: nimrod

+  ##   "The cat eats fish."

+  ##

+  ## The substitution variables (the thing after the ``$``) are enumerated

+  ## from 1 to ``a.len``.

+  ## The notation ``$#`` can be used to refer to the next substitution variable:

+  ##

+  ## .. code-block:: nimrod

+  ##   "$# eats $#." % ["The cat", "fish"]

+  ##

+  ## Substitution variables can also be words (that is

+  ## ``[A-Za-z_]+[A-Za-z0-9_]*``) in which case the arguments in `a` with even

+  ## indices are keys and with odd indices are the corresponding values.

+  ## An example:

+  ##

+  ## .. code-block:: nimrod

+  ##   "$animal eats $food." % ["animal", "The cat", "food", "fish"]

+  ##

+  ## Results in:

+  ##

+  ## .. code-block:: nimrod

+  ##   "The cat eats fish."

+  ##

+  ## The variables are compared with `cmpIgnoreStyle`. `EInvalidValue` is

+  ## raised if an ill-formed format string has been passed to the `%` operator.

+

+proc `%` *(formatstr, a: string): string {.noSideEffect.}

+  ## This is the same as ``formatstr % [a]``.

+

+proc addf*(s: var string, formatstr: string, a: openarray[string])

+  ## The same as ``add(s, formatstr % a)``, but more efficient.

+

+proc strip*(s: string, leading = true, trailing = true): string {.noSideEffect.}

+  ## Strips whitespace from `s` and returns the resulting string.

+  ## If `leading` is true, leading whitespace is stripped.

+  ## If `trailing` is true, trailing whitespace is stripped.

+

+proc toLower*(s: string): string {.noSideEffect, procvar.}

+  ## Converts `s` into lower case. This works only for the letters A-Z.

+  ## See `unicode.toLower` for a version that works for any Unicode character.

+

+proc toLower*(c: Char): Char {.noSideEffect, procvar.}

+  ## Converts `c` into lower case. This works only for the letters A-Z.

+  ## See `unicode.toLower` for a version that works for any Unicode character.

+

+proc toUpper*(s: string): string {.noSideEffect, procvar.}

+  ## Converts `s` into upper case. This works only for the letters a-z.

+  ## See `unicode.toUpper` for a version that works for any Unicode character.

+

+proc toUpper*(c: Char): Char {.noSideEffect, procvar.}

+  ## Converts `c` into upper case. This works only for the letters a-z.

+  ## See `unicode.toUpper` for a version that works for any Unicode character.

+

+proc capitalize*(s: string): string {.noSideEffect, procvar.}

+  ## Converts the first character of `s` into upper case.

+  ## This works only for the letters a-z.

+

+proc normalize*(s: string): string {.noSideEffect, procvar.}

+  ## Normalizes the string `s`. That means to convert it to lower case and

+  ## remove any '_'. This is needed for Nimrod identifiers for example.

+

+proc find*(s, sub: string, start: int = 0): int {.noSideEffect.}

+  ## Searches for `sub` in `s` starting at position `start`. Searching is

+  ## case-sensitive. If `sub` is not in `s`, -1 is returned.

+

+proc find*(s: string, sub: char, start: int = 0): int {.noSideEffect.}

+  ## Searches for `sub` in `s` starting at position `start`. Searching is

+  ## case-sensitive. If `sub` is not in `s`, -1 is returned.

+

+proc find*(s: string, chars: set[char], start: int = 0): int {.noSideEffect.}

+  ## Searches for `chars` in `s` starting at position `start`. If `s` contains

+  ## none of the characters in `chars`, -1 is returned.

+

+proc replaceStr*(s, sub, by: string): string {.noSideEffect, deprecated.}

+  ## Replaces `sub` in `s` by the string `by`.

+  ## **Deprecated since version 0.8.0**: Use `replace` instead.

+

+proc replaceStr*(s: string, sub, by: char): string {.noSideEffect, deprecated.}

+  ## optimized version for characters.

+  ## **Deprecated since version 0.8.0**: Use `replace` instead.

+

+proc deleteStr*(s: var string, first, last: int) {.deprecated.}

+  ## Deletes in `s` the characters at position `first` .. `last`. This modifies

+  ## `s` itself, it does not return a copy.

+  ## **Deprecated since version 0.8.0**: Use `delete` instead.

+

+proc toOctal*(c: char): string

+  ## Converts a character `c` to its octal representation. The resulting

+  ## string may not have a leading zero. Its length is always exactly 3.

+

+iterator split*(s: string, seps: set[char] = Whitespace): string =

+  ## Splits the string `s` into substrings.

+  ##

+  ## Substrings are separated by a substring containing only `seps`.

+  ## Examples:

+  ##

+  ## .. code-block:: nimrod

+  ##   for word in split("  this is an  example  "):

+  ##     writeln(stdout, word)

+  ##

+  ## Results in:

+  ##

+  ## .. code-block:: nimrod

+  ##   "this"

+  ##   "is"

+  ##   "an"

+  ##   "example"

+  ##

+  ##   for word in split(";;this;is;an;;example;;;", {';'}):

+  ##     writeln(stdout, word)

+  ##

+  ## produces the same output.

+  var last = 0

+  assert(not ('\0' in seps))

+  while last < len(s):

+    while s[last] in seps: inc(last)

+    var first = last

+    while last < len(s) and s[last] not_in seps: inc(last) # BUGFIX!

+    if first <= last-1:

+      yield copy(s, first, last-1)

+

+iterator split*(s: string, sep: char): string =

+  ## Splits the string `s` into substrings.

+  ##

+  ## Substrings are separated by the character `sep`.

+  ## Example:

+  ##

+  ## .. code-block:: nimrod

+  ##   for word in split(";;this;is;an;;example;;;", ';'):

+  ##     writeln(stdout, word)

+  ##

+  ## Results in:

+  ##

+  ## .. code-block:: nimrod

+  ##   ""

+  ##   ""

+  ##   "this"

+  ##   "is"

+  ##   "an"

+  ##   ""

+  ##   "example"

+  ##   ""

+  ##   ""

+  ##   ""

+  ##

+  var last = 0

+  assert('\0' != sep)

+  if len(s) > 0:

+    # `<=` is correct here for the edge cases!

+    while last <= len(s):

+      var first = last

+      while last < len(s) and s[last] != sep: inc(last)

+      yield copy(s, first, last-1)

+      inc(last)

+

+iterator splitLines*(s: string): string =

+  ## Splits the string `s` into its containing lines. Every newline

+  ## combination (CR, LF, CR-LF) is supported. The result strings contain

+  ## no trailing ``\n``.

+  ##

+  ## Example:

+  ##

+  ## .. code-block:: nimrod

+  ##   for line in lines("\nthis\nis\nan\n\nexample\n"):

+  ##     writeln(stdout, line)

+  ##

+  ## Results in:

+  ##

+  ## .. code-block:: nimrod

+  ##   ""

+  ##   "this"

+  ##   "is"

+  ##   "an"

+  ##   ""

+  ##   "example"

+  ##   ""

+  var first = 0

+  var last = 0

+  while true:

+    while s[last] notin {'\0', '\c', '\l'}: inc(last)

+    yield copy(s, first, last-1)

+    # skip newlines:

+    if s[last] == '\l': inc(last)

+    elif s[last] == '\c':

+      inc(last)

+      if s[last] == '\l': inc(last)

+    else: break # was '\0'

+    first = last

+

+proc splitLinesSeq*(s: string): seq[string] {.noSideEffect, deprecated.} =

+  ## The same as `splitLines`, but is a proc that returns a sequence 

+  ## of substrings.

+  ## **Deprecated since version 0.8.0**: Use `splitLines` instead.

+  accumulateResult(splitLines(s))

+

+proc splitSeq*(s: string, seps: set[char] = Whitespace): seq[string] {.

+  noSideEffect, deprecated.} =

+  ## The same as `split`, but is a proc that returns a sequence of substrings.

+  ## **Deprecated since version 0.8.0**: Use `split` instead.

+  accumulateResult(split(s, seps))

+

+proc splitSeq*(s: string, sep: char): seq[string] {.noSideEffect, 

+                                                    deprecated.} =

+  ## The same as `split`, but is a proc that returns a sequence of substrings.

+  ## **Deprecated since version 0.8.0**: Use `split` instead.

+  accumulateResult(split(s, sep))

+

+proc splitLines*(s: string): seq[string] {.noSideEffect.} =

+  ## The same as the `splitLines` iterator, but is a proc that returns a 

+  ## sequence of substrings.

+  accumulateResult(splitLines(s))

+

+proc split*(s: string, seps: set[char] = Whitespace): seq[string] {.

+  noSideEffect.} =

+  ## The same as the `split` iterator, but is a proc that returns a

+  ## sequence of substrings.

+  accumulateResult(split(s, seps))

+

+proc split*(s: string, sep: char): seq[string] {.noSideEffect.} =

+  ## The same as the `split` iterator, but is a proc that returns a sequence

+  ## of substrings.

+  accumulateResult(split(s, sep))

+

+proc cmpIgnoreCase*(a, b: string): int {.noSideEffect.}

+  ## Compares two strings in a case insensitive manner. Returns:

+  ##

+  ## | 0 iff a == b

+  ## | < 0 iff a < b

+  ## | > 0 iff a > b

+

+proc cmpIgnoreStyle*(a, b: string): int {.noSideEffect.}

+  ## Compares two strings normalized (i.e. case and

+  ## underscores do not matter). Returns:

+  ##

+  ## | 0 iff a == b

+  ## | < 0 iff a < b

+  ## | > 0 iff a > b

+

+proc contains*(s: string, c: char): bool {.noSideEffect.}

+  ## Same as ``find(s, c) >= 0``.

+

+proc contains*(s, sub: string): bool {.noSideEffect.}

+  ## Same as ``find(s, sub) >= 0``.

+

+proc contains*(s: string, chars: set[char]): bool {.noSideEffect.}

+  ## Same as ``find(s, chars) >= 0``.

+

+proc toHex*(x: BiggestInt, len: int): string {.noSideEffect.}

+  ## Converts `x` to its hexadecimal representation. The resulting string

+  ## will be exactly `len` characters long. No prefix like ``0x``

+  ## is generated. `x` is treated as an unsigned value.

+

+proc intToStr*(x: int, minchars: int = 1): string

+  ## Converts `x` to its decimal representation. The resulting string

+  ## will be minimally `minchars` characters long. This is achieved by

+  ## adding leading zeros.

+

+proc ParseInt*(s: string): int {.noSideEffect, procvar.}

+  ## Parses a decimal integer value contained in `s`. If `s` is not

+  ## a valid integer, `EInvalidValue` is raised.

+

+proc ParseBiggestInt*(s: string): biggestInt {.noSideEffect, procvar.}

+  ## Parses a decimal integer value contained in `s`. If `s` is not

+  ## a valid integer, `EInvalidValue` is raised.

+

+proc ParseFloat*(s: string): float {.noSideEffect, procvar.}

+  ## Parses a decimal floating point value contained in `s`. If `s` is not

+  ## a valid floating point number, `EInvalidValue` is raised. ``NAN``,

+  ## ``INF``, ``-INF`` are also supported (case insensitive comparison).

+

+proc ParseHexInt*(s: string): int {.noSideEffect, procvar.} 

+  ## Parses a hexadecimal integer value contained in `s`. If `s` is not

+  ## a valid integer, `EInvalidValue` is raised. `s` can have one of the

+  ## following optional prefixes: ``0x``, ``0X``, ``#``. 

+  ## Underscores within `s` are ignored.

+

+# the stringify and format operators:

+proc toString*[Ty](x: Ty): string {.deprecated.}

+  ## This generic proc is the same as the stringify operator `$`.

+  ##

+  ## **Deprecated since version 0.8.2:** Use `$` instead.

+

+proc repeatChar*(count: int, c: Char = ' '): string

+  ## Returns a string of length `count` consisting only of

+  ## the character `c`.

+

+proc startsWith*(s, prefix: string): bool {.noSideEffect.}

+  ## Returns true iff ``s`` starts with ``prefix``.

+  ## If ``prefix == ""`` true is returned.

+

+proc endsWith*(s, suffix: string): bool {.noSideEffect.}

+  ## Returns true iff ``s`` ends with ``suffix``.

+  ## If ``suffix == ""`` true is returned.

+

+proc addSep*(dest: var string, sep = ", ", startLen = 0) {.noSideEffect,

+                                                           inline.} = 

+  ## A shorthand for: 

+  ## 

+  ## .. code-block:: nimrod

+  ##   if dest.len > startLen: add(dest, sep)

+  ## 

+  ## This is often useful for generating some code where the items need to

+  ## be *separated* by `sep`. `sep` is only added if `dest` is longer than

+  ## `startLen`. The following example creates a string describing

+  ## an array of integers:  

+  ## 

+  ## .. code-block:: nimrod

+  ##   var arr = "["

+  ##   for x in items([2, 3, 5, 7, 11]):

+  ##     addSep(arr, startLen=len("["))

+  ##     add(arr, $x)

+  ##   add(arr, "]")

+  if dest.len > startLen: add(dest, sep)

+

+proc allCharsInSet*(s: string, theSet: TCharSet): bool =

+  ## returns true iff each character of `s` is in the set `theSet`.

+  for c in items(s):

+    if c notin theSet: return false

+  return true

+

+proc quoteIfContainsWhite*(s: string): string =

+  ## returns ``'"' & s & '"'`` if `s` contains a space and does not

+  ## start with a quote, else returns `s`

+  if find(s, {' ', '\t'}) >= 0 and s[0] != '"':

+    result = '"' & s & '"'

+  else:

+    result = s

+

+proc startsWith(s, prefix: string): bool =

+  var i = 0

+  while true:

+    if prefix[i] == '\0': return true

+    if s[i] != prefix[i]: return false

+    inc(i)

+

+proc endsWith(s, suffix: string): bool =

+  var

+    i = 0

+    j = len(s) - len(suffix)

+  while true:

+    if suffix[i] == '\0': return true

+    if s[i+j] != suffix[i]: return false

+    inc(i)

+

+when false:

+  proc abbrev(s: string, possibilities: openarray[string]): int = 

+    ## returns the index of the first item in `possibilities` if not

+    ## ambiguous; -1 if no item has been found; -2 if multiple items

+    ## match.

+    result = -1 # none found

+    for i in 0..possibilities.len-1: 

+      if possibilities[i].startsWith(s): 

+        if result >= 0: return -2 # ambiguous

+        result = i

+

+proc repeatChar(count: int, c: Char = ' '): string =

+  result = newString(count)

+  for i in 0..count-1:

+    result[i] = c

+

+proc intToStr(x: int, minchars: int = 1): string =

+  result = $abs(x)

+  for i in 1 .. minchars - len(result):

+    result = '0' & result

+  if x < 0:

+    result = '-' & result

+

+proc toString[Ty](x: Ty): string = return $x

+

+proc toOctal(c: char): string =

+  result = newString(3)

+  var val = ord(c)

+  for i in countdown(2, 0):

+    result[i] = Chr(val mod 8 + ord('0'))

+    val = val div 8

+

+proc `%`(formatstr: string, a: string): string =

+  return formatstr % [a]

+

+proc findNormalized(x: string, inArray: openarray[string]): int =

+  var i = 0

+  while i < high(inArray):

+    if cmpIgnoreStyle(x, inArray[i]) == 0: return i

+    inc(i, 2) # incrementing by 1 would probably result in a

+              # security hole...

+  return -1

+

+proc addf(s: var string, formatstr: string, a: openarray[string]) =

+  const PatternChars = {'a'..'z', 'A'..'Z', '0'..'9', '\128'..'\255', '_'}

+  var i = 0

+  var num = 0

+  while i < len(formatstr):

+    if formatstr[i] == '$':

+      case formatstr[i+1] # again we use the fact that strings

+                          # are zero-terminated here

+      of '#':

+        add s, a[num]

+        inc i, 2

+        inc num

+      of '$':

+        add s, '$'

+        inc(i, 2)

+      of '1'..'9':

+        var j = 0

+        inc(i) # skip $

+        while formatstr[i] in Digits:

+          j = j * 10 + ord(formatstr[i]) - ord('0')

+          inc(i)

+        num = j

+        add s, a[j - 1]

+      of '{':

+        var j = i+1

+        while formatstr[j] notin {'\0', '}'}: inc(j)

+        var x = findNormalized(copy(formatstr, i+2, j-1), a)

+        if x >= 0 and x < high(a): add s, a[x+1]

+        else: raise newException(EInvalidValue, "invalid format string")

+        i = j+1

+      of 'a'..'z', 'A'..'Z', '\128'..'\255', '_':

+        var j = i+1

+        while formatstr[j] in PatternChars: inc(j)

+        var x = findNormalized(copy(formatstr, i+1, j-1), a)

+        if x >= 0 and x < high(a): add s, a[x+1]

+        else: raise newException(EInvalidValue, "invalid format string")

+        i = j

+      else: raise newException(EInvalidValue, "invalid format string")

+    else:

+      add s, formatstr[i]

+      inc(i)

+  

+proc `%`(formatstr: string, a: openarray[string]): string =

+  result = ""

+  addf(result, formatstr, a)

+

+proc cmpIgnoreCase(a, b: string): int =

+  var i = 0

+  while i < a.len and i < b.len:

+    result = ord(toLower(a[i])) - ord(toLower(b[i]))

+    if result != 0: return

+    inc(i)

+  result = a.len - b.len

+

+

+{.push checks: off, line_trace: off .} # this is a hot-spot in the compiler!

+                                       # thus we compile without checks here

+

+proc cmpIgnoreStyle(a, b: string): int =

+  var i = 0

+  var j = 0

+  while True:

+    while a[i] == '_': inc(i)

+    while b[j] == '_': inc(j) # BUGFIX: typo

+    var aa = toLower(a[i])

+    var bb = toLower(b[j])

+    result = ord(aa) - ord(bb)

+    if result != 0 or aa == '\0': break

+    inc(i)

+    inc(j)

+

+{.pop.}

+

+# ---------------------------------------------------------------------------

+

+proc join*(a: openArray[string], sep: string): string =

+  ## concatenates all strings in `a` separating them with `sep`.

+  if len(a) > 0:

+    var L = sep.len * (a.len-1)

+    for i in 0..high(a): inc(L, a[i].len)

+    result = newString(L)

+    setLen(result, 0)

+    add(result, a[0])

+    for i in 1..high(a):

+      add(result, sep)

+      add(result, a[i])

+  else:

+    result = ""

+  

+proc join*(a: openArray[string]): string =

+  ## concatenates all strings in `a`.

+  if len(a) > 0:

+    var L = 0

+    for i in 0..high(a): inc(L, a[i].len)

+    result = newString(L)

+    setLen(result, 0)

+    for i in 0..high(a): add(result, a[i])

+  else:

+    result = ""

+

+proc strip(s: string, leading = true, trailing = true): string =

+  const

+    chars: set[Char] = Whitespace

+  var

+    first = 0

+    last = len(s)-1

+  if leading: 

+    while s[first] in chars: inc(first)

+  if trailing:

+    while last >= 0 and s[last] in chars: dec(last)

+  result = copy(s, first, last)

+

+proc toLower(c: Char): Char =

+  if c in {'A'..'Z'}:

+    result = chr(ord(c) + (ord('a') - ord('A')))

+  else:

+    result = c

+

+proc toLower(s: string): string =

+  result = newString(len(s))

+  for i in 0..len(s) - 1:

+    result[i] = toLower(s[i])

+

+proc toUpper(c: Char): Char =

+  if c in {'a'..'z'}:

+    result = Chr(Ord(c) - (Ord('a') - Ord('A')))

+  else:

+    result = c

+

+proc toUpper(s: string): string =

+  result = newString(len(s))

+  for i in 0..len(s) - 1:

+    result[i] = toUpper(s[i])

+

+proc capitalize(s: string): string =

+  result = toUpper(s[0]) & copy(s, 1)

+

+proc normalize(s: string): string =

+  result = ""

+  for i in 0..len(s) - 1:

+    if s[i] in {'A'..'Z'}:

+      add result, Chr(Ord(s[i]) + (Ord('a') - Ord('A')))

+    elif s[i] != '_':

+      add result, s[i]

+

+type

+  TSkipTable = array[Char, int]

+

+proc preprocessSub(sub: string, a: var TSkipTable) =

+  var m = len(sub)

+  for i in 0..0xff: a[chr(i)] = m+1

+  for i in 0..m-1: a[sub[i]] = m-i

+

+proc findAux(s, sub: string, start: int, a: TSkipTable): int =

+  # fast "quick search" algorithm:

+  var

+    m = len(sub)

+    n = len(s)

+  # search:

+  var j = start

+  while j <= n - m:

+    block match:

+      for k in 0..m-1:

+        if sub[k] != s[k+j]: break match

+      return j

+    inc(j, a[s[j+m]])

+  return -1

+

+proc find(s, sub: string, start: int = 0): int =

+  var a: TSkipTable

+  preprocessSub(sub, a)

+  result = findAux(s, sub, start, a)

+

+proc find(s: string, sub: char, start: int = 0): int =

+  for i in start..len(s)-1:

+    if sub == s[i]: return i

+  return -1

+ 

+proc find(s: string, chars: set[char], start: int = 0): int =

+  for i in start..s.len-1:

+    if s[i] in chars: return i

+  return -1 

+

+proc contains(s: string, chars: set[char]): bool =

+  return find(s, chars) >= 0

+

+proc contains(s: string, c: char): bool =

+  return find(s, c) >= 0

+

+proc contains(s, sub: string): bool =

+  return find(s, sub) >= 0

+

+proc replace*(s, sub, by: string): string =

+  ## Replaces `sub` in `s` by the string `by`.

+  var a: TSkipTable

+  result = ""

+  preprocessSub(sub, a)

+  var i = 0

+  while true:

+    var j = findAux(s, sub, i, a)

+    if j < 0: break

+    add result, copy(s, i, j - 1)

+    add result, by

+    i = j + len(sub)

+  # copy the rest:

+  add result, copy(s, i)

+

+proc replace*(s: string, sub, by: char): string =

+  ## optimized version for characters.

+  result = newString(s.len)

+  var i = 0

+  while i < s.len:

+    if s[i] == sub: result[i] = by

+    else: result[i] = s[i]

+    inc(i)

+

+proc delete*(s: var string, first, last: int) =

+  ## Deletes in `s` the characters at position `first`..`last`. This modifies

+  ## `s` itself, it does not return a copy.

+  var i = first

+  var j = last+1

+  var newLen = len(s)-j+i

+  while i < newLen:

+    s[i] = s[j]

+    inc(i)

+    inc(j)

+  setlen(s, newLen)

+

+proc replaceStr(s, sub, by: string): string = return replace(s, sub, by)

+proc replaceStr(s: string, sub, by: char): string = return replace(s, sub, by)

+proc deleteStr(s: var string, first, last: int) = delete(s, first, last)

+

+# parsing numbers:

+

+proc toHex(x: BiggestInt, len: int): string =

+  const

+    HexChars = "0123456789ABCDEF"

+  var

+    shift: BiggestInt

+  result = newString(len)

+  for j in countdown(len-1, 0):

+    result[j] = HexChars[toU32(x shr shift) and 0xF'i32]

+    shift = shift + 4

+

+proc parseInt(s: string): int =

+  var L = parseutils.parseInt(s, result, 0)

+  if L != s.len: raise newException(EInvalidValue, "invalid integer: " & s)

+

+proc ParseBiggestInt(s: string): biggestInt =

+  var L = parseutils.parseBiggestInt(s, result, 0)

+  if L != s.len: raise newException(EInvalidValue, "invalid integer: " & s)

+

+proc ParseOctInt*(s: string): int =

+  var i = 0

+  if s[i] == '0' and (s[i+1] == 'o' or s[i+1] == 'O'): inc(i, 2)

+  while true: 

+    case s[i]

+    of '_': inc(i)

+    of '0'..'7': 

+      result = result shl 3 or (ord(s[i]) - ord('0'))

+      inc(i)

+    of '\0': break

+    else: raise newException(EInvalidValue, "invalid integer: " & s)

+

+proc ParseHexInt(s: string): int = 

+  var i = 0

+  if s[i] == '0' and (s[i+1] == 'x' or s[i+1] == 'X'): inc(i, 2)

+  elif s[i] == '#': inc(i)

+  while true: 

+    case s[i]

+    of '_': inc(i)

+    of '0'..'9': 

+      result = result shl 4 or (ord(s[i]) - ord('0'))

+      inc(i)

+    of 'a'..'f': 

+      result = result shl 4 or (ord(s[i]) - ord('a') + 10)

+      inc(i)

+    of 'A'..'F': 

+      result = result shl 4 or (ord(s[i]) - ord('A') + 10)

+      inc(i)

+    of '\0': break

+    else: raise newException(EInvalidValue, "invalid integer: " & s)

+

+proc ParseFloat(s: string): float =

+  var L = parseutils.parseFloat(s, result, 0)

+  if L != s.len: raise newException(EInvalidValue, "invalid float: " & s)

+

+proc toOct*(x: BiggestInt, len: int): string =

+  ## converts `x` into its octal representation. The resulting string is

+  ## always `len` characters long. No leading ``0o`` prefix is generated.

+  var

+    mask: BiggestInt = 7

+    shift: BiggestInt = 0

+  assert(len > 0)

+  result = newString(len)

+  for j in countdown(len-1, 0):

+    result[j] = chr(int((x and mask) shr shift) + ord('0'))

+    shift = shift + 3

+    mask = mask shl 3

+

+proc toBin*(x: BiggestInt, len: int): string =

+  ## converts `x` into its binary representation. The resulting string is

+  ## always `len` characters long. No leading ``0b`` prefix is generated.

+  var

+    mask: BiggestInt = 1

+    shift: BiggestInt = 0

+  assert(len > 0)

+  result = newString(len)

+  for j in countdown(len-1, 0):

+    result[j] = chr(int((x and mask) shr shift) + ord('0'))

+    shift = shift + 1

+    mask = mask shl 1

+

+proc insertSep*(s: string, sep = '_', digits = 3): string = 

+  ## inserts the separator `sep` after `digits` digits from right to left.

+  ## Even though the algorithm works with any string `s`, it is only useful 

+  ## if `s` contains a number.

+  ## Example: ``insertSep("1000000") == "1_000_000"`` 

+  var L = (s.len-1) div digits + s.len

+  result = newString(L)

+  var j = 0

+  dec(L)

+  for i in countdown(len(s)-1, 0): 

+    if j == digits: 

+      result[L] = sep

+      dec(L)

+      j = 0

+    result[L] = s[i]

+    inc(j)

+    dec(L)

+

+proc escape*(s: string, prefix = "\"", suffix = "\""): string =

+  ## Escapes a string `s`. This does these operations (at the same time):

+  ## * replaces any ``\`` by ``\\``

+  ## * replaces any ``'`` by ``\'``

+  ## * replaces any ``"`` by ``\"``

+  ## * replaces any other character in the set ``{'\0'..'\31', '\128'..'\255'}``

+  ##   by ``\xHH`` where ``HH`` is its hexadecimal value.

+  ## The procedure has been designed so that its output is usable for many

+  ## different common syntaxes. The resulting string is prefixed with

+  ## ``prefix`` and suffixed with ``suffix``. Both may be empty strings.

+  result = prefix

+  for c in items(s):

+    case c

+    of '\0'..'\31', '\128'..'\255':

+      add(result, '\\')

+      add(result, toHex(ord(c), 2))

+    of '\\': add(result, "\\\\")

+    of '\'': add(result, "\\'")

+    of '\"': add(result, "\\\"")

+    else: add(result, c)

+  add(result, suffix)

+

+proc validEmailAddress*(s: string): bool = 

+  ## returns true if `s` seems to be a valid e-mail address. 

+  ## The checking also uses a domain list.

+  ## Note: This will be moved into another module soon.

+  const

+    chars = Letters + Digits + {'!','#','$','%','&',

+      '\'','*','+','/','=','?','^','_','`','{','}','|','~','-','.'}

+  var i = 0

+  if s[i] notin chars or s[i] == '.': return false

+  while s[i] in chars: 

+    if s[i] == '.' and s[i+1] == '.': return false

+    inc(i)

+  if s[i] != '@': return false

+  var j = len(s)-1

+  if s[j] notin letters: return false

+  while j >= i and s[j] in letters: dec(j)

+  inc(i) # skip '@'

+  while s[i] in {'0'..'9', 'a'..'z', '-', '.'}: inc(i) 

+  if s[i] != '\0': return false

+  

+  var x = copy(s, j+1)

+  if len(x) == 2 and x[0] in Letters and x[1] in Letters: return true

+  case toLower(x)

+  of "com", "org", "net", "gov", "mil", "biz", "info", "mobi", "name",

+     "aero", "jobs", "museum": return true

+  return false

+  

+proc validIdentifier*(s: string): bool = 

+  ## returns true if `s` is a valid identifier. A valid identifier starts

+  ## with a character of the set `IdentStartChars` and is followed by any

+  ## number of characters of the set `IdentChars`.

+  if s[0] in IdentStartChars:

+    for i in 1..s.len-1:

+      if s[i] notin IdentChars: return false

+    return true

+  

+proc editDistance*(a, b: string): int =

+  ## returns the edit distance between `a` and `b`. This uses the Levenshtein

+  ## distance algorithm with only a linear memory overhead. This implementation

+  ## is highly optimized!

+  var len1 = a.len

+  var len2 = b.len

+  if len1 > len2:

+    # make `b` the longer string

+    return editDistance(b, a)

+

+  # strip common prefix:

+  var s = 0

+  while a[s] == b[s] and a[s] != '\0':

+    inc(s)

+    dec(len1)

+    dec(len2)

+  # strip common suffix:

+  while len1 > 0 and len2 > 0 and a[s+len1-1] == b[s+len2-1]:

+    dec(len1)

+    dec(len2)

+  # trivial cases:

+  if len1 == 0: return len2

+  if len2 == 0: return len1

+

+  # another special case:

+  if len1 == 1:

+    for j in s..len2-1:

+      if a[s] == b[j]: return len2 - 1

+    return len2

+

+  inc(len1)

+  inc(len2)

+  var half = len1 shr 1

+  # initalize first row:

+  #var row = cast[ptr array[0..high(int) div 8, int]](alloc(len2 * sizeof(int)))

+  var row: seq[int]

+  newSeq(row, len2)

+  var e = s + len2 - 1 # end marker

+  for i in 1..len2 - half - 1: row[i] = i

+  row[0] = len1 - half - 1

+  for i in 1 .. len1 - 1:

+    var char1 = a[i + s - 1]

+    var char2p: int

+    var D, x: int

+    var p: int

+    if i >= len1 - half:

+      # skip the upper triangle:

+      var offset = i - len1 + half

+      char2p = offset

+      p = offset

+      var c3 = row[p] + ord(char1 != b[s + char2p])

+      inc(p)

+      inc(char2p)

+      x = row[p] + 1

+      D = x

+      if x > c3: x = c3

+      row[p] = x

+      inc(p)

+    else:

+      p = 1

+      char2p = 0

+      D = i

+      x = i

+    if i <= half + 1:

+      # skip the lower triangle:

+      e = len2 + i - half - 2

+    # main:

+    while p <= e:

+      dec(D)

+      var c3 = D + ord(char1 != b[char2p + s])

+      inc(char2p)

+      inc(x)

+      if x > c3: x = c3

+      D = row[p] + 1

+      if x > D: x = D

+      row[p] = x

+      inc(p)

+    # lower triangle sentinel:

+    if i <= half:

+      dec(D)

+      var c3 = D + ord(char1 != b[char2p + s])

+      inc(x)

+      if x > c3: x = c3

+      row[p] = x

+  result = row[e]

+  #dealloc(row)

+

+{.pop.}

diff --git a/lib/pure/variants.nim b/lib/pure/variants.nim
index 0b4f078e7..620cd7b99 100755
--- a/lib/pure/variants.nim
+++ b/lib/pure/variants.nim
@@ -9,12 +9,12 @@
 
 ## This module implements Nimrod's support for the ``variant`` datatype.
 ## `TVariant` shows how the flexibility of dynamic typing is achieved
-## within a static type system. 
+## within a static type system.
 
 type
   TVarType* = enum
     vtNone,
-    vtBool, 
+    vtBool,
     vtChar,
     vtEnum,
     vtInt,
@@ -31,7 +31,7 @@ type
     of vtString: vstring: string
     of vtSet, vtSeq: q: seq[TVariant]
     of vtDict: d: seq[tuple[key, val: TVariant]]
-    
+
 iterator objectFields*[T](x: T, skipInherited: bool): tuple[
   key: string, val: TVariant] {.magic: "ObjectFields"}
 
@@ -74,10 +74,10 @@ proc `?`* [T: object](x: T): TVariant {.magic: "ToVariant".}
 
 proc `><`*[T](v: TVariant, typ: T): T {.magic: "FromVariant".}
 
-?[?5, ?67, ?"hallo"]
+?[?5, ?67, ?"hello"]
 myVar?int
 
-  
+
 proc `==`* (x, y: TVariant): bool =
   if x.vtype == y.vtype:
     case x.vtype
@@ -139,7 +139,7 @@ proc `[]=`* (a, b, c: TVariant) =
       a.d[b.vint].val = c
     variantError()
   else: variantError()
-  
+
 proc `[]`* (a: TVariant, b: int): TVariant {.inline} = return a[?b]
 proc `[]`* (a: TVariant, b: string): TVariant {.inline} = return a[?b]
 proc `[]=`* (a: TVariant, b: int, c: TVariant) {.inline} = a[?b] = c
@@ -154,9 +154,9 @@ proc `+`* (x, y: TVariant): TVariant =
     else:
       case y.vtype
       of vtBool, vtChar, vtEnum, vtInt:
-        
-    
-    
+
+
+
     vint: int64
   of vtFloat: vfloat: float64
   of vtString: vstring: string
@@ -171,11 +171,11 @@ proc `mod`* (x, y: TVariant): TVariant
 proc `&`* (x, y: TVariant): TVariant
 proc `$`* (x: TVariant): string =
   # uses JS notation
-  
+
 proc parseVariant*(s: string): TVariant
 proc `<`* (x, y: TVariant): bool
 proc `<=`* (x, y: TVariant): bool
 
 proc hash*(x: TVariant): int =
-  
+
 
diff --git a/lib/system.nim b/lib/system.nim
index b34adf62a..ddbf95344 100755..100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -10,7 +10,7 @@
 ## The compiler depends on the System module to work properly and the System
 ## module depends on the compiler. Most of the routines listed here use
 ## special compiler magic.
-## Each module implicitly imports the System module; it may not be listed
+## Each module implicitly imports the System module; it must not be listed
 ## explicitly. Because of this there cannot be a user-defined module named
 ## ``system``.
 
@@ -45,7 +45,7 @@ type
                                 ## a type description (for templates)
 
 proc defined*[T](x: T): bool {.magic: "Defined", noSideEffect.}
-  ## Special comile-time procedure that checks whether `x` is
+  ## Special compile-time procedure that checks whether `x` is
   ## defined. `x` has to be an identifier or a qualified identifier.
   ## This can be used to check whether a library provides a certain
   ## feature or not:
@@ -57,7 +57,7 @@ proc defined*[T](x: T): bool {.magic: "Defined", noSideEffect.}
 
 proc definedInScope*[T](x: T): bool {.
   magic: "DefinedInScope", noSideEffect.}
-  ## Special comile-time procedure that checks whether `x` is
+  ## Special compile-time procedure that checks whether `x` is
   ## defined in the current scope. `x` has to be an identifier.
 
 proc `not` *(x: bool): bool {.magic: "Not", noSideEffect.}
@@ -65,11 +65,11 @@ proc `not` *(x: bool): bool {.magic: "Not", noSideEffect.}
 
 proc `and`*(x, y: bool): bool {.magic: "And", noSideEffect.}
   ## Boolean ``and``; returns true iff ``x == y == true``.
-  ## Evaluation is short-circuited: This means that if ``x`` is false,
+  ## Evaluation is short-circuited: this means that if ``x`` is false,
   ## ``y`` will not even be evaluated.
 proc `or`*(x, y: bool): bool {.magic: "Or", noSideEffect.}
   ## Boolean ``or``; returns true iff ``not (not x and not y)``.
-  ## Evaluation is short-circuited: This means that if ``x`` is true,
+  ## Evaluation is short-circuited: this means that if ``x`` is true,
   ## ``y`` will not even be evaluated.
 proc `xor`*(x, y: bool): bool {.magic: "Xor", noSideEffect.}
   ## Boolean `exclusive or`; returns true iff ``x != y``.
@@ -165,7 +165,7 @@ type
   EOS* = object of ESystem    ## raised if an operating system service failed.
   EInvalidLibrary* = object of EOS ## raised if a dynamic library
                                    ## could not be loaded.
-  ERessourceExhausted* = object of ESystem ## raised if a ressource request
+  EResourceExhausted* = object of ESystem ## raised if a resource request
                                            ## could not be fullfilled.
   EArithmetic* = object of ESynch       ## raised if any kind of arithmetic
                                         ## error occured.
@@ -962,7 +962,7 @@ proc `$` *(x: Cstring): string {.magic: "CStrToStr", noSideEffect.}
 proc `$` *(x: string): string {.magic: "StrToStr", noSideEffect.}
   ## The stingify operator for a string argument. Returns `x`
   ## as it is. This operator is useful for generic code, so
-  ## that ``$expr`` also works if ``expr`` already is a string.
+  ## that ``$expr`` also works if ``expr`` is already a string.
 
 proc `$` *[T](x: ordinal[T]): string {.magic: "EnumToStr", noSideEffect.}
   ## The stingify operator for an enumeration argument. This works for
@@ -1191,6 +1191,11 @@ proc each*[T, S](data: openArray[T], op: proc (x: T): S): seq[S] {.
   newSeq(result, data.len)
   for i in 0..data.len-1: result[i] = op(data[i])
 
+proc each*[T](data: openArray[T], op: proc (x: T)) =
+  ## The well-known ``map`` operation from functional programming. Applies
+  ## `op` to every item in `data`.
+  for i in 0..data.len-1: op(data[i])
+
 
 # ----------------- FPU ------------------------------------------------------
 
diff --git a/lib/system/sysstr.nim b/lib/system/sysstr.nim
index 808941c06..20a49093b 100755
--- a/lib/system/sysstr.nim
+++ b/lib/system/sysstr.nim
@@ -104,7 +104,7 @@ proc addChar(s: NimString, c: char): NimString {.compilerProc.} =
 
 # These routines should be used like following:
 #   <Nimrod code>
-#   s &= "hallo " & name & " how do you feel?"
+#   s &= "Hello " & name & ", how do you feel?"
 #
 #   <generated C code>
 #   {
@@ -115,7 +115,7 @@ proc addChar(s: NimString, c: char): NimString {.compilerProc.} =
 #   }
 #
 #   <Nimrod code>
-#   s = "hallo " & name & " how do you feel?"
+#   s = "Hello " & name & ", how do you feel?"
 #
 #   <generated C code>
 #   {
@@ -180,8 +180,8 @@ proc incrSeq(seq: PGenericSeq, elemSize: int): PGenericSeq {.compilerProc.} =
       result = cast[PGenericSeq](newSeq(extGetCellType(seq), s))
       genericSeqAssign(result, seq, XXX)
       #copyMem(result, seq, seq.len * elemSize + GenericSeqSize)
-    inc(result.len)  
-  else:  
+    inc(result.len)
+  else:
     result = seq
     if result.len >= result.space:
       result.space = resize(result.space)
@@ -214,7 +214,7 @@ proc setLengthSeq(seq: PGenericSeq, elemSize, newLen: int): PGenericSeq {.
       # we need to decref here, otherwise the GC leaks!
       when not defined(boehmGC) and not defined(nogc):
         for i in newLen..result.len-1:
-          forAllChildrenAux(cast[pointer](cast[TAddress](result) +% 
+          forAllChildrenAux(cast[pointer](cast[TAddress](result) +%
                             GenericSeqSize +% (i*%elemSize)),
                             extGetCellType(result).base, waZctDecRef)
       # and set the memory to nil:
diff --git a/lib/windows/psapi.nim b/lib/windows/psapi.nim
new file mode 100644
index 000000000..da4ac31f0
--- /dev/null
+++ b/lib/windows/psapi.nim
@@ -0,0 +1,197 @@
+#
+#
+#            Nimrod's Runtime Library
+#        (c) Copyright 2009 Andreas Rumpf
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+#       PSAPI interface unit
+
+# Contains the definitions for the APIs provided by PSAPI.DLL
+
+import                        # Data structure templates
+  Windows
+
+proc EnumProcesses*(lpidProcess: ptr DWORD, cb: DWORD, cbNeeded: ptr DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "EnumProcesses".}
+proc EnumProcessModules*(hProcess: HANDLE, lphModule: ptr HMODULE, cb: DWORD, lpcbNeeded: LPDWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "EnumProcessModules".}
+
+proc GetModuleBaseNameA*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetModuleBaseNameA".}
+proc GetModuleBaseNameW*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetModuleBaseNameW".}
+when defined(winUnicode):
+  proc GetModuleBaseName*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetModuleBaseNameW".}
+else:
+  proc GetModuleBaseName*(hProcess: HANDLE, hModule: HMODULE, lpBaseName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetModuleBaseNameA".}
+
+proc GetModuleFileNameExA*(hProcess: HANDLE, hModule: HMODULE, lpFileNameEx: LPSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetModuleFileNameExA".}
+proc GetModuleFileNameExW*(hProcess: HANDLE, hModule: HMODULE, lpFileNameEx: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetModuleFileNameExW".}
+when defined(winUnicode):
+  proc GetModuleFileNameEx*(hProcess: HANDLE, hModule: HMODULE, lpFileNameEx: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetModuleFileNameExW".}
+else:
+  proc GetModuleFileNameEx*(hProcess: HANDLE, hModule: HMODULE, lpFileNameEx: LPSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetModuleFileNameExA".}
+
+type
+  MODULEINFO* {.final.} = object
+    lpBaseOfDll*: LPVOID
+    SizeOfImage*: DWORD
+    EntryPoint*: LPVOID
+  LPMODULEINFO* = ptr MODULEINFO
+
+proc GetModuleInformation*(hProcess: HANDLE, hModule: HMODULE, lpmodinfo: LPMODULEINFO, cb: DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "GetModuleInformation".}
+proc EmptyWorkingSet*(hProcess: HANDLE): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "EmptyWorkingSet".}
+proc QueryWorkingSet*(hProcess: HANDLE, pv: PVOID, cb: DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "QueryWorkingSet".}
+proc QueryWorkingSetEx*(hProcess: HANDLE, pv: PVOID, cb: DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "QueryWorkingSetEx".}
+proc InitializeProcessForWsWatch*(hProcess: HANDLE): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "InitializeProcessForWsWatch".}
+
+type
+  PSAPI_WS_WATCH_INFORMATION* {.final.} = object
+    FaultingPc*: LPVOID
+    FaultingVa*: LPVOID
+  PPSAPI_WS_WATCH_INFORMATION* = ptr PSAPI_WS_WATCH_INFORMATION
+
+proc GetWsChanges*(hProcess: HANDLE, lpWatchInfo: PPSAPI_WS_WATCH_INFORMATION, cb: DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "GetWsChanges".}
+
+proc GetMappedFileNameA*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetMappedFileNameA".}
+proc GetMappedFileNameW*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetMappedFileNameW".}
+when defined(winUnicode):
+  proc GetMappedFileName*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetMappedFileNameW".}
+else:
+  proc GetMappedFileName*(hProcess: HANDLE, lpv: LPVOID, lpFilename: LPSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetMappedFileNameA".}
+
+proc EnumDeviceDrivers*(lpImageBase: LPVOID, cb: DWORD, lpcbNeeded: LPDWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "EnumDeviceDrivers".}
+
+proc GetDeviceDriverBaseNameA*(ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetDeviceDriverBaseNameA".}
+proc GetDeviceDriverBaseNameW*(ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetDeviceDriverBaseNameW".}
+when defined(winUnicode):
+  proc GetDeviceDriverBaseName*(ImageBase: LPVOID, lpBaseName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetDeviceDriverBaseNameW".}
+else:
+  proc GetDeviceDriverBaseName*(ImageBase: LPVOID, lpBaseName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetDeviceDriverBaseNameA".}
+
+proc GetDeviceDriverFileNameA*(ImageBase: LPVOID, lpFileName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetDeviceDriverFileNameA".}
+proc GetDeviceDriverFileNameW*(ImageBase: LPVOID, lpFileName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetDeviceDriverFileNameW".}
+when defined(winUnicode):
+  proc GetDeviceDriverFileName*(ImageBase: LPVOID, lpFileName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetDeviceDriverFileNameW".}
+else:
+  proc GetDeviceDriverFileName*(ImageBase: LPVOID, lpFileName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetDeviceDriverFileNameA".}
+
+type
+  PROCESS_MEMORY_COUNTERS* {.final.} = object
+    cb*: DWORD
+    PageFaultCount*: DWORD
+    PeakWorkingSetSize: SIZE_T
+    WorkingSetSize: SIZE_T
+    QuotaPeakPagedPoolUsage: SIZE_T
+    QuotaPagedPoolUsage: SIZE_T
+    QuotaPeakNonPagedPoolUsage: SIZE_T
+    QuotaNonPagedPoolUsage: SIZE_T
+    PagefileUsage: SIZE_T
+    PeakPagefileUsage: SIZE_T
+  PPROCESS_MEMORY_COUNTERS* = ptr PROCESS_MEMORY_COUNTERS
+
+type
+  PROCESS_MEMORY_COUNTERS_EX* {.final.} = object
+    cb*: DWORD
+    PageFaultCount*: DWORD
+    PeakWorkingSetSize: SIZE_T
+    WorkingSetSize: SIZE_T
+    QuotaPeakPagedPoolUsage: SIZE_T
+    QuotaPagedPoolUsage: SIZE_T
+    QuotaPeakNonPagedPoolUsage: SIZE_T
+    QuotaNonPagedPoolUsage: SIZE_T
+    PagefileUsage: SIZE_T
+    PeakPagefileUsage: SIZE_T
+    PrivateUsage: SIZE_T
+  PPROCESS_MEMORY_COUNTERS_EX* = ptr PROCESS_MEMORY_COUNTERS_EX
+
+proc GetProcessMemoryInfo*(hProcess: HANDLE, ppsmemCounters: PPROCESS_MEMORY_COUNTERS, cb: DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "GetProcessMemoryInfo".}
+
+type
+  PERFORMANCE_INFORMATION* {.final.} = object
+    cb*: DWORD
+    CommitTotal: SIZE_T
+    CommitLimit: SIZE_T
+    CommitPeak: SIZE_T
+    PhysicalTotal: SIZE_T
+    PhysicalAvailable: SIZE_T
+    SystemCache: SIZE_T
+    KernelTotal: SIZE_T
+    KernelPaged: SIZE_T
+    KernelNonpaged: SIZE_T
+    PageSize: SIZE_T
+    HandleCount*: DWORD
+    ProcessCount*: DWORD
+    ThreadCount*: DWORD
+  PPERFORMANCE_INFORMATION* = ptr PERFORMANCE_INFORMATION
+  # Skip definition of PERFORMACE_INFORMATION...
+
+proc GetPerformanceInfo*(pPerformanceInformation: PPERFORMANCE_INFORMATION, cb: DWORD): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "GetPerformanceInfo".}
+
+type
+  ENUM_PAGE_FILE_INFORMATION* {.final.} = object
+    cb*: DWORD
+    Reserved*: DWORD
+    TotalSize: SIZE_T
+    TotalInUse: SIZE_T
+    PeakUsage: SIZE_T
+  PENUM_PAGE_FILE_INFORMATION* = ptr ENUM_PAGE_FILE_INFORMATION
+
+# Callback procedure
+type
+  PENUM_PAGE_FILE_CALLBACKW* = proc (pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCWSTR): WINBOOL{.stdcall.}
+  PENUM_PAGE_FILE_CALLBACKA* = proc (pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCSTR): WINBOOL{.stdcall.}
+
+#TODO
+proc EnumPageFilesA*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "EnumPageFilesA".}
+proc EnumPageFilesW*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID): WINBOOL {.stdcall,
+    dynlib: "psapi.dll", importc: "EnumPageFilesW".}
+when defined(winUnicode):
+  proc EnumPageFiles*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKW, pContext: LPVOID): WINBOOL {.stdcall,
+      dynlib: "psapi.dll", importc: "EnumPageFilesW".}
+  type PENUM_PAGE_FILE_CALLBACK* = proc (pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCWSTR): WINBOOL{.stdcall.}
+else:
+  proc EnumPageFiles*(pCallBackRoutine: PENUM_PAGE_FILE_CALLBACKA, pContext: LPVOID): WINBOOL {.stdcall,
+      dynlib: "psapi.dll", importc: "EnumPageFilesA".}
+  type PENUM_PAGE_FILE_CALLBACK* = proc (pContext: LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: LPCSTR): WINBOOL{.stdcall.}
+
+proc GetProcessImageFileNameA*(hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetProcessImageFileNameA".}
+proc GetProcessImageFileNameW*(hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+    dynlib: "psapi.dll", importc: "GetProcessImageFileNameW".}
+when defined(winUnicode):
+  proc GetProcessImageFileName*(hProcess: HANDLE, lpImageFileName: LPWSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetProcessImageFileNameW".}
+else:
+  proc GetProcessImageFileName*(hProcess: HANDLE, lpImageFileName: LPSTR, nSize: DWORD): DWORD {.stdcall,
+      dynlib: "psapi.dll", importc: "GetProcessImageFileNameA".}
diff --git a/lib/windows/windows.nim b/lib/windows/windows.nim
index 20f9a9d7d..877c0271f 100755
--- a/lib/windows/windows.nim
+++ b/lib/windows/windows.nim
@@ -1,23776 +1,24036 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2010 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-## Define ``winUnicode`` before importing this module for the
-## unicode version.
-
-{.deadCodeElim: on.}
-
-type
-  ATOM* = int16
-  TAtom* = ATOM
-  WINBOOL* = int32            # XXX: longbool;
-  WORDBOOL* = int16  # XXX: not a bool
-  CALTYPE* = int
-  CALID* = int
-  CCHAR* = char
-  COLORREF* = int
-  TCOLORREF* = int
-  SHORT* = int16
-  WINT* = int32
-  LONG* = int32
-  DWORD* = int32
-  PINTEGER* = ptr int32
-  PBOOL* = ptr WINBOOL
-  LONGLONG* = int64
-  PLONGLONG* = ptr LONGLONG
-  LPLONGLONG* = ptr LONGLONG
-  ULONGLONG* = int64          # used in AMD64 CONTEXT
-  PULONGLONG* = ptr ULONGLONG #
-  DWORD64* = int64            #
-  PDWORD64* = ptr DWORD64     #
-  INT_PTR* = TAddress
-  UINT_PTR* = TAddress
-  LONG_PTR* = TAddress
-  ULONG_PTR* = TAddress
-  DWORDLONG* = int64          # was unsigned long
-  PDWORDLONG* = ptr DWORDLONG
-  HANDLE* = int
-  THandle* = HANDLE
-  HRESULT* = int
-  PHRESULT* = ptr HRESULT
-  HACCEL* = HANDLE
-  HBITMAP* = HANDLE
-  HBRUSH* = HANDLE
-  HCOLORSPACE* = HANDLE
-  HCONV* = HANDLE
-  HCONVLIST* = HANDLE
-  HCURSOR* = HANDLE
-  HDBC* = HANDLE
-  HDC* = HANDLE
-  HDDEDATA* = HANDLE
-  HDESK* = HANDLE
-  HDROP* = HANDLE
-  HDWP* = HANDLE
-  HENHMETAFILE* = HANDLE
-  HENV* = HANDLE
-  HFILE* = HANDLE
-  HFONT* = HANDLE
-  HGDIOBJ* = HANDLE
-  HGLOBAL* = HANDLE
-  HGLRC* = HANDLE
-  HHOOK* = HANDLE
-  HICON* = HANDLE
-  HIMAGELIST* = HANDLE
-  HINST* = HANDLE             # Not HINSTANCE, else it has problems with the var HInstance
-  HKEY* = HANDLE
-  HKL* = HANDLE
-  HLOCAL* = HANDLE
-  HMENU* = HANDLE
-  HMETAFILE* = HANDLE
-  HMODULE* = HANDLE
-  HPALETTE* = HANDLE
-  HPEN* = HANDLE
-  HRASCONN* = HANDLE
-  HRGN* = HANDLE
-  HRSRC* = HANDLE
-  HSTMT* = HANDLE
-  HSTR* = HANDLE
-  HSZ* = HANDLE
-  HWINSTA* = HANDLE
-  HWND* = HANDLE
-  HTASK* = HANDLE
-  LANGID* = int16
-  LCID* = DWORD
-  LCTYPE* = DWORD
-  LPARAM* = LONG_PTR
-  LP* = ptr int16
-  LPBOOL* = ptr WINBOOL
-  LPBYTE* = ptr int8
-  LPCCH* = cstring
-  LPCH* = cstring
-  LPCOLORREF* = ptr COLORREF
-  LPCSTR* = cstring
-  PWideChar* = ptr int16 # XXX
-  WideChar* = int16
-
-when defined(winUnicode):
-  type
-    LPCTSTR* = Pwidechar
-else:
-  type
-    LPCTSTR* = cstring
-type
-  LPCWCH* = Pwidechar
-  LPCWSTR* = Pwidechar
-  LPPCSTR* = ptr LPCSTR
-  LPPCTSTR* = ptr LPCTSTR
-  LPPCWSTR* = ptr LPCWSTR
-  LPDWORD* = ptr DWORD
-  LPHANDLE* = ptr HANDLE
-  LPINT* = ptr int32
-  LPLONG* = ptr int32
-  LPSTR* = cstring
-
-when defined(winUnicode):
-  type
-    LPTCH* = Pwidechar
-    LPTSTR* = Pwidechar
-else:
-  type
-    LPTCH* = cstring
-    LPTSTR* = cstring
-type
-  LRESULT* = LONG_PTR
-  LPVOID* = pointer
-  LPCVOID* = pointer
-  LPWCH* = Pwidechar
-  LPWORD* = ptr int16
-  LPWSTR* = Pwidechar
-  NWPSTR* = Pwidechar
-  PWINBOOL* = ptr WINBOOL
-  PBOOLEAN* = ptr int8
-  PBYTE* = ptr int8
-  PCCH* = cstring
-  PCH* = cstring
-  PCSTR* = cstring
-  PCWCH* = Pwidechar
-  PCWSTR* = Pwidechar
-  PDWORD* = ptr DWORD
-  PHANDLE* = ptr HANDLE
-  PHKEY* = ptr HKEY
-  PINT* = ptr int32
-  PLONG* = ptr int32
-  PSHORT* = ptr SHORT
-  PSTR* = cstring
-  PSZ* = cstring
-
-when defined(winUnicode):
-  type
-    PTBYTE* = ptr int16
-    PTCH* = Pwidechar
-    PTCHAR* = Pwidechar
-    PTSTR* = Pwidechar
-else:
-  type
-    PTBYTE* = ptr int8
-    PTCH* = cstring
-    PTCHAR* = cstring
-    PTSTR* = cstring
-type
-  PUCHAR* = ptr int8
-  PWCH* = Pwidechar
-  PWCHAR* = Pwidechar
-  PWORD* = ptr int16
-  PUINT* = ptr int
-  PULONG* = ptr int
-  PUSHORT* = ptr int16
-  PVOID* = pointer
-  RETCODE* = SHORT
-  SC_HANDLE* = HANDLE
-  SC_LOCK* = LPVOID
-  LPSC_HANDLE* = ptr SC_HANDLE
-  SERVICE_STATUS_HANDLE* = DWORD
-
-when defined(winUnicode):
-  type
-    TBYTE* = int16
-    TCHAR* = widechar
-    BCHAR* = int16
-else:
-  type
-    TBYTE* = int8
-    TCHAR* = char
-    BCHAR* = int8
-type
-  UCHAR* = int8
-  WCHAR* = WideChar
-  UINT* = int
-  ULONG* = int
-  USHORT* = int16
-  WPARAM* = LONG_PTR
-  PLPSTR* = ptr LPSTR
-  PLPWStr* = ptr LPWStr
-  ACL_INFORMATION_CLASS* = enum
-    AclRevisionInformation = 1, AclSizeInformation
-  MEDIA_TYPE* = enum
-    Unknown, F5_1Pt2_512, F3_1Pt44_512, F3_2Pt88_512, F3_20Pt8_512, F3_720_512,
-    F5_360_512, F5_320_512, F5_320_1024, F5_180_512, F5_160_512, RemovableMedia,
-    FixedMedia
-
-const
-  RASCS_DONE* = 0x00002000
-  RASCS_PAUSED* = 0x00001000
-
-type
-  RASCONNSTATE* = enum
-    RASCS_OpenPort = 0, RASCS_PortOpened, RASCS_ConnectDevice,
-    RASCS_DeviceConnected, RASCS_AllDevicesConnected, RASCS_Authenticate,
-    RASCS_AuthNotify, RASCS_AuthRetry, RASCS_AuthCallback,
-    RASCS_AuthChangePassword, RASCS_AuthProject, RASCS_AuthLinkSpeed,
-    RASCS_AuthAck, RASCS_ReAuthenticate, RASCS_Authenticated,
-    RASCS_PrepareForCallback, RASCS_WaitForModemReset, RASCS_WaitForCallback,
-    RASCS_Projected, RASCS_StartAuthentication, RASCS_CallbackComplete,
-    RASCS_LogonNetwork, RASCS_Interactive = RASCS_PAUSED,
-    RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired,
-    RASCS_Connected = RASCS_DONE, RASCS_Disconnected
-  RASPROJECTION* = enum
-    RASP_PppIp = 0x00008021, RASP_PppIpx = 0x0000802B, RASP_PppNbf = 0x0000803F,
-    RASP_Amb = 0x00010000
-  SECURITY_IMPERSONATION_LEVEL* = enum
-    SecurityAnonymous, SecurityIdentification, SecurityImpersonation,
-    SecurityDelegation
-  SID_NAME_USE* = enum
-    SidTypeUser = 1, SidTypeGroup, SidTypeDomain, SidTypeAlias,
-    SidTypeWellKnownGroup, SidTypeDeletedAccount, SidTypeInvalid, SidTypeUnknown
-  PSID_NAME_USE* = ptr SID_NAME_USE
-  TOKEN_INFORMATION_CLASS* = enum
-    TokenUser = 1, TokenGroups, TokenPrivileges, TokenOwner, TokenPrimaryGroup,
-    TokenDefaultDacl, TokenSource, TokenType, TokenImpersonationLevel,
-    TokenStatistics
-  TTOKEN_TYPE* = enum
-    TokenPrimary = 1, TokenImpersonation
-  MakeIntResourceA* = cstring
-  MakeIntResourceW* = PWideChar
-  MakeIntResource* = MakeIntResourceA
-
-proc GetBValue*(rgb: int32): int8
-proc GetGValue*(rgb: int32): int8
-proc GetRValue*(rgb: int32): int8
-proc RGB*(r, g, b: int32): DWORD
-proc HIBYTE*(w: int32): int8
-proc HIWORD*(L: int32): int16
-proc LOBYTE*(w: int32): int8
-proc LOWORD*(L: int32): int16
-proc MAKELONG*(a, b: int32): LONG
-proc MAKEWORD*(a, b: int32): int16
-proc SEXT_HIWORD*(L: int32): int32
-proc ZEXT_HIWORD*(L: int32): int32
-proc SEXT_LOWORD*(L: int32): int32
-proc INDEXTOOVERLAYMASK*(i: int32): int32
-proc INDEXTOSTATEIMAGEMASK*(i: int32): int32
-proc MAKEINTATOM*(i: int32): LPTSTR
-proc MAKELANGID*(p, s: int32): int32
-proc PRIMARYLANGID*(lgid: int32): int16
-proc SUBLANGID*(lgid: int32): int32
-proc LANGIDFROMLCID*(lcid: int32): int16
-proc SORTIDFROMLCID*(lcid: int32): int16
-proc MAKELCID*(lgid, srtid: int32): DWORD
-proc MAKELPARAM*(L, h: int32): LPARAM
-proc MAKELRESULT*(L, h: int32): LRESULT
-proc MAKEROP4*(fore, back: int32): DWORD
-proc MAKEWPARAM*(L, h: int32): WPARAM
-proc GET_X_LPARAM*(lp: Windows.LParam): int32
-proc GET_Y_LPARAM*(lp: Windows.LParam): int32
-proc PALETTEINDEX*(i: int32): COLORREF
-proc PALETTERGB*(r, g, b: int32): int32
-  #
-  #    Definitions for callback procedures
-  #
-type
-  BFFCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPARAM, para4: LPARAM): int32{.
-      stdcall.}
-  LPCCHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.
-      stdcall.}
-  LPCFHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.
-      stdcall.}
-  PTHREAD_START_ROUTINE* = Pointer
-  LPTHREAD_START_ROUTINE* = PTHREAD_START_ROUTINE
-  EDITSTREAMCALLBACK* = proc (para1: DWORD, para2: LPBYTE, para3: LONG,
-                              para4: LONG): DWORD{.stdcall.}
-  LPFRHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.
-      stdcall.}
-  LPOFNHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.
-      stdcall.}
-  LPPRINTHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM,
-                           para4: LPARAM): UINT{.stdcall.}
-  LPSETUPHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM,
-                           para4: LPARAM): UINT{.stdcall.}
-  DLGPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): LRESULT{.
-      stdcall.}
-  PFNPROPSHEETCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPARAM): int32{.
-      stdcall.}
-  LPSERVICE_MAIN_FUNCTION* = proc (para1: DWORD, para2: LPTSTR){.stdcall.}
-  PFNTVCOMPARE* = proc (para1: LPARAM, para2: LPARAM, para3: LPARAM): int32{.
-      stdcall.}
-  WNDPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): LRESULT{.
-      stdcall.}
-  FARPROC* = pointer
-  TFarProc* = FARPROC
-  TProc* = pointer
-  ENUMRESTYPEPROC* = proc (para1: HANDLE, para2: LPTSTR, para3: LONG): WINBOOL{.
-      stdcall.}
-  ENUMRESNAMEPROC* = proc (para1: HANDLE, para2: LPCTSTR, para3: LPTSTR,
-                           para4: LONG): WINBOOL{.stdcall.}
-  ENUMRESLANGPROC* = proc (para1: HANDLE, para2: LPCTSTR, para3: LPCTSTR,
-                           para4: int16, para5: LONG): WINBOOL{.stdcall.}
-  DESKTOPENUMPROC* = FARPROC
-  ENUMWINDOWSPROC* = proc (para1: HWND, para2: LPARAM): WINBOOL{.stdcall.}
-  ENUMWINDOWSTATIONPROC* = proc (para1: LPTSTR, para2: LPARAM): WINBOOL{.stdcall.}
-  SENDASYNCPROC* = proc (para1: HWND, para2: UINT, para3: DWORD, para4: LRESULT){.
-      stdcall.}
-  TIMERPROC* = proc (para1: HWND, para2: UINT, para3: UINT, para4: DWORD){.
-      stdcall.}
-  GRAYSTRINGPROC* = FARPROC
-  DRAWSTATEPROC* = proc (para1: HDC, para2: LPARAM, para3: WPARAM, para4: int32,
-                         para5: int32): WINBOOL{.stdcall.}
-  PROPENUMPROCEX* = proc (para1: HWND, para2: LPCTSTR, para3: HANDLE,
-                          para4: DWORD): WINBOOL{.stdcall.}
-  PROPENUMPROC* = proc (para1: HWND, para2: LPCTSTR, para3: HANDLE): WINBOOL{.
-      stdcall.}
-  HOOKPROC* = proc (para1: int32, para2: WPARAM, para3: LPARAM): LRESULT{.
-      stdcall.}
-  ENUMOBJECTSPROC* = proc (para1: LPVOID, para2: LPARAM){.stdcall.}
-  LINEDDAPROC* = proc (para1: int32, para2: int32, para3: LPARAM){.stdcall.}
-  TABORTPROC* = proc (para1: HDC, para2: int32): WINBOOL{.stdcall.}
-  LPPAGEPAINTHOOK* = proc (para1: HWND, para2: UINT, para3: WPARAM,
-                           para4: LPARAM): UINT{.stdcall.}
-  LPPAGESETUPHOOK* = proc (para1: HWND, para2: UINT, para3: WPARAM,
-                           para4: LPARAM): UINT{.stdcall.}
-  ICMENUMPROC* = proc (para1: LPTSTR, para2: LPARAM): int32{.stdcall.}
-  EDITWORDBREAKPROCEX* = proc (para1: cstring, para2: LONG, para3: int8,
-                               para4: WINT): LONG{.stdcall.}
-  PFNLVCOMPARE* = proc (para1: LPARAM, para2: LPARAM, para3: LPARAM): int32{.
-      stdcall.}
-  LOCALE_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}
-  CODEPAGE_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}
-  DATEFMT_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}
-  TIMEFMT_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}
-  CALINFO_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}
-  PHANDLER_ROUTINE* = proc (para1: DWORD): WINBOOL{.stdcall.}
-  LPHANDLER_FUNCTION* = proc (para1: DWORD): WINBOOL{.stdcall.}
-  PFNGETPROFILEPATH* = proc (para1: LPCTSTR, para2: LPSTR, para3: UINT): UINT{.
-      stdcall.}
-  PFNRECONCILEPROFILE* = proc (para1: LPCTSTR, para2: LPCTSTR, para3: DWORD): UINT{.
-      stdcall.}
-  PFNPROCESSPOLICIES* = proc (para1: HWND, para2: LPCTSTR, para3: LPCTSTR,
-                              para4: LPCTSTR, para5: DWORD): WINBOOL{.stdcall.} #Not convertable by H2PAS
-                                                                                #  #define SECURITY_NULL_SID_AUTHORITY     {0,0,0,0,0,0}
-                                                                                #  #define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}
-                                                                                #  #define SECURITY_LOCAL_SID_AUTHORITY    {0,0,0,0,0,2}
-                                                                                #  #define SECURITY_CREATOR_SID_AUTHORITY  {0,0,0,0,0,3}
-                                                                                #  #define SECURITY_NON_UNIQUE_AUTHORITY   {0,0,0,0,0,4}
-                                                                                #  #define SECURITY_NT_AUTHORITY           {0,0,0,0,0,5}
-                                                                                #
-
-const
-  SE_CREATE_TOKEN_NAME* = "SeCreateTokenPrivilege"
-  SE_ASSIGNPRIMARYTOKEN_NAME* = "SeAssignPrimaryTokenPrivilege"
-  SE_LOCK_MEMORY_NAME* = "SeLockMemoryPrivilege"
-  SE_INCREASE_QUOTA_NAME* = "SeIncreaseQuotaPrivilege"
-  SE_UNSOLICITED_INPUT_NAME* = "SeUnsolicitedInputPrivilege"
-  SE_MACHINE_ACCOUNT_NAME* = "SeMachineAccountPrivilege"
-  SE_TCB_NAME* = "SeTcbPrivilege"
-  SE_SECURITY_NAME* = "SeSecurityPrivilege"
-  SE_TAKE_OWNERSHIP_NAME* = "SeTakeOwnershipPrivilege"
-  SE_LOAD_DRIVER_NAME* = "SeLoadDriverPrivilege"
-  SE_SYSTEM_PROFILE_NAME* = "SeSystemProfilePrivilege"
-  SE_SYSTEMTIME_NAME* = "SeSystemtimePrivilege"
-  SE_PROF_SINGLE_PROCESS_NAME* = "SeProfileSingleProcessPrivilege"
-  SE_INC_BASE_PRIORITY_NAME* = "SeIncreaseBasePriorityPrivilege"
-  SE_CREATE_PAGEFILE_NAME* = "SeCreatePagefilePrivilege"
-  SE_CREATE_PERMANENT_NAME* = "SeCreatePermanentPrivilege"
-  SE_BACKUP_NAME* = "SeBackupPrivilege"
-  SE_RESTORE_NAME* = "SeRestorePrivilege"
-  SE_SHUTDOWN_NAME* = "SeShutdownPrivilege"
-  SE_DEBUG_NAME* = "SeDebugPrivilege"
-  SE_AUDIT_NAME* = "SeAuditPrivilege"
-  SE_SYSTEM_ENVIRONMENT_NAME* = "SeSystemEnvironmentPrivilege"
-  SE_CHANGE_NOTIFY_NAME* = "SeChangeNotifyPrivilege"
-  SE_REMOTE_SHUTDOWN_NAME* = "SeRemoteShutdownPrivilege"
-  SERVICES_ACTIVE_DATABASEW* = "ServicesActive"
-  SERVICES_FAILED_DATABASEW* = "ServicesFailed"
-  SERVICES_ACTIVE_DATABASEA* = "ServicesActive"
-  SERVICES_FAILED_DATABASEA* = "ServicesFailed"
-  SC_GROUP_IDENTIFIERW* = "+"
-  SC_GROUP_IDENTIFIERA* = "+"
-
-when defined(winUnicode):
-  const
-    SERVICES_ACTIVE_DATABASE* = SERVICES_ACTIVE_DATABASEW
-    SERVICES_FAILED_DATABASE* = SERVICES_FAILED_DATABASEW
-    SC_GROUP_IDENTIFIER* = SC_GROUP_IDENTIFIERW
-else:
-  const
-    SERVICES_ACTIVE_DATABASE* = SERVICES_ACTIVE_DATABASEA
-    SERVICES_FAILED_DATABASE* = SERVICES_FAILED_DATABASEA
-    SC_GROUP_IDENTIFIER* = SC_GROUP_IDENTIFIERA
-type                          # PFNCALLBACK = CALLB;
-  PFNCALLBACK* = proc (para1, para2: UINT, para3: HCONV, para4, para5: HSZ,
-                       para6: HDDEDATA, para7, para8: DWORD): HDDEData{.stdcall.} #
-                                                                                  # CALLB
-                                                                                  # =
-                                                                                  # procedure
-                                                                                  # ;CDECL;
-  CALLB* = PFNCALLBACK
-  SECURITY_CONTEXT_TRACKING_MODE* = WINBOOL # End of stuff from ddeml.h in old Cygnus headers
-                                            #
-                                            # -----------------------------------------------
-  WNDENUMPROC* = FARPROC
-  ENHMFENUMPROC* = FARPROC
-  CCSTYLE* = DWORD
-  PCCSTYLE* = ptr CCSTYLE
-  LPCCSTYLE* = ptr CCSTYLE
-  CCSTYLEFLAGA* = DWORD
-  PCCSTYLEFLAGA* = ptr CCSTYLEFLAGA
-  LPCCSTYLEFLAGA* = ptr CCSTYLEFLAGA
-
-const
-  LZERROR_UNKNOWNALG* = - (8)
-  LZERROR_BADVALUE* = - (7)
-  LZERROR_GLOBLOCK* = - (6)
-  LZERROR_GLOBALLOC* = - (5)
-  LZERROR_WRITE* = - (4)
-  LZERROR_READ* = - (3)
-  LZERROR_BADOUTHANDLE* = - (2)
-  LZERROR_BADINHANDLE* = - (1)
-  NO_ERROR* = 0
-  ERROR_SUCCESS* = 0
-  ERROR_INVALID_FUNCTION* = 1
-  ERROR_FILE_NOT_FOUND* = 2
-  ERROR_PATH_NOT_FOUND* = 3
-  ERROR_TOO_MANY_OPEN_FILES* = 4
-  ERROR_ACCESS_DENIED* = 5
-  ERROR_INVALID_HANDLE* = 6
-  ERROR_ARENA_TRASHED* = 7
-  ERROR_NOT_ENOUGH_MEMORY* = 8
-  ERROR_INVALID_BLOCK* = 9
-  ERROR_BAD_ENVIRONMENT* = 10
-  ERROR_BAD_FORMAT* = 11
-  ERROR_INVALID_ACCESS* = 12
-  ERROR_INVALID_DATA* = 13
-  ERROR_OUTOFMEMORY* = 14
-  ERROR_INVALID_DRIVE* = 15
-  ERROR_CURRENT_DIRECTORY* = 16
-  ERROR_NOT_SAME_DEVICE* = 17
-  ERROR_NO_MORE_FILES* = 18
-  ERROR_WRITE_PROTECT* = 19
-  ERROR_BAD_UNIT* = 20
-  ERROR_NOT_READY* = 21
-  ERROR_BAD_COMMAND* = 22
-  ERROR_CRC* = 23
-  ERROR_BAD_LENGTH* = 24
-  ERROR_SEEK* = 25
-  ERROR_NOT_DOS_DISK* = 26
-  ERROR_SECTOR_NOT_FOUND* = 27
-  ERROR_OUT_OF_PAPER* = 28
-  ERROR_WRITE_FAULT* = 29
-  ERROR_READ_FAULT* = 30
-  ERROR_GEN_FAILURE* = 31
-  ERROR_SHARING_VIOLATION* = 32
-  ERROR_LOCK_VIOLATION* = 33
-  ERROR_WRONG_DISK* = 34
-  ERROR_SHARING_BUFFER_EXCEEDED* = 36
-  ERROR_HANDLE_EOF* = 38
-  ERROR_HANDLE_DISK_FULL* = 39
-  ERROR_NOT_SUPPORTED* = 50
-  ERROR_REM_NOT_LIST* = 51
-  ERROR_DUP_NAME* = 52
-  ERROR_BAD_NETPATH* = 53
-  ERROR_NETWORK_BUSY* = 54
-  ERROR_DEV_NOT_EXIST* = 55
-  ERROR_TOO_MANY_CMDS* = 56
-  ERROR_ADAP_HDW_ERR* = 57
-  ERROR_BAD_NET_RESP* = 58
-  ERROR_UNEXP_NET_ERR* = 59
-  ERROR_BAD_REM_ADAP* = 60
-  ERROR_PRINTQ_FULL* = 61
-  ERROR_NO_SPOOL_SPACE* = 62
-  ERROR_PRINT_CANCELLED* = 63
-  ERROR_NETNAME_DELETED* = 64
-  ERROR_NETWORK_ACCESS_DENIED* = 65
-  ERROR_BAD_DEV_TYPE* = 66
-  ERROR_BAD_NET_NAME* = 67
-  ERROR_TOO_MANY_NAMES* = 68
-  ERROR_TOO_MANY_SESS* = 69
-  ERROR_SHARING_PAUSED* = 70
-  ERROR_REQ_NOT_ACCEP* = 71
-  ERROR_REDIR_PAUSED* = 72
-  ERROR_FILE_EXISTS* = 80
-  ERROR_CANNOT_MAKE* = 82
-  ERROR_FAIL_I24* = 83
-  ERROR_OUT_OF_STRUCTURES* = 84
-  ERROR_ALREADY_ASSIGNED* = 85
-  ERROR_INVALID_PASSWORD* = 86
-  ERROR_INVALID_PARAMETER* = 87
-  ERROR_NET_WRITE_FAULT* = 88
-  ERROR_NO_PROC_SLOTS* = 89
-  ERROR_TOO_MANY_SEMAPHORES* = 100
-  ERROR_EXCL_SEM_ALREADY_OWNED* = 101
-  ERROR_SEM_IS_SET* = 102
-  ERROR_TOO_MANY_SEM_REQUESTS* = 103
-  ERROR_INVALID_AT_INTERRUPT_TIME* = 104
-  ERROR_SEM_OWNER_DIED* = 105
-  ERROR_SEM_USER_LIMIT* = 106
-  ERROR_DISK_CHANGE* = 107
-  ERROR_DRIVE_LOCKED* = 108
-  ERROR_BROKEN_PIPE* = 109
-  ERROR_OPEN_FAILED* = 110
-  ERROR_BUFFER_OVERFLOW* = 111
-  ERROR_DISK_FULL* = 112
-  ERROR_NO_MORE_SEARCH_HANDLES* = 113
-  ERROR_INVALID_TARGET_HANDLE* = 114
-  ERROR_INVALID_CATEGORY* = 117
-  ERROR_INVALID_VERIFY_SWITCH* = 118
-  ERROR_BAD_DRIVER_LEVEL* = 119
-  ERROR_CALL_NOT_IMPLEMENTED* = 120
-  ERROR_SEM_TIMEOUT* = 121
-  ERROR_INSUFFICIENT_BUFFER* = 122
-  ERROR_INVALID_NAME* = 123
-  ERROR_INVALID_LEVEL* = 124
-  ERROR_NO_VOLUME_LABEL* = 125
-  ERROR_MOD_NOT_FOUND* = 126
-  ERROR_PROC_NOT_FOUND* = 127
-  ERROR_WAIT_NO_CHILDREN* = 128
-  ERROR_CHILD_NOT_COMPLETE* = 129
-  ERROR_DIRECT_ACCESS_HANDLE* = 130
-  ERROR_NEGATIVE_SEEK* = 131
-  ERROR_SEEK_ON_DEVICE* = 132
-  ERROR_IS_JOIN_TARGET* = 133
-  ERROR_IS_JOINED* = 134
-  ERROR_IS_SUBSTED* = 135
-  ERROR_NOT_JOINED* = 136
-  ERROR_NOT_SUBSTED* = 137
-  ERROR_JOIN_TO_JOIN* = 138
-  ERROR_SUBST_TO_SUBST* = 139
-  ERROR_JOIN_TO_SUBST* = 140
-  ERROR_SUBST_TO_JOIN* = 141
-  ERROR_BUSY_DRIVE* = 142
-  ERROR_SAME_DRIVE* = 143
-  ERROR_DIR_NOT_ROOT* = 144
-  ERROR_DIR_NOT_EMPTY* = 145
-  ERROR_IS_SUBST_PATH* = 146
-  ERROR_IS_JOIN_PATH* = 147
-  ERROR_PATH_BUSY* = 148
-  ERROR_IS_SUBST_TARGET* = 149
-  ERROR_SYSTEM_TRACE* = 150
-  ERROR_INVALID_EVENT_COUNT* = 151
-  ERROR_TOO_MANY_MUXWAITERS* = 152
-  ERROR_INVALID_LIST_FORMAT* = 153
-  ERROR_LABEL_TOO_LONG* = 154
-  ERROR_TOO_MANY_TCBS* = 155
-  ERROR_SIGNAL_REFUSED* = 156
-  ERROR_DISCARDED* = 157
-  ERROR_NOT_LOCKED* = 158
-  ERROR_BAD_THREADID_ADDR* = 159
-  ERROR_BAD_ARGUMENTS* = 160
-  ERROR_BAD_PATHNAME* = 161
-  ERROR_SIGNAL_PENDING* = 162
-  ERROR_MAX_THRDS_REACHED* = 164
-  ERROR_LOCK_FAILED* = 167
-  ERROR_BUSY* = 170
-  ERROR_CANCEL_VIOLATION* = 173
-  ERROR_ATOMIC_LOCKS_NOT_SUPPORTED* = 174
-  ERROR_INVALID_SEGMENT_NUMBER* = 180
-  ERROR_INVALID_ORDINAL* = 182
-  ERROR_ALREADY_EXISTS* = 183
-  ERROR_INVALID_FLAG_NUMBER* = 186
-  ERROR_SEM_NOT_FOUND* = 187
-  ERROR_INVALID_STARTING_CODESEG* = 188
-  ERROR_INVALID_STACKSEG* = 189
-  ERROR_INVALID_MODULETYPE* = 190
-  ERROR_INVALID_EXE_SIGNATURE* = 191
-  ERROR_EXE_MARKED_INVALID* = 192
-  ERROR_BAD_EXE_FORMAT* = 193
-  ERROR_ITERATED_DATA_EXCEEDS_64k* = 194
-  ERROR_INVALID_MINALLOCSIZE* = 195
-  ERROR_DYNLINK_FROM_INVALID_RING* = 196
-  ERROR_IOPL_NOT_ENABLED* = 197
-  ERROR_INVALID_SEGDPL* = 198
-  ERROR_AUTODATASEG_EXCEEDS_64k* = 199
-  ERROR_RING2SEG_MUST_BE_MOVABLE* = 200
-  ERROR_RELOC_CHAIN_XEEDS_SEGLIM* = 201
-  ERROR_INFLOOP_IN_RELOC_CHAIN* = 202
-  ERROR_ENVVAR_NOT_FOUND* = 203
-  ERROR_NO_SIGNAL_SENT* = 205
-  ERROR_FILENAME_EXCED_RANGE* = 206
-  ERROR_RING2_STACK_IN_USE* = 207
-  ERROR_META_EXPANSION_TOO_LONG* = 208
-  ERROR_INVALID_SIGNAL_NUMBER* = 209
-  ERROR_THREAD_1_INACTIVE* = 210
-  ERROR_LOCKED* = 212
-  ERROR_TOO_MANY_MODULES* = 214
-  ERROR_NESTING_NOT_ALLOWED* = 215
-  ERROR_BAD_PIPE* = 230
-  ERROR_PIPE_BUSY* = 231
-  ERROR_NO_DATA* = 232
-  ERROR_PIPE_NOT_CONNECTED* = 233
-  ERROR_MORE_DATA* = 234
-  ERROR_VC_DISCONNECTED* = 240
-  ERROR_INVALID_EA_NAME* = 254
-  ERROR_EA_LIST_INCONSISTENT* = 255
-  ERROR_NO_MORE_ITEMS* = 259
-  ERROR_CANNOT_COPY* = 266
-  ERROR_DIRECTORY* = 267
-  ERROR_EAS_DIDNT_FIT* = 275
-  ERROR_EA_FILE_CORRUPT* = 276
-  ERROR_EA_TABLE_FULL* = 277
-  ERROR_INVALID_EA_HANDLE* = 278
-  ERROR_EAS_NOT_SUPPORTED* = 282
-  ERROR_NOT_OWNER* = 288
-  ERROR_TOO_MANY_POSTS* = 298
-  ERROR_PARTIAL_COPY* = 299
-  ERROR_MR_MID_NOT_FOUND* = 317
-  ERROR_INVALID_ADDRESS* = 487
-  ERROR_ARITHMETIC_OVERFLOW* = 534
-  ERROR_PIPE_CONNECTED* = 535
-  ERROR_PIPE_LISTENING* = 536
-  ERROR_EA_ACCESS_DENIED* = 994
-  ERROR_OPERATION_ABORTED* = 995
-  ERROR_IO_INCOMPLETE* = 996
-  ERROR_IO_PENDING* = 997
-  ERROR_NOACCESS* = 998
-  ERROR_SWAPERROR* = 999
-  ERROR_STACK_OVERFLOW* = 1001
-  ERROR_INVALID_MESSAGE* = 1002
-  ERROR_CAN_NOT_COMPLETE* = 1003
-  ERROR_INVALID_FLAGS* = 1004
-  ERROR_UNRECOGNIZED_VOLUME* = 1005
-  ERROR_FILE_INVALID* = 1006
-  ERROR_FULLSCREEN_MODE* = 1007
-  ERROR_NO_TOKEN* = 1008
-  ERROR_BADDB* = 1009
-  ERROR_BADKEY* = 1010
-  ERROR_CANTOPEN* = 1011
-  ERROR_CANTREAD* = 1012
-  ERROR_CANTWRITE* = 1013
-  ERROR_REGISTRY_RECOVERED* = 1014
-  ERROR_REGISTRY_CORRUPT* = 1015
-  ERROR_REGISTRY_IO_FAILED* = 1016
-  ERROR_NOT_REGISTRY_FILE* = 1017
-  ERROR_KEY_DELETED* = 1018
-  ERROR_NO_LOG_SPACE* = 1019
-  ERROR_KEY_HAS_CHILDREN* = 1020
-  ERROR_CHILD_MUST_BE_VOLATILE* = 1021
-  ERROR_NOTIFY_ENUM_DIR* = 1022
-  ERROR_DEPENDENT_SERVICES_RUNNING* = 1051
-  ERROR_INVALID_SERVICE_CONTROL* = 1052
-  ERROR_SERVICE_REQUEST_TIMEOUT* = 1053
-  ERROR_SERVICE_NO_THREAD* = 1054
-  ERROR_SERVICE_DATABASE_LOCKED* = 1055
-  ERROR_SERVICE_ALREADY_RUNNING* = 1056
-  ERROR_INVALID_SERVICE_ACCOUNT* = 1057
-  ERROR_SERVICE_DISABLED* = 1058
-  ERROR_CIRCULAR_DEPENDENCY* = 1059
-  ERROR_SERVICE_DOES_NOT_EXIST* = 1060
-  ERROR_SERVICE_CANNOT_ACCEPT_CTRL* = 1061
-  ERROR_SERVICE_NOT_ACTIVE* = 1062
-  ERROR_FAILED_SERVICE_CONTROLLER_CONNECT* = 1063
-  ERROR_EXCEPTION_IN_SERVICE* = 1064
-  ERROR_DATABASE_DOES_NOT_EXIST* = 1065
-  ERROR_SERVICE_SPECIFIC_ERROR* = 1066
-  ERROR_PROCESS_ABORTED* = 1067
-  ERROR_SERVICE_DEPENDENCY_FAIL* = 1068
-  ERROR_SERVICE_LOGON_FAILED* = 1069
-  ERROR_SERVICE_START_HANG* = 1070
-  ERROR_INVALID_SERVICE_LOCK* = 1071
-  ERROR_SERVICE_MARKED_FOR_DELETE* = 1072
-  ERROR_SERVICE_EXISTS* = 1073
-  ERROR_ALREADY_RUNNING_LKG* = 1074
-  ERROR_SERVICE_DEPENDENCY_DELETED* = 1075
-  ERROR_BOOT_ALREADY_ACCEPTED* = 1076
-  ERROR_SERVICE_NEVER_STARTED* = 1077
-  ERROR_DUPLICATE_SERVICE_NAME* = 1078
-  ERROR_END_OF_MEDIA* = 1100
-  ERROR_FILEMARK_DETECTED* = 1101
-  ERROR_BEGINNING_OF_MEDIA* = 1102
-  ERROR_SETMARK_DETECTED* = 1103
-  ERROR_NO_DATA_DETECTED* = 1104
-  ERROR_PARTITION_FAILURE* = 1105
-  ERROR_INVALID_BLOCK_LENGTH* = 1106
-  ERROR_DEVICE_NOT_PARTITIONED* = 1107
-  ERROR_UNABLE_TO_LOCK_MEDIA* = 1108
-  ERROR_UNABLE_TO_UNLOAD_MEDIA* = 1109
-  ERROR_MEDIA_CHANGED* = 1110
-  ERROR_BUS_RESET* = 1111
-  ERROR_NO_MEDIA_IN_DRIVE* = 1112
-  ERROR_NO_UNICODE_TRANSLATION* = 1113
-  ERROR_DLL_INIT_FAILED* = 1114
-  ERROR_SHUTDOWN_IN_PROGRESS* = 1115
-  ERROR_NO_SHUTDOWN_IN_PROGRESS* = 1116
-  ERROR_IO_DEVICE* = 1117
-  ERROR_SERIAL_NO_DEVICE* = 1118
-  ERROR_IRQ_BUSY* = 1119
-  ERROR_MORE_WRITES* = 1120
-  ERROR_COUNTER_TIMEOUT* = 1121
-  ERROR_FLOPPY_ID_MARK_NOT_FOUND* = 1122
-  ERROR_FLOPPY_WRONG_CYLINDER* = 1123
-  ERROR_FLOPPY_UNKNOWN_ERROR* = 1124
-  ERROR_FLOPPY_BAD_REGISTERS* = 1125
-  ERROR_DISK_RECALIBRATE_FAILED* = 1126
-  ERROR_DISK_OPERATION_FAILED* = 1127
-  ERROR_DISK_RESET_FAILED* = 1128
-  ERROR_EOM_OVERFLOW* = 1129
-  ERROR_NOT_ENOUGH_SERVER_MEMORY* = 1130
-  ERROR_POSSIBLE_DEADLOCK* = 1131
-  ERROR_MAPPED_ALIGNMENT* = 1132
-  ERROR_SET_POWER_STATE_VETOED* = 1140
-  ERROR_SET_POWER_STATE_FAILED* = 1141
-  ERROR_OLD_WIN_VERSION* = 1150
-  ERROR_APP_WRONG_OS* = 1151
-  ERROR_SINGLE_INSTANCE_APP* = 1152
-  ERROR_RMODE_APP* = 1153
-  ERROR_INVALID_DLL* = 1154
-  ERROR_NO_ASSOCIATION* = 1155
-  ERROR_DDE_FAIL* = 1156
-  ERROR_DLL_NOT_FOUND* = 1157
-  ERROR_BAD_USERNAME* = 2202
-  ERROR_NOT_CONNECTED* = 2250
-  ERROR_OPEN_FILES* = 2401
-  ERROR_ACTIVE_CONNECTIONS* = 2402
-  ERROR_DEVICE_IN_USE* = 2404
-  ERROR_BAD_DEVICE* = 1200
-  ERROR_CONNECTION_UNAVAIL* = 1201
-  ERROR_DEVICE_ALREADY_REMEMBERED* = 1202
-  ERROR_NO_NET_OR_BAD_PATH* = 1203
-  ERROR_BAD_PROVIDER* = 1204
-  ERROR_CANNOT_OPEN_PROFILE* = 1205
-  ERROR_BAD_PROFILE* = 1206
-  ERROR_NOT_CONTAINER* = 1207
-  ERROR_EXTENDED_ERROR* = 1208
-  ERROR_INVALID_GROUPNAME* = 1209
-  ERROR_INVALID_COMPUTERNAME* = 1210
-  ERROR_INVALID_EVENTNAME* = 1211
-  ERROR_INVALID_DOMAINNAME* = 1212
-  ERROR_INVALID_SERVICENAME* = 1213
-  ERROR_INVALID_NETNAME* = 1214
-  ERROR_INVALID_SHARENAME* = 1215
-  ERROR_INVALID_PASSWORDNAME* = 1216
-  ERROR_INVALID_MESSAGENAME* = 1217
-  ERROR_INVALID_MESSAGEDEST* = 1218
-  ERROR_SESSION_CREDENTIAL_CONFLICT* = 1219
-  ERROR_REMOTE_SESSION_LIMIT_EXCEEDED* = 1220
-  ERROR_DUP_DOMAINNAME* = 1221
-  ERROR_NO_NETWORK* = 1222
-  ERROR_CANCELLED* = 1223
-  ERROR_USER_MAPPED_FILE* = 1224
-  ERROR_CONNECTION_REFUSED* = 1225
-  ERROR_GRACEFUL_DISCONNECT* = 1226
-  ERROR_ADDRESS_ALREADY_ASSOCIATED* = 1227
-  ERROR_ADDRESS_NOT_ASSOCIATED* = 1228
-  ERROR_CONNECTION_INVALID* = 1229
-  ERROR_CONNECTION_ACTIVE* = 1230
-  ERROR_NETWORK_UNREACHABLE* = 1231
-  ERROR_HOST_UNREACHABLE* = 1232
-  ERROR_PROTOCOL_UNREACHABLE* = 1233
-  ERROR_PORT_UNREACHABLE* = 1234
-  ERROR_REQUEST_ABORTED* = 1235
-  ERROR_CONNECTION_ABORTED* = 1236
-  ERROR_RETRY* = 1237
-  ERROR_CONNECTION_COUNT_LIMIT* = 1238
-  ERROR_LOGIN_TIME_RESTRICTION* = 1239
-  ERROR_LOGIN_WKSTA_RESTRICTION* = 1240
-  ERROR_INCORRECT_ADDRESS* = 1241
-  ERROR_ALREADY_REGISTERED* = 1242
-  ERROR_SERVICE_NOT_FOUND* = 1243
-  ERROR_NOT_AUTHENTICATED* = 1244
-  ERROR_NOT_LOGGED_ON* = 1245
-  ERROR_CONTINUE* = 1246
-  ERROR_ALREADY_INITIALIZED* = 1247
-  ERROR_NO_MORE_DEVICES* = 1248
-  ERROR_NOT_ALL_ASSIGNED* = 1300
-  ERROR_SOME_NOT_MAPPED* = 1301
-  ERROR_NO_QUOTAS_FOR_ACCOUNT* = 1302
-  ERROR_LOCAL_USER_SESSION_KEY* = 1303
-  ERROR_NULL_LM_PASSWORD* = 1304
-  ERROR_UNKNOWN_REVISION* = 1305
-  ERROR_REVISION_MISMATCH* = 1306
-  ERROR_INVALID_OWNER* = 1307
-  ERROR_INVALID_PRIMARY_GROUP* = 1308
-  ERROR_NO_IMPERSONATION_TOKEN* = 1309
-  ERROR_CANT_DISABLE_MANDATORY* = 1310
-  ERROR_NO_LOGON_SERVERS* = 1311
-  ERROR_NO_SUCH_LOGON_SESSION* = 1312
-  ERROR_NO_SUCH_PRIVILEGE* = 1313
-  ERROR_PRIVILEGE_NOT_HELD* = 1314
-  ERROR_INVALID_ACCOUNT_NAME* = 1315
-  ERROR_USER_EXISTS* = 1316
-  ERROR_NO_SUCH_USER* = 1317
-  ERROR_GROUP_EXISTS* = 1318
-  ERROR_NO_SUCH_GROUP* = 1319
-  ERROR_MEMBER_IN_GROUP* = 1320
-  ERROR_MEMBER_NOT_IN_GROUP* = 1321
-  ERROR_LAST_ADMIN* = 1322
-  ERROR_WRONG_PASSWORD* = 1323
-  ERROR_ILL_FORMED_PASSWORD* = 1324
-  ERROR_PASSWORD_RESTRICTION* = 1325
-  ERROR_LOGON_FAILURE* = 1326
-  ERROR_ACCOUNT_RESTRICTION* = 1327
-  ERROR_INVALID_LOGON_HOURS* = 1328
-  ERROR_INVALID_WORKSTATION* = 1329
-  ERROR_PASSWORD_EXPIRED* = 1330
-  ERROR_ACCOUNT_DISABLED* = 1331
-  ERROR_NONE_MAPPED* = 1332
-  ERROR_TOO_MANY_LUIDS_REQUESTED* = 1333
-  ERROR_LUIDS_EXHAUSTED* = 1334
-  ERROR_INVALID_SUB_AUTHORITY* = 1335
-  ERROR_INVALID_ACL* = 1336
-  ERROR_INVALID_SID* = 1337
-  ERROR_INVALID_SECURITY_DESCR* = 1338
-  ERROR_BAD_INHERITANCE_ACL* = 1340
-  ERROR_SERVER_DISABLED* = 1341
-  ERROR_SERVER_NOT_DISABLED* = 1342
-  ERROR_INVALID_ID_AUTHORITY* = 1343
-  ERROR_ALLOTTED_SPACE_EXCEEDED* = 1344
-  ERROR_INVALID_GROUP_ATTRIBUTES* = 1345
-  ERROR_BAD_IMPERSONATION_LEVEL* = 1346
-  ERROR_CANT_OPEN_ANONYMOUS* = 1347
-  ERROR_BAD_VALIDATION_CLASS* = 1348
-  ERROR_BAD_TOKEN_TYPE* = 1349
-  ERROR_NO_SECURITY_ON_OBJECT* = 1350
-  ERROR_CANT_ACCESS_DOMAIN_INFO* = 1351
-  ERROR_INVALID_SERVER_STATE* = 1352
-  ERROR_INVALID_DOMAIN_STATE* = 1353
-  ERROR_INVALID_DOMAIN_ROLE* = 1354
-  ERROR_NO_SUCH_DOMAIN* = 1355
-  ERROR_DOMAIN_EXISTS* = 1356
-  ERROR_DOMAIN_LIMIT_EXCEEDED* = 1357
-  ERROR_INTERNAL_DB_CORRUPTION* = 1358
-  ERROR_INTERNAL_ERROR* = 1359
-  ERROR_GENERIC_NOT_MAPPED* = 1360
-  ERROR_BAD_DESCRIPTOR_FORMAT* = 1361
-  ERROR_NOT_LOGON_PROCESS* = 1362
-  ERROR_LOGON_SESSION_EXISTS* = 1363
-  ERROR_NO_SUCH_PACKAGE* = 1364
-  ERROR_BAD_LOGON_SESSION_STATE* = 1365
-  ERROR_LOGON_SESSION_COLLISION* = 1366
-  ERROR_INVALID_LOGON_TYPE* = 1367
-  ERROR_CANNOT_IMPERSONATE* = 1368
-  ERROR_RXACT_INVALID_STATE* = 1369
-  ERROR_RXACT_COMMIT_FAILURE* = 1370
-  ERROR_SPECIAL_ACCOUNT* = 1371
-  ERROR_SPECIAL_GROUP* = 1372
-  ERROR_SPECIAL_USER* = 1373
-  ERROR_MEMBERS_PRIMARY_GROUP* = 1374
-  ERROR_TOKEN_ALREADY_IN_USE* = 1375
-  ERROR_NO_SUCH_ALIAS* = 1376
-  ERROR_MEMBER_NOT_IN_ALIAS* = 1377
-  ERROR_MEMBER_IN_ALIAS* = 1378
-  ERROR_ALIAS_EXISTS* = 1379
-  ERROR_LOGON_NOT_GRANTED* = 1380
-  ERROR_TOO_MANY_SECRETS* = 1381
-  ERROR_SECRET_TOO_LONG* = 1382
-  ERROR_INTERNAL_DB_ERROR* = 1383
-  ERROR_TOO_MANY_CONTEXT_IDS* = 1384
-  ERROR_LOGON_TYPE_NOT_GRANTED* = 1385
-  ERROR_NT_CROSS_ENCRYPTION_REQUIRED* = 1386
-  ERROR_NO_SUCH_MEMBER* = 1387
-  ERROR_INVALID_MEMBER* = 1388
-  ERROR_TOO_MANY_SIDS* = 1389
-  ERROR_LM_CROSS_ENCRYPTION_REQUIRED* = 1390
-  ERROR_NO_INHERITANCE* = 1391
-  ERROR_FILE_CORRUPT* = 1392
-  ERROR_DISK_CORRUPT* = 1393
-  ERROR_NO_USER_SESSION_KEY* = 1394
-  ERROR_LICENSE_QUOTA_EXCEEDED* = 1395
-  ERROR_INVALID_WINDOW_HANDLE* = 1400
-  ERROR_INVALID_MENU_HANDLE* = 1401
-  ERROR_INVALID_CURSOR_HANDLE* = 1402
-  ERROR_INVALID_ACCEL_HANDLE* = 1403
-  ERROR_INVALID_HOOK_HANDLE* = 1404
-  ERROR_INVALID_DWP_HANDLE* = 1405
-  ERROR_TLW_WITH_WSCHILD* = 1406
-  ERROR_CANNOT_FIND_WND_CLASS* = 1407
-  ERROR_WINDOW_OF_OTHER_THREAD* = 1408
-  ERROR_HOTKEY_ALREADY_REGISTERED* = 1409
-  ERROR_CLASS_ALREADY_EXISTS* = 1410
-  ERROR_CLASS_DOES_NOT_EXIST* = 1411
-  ERROR_CLASS_HAS_WINDOWS* = 1412
-  ERROR_INVALID_INDEX* = 1413
-  ERROR_INVALID_ICON_HANDLE* = 1414
-  ERROR_PRIVATE_DIALOG_INDEX* = 1415
-  ERROR_LISTBOX_ID_NOT_FOUND* = 1416
-  ERROR_NO_WILDCARD_CHARACTERS* = 1417
-  ERROR_CLIPBOARD_NOT_OPEN* = 1418
-  ERROR_HOTKEY_NOT_REGISTERED* = 1419
-  ERROR_WINDOW_NOT_DIALOG* = 1420
-  ERROR_CONTROL_ID_NOT_FOUND* = 1421
-  ERROR_INVALID_COMBOBOX_MESSAGE* = 1422
-  ERROR_WINDOW_NOT_COMBOBOX* = 1423
-  ERROR_INVALID_EDIT_HEIGHT* = 1424
-  ERROR_DC_NOT_FOUND* = 1425
-  ERROR_INVALID_HOOK_FILTER* = 1426
-  ERROR_INVALID_FILTER_PROC* = 1427
-  ERROR_HOOK_NEEDS_HMOD* = 1428
-  ERROR_GLOBAL_ONLY_HOOK* = 1429
-  ERROR_JOURNAL_HOOK_SET* = 1430
-  ERROR_HOOK_NOT_INSTALLED* = 1431
-  ERROR_INVALID_LB_MESSAGE* = 1432
-  ERROR_SETCOUNT_ON_BAD_LB* = 1433
-  ERROR_LB_WITHOUT_TABSTOPS* = 1434
-  ERROR_DESTROY_OBJECT_OF_OTHER_THREAD* = 1435
-  ERROR_CHILD_WINDOW_MENU* = 1436
-  ERROR_NO_SYSTEM_MENU* = 1437
-  ERROR_INVALID_MSGBOX_STYLE* = 1438
-  ERROR_INVALID_SPI_VALUE* = 1439
-  ERROR_SCREEN_ALREADY_LOCKED* = 1440
-  ERROR_HWNDS_HAVE_DIFF_PARENT* = 1441
-  ERROR_NOT_CHILD_WINDOW* = 1442
-  ERROR_INVALID_GW_COMMAND* = 1443
-  ERROR_INVALID_THREAD_ID* = 1444
-  ERROR_NON_MDICHILD_WINDOW* = 1445
-  ERROR_POPUP_ALREADY_ACTIVE* = 1446
-  ERROR_NO_SCROLLBARS* = 1447
-  ERROR_INVALID_SCROLLBAR_RANGE* = 1448
-  ERROR_INVALID_SHOWWIN_COMMAND* = 1449
-  ERROR_NO_SYSTEM_RESOURCES* = 1450
-  ERROR_NONPAGED_SYSTEM_RESOURCES* = 1451
-  ERROR_PAGED_SYSTEM_RESOURCES* = 1452
-  ERROR_WORKING_SET_QUOTA* = 1453
-  ERROR_PAGEFILE_QUOTA* = 1454
-  ERROR_COMMITMENT_LIMIT* = 1455
-  ERROR_MENU_ITEM_NOT_FOUND* = 1456
-  ERROR_INVALID_KEYBOARD_HANDLE* = 1457
-  ERROR_HOOK_TYPE_NOT_ALLOWED* = 1458
-  ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION* = 1459
-  ERROR_TIMEOUT* = 1460
-  ERROR_EVENTLOG_FILE_CORRUPT* = 1500
-  ERROR_EVENTLOG_CANT_START* = 1501
-  ERROR_LOG_FILE_FULL* = 1502
-  ERROR_EVENTLOG_FILE_CHANGED* = 1503
-  RPC_S_INVALID_STRING_BINDING* = 1700
-  RPC_S_WRONG_KIND_OF_BINDING* = 1701
-  RPC_S_INVALID_BINDING* = 1702
-  RPC_S_PROTSEQ_NOT_SUPPORTED* = 1703
-  RPC_S_INVALID_RPC_PROTSEQ* = 1704
-  RPC_S_INVALID_STRING_UUID* = 1705
-  RPC_S_INVALID_ENDPOINT_FORMAT* = 1706
-  RPC_S_INVALID_NET_ADDR* = 1707
-  RPC_S_NO_ENDPOINT_FOUND* = 1708
-  RPC_S_INVALID_TIMEOUT* = 1709
-  RPC_S_OBJECT_NOT_FOUND* = 1710
-  RPC_S_ALREADY_REGISTERED* = 1711
-  RPC_S_TYPE_ALREADY_REGISTERED* = 1712
-  RPC_S_ALREADY_LISTENING* = 1713
-  RPC_S_NO_PROTSEQS_REGISTERED* = 1714
-  RPC_S_NOT_LISTENING* = 1715
-  RPC_S_UNKNOWN_MGR_TYPE* = 1716
-  RPC_S_UNKNOWN_IF* = 1717
-  RPC_S_NO_BINDINGS* = 1718
-  RPC_S_NO_PROTSEQS* = 1719
-  RPC_S_CANT_CREATE_ENDPOINT* = 1720
-  RPC_S_OUT_OF_RESOURCES* = 1721
-  RPC_S_SERVER_UNAVAILABLE* = 1722
-  RPC_S_SERVER_TOO_BUSY* = 1723
-  RPC_S_INVALID_NETWORK_OPTIONS* = 1724
-  RPC_S_NO_CALL_ACTIVE* = 1725
-  RPC_S_CALL_FAILED* = 1726
-  RPC_S_CALL_FAILED_DNE* = 1727
-  RPC_S_PROTOCOL_ERROR* = 1728
-  RPC_S_UNSUPPORTED_TRANS_SYN* = 1730
-  RPC_S_UNSUPPORTED_TYPE* = 1732
-  RPC_S_INVALID_TAG* = 1733
-  RPC_S_INVALID_BOUND* = 1734
-  RPC_S_NO_ENTRY_NAME* = 1735
-  RPC_S_INVALID_NAME_SYNTAX* = 1736
-  RPC_S_UNSUPPORTED_NAME_SYNTAX* = 1737
-  RPC_S_UUID_NO_ADDRESS* = 1739
-  RPC_S_DUPLICATE_ENDPOINT* = 1740
-  RPC_S_UNKNOWN_AUTHN_TYPE* = 1741
-  RPC_S_MAX_CALLS_TOO_SMALL* = 1742
-  RPC_S_STRING_TOO_LONG* = 1743
-  RPC_S_PROTSEQ_NOT_FOUND* = 1744
-  RPC_S_PROCNUM_OUT_OF_RANGE* = 1745
-  RPC_S_BINDING_HAS_NO_AUTH* = 1746
-  RPC_S_UNKNOWN_AUTHN_SERVICE* = 1747
-  RPC_S_UNKNOWN_AUTHN_LEVEL* = 1748
-  RPC_S_INVALID_AUTH_IDENTITY* = 1749
-  RPC_S_UNKNOWN_AUTHZ_SERVICE* = 1750
-  EPT_S_INVALID_ENTRY* = 1751
-  EPT_S_CANT_PERFORM_OP* = 1752
-  EPT_S_NOT_REGISTERED* = 1753
-  RPC_S_NOTHING_TO_EXPORT* = 1754
-  RPC_S_INCOMPLETE_NAME* = 1755
-  RPC_S_INVALID_VERS_OPTION* = 1756
-  RPC_S_NO_MORE_MEMBERS* = 1757
-  RPC_S_NOT_ALL_OBJS_UNEXPORTED* = 1758
-  RPC_S_INTERFACE_NOT_FOUND* = 1759
-  RPC_S_ENTRY_ALREADY_EXISTS* = 1760
-  RPC_S_ENTRY_NOT_FOUND* = 1761
-  RPC_S_NAME_SERVICE_UNAVAILABLE* = 1762
-  RPC_S_INVALID_NAF_ID* = 1763
-  RPC_S_CANNOT_SUPPORT* = 1764
-  RPC_S_NO_CONTEXT_AVAILABLE* = 1765
-  RPC_S_INTERNAL_ERROR* = 1766
-  RPC_S_ZERO_DIVIDE* = 1767
-  RPC_S_ADDRESS_ERROR* = 1768
-  RPC_S_FP_DIV_ZERO* = 1769
-  RPC_S_FP_UNDERFLOW* = 1770
-  RPC_S_FP_OVERFLOW* = 1771
-  RPC_X_NO_MORE_ENTRIES* = 1772
-  RPC_X_SS_CHAR_TRANS_OPEN_FAIL* = 1773
-  RPC_X_SS_CHAR_TRANS_SHORT_FILE* = 1774
-  RPC_X_SS_IN_NULL_CONTEXT* = 1775
-  RPC_X_SS_CONTEXT_DAMAGED* = 1777
-  RPC_X_SS_HANDLES_MISMATCH* = 1778
-  RPC_X_SS_CANNOT_GET_CALL_HANDLE* = 1779
-  RPC_X_NULL_REF_POINTER* = 1780
-  RPC_X_ENUM_VALUE_OUT_OF_RANGE* = 1781
-  RPC_X_BYTE_COUNT_TOO_SMALL* = 1782
-  RPC_X_BAD_STUB_DATA* = 1783
-  ERROR_INVALID_USER_BUFFER* = 1784
-  ERROR_UNRECOGNIZED_MEDIA* = 1785
-  ERROR_NO_TRUST_LSA_SECRET* = 1786
-  ERROR_NO_TRUST_SAM_ACCOUNT* = 1787
-  ERROR_TRUSTED_DOMAIN_FAILURE* = 1788
-  ERROR_TRUSTED_RELATIONSHIP_FAILURE* = 1789
-  ERROR_TRUST_FAILURE* = 1790
-  RPC_S_CALL_IN_PROGRESS* = 1791
-  ERROR_NETLOGON_NOT_STARTED* = 1792
-  ERROR_ACCOUNT_EXPIRED* = 1793
-  ERROR_REDIRECTOR_HAS_OPEN_HANDLES* = 1794
-  ERROR_PRINTER_DRIVER_ALREADY_INSTALLED* = 1795
-  ERROR_UNKNOWN_PORT* = 1796
-  ERROR_UNKNOWN_PRINTER_DRIVER* = 1797
-  ERROR_UNKNOWN_PRINTPROCESSOR* = 1798
-  ERROR_INVALID_SEPARATOR_FILE* = 1799
-  ERROR_INVALID_PRIORITY* = 1800
-  ERROR_INVALID_PRINTER_NAME* = 1801
-  ERROR_PRINTER_ALREADY_EXISTS* = 1802
-  ERROR_INVALID_PRINTER_COMMAND* = 1803
-  ERROR_INVALID_DATATYPE* = 1804
-  ERROR_INVALID_ENVIRONMENT* = 1805
-  RPC_S_NO_MORE_BINDINGS* = 1806
-  ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT* = 1807
-  ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT* = 1808
-  ERROR_NOLOGON_SERVER_TRUST_ACCOUNT* = 1809
-  ERROR_DOMAIN_TRUST_INCONSISTENT* = 1810
-  ERROR_SERVER_HAS_OPEN_HANDLES* = 1811
-  ERROR_RESOURCE_DATA_NOT_FOUND* = 1812
-  ERROR_RESOURCE_TYPE_NOT_FOUND* = 1813
-  ERROR_RESOURCE_NAME_NOT_FOUND* = 1814
-  ERROR_RESOURCE_LANG_NOT_FOUND* = 1815
-  ERROR_NOT_ENOUGH_QUOTA* = 1816
-  RPC_S_NO_INTERFACES* = 1817
-  RPC_S_CALL_CANCELLED* = 1818
-  RPC_S_BINDING_INCOMPLETE* = 1819
-  RPC_S_COMM_FAILURE* = 1820
-  RPC_S_UNSUPPORTED_AUTHN_LEVEL* = 1821
-  RPC_S_NO_PRINC_NAME* = 1822
-  RPC_S_NOT_RPC_ERROR* = 1823
-  RPC_S_UUID_LOCAL_ONLY* = 1824
-  RPC_S_SEC_PKG_ERROR* = 1825
-  RPC_S_NOT_CANCELLED* = 1826
-  RPC_X_INVALID_ES_ACTION* = 1827
-  RPC_X_WRONG_ES_VERSION* = 1828
-  RPC_X_WRONG_STUB_VERSION* = 1829
-  RPC_X_INVALID_PIPE_OBJECT* = 1830
-  RPC_X_INVALID_PIPE_OPERATION* = 1831
-  RPC_S_GROUP_MEMBER_NOT_FOUND* = 1898
-  EPT_S_CANT_CREATE* = 1899
-  RPC_S_INVALID_OBJECT* = 1900
-  ERROR_INVALID_TIME* = 1901
-  ERROR_INVALID_FORM_NAME* = 1902
-  ERROR_INVALID_FORM_SIZE* = 1903
-  ERROR_ALREADY_WAITING* = 1904
-  ERROR_PRINTER_DELETED* = 1905
-  ERROR_INVALID_PRINTER_STATE* = 1906
-  ERROR_PASSWORD_MUST_CHANGE* = 1907
-  ERROR_DOMAIN_CONTROLLER_NOT_FOUND* = 1908
-  ERROR_ACCOUNT_LOCKED_OUT* = 1909
-  OR_INVALID_OXID* = 1910
-  OR_INVALID_OID* = 1911
-  OR_INVALID_SET* = 1912
-  RPC_S_SEND_INCOMPLETE* = 1913
-  ERROR_NO_BROWSER_SERVERS_FOUND* = 6118
-  ERROR_INVALID_PIXEL_FORMAT* = 2000
-  ERROR_BAD_DRIVER* = 2001
-  ERROR_INVALID_WINDOW_STYLE* = 2002
-  ERROR_METAFILE_NOT_SUPPORTED* = 2003
-  ERROR_TRANSFORM_NOT_SUPPORTED* = 2004
-  ERROR_CLIPPING_NOT_SUPPORTED* = 2005
-  ERROR_UNKNOWN_PRINT_MONITOR* = 3000
-  ERROR_PRINTER_DRIVER_IN_USE* = 3001
-  ERROR_SPOOL_FILE_NOT_FOUND* = 3002
-  ERROR_SPL_NO_STARTDOC* = 3003
-  ERROR_SPL_NO_ADDJOB* = 3004
-  ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED* = 3005
-  ERROR_PRINT_MONITOR_ALREADY_INSTALLED* = 3006
-  ERROR_INVALID_PRINT_MONITOR* = 3007
-  ERROR_PRINT_MONITOR_IN_USE* = 3008
-  ERROR_PRINTER_HAS_JOBS_QUEUED* = 3009
-  ERROR_SUCCESS_REBOOT_REQUIRED* = 3010
-  ERROR_SUCCESS_RESTART_REQUIRED* = 3011
-  ERROR_WINS_INTERNAL* = 4000
-  ERROR_CAN_NOT_DEL_LOCAL_WINS* = 4001
-  ERROR_STATIC_INIT* = 4002
-  ERROR_INC_BACKUP* = 4003
-  ERROR_FULL_BACKUP* = 4004
-  ERROR_REC_NON_EXISTENT* = 4005
-  ERROR_RPL_NOT_ALLOWED* = 4006 #ERROR_NO_BROWSER_SERVERS_FOUND              = 6118; already above
-  E_UNEXPECTED* = HRESULT(0x8000FFFF)
-  E_NOTIMPL* = HRESULT(0x80004001)
-  E_OUTOFMEMORY* = HRESULT(0x8007000E)
-  E_INVALIDARG* = HRESULT(0x80070057)
-  E_NOINTERFACE* = HRESULT(0x80004002)
-  E_POINTER* = HRESULT(0x80004003)
-  E_HANDLE* = HRESULT(0x80070006)
-  E_ABORT* = HRESULT(0x80004004)
-  E_FAIL* = HRESULT(0x80004005)
-  E_ACCESSDENIED* = HRESULT(0x80070005)
-  E_PENDING* = HRESULT(0x8000000A)
-  CO_E_INIT_TLS* = HRESULT(0x80004006)
-  CO_E_INIT_SHARED_ALLOCATOR* = HRESULT(0x80004007)
-  CO_E_INIT_MEMORY_ALLOCATOR* = HRESULT(0x80004008)
-  CO_E_INIT_CLASS_CACHE* = HRESULT(0x80004009)
-  CO_E_INIT_RPC_CHANNEL* = HRESULT(0x8000400A)
-  CO_E_INIT_TLS_SET_CHANNEL_CONTROL* = HRESULT(0x8000400B)
-  CO_E_INIT_TLS_CHANNEL_CONTROL* = HRESULT(0x8000400C)
-  CO_E_INIT_UNACCEPTED_USER_ALLOCATOR* = HRESULT(0x8000400D)
-  CO_E_INIT_SCM_MUTEX_EXISTS* = HRESULT(0x8000400E)
-  CO_E_INIT_SCM_FILE_MAPPING_EXISTS* = HRESULT(0x8000400F)
-  CO_E_INIT_SCM_MAP_VIEW_OF_FILE* = HRESULT(0x80004010)
-  CO_E_INIT_SCM_EXEC_FAILURE* = HRESULT(0x80004011)
-  CO_E_INIT_ONLY_SINGLE_THREADED* = HRESULT(0x80004012)
-  CO_E_CANT_REMOTE* = HRESULT(0x80004013)
-  CO_E_BAD_SERVER_NAME* = HRESULT(0x80004014)
-  CO_E_WRONG_SERVER_IDENTITY* = HRESULT(0x80004015)
-  CO_E_OLE1DDE_DISABLED* = HRESULT(0x80004016)
-  CO_E_RUNAS_SYNTAX* = HRESULT(0x80004017)
-  CO_E_CREATEPROCESS_FAILURE* = HRESULT(0x80004018)
-  CO_E_RUNAS_CREATEPROCESS_FAILURE* = HRESULT(0x80004019)
-  CO_E_RUNAS_LOGON_FAILURE* = HRESULT(0x8000401A)
-  CO_E_LAUNCH_PERMSSION_DENIED* = HRESULT(0x8000401B)
-  CO_E_START_SERVICE_FAILURE* = HRESULT(0x8000401C)
-  CO_E_REMOTE_COMMUNICATION_FAILURE* = HRESULT(0x8000401D)
-  CO_E_SERVER_START_TIMEOUT* = HRESULT(0x8000401E)
-  CO_E_CLSREG_INCONSISTENT* = HRESULT(0x8000401F)
-  CO_E_IIDREG_INCONSISTENT* = HRESULT(0x80004020)
-  CO_E_NOT_SUPPORTED* = HRESULT(0x80004021)
-  CO_E_FIRST* = DWORD(0x800401F0)
-  CO_E_LAST* = DWORD(0x800401FF)
-  CO_S_FIRST* = DWORD(0x000401F0)
-  CO_S_LAST* = DWORD(0x000401FF)
-  S_OK* = HRESULT(0x00000000)
-  S_FALSE* = HRESULT(0x00000001)
-  CO_E_NOTINITIALIZED* = HRESULT(0x800401F0)
-  CO_E_ALREADYINITIALIZED* = HRESULT(0x800401F1)
-  CO_E_CANTDETERMINECLASS* = HRESULT(0x800401F2)
-  CO_E_CLASSSTRING* = HRESULT(0x800401F3)
-  CO_E_IIDSTRING* = HRESULT(0x800401F4)
-  CO_E_APPNOTFOUND* = HRESULT(0x800401F5)
-  CO_E_APPSINGLEUSE* = HRESULT(0x800401F6)
-  CO_E_ERRORINAPP* = HRESULT(0x800401F7)
-  CO_E_DLLNOTFOUND* = HRESULT(0x800401F8)
-  CO_E_ERRORINDLL* = HRESULT(0x800401F9)
-  CO_E_WRONGOSFORAPP* = HRESULT(0x800401FA)
-  CO_E_OBJNOTREG* = HRESULT(0x800401FB)
-  CO_E_OBJISREG* = HRESULT(0x800401FC)
-  CO_E_OBJNOTCONNECTED* = HRESULT(0x800401FD)
-  CO_E_APPDIDNTREG* = HRESULT(0x800401FE)
-  CO_E_RELEASED* = HRESULT(0x800401FF)
-  OLE_E_FIRST* = HRESULT(0x80040000)
-  OLE_E_LAST* = HRESULT(0x800400FF)
-  OLE_S_FIRST* = HRESULT(0x00040000)
-  OLE_S_LAST* = HRESULT(0x000400FF)
-  OLE_E_OLEVERB* = HRESULT(0x80040000)
-  OLE_E_ADVF* = HRESULT(0x80040001)
-  OLE_E_ENUM_NOMORE* = HRESULT(0x80040002)
-  OLE_E_ADVISENOTSUPPORTED* = HRESULT(0x80040003)
-  OLE_E_NOCONNECTION* = HRESULT(0x80040004)
-  OLE_E_NOTRUNNING* = HRESULT(0x80040005)
-  OLE_E_NOCACHE* = HRESULT(0x80040006)
-  OLE_E_BLANK* = HRESULT(0x80040007)
-  OLE_E_CLASSDIFF* = HRESULT(0x80040008)
-  OLE_E_CANT_GETMONIKER* = HRESULT(0x80040009)
-  OLE_E_CANT_BINDTOSOURCE* = HRESULT(0x8004000A)
-  OLE_E_STATIC* = HRESULT(0x8004000B)
-  OLE_E_PROMPTSAVECANCELLED* = HRESULT(0x8004000C)
-  OLE_E_INVALIDRECT* = HRESULT(0x8004000D)
-  OLE_E_WRONGCOMPOBJ* = HRESULT(0x8004000E)
-  OLE_E_INVALIDHWND* = HRESULT(0x8004000F)
-  OLE_E_NOT_INPLACEACTIVE* = HRESULT(0x80040010)
-  OLE_E_CANTCONVERT* = HRESULT(0x80040011)
-  OLE_E_NOSTORAGE* = HRESULT(0x80040012)
-  DV_E_FORMATETC* = HRESULT(0x80040064)
-  DV_E_DVTARGETDEVICE* = HRESULT(0x80040065)
-  DV_E_STGMEDIUM* = HRESULT(0x80040066)
-  DV_E_STATDATA* = HRESULT(0x80040067)
-  DV_E_LINDEX* = HRESULT(0x80040068)
-  DV_E_TYMED* = HRESULT(0x80040069)
-  DV_E_CLIPFORMAT* = HRESULT(0x8004006A)
-  DV_E_DVASPECT* = HRESULT(0x8004006B)
-  DV_E_DVTARGETDEVICE_SIZE* = HRESULT(0x8004006C)
-  DV_E_NOIVIEWOBJECT* = HRESULT(0x8004006D)
-  DRAGDROP_E_FIRST* = DWORD(0x80040100)
-  DRAGDROP_E_LAST* = DWORD(0x8004010F)
-  DRAGDROP_S_FIRST* = DWORD(0x00040100)
-  DRAGDROP_S_LAST* = DWORD(0x0004010F)
-  DRAGDROP_E_NOTREGISTERED* = HRESULT(0x80040100)
-  DRAGDROP_E_ALREADYREGISTERED* = HRESULT(0x80040101)
-  DRAGDROP_E_INVALIDHWND* = HRESULT(0x80040102)
-  CLASSFACTORY_E_FIRST* = DWORD(0x80040110)
-  CLASSFACTORY_E_LAST* = DWORD(0x8004011F)
-  CLASSFACTORY_S_FIRST* = DWORD(0x00040110)
-  CLASSFACTORY_S_LAST* = DWORD(0x0004011F)
-  CLASS_E_NOAGGREGATION* = HRESULT(0x80040110)
-  CLASS_E_CLASSNOTAVAILABLE* = HRESULT(0x80040111)
-  MARSHAL_E_FIRST* = DWORD(0x80040120)
-  MARSHAL_E_LAST* = DWORD(0x8004012F)
-  MARSHAL_S_FIRST* = DWORD(0x00040120)
-  MARSHAL_S_LAST* = DWORD(0x0004012F)
-  DATA_E_FIRST* = DWORD(0x80040130)
-  DATA_E_LAST* = DWORD(0x8004013F)
-  DATA_S_FIRST* = DWORD(0x00040130)
-  DATA_S_LAST* = DWORD(0x0004013F)
-  VIEW_E_FIRST* = DWORD(0x80040140)
-  VIEW_E_LAST* = DWORD(0x8004014F)
-  VIEW_S_FIRST* = DWORD(0x00040140)
-  VIEW_S_LAST* = DWORD(0x0004014F)
-  VIEW_E_DRAW* = HRESULT(0x80040140)
-  REGDB_E_FIRST* = DWORD(0x80040150)
-  REGDB_E_LAST* = DWORD(0x8004015F)
-  REGDB_S_FIRST* = DWORD(0x00040150)
-  REGDB_S_LAST* = DWORD(0x0004015F)
-  REGDB_E_READREGDB* = HRESULT(0x80040150)
-  REGDB_E_WRITEREGDB* = HRESULT(0x80040151)
-  REGDB_E_KEYMISSING* = HRESULT(0x80040152)
-  REGDB_E_INVALIDVALUE* = HRESULT(0x80040153)
-  REGDB_E_CLASSNOTREG* = HRESULT(0x80040154)
-  REGDB_E_IIDNOTREG* = HRESULT(0x80040155)
-  CACHE_E_FIRST* = DWORD(0x80040170)
-  CACHE_E_LAST* = DWORD(0x8004017F)
-  CACHE_S_FIRST* = DWORD(0x00040170)
-  CACHE_S_LAST* = DWORD(0x0004017F)
-  CACHE_E_NOCACHE_UPDATED* = HRESULT(0x80040170)
-  OLEOBJ_E_FIRST* = DWORD(0x80040180)
-  OLEOBJ_E_LAST* = DWORD(0x8004018F)
-  OLEOBJ_S_FIRST* = DWORD(0x00040180)
-  OLEOBJ_S_LAST* = DWORD(0x0004018F)
-  OLEOBJ_E_NOVERBS* = HRESULT(0x80040180)
-  OLEOBJ_E_INVALIDVERB* = HRESULT(0x80040181)
-  CLIENTSITE_E_FIRST* = DWORD(0x80040190)
-  CLIENTSITE_E_LAST* = DWORD(0x8004019F)
-  CLIENTSITE_S_FIRST* = DWORD(0x00040190)
-  CLIENTSITE_S_LAST* = DWORD(0x0004019F)
-  INPLACE_E_NOTUNDOABLE* = HRESULT(0x800401A0)
-  INPLACE_E_NOTOOLSPACE* = HRESULT(0x800401A1)
-  INPLACE_E_FIRST* = DWORD(0x800401A0)
-  INPLACE_E_LAST* = DWORD(0x800401AF)
-  INPLACE_S_FIRST* = DWORD(0x000401A0)
-  INPLACE_S_LAST* = DWORD(0x000401AF)
-  ENUM_E_FIRST* = DWORD(0x800401B0)
-  ENUM_E_LAST* = DWORD(0x800401BF)
-  ENUM_S_FIRST* = DWORD(0x000401B0)
-  ENUM_S_LAST* = DWORD(0x000401BF)
-  CONVERT10_E_FIRST* = DWORD(0x800401C0)
-  CONVERT10_E_LAST* = DWORD(0x800401CF)
-  CONVERT10_S_FIRST* = DWORD(0x000401C0)
-  CONVERT10_S_LAST* = DWORD(0x000401CF)
-  CONVERT10_E_OLESTREAM_GET* = HRESULT(0x800401C0)
-  CONVERT10_E_OLESTREAM_PUT* = HRESULT(0x800401C1)
-  CONVERT10_E_OLESTREAM_FMT* = HRESULT(0x800401C2)
-  CONVERT10_E_OLESTREAM_BITMAP_TO_DIB* = HRESULT(0x800401C3)
-  CONVERT10_E_STG_FMT* = HRESULT(0x800401C4)
-  CONVERT10_E_STG_NO_STD_STREAM* = HRESULT(0x800401C5)
-  CONVERT10_E_STG_DIB_TO_BITMAP* = HRESULT(0x800401C6)
-  CLIPBRD_E_FIRST* = DWORD(0x800401D0)
-  CLIPBRD_E_LAST* = DWORD(0x800401DF)
-  CLIPBRD_S_FIRST* = DWORD(0x000401D0)
-  CLIPBRD_S_LAST* = DWORD(0x000401DF)
-  CLIPBRD_E_CANT_OPEN* = HRESULT(0x800401D0)
-  CLIPBRD_E_CANT_EMPTY* = HRESULT(0x800401D1)
-  CLIPBRD_E_CANT_SET* = HRESULT(0x800401D2)
-  CLIPBRD_E_BAD_DATA* = HRESULT(0x800401D3)
-  CLIPBRD_E_CANT_CLOSE* = HRESULT(0x800401D4)
-  MK_E_FIRST* = DWORD(0x800401E0)
-  MK_E_LAST* = DWORD(0x800401EF)
-  MK_S_FIRST* = DWORD(0x000401E0)
-  MK_S_LAST* = DWORD(0x000401EF)
-  MK_E_CONNECTMANUALLY* = HRESULT(0x800401E0)
-  MK_E_EXCEEDEDDEADLINE* = HRESULT(0x800401E1)
-  MK_E_NEEDGENERIC* = HRESULT(0x800401E2)
-  MK_E_UNAVAILABLE* = HRESULT(0x800401E3)
-  MK_E_SYNTAX* = HRESULT(0x800401E4)
-  MK_E_NOOBJECT* = HRESULT(0x800401E5)
-  MK_E_INVALIDEXTENSION* = HRESULT(0x800401E6)
-  MK_E_INTERMEDIATEINTERFACENOTSUPPORTED* = HRESULT(0x800401E7)
-  MK_E_NOTBINDABLE* = HRESULT(0x800401E8)
-  MK_E_NOTBOUND* = HRESULT(0x800401E9)
-  MK_E_CANTOPENFILE* = HRESULT(0x800401EA)
-  MK_E_MUSTBOTHERUSER* = HRESULT(0x800401EB)
-  MK_E_NOINVERSE* = HRESULT(0x800401EC)
-  MK_E_NOSTORAGE* = HRESULT(0x800401ED)
-  MK_E_NOPREFIX* = HRESULT(0x800401EE)
-  MK_E_ENUMERATION_FAILED* = HRESULT(0x800401EF)
-  OLE_S_USEREG* = HRESULT(0x00040000)
-  OLE_S_STATIC* = HRESULT(0x00040001)
-  OLE_S_MAC_CLIPFORMAT* = HRESULT(0x00040002)
-  DRAGDROP_S_DROP* = HRESULT(0x00040100)
-  DRAGDROP_S_CANCEL* = HRESULT(0x00040101)
-  DRAGDROP_S_USEDEFAULTCURSORS* = HRESULT(0x00040102)
-  DATA_S_SAMEFORMATETC* = HRESULT(0x00040130)
-  VIEW_S_ALREADY_FROZEN* = HRESULT(0x00040140)
-  CACHE_S_FORMATETC_NOTSUPPORTED* = HRESULT(0x00040170)
-  CACHE_S_SAMECACHE* = HRESULT(0x00040171)
-  CACHE_S_SOMECACHES_NOTUPDATED* = HRESULT(0x00040172)
-  OLEOBJ_S_INVALIDVERB* = HRESULT(0x00040180)
-  OLEOBJ_S_CANNOT_DOVERB_NOW* = HRESULT(0x00040181)
-  OLEOBJ_S_INVALIDHWND* = HRESULT(0x00040182)
-  INPLACE_S_TRUNCATED* = HRESULT(0x000401A0)
-  CONVERT10_S_NO_PRESENTATION* = HRESULT(0x000401C0)
-  MK_S_REDUCED_TO_SELF* = HRESULT(0x000401E2)
-  MK_S_ME* = HRESULT(0x000401E4)
-  MK_S_HIM* = HRESULT(0x000401E5)
-  MK_S_US* = HRESULT(0x000401E6)
-  MK_S_MONIKERALREADYREGISTERED* = HRESULT(0x000401E7)
-  CO_E_CLASS_CREATE_FAILED* = HRESULT(0x80080001)
-  CO_E_SCM_ERROR* = HRESULT(0x80080002)
-  CO_E_SCM_RPC_FAILURE* = HRESULT(0x80080003)
-  CO_E_BAD_PATH* = HRESULT(0x80080004)
-  CO_E_SERVER_EXEC_FAILURE* = HRESULT(0x80080005)
-  CO_E_OBJSRV_RPC_FAILURE* = HRESULT(0x80080006)
-  MK_E_NO_NORMALIZED* = HRESULT(0x80080007)
-  CO_E_SERVER_STOPPING* = HRESULT(0x80080008)
-  MEM_E_INVALID_ROOT* = HRESULT(0x80080009)
-  MEM_E_INVALID_LINK* = HRESULT(0x80080010)
-  MEM_E_INVALID_SIZE* = HRESULT(0x80080011)
-  CO_S_NOTALLINTERFACES* = HRESULT(0x00080012)
-  DISP_E_UNKNOWNINTERFACE* = HRESULT(0x80020001)
-  DISP_E_MEMBERNOTFOUND* = HRESULT(0x80020003)
-  DISP_E_PARAMNOTFOUND* = HRESULT(0x80020004)
-  DISP_E_TYPEMISMATCH* = HRESULT(0x80020005)
-  DISP_E_UNKNOWNNAME* = HRESULT(0x80020006)
-  DISP_E_NONAMEDARGS* = HRESULT(0x80020007)
-  DISP_E_BADVARTYPE* = HRESULT(0x80020008)
-  DISP_E_EXCEPTION* = HRESULT(0x80020009)
-  DISP_E_OVERFLOW* = HRESULT(0x8002000A)
-  DISP_E_BADINDEX* = HRESULT(0x8002000B)
-  DISP_E_UNKNOWNLCID* = HRESULT(0x8002000C)
-  DISP_E_ARRAYISLOCKED* = HRESULT(0x8002000D)
-  DISP_E_BADPARAMCOUNT* = HRESULT(0x8002000E)
-  DISP_E_PARAMNOTOPTIONAL* = HRESULT(0x8002000F)
-  DISP_E_BADCALLEE* = HRESULT(0x80020010)
-  DISP_E_NOTACOLLECTION* = HRESULT(0x80020011)
-  TYPE_E_BUFFERTOOSMALL* = HRESULT(0x80028016)
-  TYPE_E_INVDATAREAD* = HRESULT(0x80028018)
-  TYPE_E_UNSUPFORMAT* = HRESULT(0x80028019)
-  TYPE_E_REGISTRYACCESS* = HRESULT(0x8002801C)
-  TYPE_E_LIBNOTREGISTERED* = HRESULT(0x8002801D)
-  TYPE_E_UNDEFINEDTYPE* = HRESULT(0x80028027)
-  TYPE_E_QUALIFIEDNAMEDISALLOWED* = HRESULT(0x80028028)
-  TYPE_E_INVALIDSTATE* = HRESULT(0x80028029)
-  TYPE_E_WRONGTYPEKIND* = HRESULT(0x8002802A)
-  TYPE_E_ELEMENTNOTFOUND* = HRESULT(0x8002802B)
-  TYPE_E_AMBIGUOUSNAME* = HRESULT(0x8002802C)
-  TYPE_E_NAMECONFLICT* = HRESULT(0x8002802D)
-  TYPE_E_UNKNOWNLCID* = HRESULT(0x8002802E)
-  TYPE_E_DLLFUNCTIONNOTFOUND* = HRESULT(0x8002802F)
-  TYPE_E_BADMODULEKIND* = HRESULT(0x800288BD)
-  TYPE_E_SIZETOOBIG* = HRESULT(0x800288C5)
-  TYPE_E_DUPLICATEID* = HRESULT(0x800288C6)
-  TYPE_E_INVALIDID* = HRESULT(0x800288CF)
-  TYPE_E_TYPEMISMATCH* = HRESULT(0x80028CA0)
-  TYPE_E_OUTOFBOUNDS* = HRESULT(0x80028CA1)
-  TYPE_E_IOERROR* = HRESULT(0x80028CA2)
-  TYPE_E_CANTCREATETMPFILE* = HRESULT(0x80028CA3)
-  TYPE_E_CANTLOADLIBRARY* = HRESULT(0x80029C4A)
-  TYPE_E_INCONSISTENTPROPFUNCS* = HRESULT(0x80029C83)
-  TYPE_E_CIRCULARTYPE* = HRESULT(0x80029C84)
-  STG_E_INVALIDFUNCTION* = HRESULT(0x80030001)
-  STG_E_FILENOTFOUND* = HRESULT(0x80030002)
-  STG_E_PATHNOTFOUND* = HRESULT(0x80030003)
-  STG_E_TOOMANYOPENFILES* = HRESULT(0x80030004)
-  STG_E_ACCESSDENIED* = HRESULT(0x80030005)
-  STG_E_INVALIDHANDLE* = HRESULT(0x80030006)
-  STG_E_INSUFFICIENTMEMORY* = HRESULT(0x80030008)
-  STG_E_INVALIDPOINTER* = HRESULT(0x80030009)
-  STG_E_NOMOREFILES* = HRESULT(0x80030012)
-  STG_E_DISKISWRITEPROTECTED* = HRESULT(0x80030013)
-  STG_E_SEEKERROR* = HRESULT(0x80030019)
-  STG_E_WRITEFAULT* = HRESULT(0x8003001D)
-  STG_E_READFAULT* = HRESULT(0x8003001E)
-  STG_E_SHAREVIOLATION* = HRESULT(0x80030020)
-  STG_E_LOCKVIOLATION* = HRESULT(0x80030021)
-  STG_E_FILEALREADYEXISTS* = HRESULT(0x80030050)
-  STG_E_INVALIDPARAMETER* = HRESULT(0x80030057)
-  STG_E_MEDIUMFULL* = HRESULT(0x80030070)
-  STG_E_PROPSETMISMATCHED* = HRESULT(0x800300F0)
-  STG_E_ABNORMALAPIEXIT* = HRESULT(0x800300FA)
-  STG_E_INVALIDHEADER* = HRESULT(0x800300FB)
-  STG_E_INVALIDNAME* = HRESULT(0x800300FC)
-  STG_E_UNKNOWN* = HRESULT(0x800300FD)
-  STG_E_UNIMPLEMENTEDFUNCTION* = HRESULT(0x800300FE)
-  STG_E_INVALIDFLAG* = HRESULT(0x800300FF)
-  STG_E_INUSE* = HRESULT(0x80030100)
-  STG_E_NOTCURRENT* = HRESULT(0x80030101)
-  STG_E_REVERTED* = HRESULT(0x80030102)
-  STG_E_CANTSAVE* = HRESULT(0x80030103)
-  STG_E_OLDFORMAT* = HRESULT(0x80030104)
-  STG_E_OLDDLL* = HRESULT(0x80030105)
-  STG_E_SHAREREQUIRED* = HRESULT(0x80030106)
-  STG_E_NOTFILEBASEDSTORAGE* = HRESULT(0x80030107)
-  STG_E_EXTANTMARSHALLINGS* = HRESULT(0x80030108)
-  STG_E_DOCFILECORRUPT* = HRESULT(0x80030109)
-  STG_E_BADBASEADDRESS* = HRESULT(0x80030110)
-  STG_E_INCOMPLETE* = HRESULT(0x80030201)
-  STG_E_TERMINATED* = HRESULT(0x80030202)
-  STG_S_CONVERTED* = HRESULT(0x00030200)
-  STG_S_BLOCK* = HRESULT(0x00030201)
-  STG_S_RETRYNOW* = HRESULT(0x00030202)
-  STG_S_MONITORING* = HRESULT(0x00030203)
-  RPC_E_CALL_REJECTED* = HRESULT(0x80010001)
-  RPC_E_CALL_CANCELED* = HRESULT(0x80010002)
-  RPC_E_CANTPOST_INSENDCALL* = HRESULT(0x80010003)
-  RPC_E_CANTCALLOUT_INASYNCCALL* = HRESULT(0x80010004)
-  RPC_E_CANTCALLOUT_INEXTERNALCALL* = HRESULT(0x80010005)
-  RPC_E_CONNECTION_TERMINATED* = HRESULT(0x80010006)
-  RPC_E_SERVER_DIED* = HRESULT(0x80010007)
-  RPC_E_CLIENT_DIED* = HRESULT(0x80010008)
-  RPC_E_INVALID_DATAPACKET* = HRESULT(0x80010009)
-  RPC_E_CANTTRANSMIT_CALL* = HRESULT(0x8001000A)
-  RPC_E_CLIENT_CANTMARSHAL_DATA* = HRESULT(0x8001000B)
-  RPC_E_CLIENT_CANTUNMARSHAL_DATA* = HRESULT(0x8001000C)
-  RPC_E_SERVER_CANTMARSHAL_DATA* = HRESULT(0x8001000D)
-  RPC_E_SERVER_CANTUNMARSHAL_DATA* = HRESULT(0x8001000E)
-  RPC_E_INVALID_DATA* = HRESULT(0x8001000F)
-  RPC_E_INVALID_PARAMETER* = HRESULT(0x80010010)
-  RPC_E_CANTCALLOUT_AGAIN* = HRESULT(0x80010011)
-  RPC_E_SERVER_DIED_DNE* = HRESULT(0x80010012)
-  RPC_E_SYS_CALL_FAILED* = HRESULT(0x80010100)
-  RPC_E_OUT_OF_RESOURCES* = HRESULT(0x80010101)
-  RPC_E_ATTEMPTED_MULTITHREAD* = HRESULT(0x80010102)
-  RPC_E_NOT_REGISTERED* = HRESULT(0x80010103)
-  RPC_E_FAULT* = HRESULT(0x80010104)
-  RPC_E_SERVERFAULT* = HRESULT(0x80010105)
-  RPC_E_CHANGED_MODE* = HRESULT(0x80010106)
-  RPC_E_INVALIDMETHOD* = HRESULT(0x80010107)
-  RPC_E_DISCONNECTED* = HRESULT(0x80010108)
-  RPC_E_RETRY* = HRESULT(0x80010109)
-  RPC_E_SERVERCALL_RETRYLATER* = HRESULT(0x8001010A)
-  RPC_E_SERVERCALL_REJECTED* = HRESULT(0x8001010B)
-  RPC_E_INVALID_CALLDATA* = HRESULT(0x8001010C)
-  RPC_E_CANTCALLOUT_ININPUTSYNCCALL* = HRESULT(0x8001010D)
-  RPC_E_WRONG_THREAD* = HRESULT(0x8001010E)
-  RPC_E_THREAD_NOT_INIT* = HRESULT(0x8001010F)
-  RPC_E_VERSION_MISMATCH* = HRESULT(0x80010110)
-  RPC_E_INVALID_HEADER* = HRESULT(0x80010111)
-  RPC_E_INVALID_EXTENSION* = HRESULT(0x80010112)
-  RPC_E_INVALID_IPID* = HRESULT(0x80010113)
-  RPC_E_INVALID_OBJECT* = HRESULT(0x80010114)
-  RPC_S_CALLPENDING* = HRESULT(0x80010115)
-  RPC_S_WAITONTIMER* = HRESULT(0x80010116)
-  RPC_E_CALL_COMPLETE* = HRESULT(0x80010117)
-  RPC_E_UNSECURE_CALL* = HRESULT(0x80010118)
-  RPC_E_TOO_LATE* = HRESULT(0x80010119)
-  RPC_E_NO_GOOD_SECURITY_PACKAGES* = HRESULT(0x8001011A)
-  RPC_E_ACCESS_DENIED* = HRESULT(0x8001011B)
-  RPC_E_REMOTE_DISABLED* = HRESULT(0x8001011C)
-  RPC_E_INVALID_OBJREF* = HRESULT(0x8001011D)
-  RPC_E_UNEXPECTED* = HRESULT(0x8001FFFF)
-  NTE_BAD_UID* = HRESULT(0x80090001)
-  NTE_BAD_HASH* = HRESULT(0x80090002)
-  NTE_BAD_KEY* = HRESULT(0x80090003)
-  NTE_BAD_LEN* = HRESULT(0x80090004)
-  NTE_BAD_DATA* = HRESULT(0x80090005)
-  NTE_BAD_SIGNATURE* = HRESULT(0x80090006)
-  NTE_BAD_VER* = HRESULT(0x80090007)
-  NTE_BAD_ALGID* = HRESULT(0x80090008)
-  NTE_BAD_FLAGS* = HRESULT(0x80090009)
-  NTE_BAD_TYPE* = HRESULT(0x8009000A)
-  NTE_BAD_KEY_STATE* = HRESULT(0x8009000B)
-  NTE_BAD_HASH_STATE* = HRESULT(0x8009000C)
-  NTE_NO_KEY* = HRESULT(0x8009000D)
-  NTE_NO_MEMORY* = HRESULT(0x8009000E)
-  NTE_EXISTS* = HRESULT(0x8009000F)
-  NTE_PERM* = HRESULT(0x80090010)
-  NTE_NOT_FOUND* = HRESULT(0x80090011)
-  NTE_DOUBLE_ENCRYPT* = HRESULT(0x80090012)
-  NTE_BAD_PROVIDER* = HRESULT(0x80090013)
-  NTE_BAD_PROV_TYPE* = HRESULT(0x80090014)
-  NTE_BAD_PUBLIC_KEY* = HRESULT(0x80090015)
-  NTE_BAD_KEYSET* = HRESULT(0x80090016)
-  NTE_PROV_TYPE_NOT_DEF* = HRESULT(0x80090017)
-  NTE_PROV_TYPE_ENTRY_BAD* = HRESULT(0x80090018)
-  NTE_KEYSET_NOT_DEF* = HRESULT(0x80090019)
-  NTE_KEYSET_ENTRY_BAD* = HRESULT(0x8009001A)
-  NTE_PROV_TYPE_NO_MATCH* = HRESULT(0x8009001B)
-  NTE_SIGNATURE_FILE_BAD* = HRESULT(0x8009001C)
-  NTE_PROVIDER_DLL_FAIL* = HRESULT(0x8009001D)
-  NTE_PROV_DLL_NOT_FOUND* = HRESULT(0x8009001E)
-  NTE_BAD_KEYSET_PARAM* = HRESULT(0x8009001F)
-  NTE_FAIL* = HRESULT(0x80090020)
-  NTE_SYS_ERR* = HRESULT(0x80090021)
-  NTE_OP_OK* = HRESULT(0)
-  TRUST_E_PROVIDER_UNKNOWN* = HRESULT(0x800B0001)
-  TRUST_E_ACTION_UNKNOWN* = HRESULT(0x800B0002)
-  TRUST_E_SUBJECT_FORM_UNKNOWN* = HRESULT(0x800B0003)
-  TRUST_E_SUBJECT_NOT_TRUSTED* = HRESULT(0x800B0004)
-  DIGSIG_E_ENCODE* = HRESULT(0x800B0005)
-  DIGSIG_E_DECODE* = HRESULT(0x800B0006)
-  DIGSIG_E_EXTENSIBILITY* = HRESULT(0x800B0007)
-  DIGSIG_E_CRYPTO* = HRESULT(0x800B0008)
-  PERSIST_E_SIZEDEFINITE* = HRESULT(0x800B0009)
-  PERSIST_E_SIZEINDEFINITE* = HRESULT(0x800B000A)
-  PERSIST_E_NOTSELFSIZING* = HRESULT(0x800B000B)
-  TRUST_E_NOSIGNATURE* = HRESULT(0x800B0100)
-  CERT_E_EXPIRED* = HRESULT(0x800B0101)
-  CERT_E_VALIDIYPERIODNESTING* = HRESULT(0x800B0102)
-  CERT_E_ROLE* = HRESULT(0x800B0103)
-  CERT_E_PATHLENCONST* = HRESULT(0x800B0104)
-  CERT_E_CRITICAL* = HRESULT(0x800B0105)
-  CERT_E_PURPOSE* = HRESULT(0x800B0106)
-  CERT_E_ISSUERCHAINING* = HRESULT(0x800B0107)
-  CERT_E_MALFORMED* = HRESULT(0x800B0108)
-  CERT_E_UNTRUSTEDROOT* = HRESULT(0x800B0109)
-  CERT_E_CHAINING* = HRESULT(0x800B010A) # was #define dname def_expr
-
-proc UNICODE_NULL*(): WCHAR
-const
-  MAX_PATH* = 260
-  LF_FACESIZE* = 32
-  LF_FULLFACESIZE* = 64
-  ELF_VENDOR_SIZE* = 4
-  SECURITY_STATIC_TRACKING* = 0
-  SECURITY_DYNAMIC_TRACKING* = 1
-  MAX_DEFAULTCHAR* = 2
-  MAX_LEADBYTES* = 12
-  EXCEPTION_MAXIMUM_PARAMETERS* = 15
-  CCHDEVICENAME* = 32
-  CCHFORMNAME* = 32
-  MENU_TEXT_LEN* = 40
-  MAX_LANA* = 254
-  NCBNAMSZ* = 16
-  NETBIOS_NAME_LEN* = 16
-  OFS_MAXPATHNAME* = 128
-  MAX_TAB_STOPS* = 32
-  ANYSIZE_ARRAY* = 1
-  RAS_MaxCallbackNumber* = 128
-  RAS_MaxDeviceName* = 128
-  RAS_MaxDeviceType* = 16
-  RAS_MaxEntryName* = 256
-  RAS_MaxIpAddress* = 15
-  RAS_MaxIpxAddress* = 21
-  RAS_MaxPhoneNumber* = 128
-  UNLEN* = 256
-  PWLEN* = 256
-  CNLEN* = 15
-  DNLEN* = 15                 # Unsigned types max
-  MAXDWORD* = 0xFFFFFFFF
-  MAXWORD* = 0x0000FFFF
-  MAXBYTE* = 0x000000FF       # Signed types max/min
-  MINCHAR* = 0x00000080
-  MAXCHAR* = 0x0000007F
-  MINSHORT* = 0x00008000
-  MAXSHORT* = 0x00007FFF
-  MINLONG* = 0x80000000
-  MAXLONG* = 0x7FFFFFFF       # _llseek
-  FILE_BEGIN* = 0
-  FILE_CURRENT* = 1
-  FILE_END* = 2               # _lopen, LZOpenFile, OpenFile
-  OF_READ* = 0
-  OF_READWRITE* = 2
-  OF_WRITE* = 1
-  OF_SHARE_COMPAT* = 0
-  OF_SHARE_DENY_NONE* = 64
-  OF_SHARE_DENY_READ* = 48
-  OF_SHARE_DENY_WRITE* = 32
-  OF_SHARE_EXCLUSIVE* = 16
-  OF_CANCEL* = 2048
-  OF_CREATE* = 4096
-  OF_DELETE* = 512
-  OF_EXIST* = 16384
-  OF_PARSE* = 256
-  OF_PROMPT* = 8192
-  OF_REOPEN* = 32768
-  OF_VERIFY* = 1024           # ActivateKeyboardLayout, LoadKeyboardLayout
-  HKL_NEXT* = 1
-  HKL_PREV* = 0
-  KLF_REORDER* = 8
-  KLF_UNLOADPREVIOUS* = 4
-  KLF_ACTIVATE* = 1
-  KLF_NOTELLSHELL* = 128
-  KLF_REPLACELANG* = 16
-  KLF_SUBSTITUTE_OK* = 2      # AppendMenu
-  MF_BITMAP* = 0x00000004
-  MF_DISABLED* = 0x00000002
-  MF_ENABLED* = 0
-  MF_GRAYED* = 0x00000001
-  MF_HELP* = 0x00004000
-  MF_MENUBARBREAK* = 0x00000020
-  MF_MENUBREAK* = 0x00000040
-  MF_MOUSESELECT* = 0x00008000
-  MF_OWNERDRAW* = 0x00000100
-  MF_POPUP* = 0x00000010
-  MF_SEPARATOR* = 0x00000800
-  MF_STRING* = 0
-  MF_SYSMENU* = 0x00002000
-  MF_USECHECKBITMAPS* = 0x00000200 # Ternary Raster Operations - BitBlt
-  BLACKNESS* = 0x00000042
-  NOTSRCERASE* = 0x001100A6
-  NOTSRCCOPY* = 0x00330008
-  SRCERASE* = 0x00440328
-  DSTINVERT* = 0x00550009
-  PATINVERT* = 0x005A0049
-  SRCINVERT* = 0x00660046
-  SRCAND* = 0x008800C6
-  MERGEPAINT* = 0x00BB0226
-  MERGECOPY* = 0x00C000CA
-  SRCCOPY* = 0x00CC0020
-  SRCPAINT* = 0x00EE0086
-  PATCOPY* = 0x00F00021
-  PATPAINT* = 0x00FB0A09
-  WHITENESS* = 0x00FF0062     # Binary Raster Operations
-  R2_BLACK* = 1
-  R2_COPYPEN* = 13
-  R2_MASKNOTPEN* = 3
-  R2_MASKPEN* = 9
-  R2_MASKPENNOT* = 5
-  R2_MERGENOTPEN* = 12
-  R2_MERGEPEN* = 15
-  R2_MERGEPENNOT* = 14
-  R2_NOP* = 11
-  R2_NOT* = 6
-  R2_NOTCOPYPEN* = 4
-  R2_NOTMASKPEN* = 8
-  R2_NOTMERGEPEN* = 2
-  R2_NOTXORPEN* = 10
-  R2_WHITE* = 16
-  R2_XORPEN* = 7              # BroadcastSystemMessage
-  BSF_FLUSHDISK* = 4
-  BSF_FORCEIFHUNG* = 32
-  BSF_IGNORECURRENTTASK* = 2
-  BSF_NOHANG* = 8
-  BSF_POSTMESSAGE* = 16
-  BSF_QUERY* = 1
-  BSM_ALLCOMPONENTS* = 0
-  BSM_APPLICATIONS* = 8
-  BSM_INSTALLABLEDRIVERS* = 4
-  BSM_NETDRIVER* = 2
-  BSM_VXDS* = 1
-  BROADCAST_QUERY_DENY* = 1112363332 # BrowseCallbackProc
-                                     # CallNamedPipe
-  NMPWAIT_NOWAIT* = 1
-  NMPWAIT_WAIT_FOREVER* = - (1)
-  NMPWAIT_USE_DEFAULT_WAIT* = 0 # CascadeWindows, TileWindows
-  MDITILE_SKIPDISABLED* = 2
-  MDITILE_HORIZONTAL* = 1
-  MDITILE_VERTICAL* = 0       # CBTProc
-  HCBT_ACTIVATE* = 5
-  HCBT_CLICKSKIPPED* = 6
-  HCBT_CREATEWND* = 3
-  HCBT_DESTROYWND* = 4
-  HCBT_KEYSKIPPED* = 7
-  HCBT_MINMAX* = 1
-  HCBT_MOVESIZE* = 0
-  HCBT_QS* = 2
-  HCBT_SETFOCUS* = 9
-  HCBT_SYSCOMMAND* = 8        # ChangeDisplaySettings
-  DM_BITSPERPEL* = 0x00040000
-  DM_PELSWIDTH* = 0x00080000
-  DM_PELSHEIGHT* = 0x00100000
-  DM_DISPLAYFLAGS* = 0x00200000
-  DM_DISPLAYFREQUENCY* = 0x00400000
-  CDS_UPDATEREGISTRY* = 1
-  CDS_TEST* = 2
-  CDS_FULLSCREEN* = 4
-  CDS_GLOBAL* = 8
-  CDS_SET_PRIMARY* = 0x00000010
-  CDS_RESET* = 0x40000000
-  CDS_SETRECT* = 0x20000000
-  CDS_NORESET* = 0x10000000
-  DISP_CHANGE_SUCCESSFUL* = 0
-  DISP_CHANGE_RESTART* = 1
-  DISP_CHANGE_BADFLAGS* = - (4)
-  DISP_CHANGE_FAILED* = - (1)
-  DISP_CHANGE_BADMODE* = - (2)
-  DISP_CHANGE_NOTUPDATED* = - (3) # ChangeServiceConfig
-  SERVICE_NO_CHANGE* = - (1)
-  SERVICE_WIN32_OWN_PROCESS* = 16
-  SERVICE_WIN32_SHARE_PROCESS* = 32
-  SERVICE_KERNEL_DRIVER* = 1
-  SERVICE_FILE_SYSTEM_DRIVER* = 2
-  SERVICE_INTERACTIVE_PROCESS* = 256
-  SERVICE_BOOT_START* = 0
-  SERVICE_SYSTEM_START* = 1
-  SERVICE_AUTO_START* = 2
-  SERVICE_DEMAND_START* = 3
-  SERVICE_DISABLED* = 4       # SERVICE_STATUS structure
-  SERVICE_STOPPED* = 1
-  SERVICE_START_PENDING* = 2
-  SERVICE_STOP_PENDING* = 3
-  SERVICE_RUNNING* = 4
-  SERVICE_CONTINUE_PENDING* = 5
-  SERVICE_PAUSE_PENDING* = 6
-  SERVICE_PAUSED* = 7
-  SERVICE_ACCEPT_STOP* = 1
-  SERVICE_ACCEPT_PAUSE_CONTINUE* = 2
-  SERVICE_ACCEPT_SHUTDOWN* = 4 # CheckDlgButton
-  BST_CHECKED* = 1
-  BST_INDETERMINATE* = 2
-  BST_UNCHECKED* = 0
-  BST_FOCUS* = 8
-  BST_PUSHED* = 4             # CheckMenuItem, HiliteMenuItem
-  MF_BYCOMMAND* = 0
-  MF_BYPOSITION* = 0x00000400
-  MF_CHECKED* = 0x00000008
-  MF_UNCHECKED* = 0
-  MF_HILITE* = 0x00000080
-  MF_UNHILITE* = 0            # ChildWindowFromPointEx
-  CWP_ALL* = 0
-  CWP_SKIPINVISIBLE* = 1
-  CWP_SKIPDISABLED* = 2
-  CWP_SKIPTRANSPARENT* = 4    # ClearCommError
-  CE_BREAK* = 16
-  CE_DNS* = 2048
-  CE_FRAME* = 8
-  CE_IOE* = 1024
-  CE_MODE* = 32768
-  CE_OOP* = 4096
-  CE_OVERRUN* = 2
-  CE_PTO* = 512
-  CE_RXOVER* = 1
-  CE_RXPARITY* = 4
-  CE_TXFULL* = 256            # ChooseMatchToTarget
-                              # CombineRgn
-  RGN_AND* = 1
-  RGN_COPY* = 5
-  RGN_DIFF* = 4
-  RGN_OR* = 2
-  RGN_XOR* = 3
-  NULLREGION* = 1
-  SIMPLEREGION* = 2
-  COMPLEXREGION* = 3
-  ERROR* = 0                  # CommonDlgExtendedError
-  CDERR_DIALOGFAILURE* = 0x0000FFFF
-  CDERR_FINDRESFAILURE* = 6
-  CDERR_INITIALIZATION* = 2
-  CDERR_LOADRESFAILURE* = 7
-  CDERR_LOADSTRFAILURE* = 5
-  CDERR_LOCKRESFAILURE* = 8
-  CDERR_MEMALLOCFAILURE* = 9
-  CDERR_MEMLOCKFAILURE* = 10
-  CDERR_NOHINSTANCE* = 4
-  CDERR_NOHOOK* = 11
-  CDERR_NOTEMPLATE* = 3
-  CDERR_REGISTERMSGFAIL* = 12
-  CDERR_STRUCTSIZE* = 1
-  PDERR_CREATEICFAILURE* = 0x00001000 + 10
-  PDERR_DEFAULTDIFFERENT* = 0x00001000 + 12
-  PDERR_DNDMMISMATCH* = 0x00001000 + 9
-  PDERR_GETDEVMODEFAIL* = 0x00001000 + 5
-  PDERR_INITFAILURE* = 0x00001000 + 6
-  PDERR_LOADDRVFAILURE* = 0x00001000 + 4
-  PDERR_NODEFAULTPRN* = 0x00001000 + 8
-  PDERR_NODEVICES* = 0x00001000 + 7
-  PDERR_PARSEFAILURE* = 0x00001000 + 2
-  PDERR_PRINTERNOTFOUND* = 0x00001000 + 11
-  PDERR_RETDEFFAILURE* = 0x00001000 + 3
-  PDERR_SETUPFAILURE* = 0x00001000 + 1
-  CFERR_MAXLESSTHANMIN* = 0x00002000 + 2
-  CFERR_NOFONTS* = 0x00002000 + 1
-  FNERR_BUFFERTOOSMALL* = 0x00003000 + 3
-  FNERR_INVALIDFILENAME* = 0x00003000 + 2
-  FNERR_SUBCLASSFAILURE* = 0x00003000 + 1
-  FRERR_BUFFERLENGTHZERO* = 0x00004000 + 1 # CompareString, LCMapString
-  LOCALE_SYSTEM_DEFAULT* = 0x00000800
-  LOCALE_USER_DEFAULT* = 0x00000400
-  NORM_IGNORECASE* = 1
-  NORM_IGNOREKANATYPE* = 65536
-  NORM_IGNORENONSPACE* = 2
-  NORM_IGNORESYMBOLS* = 4
-  NORM_IGNOREWIDTH* = 131072
-  SORT_STRINGSORT* = 4096
-  LCMAP_BYTEREV* = 2048
-  LCMAP_FULLWIDTH* = 8388608
-  LCMAP_HALFWIDTH* = 4194304
-  LCMAP_HIRAGANA* = 1048576
-  LCMAP_KATAKANA* = 2097152
-  LCMAP_LOWERCASE* = 256
-  LCMAP_SORTKEY* = 1024
-  LCMAP_UPPERCASE* = 512      # ContinueDebugEvent
-  DBG_CONTINUE* = 0x00010002
-  DBG_CONTROL_BREAK* = 0x40010008
-  DBG_CONTROL_C* = 0x40010005
-  DBG_EXCEPTION_NOT_HANDLED* = 0x80010001
-  DBG_TERMINATE_THREAD* = 0x40010003
-  DBG_TERMINATE_PROCESS* = 0x40010004 # ControlService
-  SERVICE_CONTROL_STOP* = 1
-  SERVICE_CONTROL_PAUSE* = 2
-  SERVICE_CONTROL_CONTINUE* = 3
-  SERVICE_CONTROL_INTERROGATE* = 4
-  SERVICE_CONTROL_SHUTDOWN* = 5 # CopyImage, LoadImage
-  IMAGE_BITMAP* = 0
-  IMAGE_CURSOR* = 2
-  IMAGE_ENHMETAFILE* = 1
-  IMAGE_ICON* = 1
-  LR_MONOCHROME* = 1
-  LR_COLOR* = 2
-  LR_COPYRETURNORG* = 4
-  LR_COPYDELETEORG* = 8
-  LR_DEFAULTSIZE* = 64
-  LR_CREATEDIBSECTION* = 8192
-  LR_COPYFROMRESOURCE* = 0x00004000
-  LR_SHARED* = 0x00008000     # CreateDesktop
-  DF_ALLOWOTHERACCOUNTHOOK* = 0x00000001
-  DESKTOP_CREATEMENU* = 0x00000004
-  DESKTOP_CREATEWINDOW* = 0x00000002
-  DESKTOP_ENUMERATE* = 0x00000040
-  DESKTOP_HOOKCONTROL* = 0x00000008
-  DESKTOP_JOURNALPLAYBACK* = 0x00000020
-  DESKTOP_JOURNALRECORD* = 0x00000010
-  DESKTOP_READOBJECTS* = 0x00000001
-  DESKTOP_SWITCHDESKTOP* = 0x00000100
-  DESKTOP_WRITEOBJECTS* = 0x00000080
-  WSF_VISIBLE* = 0x00000001   # CreateDIBitmap
-  CBM_INIT* = 0x00000004
-  DIB_PAL_COLORS* = 1
-  DIB_RGB_COLORS* = 0         # CreateFile, GetFileAttributes, SetFileAttributes
-  GENERIC_READ* = 0x80000000
-  GENERIC_WRITE* = 0x40000000 # file & pipe
-  FILE_READ_DATA* = 0x00000001 # directory
-  FILE_LIST_DIRECTORY* = 0x00000001 # file & pipe
-  FILE_WRITE_DATA* = 0x00000002 # directory
-  FILE_ADD_FILE* = 0x00000002 # file
-  FILE_APPEND_DATA* = 0x00000004 # directory
-  FILE_ADD_SUBDIRECTORY* = 0x00000004 # named pipe
-  FILE_CREATE_PIPE_INSTANCE* = 0x00000004 # file & directory
-  FILE_READ_EA* = 0x00000008
-  FILE_READ_PROPERTIES* = FILE_READ_EA # file & directory
-  FILE_WRITE_EA* = 0x00000010
-  FILE_WRITE_PROPERTIES* = FILE_WRITE_EA # file
-  FILE_EXECUTE* = 0x00000020  # directory
-  FILE_TRAVERSE* = 0x00000020 # directory
-  FILE_DELETE_CHILD* = 0x00000040 # all
-  FILE_READ_ATTRIBUTES* = 0x00000080 # all
-  FILE_WRITE_ATTRIBUTES* = 0x00000100 # displaced lower
-                                      #  #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
-                                      #
-                                      #  #define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
-                                      #                                     FILE_READ_DATA           |\
-                                      #                                     FILE_READ_ATTRIBUTES     |\
-                                      #                                     FILE_READ_EA             |\
-                                      #                                     SYNCHRONIZE)
-                                      #
-                                      #
-                                      #  #define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
-                                      #                                     FILE_WRITE_DATA          |\
-                                      #                                     FILE_WRITE_ATTRIBUTES    |\
-                                      #                                     FILE_WRITE_EA            |\
-                                      #                                     FILE_APPEND_DATA         |\
-                                      #                                     SYNCHRONIZE)
-                                      #
-                                      #
-                                      #  #define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
-                                      #                                     FILE_READ_ATTRIBUTES     |\
-                                      #                                     FILE_EXECUTE             |\
-                                      #                                     SYNCHRONIZE)
-                                      #
-  FILE_SHARE_DELETE* = 4
-  FILE_SHARE_READ* = 1
-  FILE_SHARE_WRITE* = 2
-  CONSOLE_TEXTMODE_BUFFER* = 1
-  CREATE_NEW* = 1
-  CREATE_ALWAYS* = 2
-  OPEN_EXISTING* = 3
-  OPEN_ALWAYS* = 4
-  TRUNCATE_EXISTING* = 5
-  FILE_ATTRIBUTE_ARCHIVE* = 32
-  FILE_ATTRIBUTE_COMPRESSED* = 2048
-  FILE_ATTRIBUTE_NORMAL* = 128
-  FILE_ATTRIBUTE_DIRECTORY* = 16
-  FILE_ATTRIBUTE_HIDDEN* = 2
-  FILE_ATTRIBUTE_READONLY* = 1
-  FILE_ATTRIBUTE_SYSTEM* = 4
-  FILE_ATTRIBUTE_TEMPORARY* = 256
-  FILE_FLAG_WRITE_THROUGH* = 0x80000000
-  FILE_FLAG_OVERLAPPED* = 1073741824
-  FILE_FLAG_NO_BUFFERING* = 536870912
-  FILE_FLAG_RANDOM_ACCESS* = 268435456
-  FILE_FLAG_SEQUENTIAL_SCAN* = 134217728
-  FILE_FLAG_DELETE_ON_CLOSE* = 67108864
-  FILE_FLAG_BACKUP_SEMANTICS* = 33554432
-  FILE_FLAG_POSIX_SEMANTICS* = 16777216
-  cSECURITY_ANONYMOUS* = 0
-  cSECURITY_IDENTIFICATION* = 65536
-  cSECURITY_IMPERSONATION* = 131072
-  cSECURITY_DELEGATION* = 196608
-  cSECURITY_CONTEXT_TRACKING* = 262144
-  cSECURITY_EFFECTIVE_ONLY* = 524288
-  cSECURITY_SQOS_PRESENT* = 1048576 # CreateFileMapping, VirtualAlloc, VirtualFree, VirtualProtect
-  SEC_COMMIT* = 134217728
-  SEC_IMAGE* = 16777216
-  SEC_NOCACHE* = 268435456
-  SEC_RESERVE* = 67108864
-  PAGE_READONLY* = 2
-  PAGE_READWRITE* = 4
-  PAGE_WRITECOPY* = 8
-  PAGE_EXECUTE* = 16
-  PAGE_EXECUTE_READ* = 32
-  PAGE_EXECUTE_READWRITE* = 64
-  PAGE_EXECUTE_WRITECOPY* = 128
-  PAGE_GUARD* = 256
-  PAGE_NOACCESS* = 1
-  PAGE_NOCACHE* = 512
-  MEM_COMMIT* = 4096
-  MEM_FREE* = 65536
-  MEM_RESERVE* = 8192
-  MEM_IMAGE* = 16777216
-  MEM_MAPPED* = 262144
-  MEM_PRIVATE* = 131072
-  MEM_DECOMMIT* = 16384
-  MEM_RELEASE* = 32768
-  MEM_TOP_DOWN* = 1048576
-  EXCEPTION_GUARD_PAGE* = 0x80000001
-  SECTION_EXTEND_SIZE* = 0x00000010
-  SECTION_MAP_READ* = 0x00000004
-  SECTION_MAP_WRITE* = 0x00000002
-  SECTION_QUERY* = 0x00000001
-  SECTION_ALL_ACCESS* = 0x000F001F # CreateFont
-  FW_DONTCARE* = 0
-  FW_THIN* = 100
-  FW_EXTRALIGHT* = 200
-  FW_LIGHT* = 300
-  FW_NORMAL* = 400
-  FW_REGULAR* = FW_NORMAL
-  FW_MEDIUM* = 500
-  FW_SEMIBOLD* = 600
-  FW_BOLD* = 700
-  FW_EXTRABOLD* = 800
-  FW_HEAVY* = 900
-  ANSI_CHARSET* = 0
-  DEFAULT_CHARSET* = 1
-  SYMBOL_CHARSET* = 2
-  SHIFTJIS_CHARSET* = 128
-  HANGEUL_CHARSET* = 129
-  GB2312_CHARSET* = 134
-  CHINESEBIG5_CHARSET* = 136
-  GREEK_CHARSET* = 161
-  TURKISH_CHARSET* = 162
-  HEBREW_CHARSET* = 177
-  ARABIC_CHARSET* = 178
-  BALTIC_CHARSET* = 186
-  RUSSIAN_CHARSET* = 204
-  THAI_CHARSET* = 222
-  EASTEUROPE_CHARSET* = 238
-  OEM_CHARSET* = 255
-  OUT_DEFAULT_PRECIS* = 0
-  OUT_STRING_PRECIS* = 1
-  OUT_CHARACTER_PRECIS* = 2
-  OUT_STROKE_PRECIS* = 3
-  OUT_TT_PRECIS* = 4
-  OUT_DEVICE_PRECIS* = 5
-  OUT_RASTER_PRECIS* = 6
-  OUT_TT_ONLY_PRECIS* = 7
-  OUT_OUTLINE_PRECIS* = 8
-  CLIP_DEFAULT_PRECIS* = 0
-  CLIP_CHARACTER_PRECIS* = 1
-  CLIP_STROKE_PRECIS* = 2
-  CLIP_MASK* = 15
-  CLIP_LH_ANGLES* = 16
-  CLIP_TT_ALWAYS* = 32
-  CLIP_EMBEDDED* = 128
-  DEFAULT_QUALITY* = 0
-  DRAFT_QUALITY* = 1
-  PROOF_QUALITY* = 2
-  NONANTIALIASED_QUALITY* = 3
-  ANTIALIASED_QUALITY* = 4
-  DEFAULT_PITCH* = 0
-  FIXED_PITCH* = 1
-  VARIABLE_PITCH* = 2
-  MONO_FONT* = 8
-  FF_DECORATIVE* = 80
-  FF_DONTCARE* = 0
-  FF_MODERN* = 48
-  FF_ROMAN* = 16
-  FF_SCRIPT* = 64
-  FF_SWISS* = 32              # CreateHatchBrush
-  HS_BDIAGONAL* = 3
-  HS_CROSS* = 4
-  HS_DIAGCROSS* = 5
-  HS_FDIAGONAL* = 2
-  HS_HORIZONTAL* = 0
-  HS_VERTICAL* = 1            # CreateIconFromResourceEx
-  LR_DEFAULTCOLOR* = 0
-  LR_LOADREALSIZE* = 128      # already defined above !!
-                              #  #define LR_MONOCHROME (1)
-                              #
-                              # CreateMailslot, GetMailslotInfo
-  MAILSLOT_WAIT_FOREVER* = 0xFFFFFFFF
-  MAILSLOT_NO_MESSAGE* = 0xFFFFFFFF # CreateMappedBitmap
-  CMB_MASKED* = 2             # CreateNamedPipe
-  PIPE_ACCESS_DUPLEX* = 3
-  PIPE_ACCESS_INBOUND* = 1
-  PIPE_ACCESS_OUTBOUND* = 2
-  WRITE_DAC* = 0x00040000
-  WRITE_OWNER* = 0x00080000
-  ACCESS_SYSTEM_SECURITY* = 0x01000000
-  PIPE_TYPE_BYTE* = 0
-  PIPE_TYPE_MESSAGE* = 4
-  PIPE_READMODE_BYTE* = 0
-  PIPE_READMODE_MESSAGE* = 2
-  PIPE_WAIT* = 0
-  PIPE_NOWAIT* = 1            # CreatePen, ExtCreatePen
-  PS_GEOMETRIC* = 65536
-  PS_COSMETIC* = 0
-  PS_ALTERNATE* = 8
-  PS_SOLID* = 0
-  PS_DASH* = 1
-  PS_DOT* = 2
-  PS_DASHDOT* = 3
-  PS_DASHDOTDOT* = 4
-  PS_NULL* = 5
-  PS_USERSTYLE* = 7
-  PS_INSIDEFRAME* = 6
-  PS_ENDCAP_ROUND* = 0
-  PS_ENDCAP_SQUARE* = 256
-  PS_ENDCAP_FLAT* = 512
-  PS_JOIN_BEVEL* = 4096
-  PS_JOIN_MITER* = 8192
-  PS_JOIN_ROUND* = 0
-  PS_STYLE_MASK* = 15
-  PS_ENDCAP_MASK* = 3840
-  PS_TYPE_MASK* = 983040      # CreatePolygonRgn
-  ALTERNATE* = 1
-  WINDING* = 2                # CreateProcess
-  CREATE_DEFAULT_ERROR_MODE* = 67108864
-  CREATE_NEW_CONSOLE* = 16
-  CREATE_NEW_PROCESS_GROUP* = 512
-  CREATE_SEPARATE_WOW_VDM* = 2048
-  CREATE_SUSPENDED* = 4
-  CREATE_UNICODE_ENVIRONMENT* = 1024
-  DEBUG_PROCESS* = 1
-  DEBUG_ONLY_THIS_PROCESS* = 2
-  DETACHED_PROCESS* = 8
-  HIGH_PRIORITY_CLASS* = 128
-  IDLE_PRIORITY_CLASS* = 64
-  NORMAL_PRIORITY_CLASS* = 32
-  REALTIME_PRIORITY_CLASS* = 256 # CreateService
-  SERVICE_ALL_ACCESS* = 0x000F01FF
-  SERVICE_CHANGE_CONFIG* = 2
-  SERVICE_ENUMERATE_DEPENDENTS* = 8
-  SERVICE_INTERROGATE* = 128
-  SERVICE_PAUSE_CONTINUE* = 64
-  SERVICE_QUERY_CONFIG* = 1
-  SERVICE_QUERY_STATUS* = 4
-  SERVICE_START* = 16
-  SERVICE_STOP* = 32
-  SERVICE_USER_DEFINED_CONTROL* = 256
-  SERVICE_DELETE* = 0x00010000
-  SERVICE_READ_CONTROL* = 0x00020000
-  SERVICE_GENERIC_EXECUTE* = 0x20000000 # already defined above !!
-                                        #  #define SERVICE_WIN32_OWN_PROCESS     (16)
-                                        #  #define SERVICE_WIN32_SHARE_PROCESS   (32)
-                                        #  #define SERVICE_KERNEL_DRIVER (1)
-                                        #  #define SERVICE_FILE_SYSTEM_DRIVER    (2)
-                                        #  #define SERVICE_INTERACTIVE_PROCESS   (256)
-                                        #  #define SERVICE_BOOT_START    (0)
-                                        #  #define SERVICE_SYSTEM_START  (1)
-                                        #  #define SERVICE_AUTO_START    (2)
-                                        #  #define SERVICE_DEMAND_START  (3)
-                                        #  #define SERVICE_DISABLED      (4)
-                                        #
-  SERVICE_ERROR_IGNORE* = 0
-  SERVICE_ERROR_NORMAL* = 1
-  SERVICE_ERROR_SEVERE* = 2
-  SERVICE_ERROR_CRITICAL* = 3 # CreateTapePartition, WriteTapemark
-  TAPE_FIXED_PARTITIONS* = 0
-  TAPE_INITIATOR_PARTITIONS* = 0x00000002
-  TAPE_SELECT_PARTITIONS* = 0x00000001
-  TAPE_FILEMARKS* = 0x00000001
-  TAPE_LONG_FILEMARKS* = 0x00000003
-  TAPE_SETMARKS* = 0
-  TAPE_SHORT_FILEMARKS* = 0x00000002 # CreateWindow
-  CW_USEDEFAULT* = int32(0x80000000)
-  WS_BORDER* = 0x00800000
-  WS_CAPTION* = 0x00C00000
-  WS_CHILD* = 0x40000000
-  WS_CHILDWINDOW* = 0x40000000
-  WS_CLIPCHILDREN* = 0x02000000
-  WS_CLIPSIBLINGS* = 0x04000000
-  WS_DISABLED* = 0x08000000
-  WS_DLGFRAME* = 0x00400000
-  WS_GROUP* = 0x00020000
-  WS_HSCROLL* = 0x00100000
-  WS_ICONIC* = 0x20000000
-  WS_MAXIMIZE* = 0x01000000
-  WS_MAXIMIZEBOX* = 0x00010000
-  WS_MINIMIZE* = 0x20000000
-  WS_MINIMIZEBOX* = 0x00020000
-  WS_OVERLAPPED* = 0
-  WS_OVERLAPPEDWINDOW* = 0x00CF0000
-  WS_POPUP* = LONG(0x80000000)
-  WS_POPUPWINDOW* = LONG(0x80880000)
-  WS_SIZEBOX* = 0x00040000
-  WS_SYSMENU* = 0x00080000
-  WS_TABSTOP* = 0x00010000
-  WS_THICKFRAME* = 0x00040000
-  WS_TILED* = 0
-  WS_TILEDWINDOW* = 0x00CF0000
-  WS_VISIBLE* = 0x10000000
-  WS_VSCROLL* = 0x00200000
-  MDIS_ALLCHILDSTYLES* = 0x00000001
-  BS_3STATE* = 0x00000005
-  BS_AUTO3STATE* = 0x00000006
-  BS_AUTOCHECKBOX* = 0x00000003
-  BS_AUTORADIOBUTTON* = 0x00000009
-  BS_BITMAP* = 0x00000080
-  BS_BOTTOM* = 0x00000800
-  BS_CENTER* = 0x00000300
-  BS_CHECKBOX* = 0x00000002
-  BS_DEFPUSHBUTTON* = 0x00000001
-  BS_GROUPBOX* = 0x00000007
-  BS_ICON* = 0x00000040
-  BS_LEFT* = 0x00000100
-  BS_LEFTTEXT* = 0x00000020
-  BS_MULTILINE* = 0x00002000
-  BS_NOTIFY* = 0x00004000
-  BS_OWNERDRAW* = 0x0000000B
-  BS_PUSHBUTTON* = 0
-  BS_PUSHLIKE* = 0x00001000
-  BS_RADIOBUTTON* = 0x00000004
-  BS_RIGHT* = 0x00000200
-  BS_RIGHTBUTTON* = 0x00000020
-  BS_TEXT* = 0
-  BS_TOP* = 0x00000400
-  BS_USERBUTTON* = 0x00000008
-  BS_VCENTER* = 0x00000C00
-  BS_FLAT* = 0x00008000
-  CBS_AUTOHSCROLL* = 0x00000040
-  CBS_DISABLENOSCROLL* = 0x00000800
-  CBS_DROPDOWN* = 0x00000002
-  CBS_DROPDOWNLIST* = 0x00000003
-  CBS_HASSTRINGS* = 0x00000200
-  CBS_LOWERCASE* = 0x00004000
-  CBS_NOINTEGRALHEIGHT* = 0x00000400
-  CBS_OEMCONVERT* = 0x00000080
-  CBS_OWNERDRAWFIXED* = 0x00000010
-  CBS_OWNERDRAWVARIABLE* = 0x00000020
-  CBS_SIMPLE* = 0x00000001
-  CBS_SORT* = 0x00000100
-  CBS_UPPERCASE* = 0x00002000
-  ES_AUTOHSCROLL* = 0x00000080
-  ES_AUTOVSCROLL* = 0x00000040
-  ES_CENTER* = 0x00000001
-  ES_LEFT* = 0
-  ES_LOWERCASE* = 0x00000010
-  ES_MULTILINE* = 0x00000004
-  ES_NOHIDESEL* = 0x00000100
-  ES_NUMBER* = 0x00002000
-  ES_OEMCONVERT* = 0x00000400
-  ES_PASSWORD* = 0x00000020
-  ES_READONLY* = 0x00000800
-  ES_RIGHT* = 0x00000002
-  ES_UPPERCASE* = 0x00000008
-  ES_WANTRETURN* = 0x00001000
-  LBS_DISABLENOSCROLL* = 0x00001000
-  LBS_EXTENDEDSEL* = 0x00000800
-  LBS_HASSTRINGS* = 0x00000040
-  LBS_MULTICOLUMN* = 0x00000200
-  LBS_MULTIPLESEL* = 0x00000008
-  LBS_NODATA* = 0x00002000
-  LBS_NOINTEGRALHEIGHT* = 0x00000100
-  LBS_NOREDRAW* = 0x00000004
-  LBS_NOSEL* = 0x00004000
-  LBS_NOTIFY* = 0x00000001
-  LBS_OWNERDRAWFIXED* = 0x00000010
-  LBS_OWNERDRAWVARIABLE* = 0x00000020
-  LBS_SORT* = 0x00000002
-  LBS_STANDARD* = 0x00A00003
-  LBS_USETABSTOPS* = 0x00000080
-  LBS_WANTKEYBOARDINPUT* = 0x00000400
-  SBS_BOTTOMALIGN* = 0x00000004
-  SBS_HORZ* = 0
-  SBS_LEFTALIGN* = 0x00000002
-  SBS_RIGHTALIGN* = 0x00000004
-  SBS_SIZEBOX* = 0x00000008
-  SBS_SIZEBOXBOTTOMRIGHTALIGN* = 0x00000004
-  SBS_SIZEBOXTOPLEFTALIGN* = 0x00000002
-  SBS_SIZEGRIP* = 0x00000010
-  SBS_TOPALIGN* = 0x00000002
-  SBS_VERT* = 0x00000001
-  SS_BITMAP* = 0x0000000E
-  SS_BLACKFRAME* = 0x00000007
-  SS_BLACKRECT* = 0x00000004
-  SS_CENTER* = 0x00000001
-  SS_CENTERIMAGE* = 0x00000200
-  SS_ENHMETAFILE* = 0x0000000F
-  SS_ETCHEDFRAME* = 0x00000012
-  SS_ETCHEDHORZ* = 0x00000010
-  SS_ETCHEDVERT* = 0x00000011
-  SS_GRAYFRAME* = 0x00000008
-  SS_GRAYRECT* = 0x00000005
-  SS_ICON* = 0x00000003
-  SS_LEFT* = 0
-  SS_LEFTNOWORDWRAP* = 0x0000000C
-  SS_NOPREFIX* = 0x00000080
-  SS_NOTIFY* = 0x00000100
-  SS_OWNERDRAW* = 0x0000000D
-  SS_REALSIZEIMAGE* = 0x00000800
-  SS_RIGHT* = 0x00000002
-  SS_RIGHTJUST* = 0x00000400
-  SS_SIMPLE* = 0x0000000B
-  SS_SUNKEN* = 0x00001000
-  SS_USERITEM* = 0x0000000A
-  SS_WHITEFRAME* = 0x00000009
-  SS_WHITERECT* = 0x00000006
-  DS_3DLOOK* = 0x00000004
-  DS_ABSALIGN* = 0x00000001
-  DS_CENTER* = 0x00000800
-  DS_CENTERMOUSE* = 0x00001000
-  DS_CONTEXTHELP* = 0x00002000
-  DS_CONTROL* = 0x00000400
-  DS_FIXEDSYS* = 0x00000008
-  DS_LOCALEDIT* = 0x00000020
-  DS_MODALFRAME* = 0x00000080
-  DS_NOFAILCREATE* = 0x00000010
-  DS_NOIDLEMSG* = 0x00000100
-  DS_SETFONT* = 0x00000040
-  DS_SETFOREGROUND* = 0x00000200
-  DS_SYSMODAL* = 0x00000002   # CreateWindowEx
-  WS_EX_ACCEPTFILES* = 0x00000010
-  WS_EX_APPWINDOW* = 0x00040000
-  WS_EX_CLIENTEDGE* = 0x00000200
-  WS_EX_CONTEXTHELP* = 0x00000400
-  WS_EX_CONTROLPARENT* = 0x00010000
-  WS_EX_DLGMODALFRAME* = 0x00000001
-  WS_EX_LEFT* = 0
-  WS_EX_LEFTSCROLLBAR* = 0x00004000
-  WS_EX_LTRREADING* = 0
-  WS_EX_MDICHILD* = 0x00000040
-  WS_EX_NOPARENTNOTIFY* = 0x00000004
-  WS_EX_OVERLAPPEDWINDOW* = 0x00000300
-  WS_EX_PALETTEWINDOW* = 0x00000188
-  WS_EX_RIGHT* = 0x00001000
-  WS_EX_RIGHTSCROLLBAR* = 0
-  WS_EX_RTLREADING* = 0x00002000
-  WS_EX_STATICEDGE* = 0x00020000
-  WS_EX_TOOLWINDOW* = 0x00000080
-  WS_EX_TOPMOST* = 0x00000008
-  WS_EX_TRANSPARENT* = 0x00000020
-  WS_EX_WINDOWEDGE* = 0x00000100 # CreateWindowStation
-  WINSTA_ACCESSCLIPBOARD* = 0x00000004
-  WINSTA_ACCESSGLOBALATOMS* = 0x00000020
-  WINSTA_CREATEDESKTOP* = 0x00000008
-  WINSTA_ENUMDESKTOPS* = 0x00000001
-  WINSTA_ENUMERATE* = 0x00000100
-  WINSTA_EXITWINDOWS* = 0x00000040
-  WINSTA_READATTRIBUTES* = 0x00000002
-  WINSTA_READSCREEN* = 0x00000200
-  WINSTA_WRITEATTRIBUTES* = 0x00000010 # DdeCallback
-                                       # DdeClientTransaction
-                                       # DdeEnableCallback
-                                       # DdeGetLastError
-                                       # DdeInitialize
-                                       # DdeNameService
-                                       # DebugProc
-  WH_CALLWNDPROC* = 4
-  WH_CALLWNDPROCRET* = 12
-  WH_CBT* = 5
-  WH_DEBUG* = 9
-  WH_GETMESSAGE* = 3
-  WH_JOURNALPLAYBACK* = 1
-  WH_JOURNALRECORD* = 0
-  WH_KEYBOARD* = 2
-  WH_MOUSE* = 7
-  WH_MSGFILTER* = - (1)
-  WH_SHELL* = 10
-  WH_SYSMSGFILTER* = 6        # already defined above !!
-                              #  #define WH_MSGFILTER  (-1)
-  WH_FOREGROUNDIDLE* = 11     # DefineDosDevice
-  DDD_RAW_TARGET_PATH* = 1
-  DDD_REMOVE_DEFINITION* = 2
-  DDD_EXACT_MATCH_ON_REMOVE* = 4 # DeviceCapbilities
-  DC_BINNAMES* = 12
-  DC_BINS* = 6
-  DC_COPIES* = 18
-  DC_DRIVER* = 11
-  DC_DATATYPE_PRODUCED* = 21
-  DC_DUPLEX* = 7
-  DC_EMF_COMPLIANT* = 20
-  DC_ENUMRESOLUTIONS* = 13
-  DC_EXTRA* = 9
-  DC_FIELDS* = 1
-  DC_FILEDEPENDENCIES* = 14
-  DC_MAXEXTENT* = 5
-  DC_MINEXTENT* = 4
-  DC_ORIENTATION* = 17
-  DC_PAPERNAMES* = 16
-  DC_PAPERS* = 2
-  DC_PAPERSIZE* = 3
-  DC_SIZE* = 8
-  DC_TRUETYPE* = 15
-  DCTT_BITMAP* = 0x00000001
-  DCTT_DOWNLOAD* = 0x00000002
-  DCTT_SUBDEV* = 0x00000004
-  DC_VERSION* = 10
-  DC_BINADJUST* = 19          # already defined above !!
-                              #  #define DC_DATATYPE_PRODUCED  (21)
-                              #
-                              # DeviceIoControl
-                              # DlgDirList
-  DDL_ARCHIVE* = 32
-  DDL_DIRECTORY* = 16
-  DDL_DRIVES* = 16384
-  DDL_EXCLUSIVE* = 32768
-  DDL_HIDDEN* = 2
-  DDL_READONLY* = 1
-  DDL_READWRITE* = 0
-  DDL_SYSTEM* = 4
-  DDL_POSTMSGS* = 8192        # DllEntryPoint
-  DLL_PROCESS_ATTACH* = 1
-  DLL_THREAD_ATTACH* = 2
-  DLL_PROCESS_DETACH* = 0
-  DLL_THREAD_DETACH* = 3      # DocumentProperties
-  DM_IN_BUFFER* = 8
-  DM_MODIFY* = 8
-  DM_IN_PROMPT* = 4
-  DM_PROMPT* = 4
-  DM_OUT_BUFFER* = 2
-  DM_COPY* = 2
-  DM_UPDATE* = 1              # DrawAnimatedRects
-  IDANI_OPEN* = 1
-  IDANI_CLOSE* = 2            # DrawCaption
-  DC_ACTIVE* = 1
-  DC_SMALLCAP* = 2            # DrawEdge
-  BDR_RAISEDINNER* = 4
-  BDR_SUNKENINNER* = 8
-  BDR_RAISEDOUTER* = 1
-  BDR_SUNKENOUTER* = 2
-  BDR_OUTER* = BDR_RAISEDOUTER or BDR_SUNKENOUTER
-  BDR_INNER* = BDR_RAISEDINNER or BDR_SUNKENINNER
-  BDR_RAISED* = BDR_RAISEDOUTER or BDR_RAISEDINNER
-  BDR_SUNKEN* = BDR_SUNKENOUTER or BDR_SUNKENINNER
-  EDGE_BUMP* = 9
-  EDGE_ETCHED* = 6
-  EDGE_RAISED* = 5
-  EDGE_SUNKEN* = 10
-  BF_ADJUST* = 8192
-  BF_BOTTOM* = 8
-  BF_BOTTOMLEFT* = 9
-  BF_BOTTOMRIGHT* = 12
-  BF_DIAGONAL* = 16
-  BF_DIAGONAL_ENDBOTTOMLEFT* = 25
-  BF_DIAGONAL_ENDBOTTOMRIGHT* = 28
-  BF_DIAGONAL_ENDTOPLEFT* = 19
-  BF_DIAGONAL_ENDTOPRIGHT* = 22
-  BF_FLAT* = 16384
-  BF_LEFT* = 1
-  BF_MIDDLE* = 2048
-  BF_MONO* = 32768
-  BF_RECT* = 15
-  BF_RIGHT* = 4
-  BF_SOFT* = 4096
-  BF_TOP* = 2
-  BF_TOPLEFT* = 3
-  BF_TOPRIGHT* = 6            # DrawFrameControl
-  DFC_BUTTON* = 4
-  DFC_CAPTION* = 1
-  DFC_MENU* = 2
-  DFC_SCROLL* = 3
-  DFCS_BUTTON3STATE* = 8
-  DFCS_BUTTONCHECK* = 0
-  DFCS_BUTTONPUSH* = 16
-  DFCS_BUTTONRADIO* = 4
-  DFCS_BUTTONRADIOIMAGE* = 1
-  DFCS_BUTTONRADIOMASK* = 2
-  DFCS_CAPTIONCLOSE* = 0
-  DFCS_CAPTIONHELP* = 4
-  DFCS_CAPTIONMAX* = 2
-  DFCS_CAPTIONMIN* = 1
-  DFCS_CAPTIONRESTORE* = 3
-  DFCS_MENUARROW* = 0
-  DFCS_MENUBULLET* = 2
-  DFCS_MENUCHECK* = 1
-  DFCS_SCROLLCOMBOBOX* = 5
-  DFCS_SCROLLDOWN* = 1
-  DFCS_SCROLLLEFT* = 2
-  DFCS_SCROLLRIGHT* = 3
-  DFCS_SCROLLSIZEGRIP* = 8
-  DFCS_SCROLLUP* = 0
-  DFCS_ADJUSTRECT* = 8192
-  DFCS_CHECKED* = 1024
-  DFCS_FLAT* = 16384
-  DFCS_INACTIVE* = 256
-  DFCS_MONO* = 32768
-  DFCS_PUSHED* = 512          # DrawIconEx
-  DI_COMPAT* = 4
-  DI_DEFAULTSIZE* = 8
-  DI_IMAGE* = 2
-  DI_MASK* = 1
-  DI_NORMAL* = 3              # DrawState
-  DST_BITMAP* = 4
-  DST_COMPLEX* = 0
-  DST_ICON* = 3
-  DST_PREFIXTEXT* = 2
-  DST_TEXT* = 1
-  DSS_NORMAL* = 0
-  DSS_UNION* = 16
-  DSS_DISABLED* = 32
-  DSS_MONO* = 128             # DrawStatusText
-  SBT_NOBORDERS* = 256
-  SBT_OWNERDRAW* = 4096
-  SBT_POPOUT* = 512
-  SBT_RTLREADING* = 1024      # DrawText, DrawTextEx
-  DT_BOTTOM* = 8
-  DT_CALCRECT* = 1024
-  DT_CENTER* = 1
-  DT_EDITCONTROL* = 8192
-  DT_END_ELLIPSIS* = 32768
-  DT_PATH_ELLIPSIS* = 16384
-  DT_EXPANDTABS* = 64
-  DT_EXTERNALLEADING* = 512
-  DT_LEFT* = 0
-  DT_MODIFYSTRING* = 65536
-  DT_NOCLIP* = 256
-  DT_NOPREFIX* = 2048
-  DT_RIGHT* = 2
-  DT_RTLREADING* = 131072
-  DT_SINGLELINE* = 32
-  DT_TABSTOP* = 128
-  DT_TOP* = 0
-  DT_VCENTER* = 4
-  DT_WORDBREAK* = 16
-  DT_INTERNAL* = 4096
-  DT_WORD_ELLIPSIS* = 0x00040000
-  DT_HIDEPREFIX* = 0x00100000
-  DT_PREFIXONLY* = 0x00200000 # DuplicateHandle, MapViewOfFile
-  DUPLICATE_CLOSE_SOURCE* = 1
-  DUPLICATE_SAME_ACCESS* = 2
-  FILE_MAP_ALL_ACCESS* = 0x000F001F
-  FILE_MAP_READ* = 4
-  FILE_MAP_WRITE* = 2
-  FILE_MAP_COPY* = 1
-  MUTEX_ALL_ACCESS* = 0x001F0001
-  MUTEX_MODIFY_STATE* = 1
-  SYNCHRONIZE* = 0x00100000
-  SEMAPHORE_ALL_ACCESS* = 0x001F0003
-  SEMAPHORE_MODIFY_STATE* = 2
-  EVENT_ALL_ACCESS* = 0x001F0003
-  EVENT_MODIFY_STATE* = 2
-  KEY_ALL_ACCESS* = 0x000F003F
-  KEY_CREATE_LINK* = 32
-  KEY_CREATE_SUB_KEY* = 4
-  KEY_ENUMERATE_SUB_KEYS* = 8
-  KEY_EXECUTE* = 0x00020019
-  KEY_NOTIFY* = 16
-  KEY_QUERY_VALUE* = 1
-  KEY_READ* = 0x00020019
-  KEY_SET_VALUE* = 2
-  KEY_WRITE* = 0x00020006
-  PROCESS_ALL_ACCESS* = 0x001F0FFF
-  PROCESS_CREATE_PROCESS* = 128
-  PROCESS_CREATE_THREAD* = 2
-  PROCESS_DUP_HANDLE* = 64
-  PROCESS_QUERY_INFORMATION* = 1024
-  PROCESS_SET_INFORMATION* = 512
-  PROCESS_TERMINATE* = 1
-  PROCESS_VM_OPERATION* = 8
-  PROCESS_VM_READ* = 16
-  PROCESS_VM_WRITE* = 32
-  THREAD_ALL_ACCESS* = 0x001F03FF
-  THREAD_DIRECT_IMPERSONATION* = 512
-  THREAD_GET_CONTEXT* = 8
-  THREAD_IMPERSONATE* = 256
-  THREAD_QUERY_INFORMATION* = 64
-  THREAD_SET_CONTEXT* = 16
-  THREAD_SET_INFORMATION* = 32
-  THREAD_SET_THREAD_TOKEN* = 128
-  THREAD_SUSPEND_RESUME* = 2
-  THREAD_TERMINATE* = 1       # EditWordBreakProc
-  WB_ISDELIMITER* = 2
-  WB_LEFT* = 0
-  WB_RIGHT* = 1               # EnableScrollBar
-  SB_BOTH* = 3
-  SB_CTL* = 2
-  SB_HORZ* = 0
-  SB_VERT* = 1
-  ESB_DISABLE_BOTH* = 3
-  ESB_DISABLE_DOWN* = 2
-  ESB_DISABLE_LEFT* = 1
-  ESB_DISABLE_LTUP* = 1
-  ESB_DISABLE_RIGHT* = 2
-  ESB_DISABLE_RTDN* = 2
-  ESB_DISABLE_UP* = 1
-  ESB_ENABLE_BOTH* = 0        # Scroll Bar notifications
-  SB_LINEUP* = 0
-  SB_LINEDOWN* = 1
-  SB_LINELEFT* = 0
-  SB_LINERIGHT* = 1
-  SB_PAGEUP* = 2
-  SB_PAGEDOWN* = 3
-  SB_PAGELEFT* = 2
-  SB_PAGERIGHT* = 3
-  SB_THUMBPOSITION* = 4
-  SB_THUMBTRACK* = 5
-  SB_ENDSCROLL* = 8
-  SB_LEFT* = 6
-  SB_RIGHT* = 7
-  SB_BOTTOM* = 7
-  SB_TOP* = 6                 # EnumCalendarInfo
-  ENUM_ALL_CALENDARS* = - (1) # EnumDateFormats
-  DATE_SHORTDATE* = 1
-  DATE_LONGDATE* = 2          # EnumDependentServices
-  SERVICE_ACTIVE* = 1
-  SERVICE_INACTIVE* = 2       # EnumFontFamExProc
-  DEVICE_FONTTYPE* = 2
-  RASTER_FONTTYPE* = 1
-  TRUETYPE_FONTTYPE* = 4      # EnumObjects, GetCurrentObject, GetObjectType
-  OBJ_BRUSH* = 2
-  OBJ_PEN* = 1
-  OBJ_PAL* = 5
-  OBJ_FONT* = 6
-  OBJ_BITMAP* = 7
-  OBJ_EXTPEN* = 11
-  OBJ_REGION* = 8
-  OBJ_DC* = 3
-  OBJ_MEMDC* = 10
-  OBJ_METAFILE* = 9
-  OBJ_METADC* = 4
-  OBJ_ENHMETAFILE* = 13
-  OBJ_ENHMETADC* = 12         # EnumPrinters
-                              # EnumProtocols
-                              # EnumResLangProc
-                              #
-                              # Predefined Resource Types
-                              #
-
-const
-  RT_CURSOR* = cast[MAKEINTRESOURCE](1)
-  RT_BITMAP* = cast[MAKEINTRESOURCE](2)
-  RT_ICON* = cast[MAKEINTRESOURCE](3)
-  RT_MENU* = cast[MAKEINTRESOURCE](4)
-  RT_DIALOG* = cast[MAKEINTRESOURCE](5)
-  RT_STRING* = cast[MAKEINTRESOURCE](6)
-  RT_FONTDIR* = cast[MAKEINTRESOURCE](7)
-  RT_FONT* = cast[MAKEINTRESOURCE](8)
-  RT_ACCELERATOR* = cast[MAKEINTRESOURCE](9)
-  RT_RCDATA* = cast[MAKEINTRESOURCE](10)
-  RT_MESSAGETABLE* = cast[MAKEINTRESOURCE](11)
-  DIFFERENCE* = 11
-  RT_GROUP_CURSOR* = cast[MAKEINTRESOURCE](12)
-  RT_GROUP_ICON* = cast[MAKEINTRESOURCE](14)
-  RT_VERSION* = cast[MAKEINTRESOURCE](16)
-  RT_DLGINCLUDE* = cast[MAKEINTRESOURCE](17)
-  RT_PLUGPLAY* = cast[MAKEINTRESOURCE](19)
-  RT_VXD* = cast[MAKEINTRESOURCE](20)
-  RT_ANICURSOR* = cast[MAKEINTRESOURCE](21)
-  RT_ANIICON* = cast[MAKEINTRESOURCE](22)
-  RT_HTML* = cast[MAKEINTRESOURCE](23)
-  RT_MANIFEST* = cast[MAKEINTRESOURCE](24) # EnumServicesStatus
-
-const
-  SERVICE_WIN32* = 48
-  SERVICE_DRIVER* = 11        # EnumSystemCodePages
-  CP_INSTALLED* = 1
-  CP_SUPPORTED* = 2           # EnumSystemLocales
-  LCID_INSTALLED* = 1
-  LCID_SUPPORTED* = 2         # EraseTape
-  TAPE_ERASE_LONG* = 0x00000001
-  TAPE_ERASE_SHORT* = 0       # Escape
-  SP_ERROR* = - (1)
-  SP_OUTOFDISK* = - (4)
-  SP_OUTOFMEMORY* = - (5)
-  SP_USERABORT* = - (3)
-  PHYSICALWIDTH* = 110
-  PHYSICALHEIGHT* = 111
-  PHYSICALOFFSETX* = 112
-  PHYSICALOFFSETY* = 113
-  SCALINGFACTORX* = 114
-  SCALINGFACTORY* = 115
-  QUERYESCSUPPORT* = 8        #ABORTDOC = 2; conflicts with AbortDoc function
-  cABORTDOC* = 2              #ENDDOC = 11; conflicts with AbortDoc function
-  cENDDOC* = 11
-  GETPHYSPAGESIZE* = 12
-  GETPRINTINGOFFSET* = 13
-  GETSCALINGFACTOR* = 14
-  NEWFRAME* = 1
-  NEXTBAND* = 3
-  PASSTHROUGH* = 19           #SETABORTPROC = 9; conflicts with AbortDoc function
-  cSETABORTPROC* = 9          #STARTDOC = 10; conflicts with AbortDoc function
-  cSTARTDOC* = 10             # EscapeCommFunction
-  CLRDTR* = 6
-  CLRRTS* = 4
-  SETDTR* = 5
-  SETRTS* = 3
-  SETXOFF* = 1
-  SETXON* = 2
-  SETBREAK* = 8
-  CLRBREAK* = 9               # ExitWindowsEx
-  EWX_FORCE* = 4
-  EWX_LOGOFF* = 0
-  EWX_POWEROFF* = 8
-  EWX_REBOOT* = 2
-  EWX_SHUTDOWN* = 1           # ExtFloodFill
-  FLOODFILLBORDER* = 0
-  FLOODFILLSURFACE* = 1       # ExtTextOut
-  ETO_CLIPPED* = 4
-  ETO_GLYPH_INDEX* = 16
-  ETO_OPAQUE* = 2
-  ETO_RTLREADING* = 128       # FillConsoleOutputAttribute
-  FOREGROUND_BLUE* = 1
-  FOREGROUND_GREEN* = 2
-  FOREGROUND_RED* = 4
-  FOREGROUND_INTENSITY* = 8
-  BACKGROUND_BLUE* = 16
-  BACKGROUND_GREEN* = 32
-  BACKGROUND_RED* = 64
-  BACKGROUND_INTENSITY* = 128 # FindFirstChangeNotification
-  FILE_NOTIFY_CHANGE_FILE_NAME* = 1
-  FILE_NOTIFY_CHANGE_DIR_NAME* = 2
-  FILE_NOTIFY_CHANGE_ATTRIBUTES* = 4
-  FILE_NOTIFY_CHANGE_SIZE* = 8
-  FILE_NOTIFY_CHANGE_LAST_WRITE* = 16
-  FILE_NOTIFY_CHANGE_SECURITY* = 256 # FindFirstPrinterChangeNotification
-                                     # FindNextPrinterNotification
-                                     # FMExtensionProc
-                                     # FoldString
-  MAP_FOLDCZONE* = 16
-  MAP_FOLDDIGITS* = 128
-  MAP_PRECOMPOSED* = 32
-  MAP_COMPOSITE* = 64         # ForegroundIdleProc
-  HC_ACTION* = 0              # FormatMessage
-  FORMAT_MESSAGE_ALLOCATE_BUFFER* = 256
-  FORMAT_MESSAGE_IGNORE_INSERTS* = 512
-  FORMAT_MESSAGE_FROM_STRING* = 1024
-  FORMAT_MESSAGE_FROM_HMODULE* = 2048
-  FORMAT_MESSAGE_FROM_SYSTEM* = 4096
-  FORMAT_MESSAGE_ARGUMENT_ARRAY* = 8192
-  FORMAT_MESSAGE_MAX_WIDTH_MASK* = 255 # GdiComment
-  GDICOMMENT_WINDOWS_METAFILE* = - (2147483647)
-  GDICOMMENT_BEGINGROUP* = 2
-  GDICOMMENT_ENDGROUP* = 3
-  GDICOMMENT_MULTIFORMATS* = 1073741828
-  GDICOMMENT_IDENTIFIER* = 1128875079 # GenerateConsoleCtrlEvent, HandlerRoutine
-  CTRL_C_EVENT* = 0
-  CTRL_BREAK_EVENT* = 1
-  CTRL_CLOSE_EVENT* = 2
-  CTRL_LOGOFF_EVENT* = 5
-  CTRL_SHUTDOWN_EVENT* = 6    # GetAddressByName
-                              # GetArcDirection
-  AD_COUNTERCLOCKWISE* = 1
-  AD_CLOCKWISE* = 2           # GetBinaryTypes
-  SCS_32BIT_BINARY* = 0
-  SCS_DOS_BINARY* = 1
-  SCS_OS216_BINARY* = 5
-  SCS_PIF_BINARY* = 3
-  SCS_POSIX_BINARY* = 4
-  SCS_WOW_BINARY* = 2         # GetBoundsRect, SetBoundsRect
-  DCB_DISABLE* = 8
-  DCB_ENABLE* = 4
-  DCB_RESET* = 1
-  DCB_SET* = 3
-  DCB_ACCUMULATE* = 2         # GetCharacterPlacement, GetFontLanguageInfo
-  GCP_DBCS* = 1
-  GCP_ERROR* = 0x00008000
-  GCP_CLASSIN* = 0x00080000
-  GCP_DIACRITIC* = 256
-  GCP_DISPLAYZWG* = 0x00400000
-  GCP_GLYPHSHAPE* = 16
-  GCP_JUSTIFY* = 0x00010000
-  GCP_JUSTIFYIN* = 0x00200000
-  GCP_KASHIDA* = 1024
-  GCP_LIGATE* = 32
-  GCP_MAXEXTENT* = 0x00100000
-  GCP_NEUTRALOVERRIDE* = 0x02000000
-  GCP_NUMERICOVERRIDE* = 0x01000000
-  GCP_NUMERICSLATIN* = 0x04000000
-  GCP_NUMERICSLOCAL* = 0x08000000
-  GCP_REORDER* = 2
-  GCP_SYMSWAPOFF* = 0x00800000
-  GCP_USEKERNING* = 8
-  FLI_GLYPHS* = 0x00040000
-  FLI_MASK* = 0x0000103B      # GetClassLong, GetClassWord
-  GCW_ATOM* = - (32)
-  GCL_CBCLSEXTRA* = - (20)
-  GCL_CBWNDEXTRA* = - (18)
-  GCL_HBRBACKGROUND* = - (10)
-  GCL_HCURSOR* = - (12)
-  GCL_HICON* = - (14)
-  GCL_HICONSM* = - (34)
-  GCL_HMODULE* = - (16)
-  GCL_MENUNAME* = - (8)
-  GCL_STYLE* = - (26)
-  GCL_WNDPROC* = - (24)       # GetClipboardFormat, SetClipboardData
-  CF_BITMAP* = 2
-  CF_DIB* = 8
-  CF_PALETTE* = 9
-  CF_ENHMETAFILE* = 14
-  CF_METAFILEPICT* = 3
-  CF_OEMTEXT* = 7
-  CF_TEXT* = 1
-  CF_UNICODETEXT* = 13
-  CF_DIF* = 5
-  CF_DSPBITMAP* = 130
-  CF_DSPENHMETAFILE* = 142
-  CF_DSPMETAFILEPICT* = 131
-  CF_DSPTEXT* = 129
-  CF_GDIOBJFIRST* = 768
-  CF_GDIOBJLAST* = 1023
-  CF_HDROP* = 15
-  CF_LOCALE* = 16
-  CF_OWNERDISPLAY* = 128
-  CF_PENDATA* = 10
-  CF_PRIVATEFIRST* = 512
-  CF_PRIVATELAST* = 767
-  CF_RIFF* = 11
-  CF_SYLK* = 4
-  CF_WAVE* = 12
-  CF_TIFF* = 6                # GetCommMask
-  EV_BREAK* = 64
-  EV_CTS* = 8
-  EV_DSR* = 16
-  EV_ERR* = 128
-  EV_EVENT1* = 2048
-  EV_EVENT2* = 4096
-  EV_PERR* = 512
-  EV_RING* = 256
-  EV_RLSD* = 32
-  EV_RX80FULL* = 1024
-  EV_RXCHAR* = 1
-  EV_RXFLAG* = 2
-  EV_TXEMPTY* = 4             # GetCommModemStatus
-  MS_CTS_ON* = 0x00000010
-  MS_DSR_ON* = 0x00000020
-  MS_RING_ON* = 0x00000040
-  MS_RLSD_ON* = 0x00000080    # GetComputerName
-  MAX_COMPUTERNAME_LENGTH* = 15 # GetConsoleMode
-  ENABLE_LINE_INPUT* = 2
-  ENABLE_ECHO_INPUT* = 4
-  ENABLE_PROCESSED_INPUT* = 1
-  ENABLE_WINDOW_INPUT* = 8
-  ENABLE_MOUSE_INPUT* = 16
-  ENABLE_PROCESSED_OUTPUT* = 1
-  ENABLE_WRAP_AT_EOL_OUTPUT* = 2 # GetCPInfo
-  CP_ACP* = 0
-  CP_MACCP* = 2
-  CP_OEMCP* = 1               # GetDateFormat
-                              # already defined above !!
-                              #  #define DATE_SHORTDATE        (1)
-                              #  #define DATE_LONGDATE (2)
-                              #
-  DATE_USE_ALT_CALENDAR* = 4  # GetDCEx
-  DCX_WINDOW* = 0x00000001
-  DCX_CACHE* = 0x00000002
-  DCX_PARENTCLIP* = 0x00000020
-  DCX_CLIPSIBLINGS* = 0x00000010
-  DCX_CLIPCHILDREN* = 0x00000008
-  DCX_NORESETATTRS* = 0x00000004
-  DCX_LOCKWINDOWUPDATE* = 0x00000400
-  DCX_EXCLUDERGN* = 0x00000040
-  DCX_INTERSECTRGN* = 0x00000080
-  DCX_VALIDATE* = 0x00200000  # GetDeviceCaps
-  DRIVERVERSION* = 0
-  TECHNOLOGY* = 2
-  DT_PLOTTER* = 0
-  DT_RASDISPLAY* = 1
-  DT_RASPRINTER* = 2
-  DT_RASCAMERA* = 3
-  DT_CHARSTREAM* = 4
-  DT_METAFILE* = 5
-  DT_DISPFILE* = 6
-  HORZSIZE* = 4
-  VERTSIZE* = 6
-  HORZRES* = 8
-  VERTRES* = 10
-  LOGPIXELSX* = 88
-  LOGPIXELSY* = 90
-  BITSPIXEL* = 12
-  PLANES* = 14
-  NUMBRUSHES* = 16
-  NUMPENS* = 18
-  NUMFONTS* = 22
-  NUMCOLORS* = 24
-  ASPECTX* = 40
-  ASPECTY* = 42
-  ASPECTXY* = 44
-  PDEVICESIZE* = 26
-  CLIPCAPS* = 36
-  SIZEPALETTE* = 104
-  NUMRESERVED* = 106
-  COLORRES* = 108             # already defined above !!
-                              #  #define PHYSICALWIDTH (110)
-                              #  #define PHYSICALHEIGHT        (111)
-                              #  #define PHYSICALOFFSETX       (112)
-                              #  #define PHYSICALOFFSETY       (113)
-                              #  #define SCALINGFACTORX        (114)
-                              #  #define SCALINGFACTORY        (115)
-                              #
-  VREFRESH* = 116
-  DESKTOPHORZRES* = 118
-  DESKTOPVERTRES* = 117
-  BLTALIGNMENT* = 119
-  RASTERCAPS* = 38
-  RC_BANDING* = 2
-  RC_BITBLT* = 1
-  RC_BITMAP64* = 8
-  RC_DI_BITMAP* = 128
-  RC_DIBTODEV* = 512
-  RC_FLOODFILL* = 4096
-  RC_GDI20_OUTPUT* = 16
-  RC_PALETTE* = 256
-  RC_SCALING* = 4
-  RC_STRETCHBLT* = 2048
-  RC_STRETCHDIB* = 8192
-  CURVECAPS* = 28
-  CC_NONE* = 0
-  CC_CIRCLES* = 1
-  CC_PIE* = 2
-  CC_CHORD* = 4
-  CC_ELLIPSES* = 8
-  CC_WIDE* = 16
-  CC_STYLED* = 32
-  CC_WIDESTYLED* = 64
-  CC_INTERIORS* = 128
-  CC_ROUNDRECT* = 256
-  LINECAPS* = 30
-  LC_NONE* = 0
-  LC_POLYLINE* = 2
-  LC_MARKER* = 4
-  LC_POLYMARKER* = 8
-  LC_WIDE* = 16
-  LC_STYLED* = 32
-  LC_WIDESTYLED* = 64
-  LC_INTERIORS* = 128
-  POLYGONALCAPS* = 32
-  PC_NONE* = 0
-  PC_POLYGON* = 1
-  PC_RECTANGLE* = 2
-  PC_WINDPOLYGON* = 4
-  PC_SCANLINE* = 8
-  PC_WIDE* = 16
-  PC_STYLED* = 32
-  PC_WIDESTYLED* = 64
-  PC_INTERIORS* = 128
-  TEXTCAPS* = 34
-  TC_OP_CHARACTER* = 1
-  TC_OP_STROKE* = 2
-  TC_CP_STROKE* = 4
-  TC_CR_90* = 8
-  TC_CR_ANY* = 16
-  TC_SF_X_YINDEP* = 32
-  TC_SA_DOUBLE* = 64
-  TC_SA_INTEGER* = 128
-  TC_SA_CONTIN* = 256
-  TC_EA_DOUBLE* = 512
-  TC_IA_ABLE* = 1024
-  TC_UA_ABLE* = 2048
-  TC_SO_ABLE* = 4096
-  TC_RA_ABLE* = 8192
-  TC_VA_ABLE* = 16384
-  TC_RESERVED* = 32768
-  TC_SCROLLBLT* = 65536
-  PC_PATHS* = 512             # GetDriveType
-  DRIVE_REMOVABLE* = 2
-  DRIVE_FIXED* = 3
-  DRIVE_REMOTE* = 4
-  DRIVE_CDROM* = 5
-  DRIVE_RAMDISK* = 6
-  DRIVE_UNKNOWN* = 0
-  DRIVE_NO_ROOT_DIR* = 1      # GetExceptionCode
-  EXCEPTION_ACCESS_VIOLATION* = 0xC0000005
-  EXCEPTION_BREAKPOINT* = 0x80000003
-  EXCEPTION_DATATYPE_MISALIGNMENT* = 0x80000002
-  EXCEPTION_SINGLE_STEP* = 0x80000004
-  EXCEPTION_ARRAY_BOUNDS_EXCEEDED* = 0xC000008C
-  EXCEPTION_FLT_DENORMAL_OPERAND* = 0xC000008D
-  EXCEPTION_FLT_DIVIDE_BY_ZERO* = 0xC000008E
-  EXCEPTION_FLT_INEXACT_RESULT* = 0xC000008F
-  EXCEPTION_FLT_INVALID_OPERATION* = 0xC0000090
-  EXCEPTION_FLT_OVERFLOW* = 0xC0000091
-  EXCEPTION_FLT_STACK_CHECK* = 0xC0000092
-  EXCEPTION_FLT_UNDERFLOW* = 0xC0000093
-  EXCEPTION_INT_DIVIDE_BY_ZERO* = 0xC0000094
-  EXCEPTION_INT_OVERFLOW* = 0xC0000095
-  EXCEPTION_INVALID_HANDLE* = 0xC0000008
-  EXCEPTION_PRIV_INSTRUCTION* = 0xC0000096
-  EXCEPTION_NONCONTINUABLE_EXCEPTION* = 0xC0000025
-  EXCEPTION_NONCONTINUABLE* = 0x00000001
-  EXCEPTION_STACK_OVERFLOW* = 0xC00000FD
-  EXCEPTION_INVALID_DISPOSITION* = 0xC0000026
-  EXCEPTION_IN_PAGE_ERROR* = 0xC0000006
-  EXCEPTION_ILLEGAL_INSTRUCTION* = 0xC000001D
-  EXCEPTION_POSSIBLE_DEADLOCK* = 0xC0000194 # GetFileType
-  FILE_TYPE_UNKNOWN* = 0
-  FILE_TYPE_DISK* = 1
-  FILE_TYPE_CHAR* = 2
-  FILE_TYPE_PIPE* = 3         # GetGlyphOutline
-  GGO_BITMAP* = 1
-  GGO_NATIVE* = 2
-  GGO_METRICS* = 0
-  GGO_GRAY2_BITMAP* = 4
-  GGO_GRAY4_BITMAP* = 5
-  GGO_GRAY8_BITMAP* = 6
-  GDI_ERROR* = 0xFFFFFFFF     # GetGraphicsMode
-  GM_COMPATIBLE* = 1
-  GM_ADVANCED* = 2            # GetHandleInformation
-  HANDLE_FLAG_INHERIT* = 1
-  HANDLE_FLAG_PROTECT_FROM_CLOSE* = 2 # GetIconInfo
-                                      # was #define dname def_expr
-
-proc IDC_ARROW*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_IBEAM*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_WAIT*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_CROSS*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_UPARROW*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_SIZENWSE*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_SIZENESW*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_SIZEWE*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_SIZENS*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_SIZEALL*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_NO*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_APPSTARTING*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_HELP*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDI_APPLICATION*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDI_HAND*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDI_QUESTION*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDI_EXCLAMATION*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDI_ASTERISK*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDI_WINLOGO*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_SIZE*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_ICON*(): LPTSTR
-  # return type might be wrong
-  # was #define dname def_expr
-proc IDC_HAND*(): LPTSTR
-  # return type might be wrong
-  # GetMapMode
-const
-  MM_ANISOTROPIC* = 8
-  MM_HIENGLISH* = 5
-  MM_HIMETRIC* = 3
-  MM_ISOTROPIC* = 7
-  MM_LOENGLISH* = 4
-  MM_LOMETRIC* = 2
-  MM_TEXT* = 1
-  MM_TWIPS* = 6               # GetMenuDefaultItem
-  GMDI_GOINTOPOPUPS* = 0x00000002
-  GMDI_USEDISABLED* = 0x00000001 # PeekMessage
-  PM_NOREMOVE* = 0
-  PM_REMOVE* = 1
-  PM_NOYIELD* = 2             # GetNamedPipeHandleState
-                              #   PIPE_NOWAIT = 1; already above
-                              #   PIPE_READMODE_MESSAGE = 2;already above
-                              # GetNamedPipeInfo
-  PIPE_CLIENT_END* = 0
-  PIPE_SERVER_END* = 1        #   PIPE_TYPE_MESSAGE = 4;already above
-                              # GetNextWindow, GetWindow
-  GW_HWNDNEXT* = 2
-  GW_HWNDPREV* = 3
-  GW_CHILD* = 5
-  GW_HWNDFIRST* = 0
-  GW_HWNDLAST* = 1
-  GW_OWNER* = 4               # GetPath
-  PT_MOVETO* = 6
-  PT_LINETO* = 2
-  PT_BEZIERTO* = 4
-  PT_CLOSEFIGURE* = 1         # GetProcessShutdownParameters
-  SHUTDOWN_NORETRY* = 1       # GetQueueStatus
-  QS_ALLEVENTS* = 191
-  QS_ALLINPUT* = 255
-  QS_HOTKEY* = 128
-  QS_INPUT* = 7
-  QS_KEY* = 1
-  QS_MOUSE* = 6
-  QS_MOUSEBUTTON* = 4
-  QS_MOUSEMOVE* = 2
-  QS_PAINT* = 32
-  QS_POSTMESSAGE* = 8
-  QS_SENDMESSAGE* = 64
-  QS_TIMER* = 16              # GetScrollInfo, SetScrollInfo
-  SIF_ALL* = 23
-  SIF_PAGE* = 2
-  SIF_POS* = 4
-  SIF_RANGE* = 1
-  SIF_DISABLENOSCROLL* = 8    # GetStdHandle
-                              # was #define dname def_expr
-
-proc STD_INPUT_HANDLE*(): DWORD
-  # was #define dname def_expr
-proc STD_OUTPUT_HANDLE*(): DWORD
-  # was #define dname def_expr
-proc STD_ERROR_HANDLE*(): DWORD
-  # was #define dname def_expr
-const
-  INVALID_HANDLE_VALUE* = HANDLE(- 1) # GetStockObject
-
-const
-  BLACK_BRUSH* = 4
-  DKGRAY_BRUSH* = 3
-  GRAY_BRUSH* = 2
-  HOLLOW_BRUSH* = 5
-  LTGRAY_BRUSH* = 1
-  NULL_BRUSH* = 5
-  WHITE_BRUSH* = 0
-  BLACK_PEN* = 7
-  NULL_PEN* = 8
-  WHITE_PEN* = 6
-  ANSI_FIXED_FONT* = 11
-  ANSI_VAR_FONT* = 12
-  DEVICE_DEFAULT_FONT* = 14
-  DEFAULT_GUI_FONT* = 17
-  OEM_FIXED_FONT* = 10
-  SYSTEM_FONT* = 13
-  SYSTEM_FIXED_FONT* = 16
-  DEFAULT_PALETTE* = 15       # GetStringTypeA
-  CT_CTYPE1* = 1
-  CT_CTYPE2* = 2
-  CT_CTYPE3* = 4
-  C1_UPPER* = 1
-  C1_LOWER* = 2
-  C1_DIGIT* = 4
-  C1_SPACE* = 8
-  C1_PUNCT* = 16
-  C1_CNTRL* = 32
-  C1_BLANK* = 64
-  C1_XDIGIT* = 128
-  C1_ALPHA* = 256
-  C2_LEFTTORIGHT* = 1
-  C2_RIGHTTOLEFT* = 2
-  C2_EUROPENUMBER* = 3
-  C2_EUROPESEPARATOR* = 4
-  C2_EUROPETERMINATOR* = 5
-  C2_ARABICNUMBER* = 6
-  C2_COMMONSEPARATOR* = 7
-  C2_BLOCKSEPARATOR* = 8
-  C2_SEGMENTSEPARATOR* = 9
-  C2_WHITESPACE* = 10
-  C2_OTHERNEUTRAL* = 11
-  C2_NOTAPPLICABLE* = 0
-  C3_NONSPACING* = 1
-  C3_DIACRITIC* = 2
-  C3_VOWELMARK* = 4
-  C3_SYMBOL* = 8
-  C3_KATAKANA* = 16
-  C3_HIRAGANA* = 32
-  C3_HALFWIDTH* = 64
-  C3_FULLWIDTH* = 128
-  C3_IDEOGRAPH* = 256
-  C3_KASHIDA* = 512
-  C3_ALPHA* = 32768
-  C3_NOTAPPLICABLE* = 0       # GetSysColor
-  COLOR_3DDKSHADOW* = 21
-  COLOR_3DFACE* = 15
-  COLOR_3DHILIGHT* = 20
-  COLOR_3DLIGHT* = 22
-  COLOR_BTNHILIGHT* = 20
-  COLOR_3DSHADOW* = 16
-  COLOR_ACTIVEBORDER* = 10
-  COLOR_ACTIVECAPTION* = 2
-  COLOR_APPWORKSPACE* = 12
-  COLOR_BACKGROUND* = 1
-  COLOR_DESKTOP* = 1
-  COLOR_BTNFACE* = 15
-  COLOR_BTNHIGHLIGHT* = 20
-  COLOR_BTNSHADOW* = 16
-  COLOR_BTNTEXT* = 18
-  COLOR_CAPTIONTEXT* = 9
-  COLOR_GRAYTEXT* = 17
-  COLOR_HIGHLIGHT* = 13
-  COLOR_HIGHLIGHTTEXT* = 14
-  COLOR_INACTIVEBORDER* = 11
-  COLOR_INACTIVECAPTION* = 3
-  COLOR_INACTIVECAPTIONTEXT* = 19
-  COLOR_INFOBK* = 24
-  COLOR_INFOTEXT* = 23
-  COLOR_MENU* = 4
-  COLOR_MENUTEXT* = 7
-  COLOR_SCROLLBAR* = 0
-  COLOR_WINDOW* = 5
-  COLOR_WINDOWFRAME* = 6
-  COLOR_WINDOWTEXT* = 8       # GetSystemMetrics
-  SM_CYMIN* = 29
-  SM_CXMIN* = 28
-  SM_ARRANGE* = 56
-  SM_CLEANBOOT* = 67 # The right value for SM_CEMETRICS for NT 3.5 is 75.  For Windows 95
-                     #     and NT 4.0, it is 76.  The meaning is undocumented, anyhow.
-  SM_CMETRICS* = 76
-  SM_CMOUSEBUTTONS* = 43
-  SM_CXBORDER* = 5
-  SM_CYBORDER* = 6
-  SM_CXCURSOR* = 13
-  SM_CYCURSOR* = 14
-  SM_CXDLGFRAME* = 7
-  SM_CYDLGFRAME* = 8
-  SM_CXDOUBLECLK* = 36
-  SM_CYDOUBLECLK* = 37
-  SM_CXDRAG* = 68
-  SM_CYDRAG* = 69
-  SM_CXEDGE* = 45
-  SM_CYEDGE* = 46
-  SM_CXFIXEDFRAME* = 7
-  SM_CYFIXEDFRAME* = 8
-  SM_CXFRAME* = 32
-  SM_CYFRAME* = 33
-  SM_CXFULLSCREEN* = 16
-  SM_CYFULLSCREEN* = 17
-  SM_CXHSCROLL* = 21
-  SM_CYHSCROLL* = 3
-  SM_CXHTHUMB* = 10
-  SM_CXICON* = 11
-  SM_CYICON* = 12
-  SM_CXICONSPACING* = 38
-  SM_CYICONSPACING* = 39
-  SM_CXMAXIMIZED* = 61
-  SM_CYMAXIMIZED* = 62
-  SM_CXMAXTRACK* = 59
-  SM_CYMAXTRACK* = 60
-  SM_CXMENUCHECK* = 71
-  SM_CYMENUCHECK* = 72
-  SM_CXMENUSIZE* = 54
-  SM_CYMENUSIZE* = 55
-  SM_CXMINIMIZED* = 57
-  SM_CYMINIMIZED* = 58
-  SM_CXMINSPACING* = 47
-  SM_CYMINSPACING* = 48
-  SM_CXMINTRACK* = 34
-  SM_CYMINTRACK* = 35
-  SM_CXSCREEN* = 0
-  SM_CYSCREEN* = 1
-  SM_CXSIZE* = 30
-  SM_CYSIZE* = 31
-  SM_CXSIZEFRAME* = 32
-  SM_CYSIZEFRAME* = 33
-  SM_CXSMICON* = 49
-  SM_CYSMICON* = 50
-  SM_CXSMSIZE* = 52
-  SM_CYSMSIZE* = 53
-  SM_CXVSCROLL* = 2           #SM_CYHSCROLL = 3;already above
-                              #SM_CXHSCROLL = 21;already above
-  SM_CYVSCROLL* = 20
-  SM_CYVTHUMB* = 9
-  SM_CYCAPTION* = 4
-  SM_CYKANJIWINDOW* = 18
-  SM_CYMENU* = 15
-  SM_CYSMCAPTION* = 51
-  SM_DBCSENABLED* = 42
-  SM_DEBUG* = 22
-  SM_MENUDROPALIGNMENT* = 40
-  SM_MIDEASTENABLED* = 74
-  SM_MOUSEPRESENT* = 19
-  SM_MOUSEWHEELPRESENT* = 75
-  SM_NETWORK* = 63
-  SM_PENWINDOWS* = 41
-  SM_SECURE* = 44
-  SM_SHOWSOUNDS* = 70
-  SM_SLOWMACHINE* = 73
-  SM_SWAPBUTTON* = 23
-  ARW_BOTTOMLEFT* = 0
-  ARW_BOTTOMRIGHT* = 0x00000001
-  ARW_HIDE* = 0x00000008
-  ARW_TOPLEFT* = 0x00000002
-  ARW_TOPRIGHT* = 0x00000003
-  ARW_DOWN* = 0x00000004
-  ARW_LEFT* = 0
-  ARW_RIGHT* = 0
-  ARW_UP* = 0x00000004        # GetSystemPaletteUse
-  SYSPAL_NOSTATIC* = 2
-  SYSPAL_STATIC* = 1
-  SYSPAL_ERROR* = 0           # GetTapeParameters, SetTapeParameters
-  GET_TAPE_MEDIA_INFORMATION* = 0
-  GET_TAPE_DRIVE_INFORMATION* = 1
-  SET_TAPE_MEDIA_INFORMATION* = 0
-  SET_TAPE_DRIVE_INFORMATION* = 1 # GetTapePosition
-  TAPE_ABSOLUTE_POSITION* = 0
-  TAPE_LOGICAL_POSITION* = 0x00000001 # GetTextAlign
-  TA_BASELINE* = 24
-  TA_BOTTOM* = 8
-  TA_TOP* = 0
-  TA_CENTER* = 6
-  TA_LEFT* = 0
-  TA_RIGHT* = 2
-  TA_RTLREADING* = 256
-  TA_NOUPDATECP* = 0
-  TA_UPDATECP* = 1
-  VTA_BASELINE* = 24
-  VTA_CENTER* = 6             # GetThreadPriority
-  THREAD_PRIORITY_ABOVE_NORMAL* = 1
-  THREAD_PRIORITY_BELOW_NORMAL* = - (1)
-  THREAD_PRIORITY_HIGHEST* = 2
-  THREAD_PRIORITY_IDLE* = - (15)
-  THREAD_PRIORITY_LOWEST* = - (2)
-  THREAD_PRIORITY_NORMAL* = 0
-  THREAD_PRIORITY_TIME_CRITICAL* = 15
-  THREAD_PRIORITY_ERROR_RETURN* = 2147483647
-  TLS_MINIMUM_AVAILABLE* = 64 # GetTimeFormat
-  TIME_NOMINUTESORSECONDS* = 1
-  TIME_NOSECONDS* = 2
-  TIME_NOTIMEMARKER* = 4
-  TIME_FORCE24HOURFORMAT* = 8 # GetTimeZoneInformation
-                              # was #define dname def_expr
-
-const
-  TIME_ZONE_ID_INVALID* = DWORD(- 1)
-  TIME_ZONE_ID_UNKNOWN* = 0
-  TIME_ZONE_ID_STANDARD* = 1
-  TIME_ZONE_ID_DAYLIGHT* = 2  # GetUserObjectInformation
-  UOI_FLAGS* = 1
-  UOI_NAME* = 2
-  UOI_TYPE* = 3               # GetVolumeInformation
-  FS_CASE_IS_PRESERVED* = 2
-  FS_CASE_SENSITIVE* = 1
-  FS_UNICODE_STORED_ON_DISK* = 4
-  FS_PERSISTENT_ACLS* = 8
-  FS_FILE_COMPRESSION* = 16
-  FS_VOL_IS_COMPRESSED* = 32768 # GetWindowLong
-  GWL_EXSTYLE* = - (20)
-  GWL_STYLE* = - (16)
-  GWL_WNDPROC* = - (4)
-  GWL_HINSTANCE* = - (6)
-  GWL_HWNDPARENT* = - (8)
-  GWL_ID* = - (12)
-  GWL_USERDATA* = - (21)
-  DWL_DLGPROC* = 4
-  DWL_MSGRESULT* = 0
-  DWL_USER* = 8               # GlobalAlloc, GlobalFlags
-  GMEM_FIXED* = 0
-  GMEM_MOVEABLE* = 2
-  GPTR* = 64
-  GHND* = 66
-  GMEM_DDESHARE* = 8192
-  GMEM_DISCARDABLE* = 256
-  GMEM_LOWER* = 4096
-  GMEM_NOCOMPACT* = 16
-  GMEM_NODISCARD* = 32
-  GMEM_NOT_BANKED* = 4096
-  GMEM_NOTIFY* = 16384
-  GMEM_SHARE* = 8192
-  GMEM_ZEROINIT* = 64
-  GMEM_DISCARDED* = 16384
-  GMEM_INVALID_HANDLE* = 32768
-  GMEM_LOCKCOUNT* = 255       # HeapAlloc, HeapReAlloc
-  HEAP_GENERATE_EXCEPTIONS* = 4
-  HEAP_NO_SERIALIZE* = 1
-  HEAP_ZERO_MEMORY* = 8
-  STATUS_NO_MEMORY* = 0xC0000017
-  STATUS_ACCESS_VIOLATION* = 0xC0000005
-  HEAP_REALLOC_IN_PLACE_ONLY* = 16 # ImageList_Create
-  ILC_COLOR* = 0
-  ILC_COLOR4* = 4
-  ILC_COLOR8* = 8
-  ILC_COLOR16* = 16
-  ILC_COLOR24* = 24
-  ILC_COLOR32* = 32
-  ILC_COLORDDB* = 254
-  ILC_MASK* = 1
-  ILC_PALETTE* = 2048         # ImageList_Draw, ImageList_DrawEx
-  ILD_BLEND25* = 2
-  ILD_BLEND50* = 4
-  ILD_SELECTED* = 4
-  ILD_BLEND* = 4
-  ILD_FOCUS* = 2
-  ILD_MASK* = 16
-  ILD_NORMAL* = 0
-  ILD_TRANSPARENT* = 1
-  CLR_NONE* = 0xFFFFFFFF
-  CLR_DEFAULT* = 0xFF000000
-  CLR_INVALID* = 0xFFFFFFFF   # ImageList_LoadImage
-                              #LR_DEFAULTCOLOR = 0;already above
-  LR_LOADFROMFILE* = 16
-  LR_LOADMAP3DCOLORS* = 4096
-  LR_LOADTRANSPARENT* = 32    # ImmConfigureIME
-  IME_CONFIG_GENERAL* = 1
-  IME_CONFIG_REGISTERWORD* = 2
-  IME_CONFIG_SELECTDICTIONARY* = 3 # ImmGetConversionList
-  GCL_CONVERSION* = 1
-  GCL_REVERSECONVERSION* = 2
-  GCL_REVERSE_LENGTH* = 3     # ImmGetGuideLine
-  GGL_LEVEL* = 1
-  GGL_INDEX* = 2
-  GGL_STRING* = 3
-  GGL_PRIVATE* = 4
-  GL_LEVEL_ERROR* = 2
-  GL_LEVEL_FATAL* = 1
-  GL_LEVEL_INFORMATION* = 4
-  GL_LEVEL_NOGUIDELINE* = 0
-  GL_LEVEL_WARNING* = 3
-  GL_ID_CANNOTSAVE* = 17
-  GL_ID_NOCONVERT* = 32
-  GL_ID_NODICTIONARY* = 16
-  GL_ID_NOMODULE* = 1
-  GL_ID_READINGCONFLICT* = 35
-  GL_ID_TOOMANYSTROKE* = 34
-  GL_ID_TYPINGERROR* = 33
-  GL_ID_UNKNOWN* = 0
-  GL_ID_INPUTREADING* = 36
-  GL_ID_INPUTRADICAL* = 37
-  GL_ID_INPUTCODE* = 38
-  GL_ID_CHOOSECANDIDATE* = 40
-  GL_ID_REVERSECONVERSION* = 41 # ImmGetProperty
-  IGP_PROPERTY* = 4
-  IGP_CONVERSION* = 8
-  IGP_SENTENCE* = 12
-  IGP_UI* = 16
-  IGP_SETCOMPSTR* = 20
-  IGP_SELECT* = 24
-  IME_PROP_AT_CARET* = 65536
-  IME_PROP_SPECIAL_UI* = 131072
-  IME_PROP_CANDLIST_START_FROM_1* = 262144
-  IME_PROP_UNICODE* = 524288
-  UI_CAP_2700* = 1
-  UI_CAP_ROT90* = 2
-  UI_CAP_ROTANY* = 4
-  SCS_CAP_COMPSTR* = 1
-  SCS_CAP_MAKEREAD* = 2
-  SELECT_CAP_CONVERSION* = 1
-  SELECT_CAP_SENTENCE* = 2    # ImmNotifyIME
-  NI_CHANGECANDIDATELIST* = 19
-  NI_CLOSECANDIDATE* = 17
-  NI_COMPOSITIONSTR* = 21
-  NI_OPENCANDIDATE* = 16
-  NI_SELECTCANDIDATESTR* = 18
-  NI_SETCANDIDATE_PAGESIZE* = 23
-  NI_SETCANDIDATE_PAGESTART* = 22
-  CPS_CANCEL* = 4
-  CPS_COMPLETE* = 1
-  CPS_CONVERT* = 2
-  CPS_REVERT* = 3             # ImmSetCompositionString
-  SCS_SETSTR* = 9
-  SCS_CHANGEATTR* = 18
-  SCS_CHANGECLAUSE* = 36      # ImmUnregisterWord
-  IME_REGWORD_STYLE_EUDC* = 1
-  IME_REGWORD_STYLE_USER_FIRST* = 0x80000000
-  IME_REGWORD_STYLE_USER_LAST* = - (1) # InitializeSecurityDescriptor
-  SECURITY_DESCRIPTOR_REVISION* = 1 # IsTextUnicode
-  IS_TEXT_UNICODE_ASCII16* = 1
-  IS_TEXT_UNICODE_REVERSE_ASCII16* = 16
-  IS_TEXT_UNICODE_STATISTICS* = 2
-  IS_TEXT_UNICODE_REVERSE_STATISTICS* = 32
-  IS_TEXT_UNICODE_CONTROLS* = 4
-  IS_TEXT_UNICODE_REVERSE_CONTROLS* = 64
-  IS_TEXT_UNICODE_SIGNATURE* = 8
-  IS_TEXT_UNICODE_REVERSE_SIGNATURE* = 128
-  IS_TEXT_UNICODE_ILLEGAL_CHARS* = 256
-  IS_TEXT_UNICODE_ODD_LENGTH* = 512
-  IS_TEXT_UNICODE_NULL_BYTES* = 4096
-  IS_TEXT_UNICODE_UNICODE_MASK* = 15
-  IS_TEXT_UNICODE_REVERSE_MASK* = 240
-  IS_TEXT_UNICODE_NOT_UNICODE_MASK* = 3840
-  IS_TEXT_UNICODE_NOT_ASCII_MASK* = 61440 # JournalPlaybackProc, KeyboardProc
-  HC_GETNEXT* = 1
-  HC_SKIP* = 2
-  HC_SYSMODALOFF* = 5
-  HC_SYSMODALON* = 4
-  HC_NOREMOVE* = 3            # keybd_event
-  KEYEVENTF_EXTENDEDKEY* = 1
-  KEYEVENTF_KEYUP* = 2        # LoadBitmap
-  OBM_BTNCORNERS* = 32758
-  OBM_BTSIZE* = 32761
-  OBM_CHECK* = 32760
-  OBM_CHECKBOXES* = 32759
-  OBM_CLOSE* = 32754
-  OBM_COMBO* = 32738
-  OBM_DNARROW* = 32752
-  OBM_DNARROWD* = 32742
-  OBM_DNARROWI* = 32736
-  OBM_LFARROW* = 32750
-  OBM_LFARROWI* = 32734
-  OBM_LFARROWD* = 32740
-  OBM_MNARROW* = 32739
-  OBM_OLD_CLOSE* = 32767
-  OBM_OLD_DNARROW* = 32764
-  OBM_OLD_LFARROW* = 32762
-  OBM_OLD_REDUCE* = 32757
-  OBM_OLD_RESTORE* = 32755
-  OBM_OLD_RGARROW* = 32763
-  OBM_OLD_UPARROW* = 32765
-  OBM_OLD_ZOOM* = 32756
-  OBM_REDUCE* = 32749
-  OBM_REDUCED* = 32746
-  OBM_RESTORE* = 32747
-  OBM_RESTORED* = 32744
-  OBM_RGARROW* = 32751
-  OBM_RGARROWD* = 32741
-  OBM_RGARROWI* = 32735
-  OBM_SIZE* = 32766
-  OBM_UPARROW* = 32753
-  OBM_UPARROWD* = 32743
-  OBM_UPARROWI* = 32737
-  OBM_ZOOM* = 32748
-  OBM_ZOOMD* = 32745          # LoadLibraryEx
-  DONT_RESOLVE_DLL_REFERENCES* = 1
-  LOAD_LIBRARY_AS_DATAFILE* = 2
-  LOAD_WITH_ALTERED_SEARCH_PATH* = 8 # LocalAlloc, LocalFlags
-  LPTR* = 64
-  LHND* = 66
-  NONZEROLHND* = 2
-  NONZEROLPTR* = 0
-  LMEM_NONZEROLHND* = 2
-  LMEM_NONZEROLPTR* = 0
-  LMEM_FIXED* = 0
-  LMEM_MOVEABLE* = 2
-  LMEM_NOCOMPACT* = 16
-  LMEM_NODISCARD* = 32
-  LMEM_ZEROINIT* = 64
-  LMEM_MODIFY* = 128
-  LMEM_LOCKCOUNT* = 255
-  LMEM_DISCARDABLE* = 3840
-  LMEM_DISCARDED* = 16384
-  LMEM_INVALID_HANDLE* = 32768 # LockFileEx
-  LOCKFILE_FAIL_IMMEDIATELY* = 1
-  LOCKFILE_EXCLUSIVE_LOCK* = 2 # LogonUser
-                               # LZCopy, LZInit, LZRead
-                               # MessageBeep, MessageBox
-  MB_USERICON* = 0x00000080
-  MB_ICONASTERISK* = 0x00000040
-  MB_ICONEXCLAMATION* = 0x00000030
-  MB_ICONWARNING* = 0x00000030
-  MB_ICONERROR* = 0x00000010
-  MB_ICONHAND* = 0x00000010
-  MB_ICONQUESTION* = 0x00000020
-  MB_OK* = 0
-  MB_ABORTRETRYIGNORE* = 0x00000002
-  MB_APPLMODAL* = 0
-  MB_DEFAULT_DESKTOP_ONLY* = 0x00020000
-  MB_HELP* = 0x00004000
-  MB_RIGHT* = 0x00080000
-  MB_RTLREADING* = 0x00100000
-  MB_TOPMOST* = 0x00040000
-  MB_DEFBUTTON1* = 0
-  MB_DEFBUTTON2* = 0x00000100
-  MB_DEFBUTTON3* = 0x00000200
-  MB_DEFBUTTON4* = 0x00000300
-  MB_ICONINFORMATION* = 0x00000040
-  MB_ICONSTOP* = 0x00000010
-  MB_OKCANCEL* = 0x00000001
-  MB_RETRYCANCEL* = 0x00000005
-  MB_SERVICE_NOTIFICATION* = 0x00040000
-  MB_SETFOREGROUND* = 0x00010000
-  MB_SYSTEMMODAL* = 0x00001000
-  MB_TASKMODAL* = 0x00002000
-  MB_YESNO* = 0x00000004
-  MB_YESNOCANCEL* = 0x00000003
-  IDABORT* = 3
-  IDCANCEL* = 2
-  IDCLOSE* = 8
-  IDHELP* = 9
-  IDIGNORE* = 5
-  IDNO* = 7
-  IDOK* = 1
-  IDRETRY* = 4
-  IDYES* = 6                  # MessageProc
-  MSGF_DIALOGBOX* = 0
-  MSGF_MENU* = 2
-  MSGF_NEXTWINDOW* = 6
-  MSGF_SCROLLBAR* = 5
-  MSGF_MAINLOOP* = 8
-  MSGF_USER* = 4096           # ModifyWorldTransform
-  MWT_IDENTITY* = 1
-  MWT_LEFTMULTIPLY* = 2
-  MWT_RIGHTMULTIPLY* = 3      # mouse_event
-  MOUSEEVENTF_ABSOLUTE* = 32768
-  MOUSEEVENTF_MOVE* = 1
-  MOUSEEVENTF_LEFTDOWN* = 2
-  MOUSEEVENTF_LEFTUP* = 4
-  MOUSEEVENTF_RIGHTDOWN* = 8
-  MOUSEEVENTF_RIGHTUP* = 16
-  MOUSEEVENTF_MIDDLEDOWN* = 32
-  MOUSEEVENTF_MIDDLEUP* = 64  # MoveFileEx
-  MOVEFILE_REPLACE_EXISTING* = 1
-  MOVEFILE_COPY_ALLOWED* = 2
-  MOVEFILE_DELAY_UNTIL_REBOOT* = 4 # MsgWaitForMultipleObjects, WaitForMultipleObjectsEx
-  WAIT_OBJECT_0* = 0
-  WAIT_ABANDONED_0* = 0x00000080
-  WAIT_TIMEOUT* = 0x00000102
-  WAIT_IO_COMPLETION* = 0x000000C0
-  WAIT_ABANDONED* = 0x00000080
-  WAIT_FAILED* = 0xFFFFFFFF
-  MAXIMUM_WAIT_OBJECTS* = 0x00000040
-  MAXIMUM_SUSPEND_COUNT* = 0x0000007F # MultiByteToWideChar
-  MB_PRECOMPOSED* = 1
-  MB_COMPOSITE* = 2
-  MB_ERR_INVALID_CHARS* = 8
-  MB_USEGLYPHCHARS* = 4       # NDdeSetTrustedShare
-                              # NetAccessCheck
-                              # NetServerEnum
-                              # NetServiceControl
-                              # NetUserEnum
-                              # OpenProcessToken
-  TOKEN_ADJUST_DEFAULT* = 128
-  TOKEN_ADJUST_GROUPS* = 64
-  TOKEN_ADJUST_PRIVILEGES* = 32
-  TOKEN_ALL_ACCESS* = 0x000F00FF
-  TOKEN_ASSIGN_PRIMARY* = 1
-  TOKEN_DUPLICATE* = 2
-  TOKEN_EXECUTE* = 0x00020000
-  TOKEN_IMPERSONATE* = 4
-  TOKEN_QUERY* = 8
-  TOKEN_QUERY_SOURCE* = 16
-  TOKEN_READ* = 0x00020008
-  TOKEN_WRITE* = 0x000200E0   # OpenSCManager
-  SC_MANAGER_ALL_ACCESS* = 0x000F003F
-  SC_MANAGER_CONNECT* = 1
-  SC_MANAGER_CREATE_SERVICE* = 2
-  SC_MANAGER_ENUMERATE_SERVICE* = 4
-  SC_MANAGER_LOCK* = 8
-  SC_MANAGER_QUERY_LOCK_STATUS* = 16
-  SC_MANAGER_MODIFY_BOOT_CONFIG* = 32 # PostMessage
-                                      # was #define dname def_expr
-
-proc HWND_BROADCAST*(): HWND
-  # PrepareTape
-const
-  TAPE_FORMAT* = 0x00000005
-  TAPE_LOAD* = 0
-  TAPE_LOCK* = 0x00000003
-  TAPE_TENSION* = 0x00000002
-  TAPE_UNLOAD* = 0x00000001
-  TAPE_UNLOCK* = 0x00000004   # PropertySheet
-  IS_PSREBOOTSYSTEM* = 3
-  IS_PSRESTARTWINDOWS* = 2    # PropSheetPageProc
-  PSPCB_CREATE* = 2
-  PSPCB_RELEASE* = 1          # PurgeComm
-  PURGE_TXABORT* = 1
-  PURGE_RXABORT* = 2
-  PURGE_TXCLEAR* = 4
-  PURGE_RXCLEAR* = 8          # QueryServiceObjectSecurity
-  OWNER_SECURITY_INFORMATION* = 0x00000001
-  GROUP_SECURITY_INFORMATION* = 0x00000002
-  DACL_SECURITY_INFORMATION* = 0x00000004
-  SACL_SECURITY_INFORMATION* = 0x00000008 # ReadEventLog, ReportEvent
-  EVENTLOG_FORWARDS_READ* = 4
-  EVENTLOG_BACKWARDS_READ* = 8
-  EVENTLOG_SEEK_READ* = 2
-  EVENTLOG_SEQUENTIAL_READ* = 1
-  EVENTLOG_ERROR_TYPE* = 1
-  EVENTLOG_WARNING_TYPE* = 2
-  EVENTLOG_INFORMATION_TYPE* = 4
-  EVENTLOG_AUDIT_SUCCESS* = 8
-  EVENTLOG_AUDIT_FAILURE* = 16 # RedrawWindow
-  RDW_ERASE* = 4
-  RDW_FRAME* = 1024
-  RDW_INTERNALPAINT* = 2
-  RDW_INVALIDATE* = 1
-  RDW_NOERASE* = 32
-  RDW_NOFRAME* = 2048
-  RDW_NOINTERNALPAINT* = 16
-  RDW_VALIDATE* = 8
-  RDW_ERASENOW* = 512
-  RDW_UPDATENOW* = 256
-  RDW_ALLCHILDREN* = 128
-  RDW_NOCHILDREN* = 64        # RegCreateKey
-                              # was #define dname def_expr
-
-proc HKEY_CLASSES_ROOT*(): HKEY
-  # was #define dname def_expr
-proc HKEY_CURRENT_USER*(): HKEY
-  # was #define dname def_expr
-proc HKEY_LOCAL_MACHINE*(): HKEY
-  # was #define dname def_expr
-proc HKEY_USERS*(): HKEY
-  # was #define dname def_expr
-proc HKEY_PERFORMANCE_DATA*(): HKEY
-  # was #define dname def_expr
-proc HKEY_CURRENT_CONFIG*(): HKEY
-  # was #define dname def_expr
-proc HKEY_DYN_DATA*(): HKEY
-  # RegCreateKeyEx
-const
-  REG_OPTION_VOLATILE* = 0x00000001
-  REG_OPTION_NON_VOLATILE* = 0
-  REG_CREATED_NEW_KEY* = 0x00000001
-  REG_OPENED_EXISTING_KEY* = 0x00000002 # RegEnumValue
-  REG_BINARY* = 3
-  REG_DWORD* = 4
-  REG_DWORD_LITTLE_ENDIAN* = 4
-  REG_DWORD_BIG_ENDIAN* = 5
-  REG_EXPAND_SZ* = 2
-  REG_FULL_RESOURCE_DESCRIPTOR* = 9
-  REG_LINK* = 6
-  REG_MULTI_SZ* = 7
-  REG_NONE* = 0
-  REG_RESOURCE_LIST* = 8
-  REG_RESOURCE_REQUIREMENTS_LIST* = 10
-  REG_SZ* = 1                 # RegisterHotKey
-  MOD_ALT* = 1
-  MOD_CONTROL* = 2
-  MOD_SHIFT* = 4
-  MOD_WIN* = 8
-  IDHOT_SNAPDESKTOP* = - (2)
-  IDHOT_SNAPWINDOW* = - (1)   # RegNotifyChangeKeyValue
-  REG_NOTIFY_CHANGE_NAME* = 0x00000001
-  REG_NOTIFY_CHANGE_ATTRIBUTES* = 0x00000002
-  REG_NOTIFY_CHANGE_LAST_SET* = 0x00000004
-  REG_NOTIFY_CHANGE_SECURITY* = 0x00000008 # ScrollWindowEx
-  SW_ERASE* = 4
-  SW_INVALIDATE* = 2
-  SW_SCROLLCHILDREN* = 1      # SendMessageTimeout
-  SMTO_ABORTIFHUNG* = 2
-  SMTO_BLOCK* = 1
-  SMTO_NORMAL* = 0            # SetBkMode
-  OPAQUE* = 2
-  TRANSPARENT* = 1            # SetDebugErrorLevel
-  SLE_ERROR* = 1
-  SLE_MINORERROR* = 2
-  SLE_WARNING* = 3            # SetErrorMode
-  SEM_FAILCRITICALERRORS* = 1
-  SEM_NOALIGNMENTFAULTEXCEPT* = 4
-  SEM_NOGPFAULTERRORBOX* = 2
-  SEM_NOOPENFILEERRORBOX* = 32768 # SetICMMode
-  ICM_ON* = 2
-  ICM_OFF* = 1
-  ICM_QUERY* = 3              # SetJob
-                              # Locale Information
-  LOCALE_ILANGUAGE* = 1
-  LOCALE_SLANGUAGE* = 2
-  LOCALE_SENGLANGUAGE* = 4097
-  LOCALE_SABBREVLANGNAME* = 3
-  LOCALE_SNATIVELANGNAME* = 4
-  LOCALE_ICOUNTRY* = 5
-  LOCALE_SCOUNTRY* = 6
-  LOCALE_SENGCOUNTRY* = 4098
-  LOCALE_SABBREVCTRYNAME* = 7
-  LOCALE_SNATIVECTRYNAME* = 8
-  LOCALE_IDEFAULTLANGUAGE* = 9
-  LOCALE_IDEFAULTCOUNTRY* = 10
-  LOCALE_IDEFAULTANSICODEPAGE* = 4100
-  LOCALE_IDEFAULTCODEPAGE* = 11
-  LOCALE_SLIST* = 12
-  LOCALE_IMEASURE* = 13
-  LOCALE_SDECIMAL* = 14
-  LOCALE_STHOUSAND* = 15
-  LOCALE_SGROUPING* = 16
-  LOCALE_IDIGITS* = 17
-  LOCALE_ILZERO* = 18
-  LOCALE_INEGNUMBER* = 4112
-  LOCALE_SCURRENCY* = 20
-  LOCALE_SMONDECIMALSEP* = 22
-  LOCALE_SMONTHOUSANDSEP* = 23
-  LOCALE_SMONGROUPING* = 24
-  LOCALE_ICURRDIGITS* = 25
-  LOCALE_ICURRENCY* = 27
-  LOCALE_INEGCURR* = 28
-  LOCALE_SDATE* = 29
-  LOCALE_STIME* = 30
-  LOCALE_STIMEFORMAT* = 4099
-  LOCALE_SSHORTDATE* = 31
-  LOCALE_SLONGDATE* = 32
-  LOCALE_IDATE* = 33
-  LOCALE_ILDATE* = 34
-  LOCALE_ITIME* = 35
-  LOCALE_ITLZERO* = 37
-  LOCALE_IDAYLZERO* = 38
-  LOCALE_IMONLZERO* = 39
-  LOCALE_S1159* = 40
-  LOCALE_S2359* = 41
-  LOCALE_ICALENDARTYPE* = 4105
-  LOCALE_IOPTIONALCALENDAR* = 4107
-  LOCALE_IFIRSTDAYOFWEEK* = 4108
-  LOCALE_IFIRSTWEEKOFYEAR* = 4109
-  LOCALE_SDAYNAME1* = 42
-  LOCALE_SDAYNAME2* = 43
-  LOCALE_SDAYNAME3* = 44
-  LOCALE_SDAYNAME4* = 45
-  LOCALE_SDAYNAME5* = 46
-  LOCALE_SDAYNAME6* = 47
-  LOCALE_SDAYNAME7* = 48
-  LOCALE_SABBREVDAYNAME1* = 49
-  LOCALE_SABBREVDAYNAME2* = 50
-  LOCALE_SABBREVDAYNAME3* = 51
-  LOCALE_SABBREVDAYNAME4* = 52
-  LOCALE_SABBREVDAYNAME5* = 53
-  LOCALE_SABBREVDAYNAME6* = 54
-  LOCALE_SABBREVDAYNAME7* = 55
-  LOCALE_SMONTHNAME1* = 56
-  LOCALE_SMONTHNAME2* = 57
-  LOCALE_SMONTHNAME3* = 58
-  LOCALE_SMONTHNAME4* = 59
-  LOCALE_SMONTHNAME5* = 60
-  LOCALE_SMONTHNAME6* = 61
-  LOCALE_SMONTHNAME7* = 62
-  LOCALE_SMONTHNAME8* = 63
-  LOCALE_SMONTHNAME9* = 64
-  LOCALE_SMONTHNAME10* = 65
-  LOCALE_SMONTHNAME11* = 66
-  LOCALE_SMONTHNAME12* = 67
-  LOCALE_SMONTHNAME13* = 4110
-  LOCALE_SABBREVMONTHNAME1* = 68
-  LOCALE_SABBREVMONTHNAME2* = 69
-  LOCALE_SABBREVMONTHNAME3* = 70
-  LOCALE_SABBREVMONTHNAME4* = 71
-  LOCALE_SABBREVMONTHNAME5* = 72
-  LOCALE_SABBREVMONTHNAME6* = 73
-  LOCALE_SABBREVMONTHNAME7* = 74
-  LOCALE_SABBREVMONTHNAME8* = 75
-  LOCALE_SABBREVMONTHNAME9* = 76
-  LOCALE_SABBREVMONTHNAME10* = 77
-  LOCALE_SABBREVMONTHNAME11* = 78
-  LOCALE_SABBREVMONTHNAME12* = 79
-  LOCALE_SABBREVMONTHNAME13* = 4111
-  LOCALE_SPOSITIVESIGN* = 80
-  LOCALE_SNEGATIVESIGN* = 81
-  LOCALE_IPOSSIGNPOSN* = 82
-  LOCALE_INEGSIGNPOSN* = 83
-  LOCALE_IPOSSYMPRECEDES* = 84
-  LOCALE_IPOSSEPBYSPACE* = 85
-  LOCALE_INEGSYMPRECEDES* = 86
-  LOCALE_INEGSEPBYSPACE* = 87
-  LOCALE_NOUSEROVERRIDE* = 0x80000000
-  LOCALE_USE_CP_ACP* = 0x40000000 # use the system ACP
-  LOCALE_RETURN_NUMBER* = 0x20000000 # return number instead
-  LOCALE_SISO639LANGNAME* = 0x00000059
-  LOCALE_SISO3166CTRYNAME* = 0x0000005A # Calendar Type Information
-  CAL_ICALINTVALUE* = 1
-  CAL_IYEAROFFSETRANGE* = 3
-  CAL_SABBREVDAYNAME1* = 14
-  CAL_SABBREVDAYNAME2* = 15
-  CAL_SABBREVDAYNAME3* = 16
-  CAL_SABBREVDAYNAME4* = 17
-  CAL_SABBREVDAYNAME5* = 18
-  CAL_SABBREVDAYNAME6* = 19
-  CAL_SABBREVDAYNAME7* = 20
-  CAL_SABBREVMONTHNAME1* = 34
-  CAL_SABBREVMONTHNAME2* = 35
-  CAL_SABBREVMONTHNAME3* = 36
-  CAL_SABBREVMONTHNAME4* = 37
-  CAL_SABBREVMONTHNAME5* = 38
-  CAL_SABBREVMONTHNAME6* = 39
-  CAL_SABBREVMONTHNAME7* = 40
-  CAL_SABBREVMONTHNAME8* = 41
-  CAL_SABBREVMONTHNAME9* = 42
-  CAL_SABBREVMONTHNAME10* = 43
-  CAL_SABBREVMONTHNAME11* = 44
-  CAL_SABBREVMONTHNAME12* = 45
-  CAL_SABBREVMONTHNAME13* = 46
-  CAL_SCALNAME* = 2
-  CAL_SDAYNAME1* = 7
-  CAL_SDAYNAME2* = 8
-  CAL_SDAYNAME3* = 9
-  CAL_SDAYNAME4* = 10
-  CAL_SDAYNAME5* = 11
-  CAL_SDAYNAME6* = 12
-  CAL_SDAYNAME7* = 13
-  CAL_SERASTRING* = 4
-  CAL_SLONGDATE* = 6
-  CAL_SMONTHNAME1* = 21
-  CAL_SMONTHNAME2* = 22
-  CAL_SMONTHNAME3* = 23
-  CAL_SMONTHNAME4* = 24
-  CAL_SMONTHNAME5* = 25
-  CAL_SMONTHNAME6* = 26
-  CAL_SMONTHNAME7* = 27
-  CAL_SMONTHNAME8* = 28
-  CAL_SMONTHNAME9* = 29
-  CAL_SMONTHNAME10* = 30
-  CAL_SMONTHNAME11* = 31
-  CAL_SMONTHNAME12* = 32
-  CAL_SMONTHNAME13* = 33
-  CAL_SSHORTDATE* = 5         # SetProcessWorkingSetSize
-  PROCESS_SET_QUOTA* = 256    # SetPrinter
-                              # SetService
-                              # SetStretchBltMode
-  BLACKONWHITE* = 1
-  COLORONCOLOR* = 3
-  HALFTONE* = 4
-  STRETCH_ANDSCANS* = 1
-  STRETCH_DELETESCANS* = 3
-  STRETCH_HALFTONE* = 4
-  STRETCH_ORSCANS* = 2
-  WHITEONBLACK* = 2           # SetSystemCursor
-  OCR_NORMAL* = 32512
-  OCR_IBEAM* = 32513
-  OCR_WAIT* = 32514
-  OCR_CROSS* = 32515
-  OCR_UP* = 32516
-  OCR_SIZE* = 32640
-  OCR_ICON* = 32641
-  OCR_SIZENWSE* = 32642
-  OCR_SIZENESW* = 32643
-  OCR_SIZEWE* = 32644
-  OCR_SIZENS* = 32645
-  OCR_SIZEALL* = 32646
-  OCR_NO* = 32648
-  OCR_APPSTARTING* = 32650    # SetTapePosition
-  TAPE_ABSOLUTE_BLOCK* = 0x00000001
-  TAPE_LOGICAL_BLOCK* = 0x00000002
-  TAPE_REWIND* = 0
-  TAPE_SPACE_END_OF_DATA* = 0x00000004
-  TAPE_SPACE_FILEMARKS* = 0x00000006
-  TAPE_SPACE_RELATIVE_BLOCKS* = 0x00000005
-  TAPE_SPACE_SEQUENTIAL_FMKS* = 0x00000007
-  TAPE_SPACE_SEQUENTIAL_SMKS* = 0x00000009
-  TAPE_SPACE_SETMARKS* = 0x00000008 # SetUnhandledExceptionFilter
-  EXCEPTION_EXECUTE_HANDLER* = 1
-  EXCEPTION_CONTINUE_EXECUTION* = - (1)
-  EXCEPTION_CONTINUE_SEARCH* = 0 # SetWindowPos, DeferWindowPos
-                                 # was #define dname def_expr
-
-proc HWND_BOTTOM*(): HWND
-  # was #define dname def_expr
-proc HWND_NOTOPMOST*(): HWND
-  # was #define dname def_expr
-proc HWND_TOP*(): HWND
-  # was #define dname def_expr
-proc HWND_TOPMOST*(): HWND
-const
-  SWP_DRAWFRAME* = 32
-  SWP_FRAMECHANGED* = 32
-  SWP_HIDEWINDOW* = 128
-  SWP_NOACTIVATE* = 16
-  SWP_NOCOPYBITS* = 256
-  SWP_NOMOVE* = 2
-  SWP_NOSIZE* = 1
-  SWP_NOREDRAW* = 8
-  SWP_NOZORDER* = 4
-  SWP_SHOWWINDOW* = 64
-  SWP_NOOWNERZORDER* = 512
-  SWP_NOREPOSITION* = 512
-  SWP_NOSENDCHANGING* = 1024  # SHAddToRecentDocs
-                              # SHAppBarMessage
-                              # SHChangeNotify
-                              # ShellProc
-  HSHELL_ACTIVATESHELLWINDOW* = 3
-  HSHELL_GETMINRECT* = 5
-  HSHELL_LANGUAGE* = 8
-  HSHELL_REDRAW* = 6
-  HSHELL_TASKMAN* = 7
-  HSHELL_WINDOWACTIVATED* = 4
-  HSHELL_WINDOWCREATED* = 1
-  HSHELL_WINDOWDESTROYED* = 2 # SHGetFileInfo
-                              # SHGetSpecialFolderLocation
-                              # ShowWindow
-  SW_HIDE* = 0
-  SW_MAXIMIZE* = 3
-  SW_MINIMIZE* = 6
-  SW_NORMAL* = 1
-  SW_RESTORE* = 9
-  SW_SHOW* = 5
-  SW_SHOWDEFAULT* = 10
-  SW_SHOWMAXIMIZED* = 3
-  SW_SHOWMINIMIZED* = 2
-  SW_SHOWMINNOACTIVE* = 7
-  SW_SHOWNA* = 8
-  SW_SHOWNOACTIVATE* = 4
-  SW_SHOWNORMAL* = 1
-  WPF_RESTORETOMAXIMIZED* = 2
-  WPF_SETMINPOSITION* = 1     # Sleep
-  INFINITE* = -1'i32      # SystemParametersInfo
-  SPI_GETBEEP* = 1
-  SPI_SETBEEP* = 2
-  SPI_GETMOUSE* = 3
-  SPI_SETMOUSE* = 4
-  SPI_GETBORDER* = 5
-  SPI_SETBORDER* = 6
-  SPI_GETKEYBOARDSPEED* = 10
-  SPI_SETKEYBOARDSPEED* = 11
-  SPI_LANGDRIVER* = 12
-  SPI_ICONHORIZONTALSPACING* = 13
-  SPI_GETSCREENSAVETIMEOUT* = 14
-  SPI_SETSCREENSAVETIMEOUT* = 15
-  SPI_GETSCREENSAVEACTIVE* = 16
-  SPI_SETSCREENSAVEACTIVE* = 17
-  SPI_GETGRIDGRANULARITY* = 18
-  SPI_SETGRIDGRANULARITY* = 19
-  SPI_SETDESKWALLPAPER* = 20
-  SPI_SETDESKPATTERN* = 21
-  SPI_GETKEYBOARDDELAY* = 22
-  SPI_SETKEYBOARDDELAY* = 23
-  SPI_ICONVERTICALSPACING* = 24
-  SPI_GETICONTITLEWRAP* = 25
-  SPI_SETICONTITLEWRAP* = 26
-  SPI_GETMENUDROPALIGNMENT* = 27
-  SPI_SETMENUDROPALIGNMENT* = 28
-  SPI_SETDOUBLECLKWIDTH* = 29
-  SPI_SETDOUBLECLKHEIGHT* = 30
-  SPI_GETICONTITLELOGFONT* = 31
-  SPI_SETDOUBLECLICKTIME* = 32
-  SPI_SETMOUSEBUTTONSWAP* = 33
-  SPI_SETICONTITLELOGFONT* = 34
-  SPI_GETFASTTASKSWITCH* = 35
-  SPI_SETFASTTASKSWITCH* = 36
-  SPI_SETDRAGFULLWINDOWS* = 37
-  SPI_GETDRAGFULLWINDOWS* = 38
-  SPI_GETNONCLIENTMETRICS* = 41
-  SPI_SETNONCLIENTMETRICS* = 42
-  SPI_GETMINIMIZEDMETRICS* = 43
-  SPI_SETMINIMIZEDMETRICS* = 44
-  SPI_GETICONMETRICS* = 45
-  SPI_SETICONMETRICS* = 46
-  SPI_SETWORKAREA* = 47
-  SPI_GETWORKAREA* = 48
-  SPI_SETPENWINDOWS* = 49
-  SPI_GETFILTERKEYS* = 50
-  SPI_SETFILTERKEYS* = 51
-  SPI_GETTOGGLEKEYS* = 52
-  SPI_SETTOGGLEKEYS* = 53
-  SPI_GETMOUSEKEYS* = 54
-  SPI_SETMOUSEKEYS* = 55
-  SPI_GETSHOWSOUNDS* = 56
-  SPI_SETSHOWSOUNDS* = 57
-  SPI_GETSTICKYKEYS* = 58
-  SPI_SETSTICKYKEYS* = 59
-  SPI_GETACCESSTIMEOUT* = 60
-  SPI_SETACCESSTIMEOUT* = 61
-  SPI_GETSERIALKEYS* = 62
-  SPI_SETSERIALKEYS* = 63
-  SPI_GETSOUNDSENTRY* = 64
-  SPI_SETSOUNDSENTRY* = 65
-  SPI_GETHIGHCONTRAST* = 66
-  SPI_SETHIGHCONTRAST* = 67
-  SPI_GETKEYBOARDPREF* = 68
-  SPI_SETKEYBOARDPREF* = 69
-  SPI_GETSCREENREADER* = 70
-  SPI_SETSCREENREADER* = 71
-  SPI_GETANIMATION* = 72
-  SPI_SETANIMATION* = 73
-  SPI_GETFONTSMOOTHING* = 74
-  SPI_SETFONTSMOOTHING* = 75
-  SPI_SETDRAGWIDTH* = 76
-  SPI_SETDRAGHEIGHT* = 77
-  SPI_SETHANDHELD* = 78
-  SPI_GETLOWPOWERTIMEOUT* = 79
-  SPI_GETPOWEROFFTIMEOUT* = 80
-  SPI_SETLOWPOWERTIMEOUT* = 81
-  SPI_SETPOWEROFFTIMEOUT* = 82
-  SPI_GETLOWPOWERACTIVE* = 83
-  SPI_GETPOWEROFFACTIVE* = 84
-  SPI_SETLOWPOWERACTIVE* = 85
-  SPI_SETPOWEROFFACTIVE* = 86
-  SPI_SETCURSORS* = 87
-  SPI_SETICONS* = 88
-  SPI_GETDEFAULTINPUTLANG* = 89
-  SPI_SETDEFAULTINPUTLANG* = 90
-  SPI_SETLANGTOGGLE* = 91
-  SPI_GETWINDOWSEXTENSION* = 92
-  SPI_SETMOUSETRAILS* = 93
-  SPI_GETMOUSETRAILS* = 94
-  SPI_GETSNAPTODEFBUTTON* = 95
-  SPI_SETSNAPTODEFBUTTON* = 96
-  SPI_SCREENSAVERRUNNING* = 97
-  SPI_SETSCREENSAVERRUNNING* = 97
-  SPI_GETMOUSEHOVERWIDTH* = 98
-  SPI_SETMOUSEHOVERWIDTH* = 99
-  SPI_GETMOUSEHOVERHEIGHT* = 100
-  SPI_SETMOUSEHOVERHEIGHT* = 101
-  SPI_GETMOUSEHOVERTIME* = 102
-  SPI_SETMOUSEHOVERTIME* = 103
-  SPI_GETWHEELSCROLLLINES* = 104
-  SPI_SETWHEELSCROLLLINES* = 105
-  SPI_GETMENUSHOWDELAY* = 106
-  SPI_SETMENUSHOWDELAY* = 107
-  SPI_GETSHOWIMEUI* = 110
-  SPI_SETSHOWIMEUI* = 111     # Windows Me/2000 and higher
-  SPI_GETMOUSESPEED* = 112
-  SPI_SETMOUSESPEED* = 113
-  SPI_GETSCREENSAVERRUNNING* = 114
-  SPI_GETDESKWALLPAPER* = 115
-  SPI_GETACTIVEWINDOWTRACKING* = 4096
-  SPI_SETACTIVEWINDOWTRACKING* = 4097
-  SPI_GETMENUANIMATION* = 4098
-  SPI_SETMENUANIMATION* = 4099
-  SPI_GETCOMBOBOXANIMATION* = 4100
-  SPI_SETCOMBOBOXANIMATION* = 4101
-  SPI_GETLISTBOXSMOOTHSCROLLING* = 4102
-  SPI_SETLISTBOXSMOOTHSCROLLING* = 4103
-  SPI_GETGRADIENTCAPTIONS* = 4104
-  SPI_SETGRADIENTCAPTIONS* = 4105
-  SPI_GETKEYBOARDCUES* = 4106
-  SPI_SETKEYBOARDCUES* = 4107
-  SPI_GETMENUUNDERLINES* = 4106
-  SPI_SETMENUUNDERLINES* = 4107
-  SPI_GETACTIVEWNDTRKZORDER* = 4108
-  SPI_SETACTIVEWNDTRKZORDER* = 4109
-  SPI_GETHOTTRACKING* = 4110
-  SPI_SETHOTTRACKING* = 4111
-  SPI_GETMENUFADE* = 4114
-  SPI_SETMENUFADE* = 4115
-  SPI_GETSELECTIONFADE* = 4116
-  SPI_SETSELECTIONFADE* = 4117
-  SPI_GETTOOLTIPANIMATION* = 4118
-  SPI_SETTOOLTIPANIMATION* = 4119
-  SPI_GETTOOLTIPFADE* = 4120
-  SPI_SETTOOLTIPFADE* = 4121
-  SPI_GETCURSORSHADOW* = 4122
-  SPI_SETCURSORSHADOW* = 4123
-  SPI_GETUIEFFECTS* = 4158
-  SPI_SETUIEFFECTS* = 4159
-  SPI_GETFOREGROUNDLOCKTIMEOUT* = 8192
-  SPI_SETFOREGROUNDLOCKTIMEOUT* = 8193
-  SPI_GETACTIVEWNDTRKTIMEOUT* = 8194
-  SPI_SETACTIVEWNDTRKTIMEOUT* = 8195
-  SPI_GETFOREGROUNDFLASHCOUNT* = 8196
-  SPI_SETFOREGROUNDFLASHCOUNT* = 8197
-  SPI_GETCARETWIDTH* = 8198
-  SPI_SETCARETWIDTH* = 8199   # Windows XP and higher
-  SPI_GETMOUSESONAR* = 4124
-  SPI_SETMOUSESONAR* = 4125
-  SPI_GETMOUSECLICKLOCK* = 4126
-  SPI_SETMOUSECLICKLOCK* = 4127
-  SPI_GETMOUSEVANISH* = 4128
-  SPI_SETMOUSEVANISH* = 4129
-  SPI_GETFLATMENU* = 4130
-  SPI_SETFLATMENU* = 4131
-  SPI_GETDROPSHADOW* = 4132
-  SPI_SETDROPSHADOW* = 4133
-  SPI_GETBLOCKSENDINPUTRESETS* = 4134
-  SPI_SETBLOCKSENDINPUTRESETS* = 4135
-  SPI_GETMOUSECLICKLOCKTIME* = 8200
-  SPI_SETMOUSECLICKLOCKTIME* = 8201
-  SPI_GETFONTSMOOTHINGTYPE* = 8202
-  SPI_SETFONTSMOOTHINGTYPE* = 8203
-  SPI_GETFONTSMOOTHINGCONTRAST* = 8204
-  SPI_SETFONTSMOOTHINGCONTRAST* = 8205
-  SPI_GETFOCUSBORDERWIDTH* = 8206
-  SPI_SETFOCUSBORDERWIDTH* = 8207
-  SPI_GETFOCUSBORDERHEIGHT* = 8208
-  SPI_SETFOCUSBORDERHEIGHT* = 8209
-  SPI_GETFONTSMOOTHINGORIENTATION* = 8210
-  SPI_SETFONTSMOOTHINGORIENTATION* = 8211 # constants for SPI_GETFONTSMOOTHINGTYPE and SPI_SETFONTSMOOTHINGTYPE:
-  FE_FONTSMOOTHINGSTANDARD* = 1
-  FE_FONTSMOOTHINGCLEARTYPE* = 2
-  FE_FONTSMOOTHINGDOCKING* = 32768 # constants for SPI_GETFONTSMOOTHINGORIENTATION and SPI_SETFONTSMOOTHINGORIENTATION:
-  FE_FONTSMOOTHINGORIENTATIONBGR* = 0
-  FE_FONTSMOOTHINGORIENTATIONRGB* = 1 # Flags
-  SPIF_UPDATEINIFILE* = 1
-  SPIF_SENDWININICHANGE* = 2
-  SPIF_SENDCHANGE* = 2        # TrackPopupMenu, TrackPopMenuEx
-  TPM_CENTERALIGN* = 0x00000004
-  TPM_LEFTALIGN* = 0
-  TPM_RIGHTALIGN* = 0x00000008
-  TPM_LEFTBUTTON* = 0
-  TPM_RIGHTBUTTON* = 0x00000002
-  TPM_HORIZONTAL* = 0
-  TPM_VERTICAL* = 0x00000040  # TranslateCharsetInfo
-  TCI_SRCCHARSET* = 1
-  TCI_SRCCODEPAGE* = 2
-  TCI_SRCFONTSIG* = 3         # VerFindFile
-  VFFF_ISSHAREDFILE* = 1
-  VFF_CURNEDEST* = 1
-  VFF_FILEINUSE* = 2
-  VFF_BUFFTOOSMALL* = 4       # VerInstallFile
-  VIFF_FORCEINSTALL* = 1
-  VIFF_DONTDELETEOLD* = 2
-  VIF_TEMPFILE* = 0x00000001
-  VIF_MISMATCH* = 0x00000002
-  VIF_SRCOLD* = 0x00000004
-  VIF_DIFFLANG* = 0x00000008
-  VIF_DIFFCODEPG* = 0x00000010
-  VIF_DIFFTYPE* = 0x00000020
-  VIF_WRITEPROT* = 0x00000040
-  VIF_FILEINUSE* = 0x00000080
-  VIF_OUTOFSPACE* = 0x00000100
-  VIF_ACCESSVIOLATION* = 0x00000200
-  VIF_SHARINGVIOLATION* = 0x00000400
-  VIF_CANNOTCREATE* = 0x00000800
-  VIF_CANNOTDELETE* = 0x00001000
-  VIF_CANNOTDELETECUR* = 0x00004000
-  VIF_CANNOTRENAME* = 0x00002000
-  VIF_OUTOFMEMORY* = 0x00008000
-  VIF_CANNOTREADSRC* = 0x00010000
-  VIF_CANNOTREADDST* = 0x00020000
-  VIF_BUFFTOOSMALL* = 0x00040000 # WideCharToMultiByte
-  WC_COMPOSITECHECK* = 512
-  WC_DISCARDNS* = 16
-  WC_SEPCHARS* = 32
-  WC_DEFAULTCHAR* = 64        # WinHelp
-  HELP_COMMAND* = 0x00000102
-  HELP_CONTENTS* = 0x00000003
-  HELP_CONTEXT* = 0x00000001
-  HELP_CONTEXTPOPUP* = 0x00000008
-  HELP_FORCEFILE* = 0x00000009
-  HELP_HELPONHELP* = 0x00000004
-  HELP_INDEX* = 0x00000003
-  HELP_KEY* = 0x00000101
-  HELP_MULTIKEY* = 0x00000201
-  HELP_PARTIALKEY* = 0x00000105
-  HELP_QUIT* = 0x00000002
-  HELP_SETCONTENTS* = 0x00000005
-  HELP_SETINDEX* = 0x00000005
-  HELP_CONTEXTMENU* = 0x0000000A
-  HELP_FINDER* = 0x0000000B
-  HELP_WM_HELP* = 0x0000000C
-  HELP_TCARD* = 0x00008000
-  HELP_TCARD_DATA* = 0x00000010
-  HELP_TCARD_OTHER_CALLER* = 0x00000011 # WNetAddConnectino2
-  CONNECT_UPDATE_PROFILE* = 1 # WNetConnectionDialog, WNetDisconnectDialog, WNetOpenEnum
-  RESOURCETYPE_DISK* = 1
-  RESOURCETYPE_PRINT* = 2
-  RESOURCETYPE_ANY* = 0
-  RESOURCE_CONNECTED* = 1
-  RESOURCE_GLOBALNET* = 2
-  RESOURCE_REMEMBERED* = 3
-  RESOURCEUSAGE_CONNECTABLE* = 1
-  RESOURCEUSAGE_CONTAINER* = 2 # WNetGetResourceInformation, WNetGetResourceParent
-  WN_BAD_NETNAME* = 0x00000043
-  WN_EXTENDED_ERROR* = 0x000004B8
-  WN_MORE_DATA* = 0x000000EA
-  WN_NO_NETWORK* = 0x000004C6
-  WN_SUCCESS* = 0
-  WN_ACCESS_DENIED* = 0x00000005
-  WN_BAD_PROVIDER* = 0x000004B4
-  WN_NOT_AUTHENTICATED* = 0x000004DC # WNetGetUniversalName
-  UNIVERSAL_NAME_INFO_LEVEL* = 1
-  REMOTE_NAME_INFO_LEVEL* = 2 # GetExitCodeThread
-  STILL_ACTIVE* = 0x00000103  # COMMPROP structure
-  SP_SERIALCOMM* = 0x00000001
-  BAUD_075* = 0x00000001
-  BAUD_110* = 0x00000002
-  BAUD_134_5* = 0x00000004
-  BAUD_150* = 0x00000008
-  BAUD_300* = 0x00000010
-  BAUD_600* = 0x00000020
-  BAUD_1200* = 0x00000040
-  BAUD_1800* = 0x00000080
-  BAUD_2400* = 0x00000100
-  BAUD_4800* = 0x00000200
-  BAUD_7200* = 0x00000400
-  BAUD_9600* = 0x00000800
-  BAUD_14400* = 0x00001000
-  BAUD_19200* = 0x00002000
-  BAUD_38400* = 0x00004000
-  BAUD_56K* = 0x00008000
-  BAUD_57600* = 0x00040000
-  BAUD_115200* = 0x00020000
-  BAUD_128K* = 0x00010000
-  BAUD_USER* = 0x10000000
-  PST_FAX* = 0x00000021
-  PST_LAT* = 0x00000101
-  PST_MODEM* = 0x00000006
-  PST_NETWORK_BRIDGE* = 0x00000100
-  PST_PARALLELPORT* = 0x00000002
-  PST_RS232* = 0x00000001
-  PST_RS422* = 0x00000003
-  PST_RS423* = 0x00000004
-  PST_RS449* = 0x00000005
-  PST_SCANNER* = 0x00000022
-  PST_TCPIP_TELNET* = 0x00000102
-  PST_UNSPECIFIED* = 0
-  PST_X25* = 0x00000103
-  PCF_16BITMODE* = 0x00000200
-  PCF_DTRDSR* = 0x00000001
-  PCF_INTTIMEOUTS* = 0x00000080
-  PCF_PARITY_CHECK* = 0x00000008
-  PCF_RLSD* = 0x00000004
-  PCF_RTSCTS* = 0x00000002
-  PCF_SETXCHAR* = 0x00000020
-  PCF_SPECIALCHARS* = 0x00000100
-  PCF_TOTALTIMEOUTS* = 0x00000040
-  PCF_XONXOFF* = 0x00000010
-  SP_BAUD* = 0x00000002
-  SP_DATABITS* = 0x00000004
-  SP_HANDSHAKING* = 0x00000010
-  SP_PARITY* = 0x00000001
-  SP_PARITY_CHECK* = 0x00000020
-  SP_RLSD* = 0x00000040
-  SP_STOPBITS* = 0x00000008
-  DATABITS_5* = 1
-  DATABITS_6* = 2
-  DATABITS_7* = 4
-  DATABITS_8* = 8
-  DATABITS_16* = 16
-  DATABITS_16X* = 32
-  STOPBITS_10* = 1
-  STOPBITS_15* = 2
-  STOPBITS_20* = 4
-  PARITY_NONE* = 256
-  PARITY_ODD* = 512
-  PARITY_EVEN* = 1024
-  PARITY_MARK* = 2048
-  PARITY_SPACE* = 4096
-  COMMPROP_INITIALIZED* = 0xE73CF52E # DCB structure
-  CBR_110* = 110
-  CBR_300* = 300
-  CBR_600* = 600
-  CBR_1200* = 1200
-  CBR_2400* = 2400
-  CBR_4800* = 4800
-  CBR_9600* = 9600
-  CBR_14400* = 14400
-  CBR_19200* = 19200
-  CBR_38400* = 38400
-  CBR_56000* = 56000
-  CBR_57600* = 57600
-  CBR_115200* = 115200
-  CBR_128000* = 128000
-  CBR_256000* = 256000
-  DTR_CONTROL_DISABLE* = 0
-  DTR_CONTROL_ENABLE* = 1
-  DTR_CONTROL_HANDSHAKE* = 2
-  RTS_CONTROL_DISABLE* = 0
-  RTS_CONTROL_ENABLE* = 1
-  RTS_CONTROL_HANDSHAKE* = 2
-  RTS_CONTROL_TOGGLE* = 3
-  EVENPARITY* = 2
-  MARKPARITY* = 3
-  NOPARITY* = 0
-  ODDPARITY* = 1
-  SPACEPARITY* = 4
-  ONESTOPBIT* = 0
-  ONE5STOPBITS* = 1
-  TWOSTOPBITS* = 2            # Debugging events
-  CREATE_PROCESS_DEBUG_EVENT* = 3
-  CREATE_THREAD_DEBUG_EVENT* = 2
-  EXCEPTION_DEBUG_EVENT* = 1
-  EXIT_PROCESS_DEBUG_EVENT* = 5
-  EXIT_THREAD_DEBUG_EVENT* = 4
-  LOAD_DLL_DEBUG_EVENT* = 6
-  OUTPUT_DEBUG_STRING_EVENT* = 8
-  UNLOAD_DLL_DEBUG_EVENT* = 7
-  RIP_EVENT* = 9              # PROCESS_HEAP_ENTRY structure
-  PROCESS_HEAP_REGION* = 1
-  PROCESS_HEAP_UNCOMMITTED_RANGE* = 2
-  PROCESS_HEAP_ENTRY_BUSY* = 4
-  PROCESS_HEAP_ENTRY_MOVEABLE* = 16
-  PROCESS_HEAP_ENTRY_DDESHARE* = 32 # Win32s
-  HINSTANCE_ERROR* = 32       # WIN32_STREAM_ID structure
-  BACKUP_DATA* = 1
-  BACKUP_EA_DATA* = 2
-  BACKUP_SECURITY_DATA* = 3
-  BACKUP_ALTERNATE_DATA* = 4
-  BACKUP_LINK* = 5
-  STREAM_MODIFIED_WHEN_READ* = 1
-  STREAM_CONTAINS_SECURITY* = 2 # STARTUPINFO structure
-  STARTF_USESHOWWINDOW* = 1
-  STARTF_USEPOSITION* = 4
-  STARTF_USESIZE* = 2
-  STARTF_USECOUNTCHARS* = 8
-  STARTF_USEFILLATTRIBUTE* = 16
-  STARTF_RUNFULLSCREEN* = 32
-  STARTF_FORCEONFEEDBACK* = 64
-  STARTF_FORCEOFFFEEDBACK* = 128
-  STARTF_USESTDHANDLES* = 256
-  STARTF_USEHOTKEY* = 512     # OSVERSIONINFO structure
-  VER_PLATFORM_WIN32s* = 0
-  VER_PLATFORM_WIN32_WINDOWS* = 1
-  VER_PLATFORM_WIN32_NT* = 2  # More versions
-  VER_SERVER_NT* = 0x80000000
-  VER_WORKSTATION_NT* = 0x40000000
-  VER_SUITE_SMALLBUSINESS* = 0x00000001
-  VER_SUITE_ENTERPRISE* = 0x00000002
-  VER_SUITE_BACKOFFICE* = 0x00000004
-  VER_SUITE_COMMUNICATIONS* = 0x00000008
-  VER_SUITE_TERMINAL* = 0x00000010
-  VER_SUITE_SMALLBUSINESS_RESTRICTED* = 0x00000020
-  VER_SUITE_EMBEDDEDNT* = 0x00000040
-  VER_SUITE_DATACENTER* = 0x00000080
-  VER_SUITE_SINGLEUSERTS* = 0x00000100
-  VER_SUITE_PERSONAL* = 0x00000200
-  VER_SUITE_BLADE* = 0x00000400
-  VER_SUITE_EMBEDDED_RESTRICTED* = 0x00000800 # PROPSHEETPAGE structure
-  MAXPROPPAGES* = 100
-  PSP_DEFAULT* = 0
-  PSP_DLGINDIRECT* = 1
-  PSP_HASHELP* = 32
-  PSP_USECALLBACK* = 128
-  PSP_USEHICON* = 2
-  PSP_USEICONID* = 4
-  PSP_USEREFPARENT* = 64
-  PSP_USETITLE* = 8
-  PSP_RTLREADING* = 16        # PROPSHEETHEADER structure
-  PSH_DEFAULT* = 0
-  PSH_HASHELP* = 512
-  PSH_MODELESS* = 1024
-  PSH_NOAPPLYNOW* = 128
-  PSH_PROPSHEETPAGE* = 8
-  PSH_PROPTITLE* = 1
-  PSH_USECALLBACK* = 256
-  PSH_USEHICON* = 2
-  PSH_USEICONID* = 4
-  PSH_USEPSTARTPAGE* = 64
-  PSH_WIZARD* = 32
-  PSH_RTLREADING* = 2048
-  PSCB_INITIALIZED* = 1
-  PSCB_PRECREATE* = 2         # PSN_APPLY message
-  PSNRET_NOERROR* = 0
-  PSNRET_INVALID_NOCHANGEPAGE* = 2 # Property Sheet
-  PSBTN_APPLYNOW* = 4
-  PSBTN_BACK* = 0
-  PSBTN_CANCEL* = 5
-  PSBTN_FINISH* = 2
-  PSBTN_HELP* = 6
-  PSBTN_NEXT* = 1
-  PSBTN_OK* = 3
-  PSWIZB_BACK* = 1
-  PSWIZB_NEXT* = 2
-  PSWIZB_FINISH* = 4
-  PSWIZB_DISABLEDFINISH* = 8
-  ID_PSREBOOTSYSTEM* = 3
-  ID_PSRESTARTWINDOWS* = 2
-  WIZ_BODYCX* = 184
-  WIZ_BODYX* = 92
-  WIZ_CXBMP* = 80
-  WIZ_CXDLG* = 276
-  WIZ_CYDLG* = 140            # VX_FIXEDFILEINFO structure
-                              # was #define dname def_expr
-
-proc VS_FILE_INFO*(): LPTSTR
-  # return type might be wrong
-const
-  VS_VERSION_INFO* = 1
-  VS_FF_DEBUG* = 0x00000001
-  VS_FF_INFOINFERRED* = 0x00000010
-  VS_FF_PATCHED* = 0x00000004
-  VS_FF_PRERELEASE* = 0x00000002
-  VS_FF_PRIVATEBUILD* = 0x00000008
-  VS_FF_SPECIALBUILD* = 0x00000020
-  VOS_UNKNOWN* = 0
-  VOS_DOS* = 0x00010000
-  VOS_OS216* = 0x00020000
-  VOS_OS232* = 0x00030000
-  VOS_NT* = 0x00040000
-  VOS_DOS_WINDOWS16* = 0x00010001
-  VOS_DOS_WINDOWS32* = 0x00010004
-  VOS_OS216_PM16* = 0x00020002
-  VOS_OS232_PM32* = 0x00030003
-  VOS_NT_WINDOWS32* = 0x00040004
-  VFT_UNKNOWN* = 0
-  VFT_APP* = 0x00000001
-  VFT_DLL* = 0x00000002
-  VFT_DRV* = 0x00000003
-  VFT_FONT* = 0x00000004
-  VFT_VXD* = 0x00000005
-  VFT_STATIC_LIB* = 0x00000007
-  VFT2_UNKNOWN* = 0
-  VFT2_DRV_PRINTER* = 0x00000001
-  VFT2_DRV_KEYBOARD* = 0x00000002
-  VFT2_DRV_LANGUAGE* = 0x00000003
-  VFT2_DRV_DISPLAY* = 0x00000004
-  VFT2_DRV_MOUSE* = 0x00000005
-  VFT2_DRV_NETWORK* = 0x00000006
-  VFT2_DRV_SYSTEM* = 0x00000007
-  VFT2_DRV_INSTALLABLE* = 0x00000008
-  VFT2_DRV_SOUND* = 0x00000009
-  VFT2_FONT_RASTER* = 0x00000001
-  VFT2_FONT_VECTOR* = 0x00000002
-  VFT2_FONT_TRUETYPE* = 0x00000003 # PANOSE structure
-  PAN_ANY* = 0
-  PAN_NO_FIT* = 1
-  PAN_FAMILY_TEXT_DISPLAY* = 2
-  PAN_FAMILY_SCRIPT* = 3
-  PAN_FAMILY_DECORATIVE* = 4
-  PAN_FAMILY_PICTORIAL* = 5
-  PAN_SERIF_COVE* = 2
-  PAN_SERIF_OBTUSE_COVE* = 3
-  PAN_SERIF_SQUARE_COVE* = 4
-  PAN_SERIF_OBTUSE_SQUARE_COVE* = 5
-  PAN_SERIF_SQUARE* = 6
-  PAN_SERIF_THIN* = 7
-  PAN_SERIF_BONE* = 8
-  PAN_SERIF_EXAGGERATED* = 9
-  PAN_SERIF_TRIANGLE* = 10
-  PAN_SERIF_NORMAL_SANS* = 11
-  PAN_SERIF_OBTUSE_SANS* = 12
-  PAN_SERIF_PERP_SANS* = 13
-  PAN_SERIF_FLARED* = 14
-  PAN_SERIF_ROUNDED* = 15
-  PAN_WEIGHT_VERY_LIGHT* = 2
-  PAN_WEIGHT_LIGHT* = 3
-  PAN_WEIGHT_THIN* = 4
-  PAN_WEIGHT_BOOK* = 5
-  PAN_WEIGHT_MEDIUM* = 6
-  PAN_WEIGHT_DEMI* = 7
-  PAN_WEIGHT_BOLD* = 8
-  PAN_WEIGHT_HEAVY* = 9
-  PAN_WEIGHT_BLACK* = 10
-  PAN_WEIGHT_NORD* = 11
-  PAN_PROP_OLD_STYLE* = 2
-  PAN_PROP_MODERN* = 3
-  PAN_PROP_EVEN_WIDTH* = 4
-  PAN_PROP_EXPANDED* = 5
-  PAN_PROP_CONDENSED* = 6
-  PAN_PROP_VERY_EXPANDED* = 7
-  PAN_PROP_VERY_CONDENSED* = 8
-  PAN_PROP_MONOSPACED* = 9
-  PAN_CONTRAST_NONE* = 2
-  PAN_CONTRAST_VERY_LOW* = 3
-  PAN_CONTRAST_LOW* = 4
-  PAN_CONTRAST_MEDIUM_LOW* = 5
-  PAN_CONTRAST_MEDIUM* = 6
-  PAN_CONTRAST_MEDIUM_HIGH* = 7
-  PAN_CONTRAST_HIGH* = 8
-  PAN_CONTRAST_VERY_HIGH* = 9
-  PAN_STROKE_GRADUAL_DIAG* = 2
-  PAN_STROKE_GRADUAL_TRAN* = 3
-  PAN_STROKE_GRADUAL_VERT* = 4
-  PAN_STROKE_GRADUAL_HORZ* = 5
-  PAN_STROKE_RAPID_VERT* = 6
-  PAN_STROKE_RAPID_HORZ* = 7
-  PAN_STROKE_INSTANT_VERT* = 8
-  PAN_STRAIGHT_ARMS_HORZ* = 2
-  PAN_STRAIGHT_ARMS_WEDGE* = 3
-  PAN_STRAIGHT_ARMS_VERT* = 4
-  PAN_STRAIGHT_ARMS_SINGLE_SERIF* = 5
-  PAN_STRAIGHT_ARMS_DOUBLE_SERIF* = 6
-  PAN_BENT_ARMS_HORZ* = 7
-  PAN_BENT_ARMS_VERT* = 9
-  PAN_BENT_ARMS_WEDGE* = 8
-  PAN_BENT_ARMS_SINGLE_SERIF* = 10
-  PAN_BENT_ARMS_DOUBLE_SERIF* = 11
-  PAN_LETT_NORMAL_CONTACT* = 2
-  PAN_LETT_NORMAL_WEIGHTED* = 3
-  PAN_LETT_NORMAL_BOXED* = 4
-  PAN_LETT_NORMAL_FLATTENED* = 5
-  PAN_LETT_NORMAL_ROUNDED* = 6
-  PAN_LETT_NORMAL_OFF_CENTER* = 7
-  PAN_LETT_NORMAL_SQUARE* = 8
-  PAN_LETT_OBLIQUE_CONTACT* = 9
-  PAN_LETT_OBLIQUE_WEIGHTED* = 10
-  PAN_LETT_OBLIQUE_BOXED* = 11
-  PAN_LETT_OBLIQUE_FLATTENED* = 12
-  PAN_LETT_OBLIQUE_ROUNDED* = 13
-  PAN_LETT_OBLIQUE_OFF_CENTER* = 14
-  PAN_LETT_OBLIQUE_SQUARE* = 15
-  PAN_MIDLINE_STANDARD_TRIMMED* = 2
-  PAN_MIDLINE_STANDARD_POINTED* = 3
-  PAN_MIDLINE_STANDARD_SERIFED* = 4
-  PAN_MIDLINE_HIGH_TRIMMED* = 5
-  PAN_MIDLINE_HIGH_POINTED* = 6
-  PAN_MIDLINE_HIGH_SERIFED* = 7
-  PAN_MIDLINE_CONSTANT_TRIMMED* = 8
-  PAN_MIDLINE_CONSTANT_POINTED* = 9
-  PAN_MIDLINE_CONSTANT_SERIFED* = 10
-  PAN_MIDLINE_LOW_TRIMMED* = 11
-  PAN_MIDLINE_LOW_POINTED* = 12
-  PAN_MIDLINE_LOW_SERIFED* = 13
-  PAN_XHEIGHT_CONSTANT_SMALL* = 2
-  PAN_XHEIGHT_CONSTANT_STD* = 3
-  PAN_XHEIGHT_CONSTANT_LARGE* = 4
-  PAN_XHEIGHT_DUCKING_SMALL* = 5
-  PAN_XHEIGHT_DUCKING_STD* = 6
-  PAN_XHEIGHT_DUCKING_LARGE* = 7 # PALETTENTRY structure
-  PC_EXPLICIT* = 2
-  PC_NOCOLLAPSE* = 4
-  PC_RESERVED* = 1            # LOGBRUSH structure
-  BS_DIBPATTERN* = 5
-  BS_DIBPATTERN8X8* = 8
-  BS_DIBPATTERNPT* = 6
-  BS_HATCHED* = 2
-  BS_HOLLOW* = 1
-  BS_NULL* = 1
-  BS_PATTERN* = 3
-  BS_PATTERN8X8* = 7
-  BS_SOLID* = 0               # DEVMODE structure
-  DM_ORIENTATION* = 0x00000001
-  DM_PAPERSIZE* = 0x00000002
-  DM_PAPERLENGTH* = 0x00000004
-  DM_PAPERWIDTH* = 0x00000008
-  DM_SCALE* = 0x00000010
-  DM_COPIES* = 0x00000100
-  DM_DEFAULTSOURCE* = 0x00000200
-  DM_PRINTQUALITY* = 0x00000400
-  DM_COLOR* = 0x00000800
-  DM_DUPLEX* = 0x00001000
-  DM_YRESOLUTION* = 0x00002000
-  DM_TTOPTION* = 0x00004000
-  DM_COLLATE* = 0x00008000
-  DM_FORMNAME* = 0x00010000
-  DM_LOGPIXELS* = 0x00020000  #DM_BITSPERPEL = $40000;
-                              #     DM_PELSWIDTH = $80000;
-                              #     DM_PELSHEIGHT = $100000;
-                              #     DM_DISPLAYFLAGS = $200000;
-                              #     DM_DISPLAYFREQUENCY = $400000;already above
-  DM_ICMMETHOD* = 0x00800000
-  DM_ICMINTENT* = 0x01000000
-  DM_MEDIATYPE* = 0x02000000
-  DM_DITHERTYPE* = 0x04000000
-  DMORIENT_LANDSCAPE* = 2
-  DMORIENT_PORTRAIT* = 1
-  DMPAPER_LETTER* = 1
-  DMPAPER_LEGAL* = 5
-  DMPAPER_A4* = 9
-  DMPAPER_CSHEET* = 24
-  DMPAPER_DSHEET* = 25
-  DMPAPER_ESHEET* = 26
-  DMPAPER_LETTERSMALL* = 2
-  DMPAPER_TABLOID* = 3
-  DMPAPER_LEDGER* = 4
-  DMPAPER_STATEMENT* = 6
-  DMPAPER_EXECUTIVE* = 7
-  DMPAPER_A3* = 8
-  DMPAPER_A4SMALL* = 10
-  DMPAPER_A5* = 11
-  DMPAPER_B4* = 12
-  DMPAPER_B5* = 13
-  DMPAPER_FOLIO* = 14
-  DMPAPER_QUARTO* = 15
-  DMPAPER_10X14* = 16
-  DMPAPER_11X17* = 17
-  DMPAPER_NOTE* = 18
-  DMPAPER_ENV_9* = 19
-  DMPAPER_ENV_10* = 20
-  DMPAPER_ENV_11* = 21
-  DMPAPER_ENV_12* = 22
-  DMPAPER_ENV_14* = 23
-  DMPAPER_ENV_DL* = 27
-  DMPAPER_ENV_C5* = 28
-  DMPAPER_ENV_C3* = 29
-  DMPAPER_ENV_C4* = 30
-  DMPAPER_ENV_C6* = 31
-  DMPAPER_ENV_C65* = 32
-  DMPAPER_ENV_B4* = 33
-  DMPAPER_ENV_B5* = 34
-  DMPAPER_ENV_B6* = 35
-  DMPAPER_ENV_ITALY* = 36
-  DMPAPER_ENV_MONARCH* = 37
-  DMPAPER_ENV_PERSONAL* = 38
-  DMPAPER_FANFOLD_US* = 39
-  DMPAPER_FANFOLD_STD_GERMAN* = 40
-  DMPAPER_FANFOLD_LGL_GERMAN* = 41
-  DMRES_HIGH* = - (4)
-  DMRES_MEDIUM* = - (3)
-  DMRES_LOW* = - (2)
-  DMRES_DRAFT* = - (1)
-  DMCOLOR_COLOR* = 2
-  DMCOLOR_MONOCHROME* = 1
-  DMDUP_SIMPLEX* = 1
-  DMDUP_HORIZONTAL* = 3
-  DMDUP_VERTICAL* = 2
-  DMTT_BITMAP* = 1
-  DMTT_DOWNLOAD* = 2
-  DMTT_SUBDEV* = 3
-  DMCOLLATE_TRUE* = 1
-  DMCOLLATE_FALSE* = 0
-  DM_GRAYSCALE* = 1
-  DM_INTERLACED* = 2
-  DMICMMETHOD_NONE* = 1
-  DMICMMETHOD_SYSTEM* = 2
-  DMICMMETHOD_DRIVER* = 3
-  DMICMMETHOD_DEVICE* = 4
-  DMICMMETHOD_USER* = 256
-  DMICM_SATURATE* = 1
-  DMICM_CONTRAST* = 2
-  DMICM_COLORMETRIC* = 3
-  DMICM_USER* = 256
-  DMMEDIA_STANDARD* = 1
-  DMMEDIA_GLOSSY* = 3
-  DMMEDIA_TRANSPARENCY* = 2
-  DMMEDIA_USER* = 256
-  DMDITHER_NONE* = 1
-  DMDITHER_COARSE* = 2
-  DMDITHER_FINE* = 3
-  DMDITHER_LINEART* = 4
-  DMDITHER_GRAYSCALE* = 10
-  DMDITHER_USER* = 256        # RGNDATAHEADER structure
-  RDH_RECTANGLES* = 1         # TTPOLYGONHEADER structure
-  TT_POLYGON_TYPE* = 24       # TTPOLYCURVE structure
-  TT_PRIM_LINE* = 1
-  TT_PRIM_QSPLINE* = 2        # GCP_RESULTS structure
-  GCPCLASS_ARABIC* = 2
-  GCPCLASS_HEBREW* = 2
-  GCPCLASS_LATIN* = 1
-  GCPCLASS_LATINNUMBER* = 5
-  GCPCLASS_LOCALNUMBER* = 4
-  GCPCLASS_LATINNUMERICSEPARATOR* = 7
-  GCPCLASS_LATINNUMERICTERMINATOR* = 6
-  GCPCLASS_NEUTRAL* = 3
-  GCPCLASS_NUMERICSEPARATOR* = 8
-  GCPCLASS_PREBOUNDLTR* = 128
-  GCPCLASS_PREBOUNDRTL* = 64
-  GCPCLASS_POSTBOUNDLTR* = 32
-  GCPCLASS_POSTBOUNDRTL* = 16
-  GCPGLYPH_LINKBEFORE* = 32768
-  GCPGLYPH_LINKAFTER* = 16384 # RASTERIZER_STATUS structure
-  TT_AVAILABLE* = 1
-  TT_ENABLED* = 2             # COLORADJUSTMENT structure
-  CA_NEGATIVE* = 1
-  CA_LOG_FILTER* = 2
-  ILLUMINANT_DEVICE_DEFAULT* = 0
-  ILLUMINANT_A* = 1
-  ILLUMINANT_B* = 2
-  ILLUMINANT_C* = 3
-  ILLUMINANT_D50* = 4
-  ILLUMINANT_D55* = 5
-  ILLUMINANT_D65* = 6
-  ILLUMINANT_D75* = 7
-  ILLUMINANT_F2* = 8
-  ILLUMINANT_TUNGSTEN* = 1
-  ILLUMINANT_DAYLIGHT* = 3
-  ILLUMINANT_FLUORESCENT* = 8
-  ILLUMINANT_NTSC* = 3        # DOCINFO structure
-  DI_APPBANDING* = 1          # EMRMETAHEADER structure
-  EMR_HEADER* = 1
-  ENHMETA_SIGNATURE* = 1179469088 # RTF event masks
-  ENM_CHANGE* = 1
-  ENM_CORRECTTEXT* = 4194304
-  ENM_DROPFILES* = 1048576
-  ENM_KEYEVENTS* = 65536
-  ENM_MOUSEEVENTS* = 131072
-  ENM_PROTECTED* = 2097152
-  ENM_REQUESTRESIZE* = 262144
-  ENM_SCROLL* = 4
-  ENM_SELCHANGE* = 524288
-  ENM_UPDATE* = 2
-  ENM_NONE* = 0               # RTF styles
-  ES_DISABLENOSCROLL* = 8192
-  ES_EX_NOCALLOLEINIT* = 16777216
-  ES_NOIME* = 524288
-  ES_SAVESEL* = 32768
-  ES_SELFIME* = 262144
-  ES_SUNKEN* = 16384
-  ES_VERTICAL* = 4194304
-  ES_SELECTIONBAR* = 16777216 # EM_SETOPTIONS message
-  ECOOP_SET* = 1
-  ECOOP_OR* = 2
-  ECOOP_AND* = 3
-  ECOOP_XOR* = 4
-  ECO_AUTOWORDSELECTION* = 1
-  ECO_AUTOVSCROLL* = 64
-  ECO_AUTOHSCROLL* = 128
-  ECO_NOHIDESEL* = 256
-  ECO_READONLY* = 2048
-  ECO_WANTRETURN* = 4096
-  ECO_SAVESEL* = 32768
-  ECO_SELECTIONBAR* = 16777216
-  ECO_VERTICAL* = 4194304     # EM_SETCHARFORMAT message
-  SCF_WORD* = 2
-  SCF_SELECTION* = 1          # EM_STREAMOUT message
-  SF_TEXT* = 1
-  SF_RTF* = 2
-  SF_RTFNOOBJS* = 3
-  SF_TEXTIZED* = 4
-  SFF_SELECTION* = 32768
-  SFF_PLAINRTF* = 16384       # EM_FINDWORDBREAK message
-  WB_CLASSIFY* = 3            #WB_ISDELIMITER = 2;
-                              #     WB_LEFT = 0; already above
-  WB_LEFTBREAK* = 6
-  WB_PREVBREAK* = 6
-  WB_MOVEWORDLEFT* = 4
-  WB_MOVEWORDPREV* = 4
-  WB_MOVEWORDRIGHT* = 5
-  WB_MOVEWORDNEXT* = 5        #WB_RIGHT = 1;already above
-  WB_RIGHTBREAK* = 7
-  WB_NEXTBREAK* = 7           # EM_GETPUNCTUATION message
-  PC_LEADING* = 2
-  PC_FOLLOWING* = 1
-  PC_DELIMITER* = 4
-  PC_OVERFLOW* = 3            # EM_SETWORDWRAPMODE message
-  WBF_WORDWRAP* = 16
-  WBF_WORDBREAK* = 32
-  WBF_OVERFLOW* = 64
-  WBF_LEVEL1* = 128
-  WBF_LEVEL2* = 256
-  WBF_CUSTOM* = 512
-  WBF_BREAKAFTER* = 64
-  WBF_BREAKLINE* = 32
-  WBF_ISWHITE* = 16           # CHARFORMAT structure
-  CFM_BOLD* = 1
-  CFM_COLOR* = 1073741824
-  CFM_FACE* = 536870912
-  CFM_ITALIC* = 2
-  CFM_OFFSET* = 268435456
-  CFM_PROTECTED* = 16
-  CFM_SIZE* = 0x80000000
-  CFM_STRIKEOUT* = 8
-  CFM_UNDERLINE* = 4
-  CFE_AUTOCOLOR* = 1073741824
-  CFE_BOLD* = 1
-  CFE_ITALIC* = 2
-  CFE_STRIKEOUT* = 8
-  CFE_UNDERLINE* = 4
-  CFE_PROTECTED* = 16         # PARAFORMAT structure
-  PFM_ALIGNMENT* = 8
-  PFM_NUMBERING* = 32
-  PFM_OFFSET* = 4
-  PFM_OFFSETINDENT* = 0x80000000
-  PFM_RIGHTINDENT* = 2
-  PFM_STARTINDENT* = 1
-  PFM_TABSTOPS* = 16
-  PFN_BULLET* = 1
-  PFA_LEFT* = 1
-  PFA_RIGHT* = 2
-  PFA_CENTER* = 3             # SELCHANGE structure
-  SEL_EMPTY* = 0
-  SEL_TEXT* = 1
-  SEL_OBJECT* = 2
-  SEL_MULTICHAR* = 4
-  SEL_MULTIOBJECT* = 8        # RTF clipboard formats
-  CF_RTF* = "Rich Text Format"
-  CF_RETEXTOBJ* = "RichEdit Text and Objects" # DRAWITEMSTRUCT structure
-  ODT_BUTTON* = 4
-  ODT_COMBOBOX* = 3
-  ODT_LISTBOX* = 2
-  ODT_LISTVIEW* = 102
-  ODT_MENU* = 1
-  ODT_STATIC* = 5
-  ODT_TAB* = 101
-  ODT_HEADER* = 100
-  ODA_DRAWENTIRE* = 1
-  ODA_FOCUS* = 4
-  ODA_SELECT* = 2
-  ODS_SELECTED* = 1
-  ODS_GRAYED* = 2
-  ODS_DISABLED* = 4
-  ODS_CHECKED* = 8
-  ODS_FOCUS* = 16
-  ODS_DEFAULT* = 32
-  ODS_HOTLIGHT* = 0x00000040
-  ODS_INACTIVE* = 0x00000080
-  ODS_NOACCEL* = 0x00000100
-  ODS_NOFOCUSRECT* = 0x00000200
-  ODS_COMBOBOXEDIT* = 0x00001000 # Common control window classes
-  ANIMATE_CLASSW* = "SysAnimate32"
-  HOTKEY_CLASSW* = "msctls_hotkey32"
-  PROGRESS_CLASSW* = "msctls_progress32"
-  STATUSCLASSNAMEW* = "msctls_statusbar32"
-  TOOLBARCLASSNAMEW* = "ToolbarWindow32"
-  TOOLTIPS_CLASSW* = "tooltips_class32"
-  TRACKBAR_CLASSW* = "msctls_trackbar32"
-  UPDOWN_CLASSW* = "msctls_updown32"
-  WC_HEADERW* = "SysHeader32"
-  WC_LISTVIEWW* = "SysListView32"
-  WC_TABCONTROLW* = "SysTabControl32"
-  WC_TREEVIEWW* = "SysTreeView32" # Common control styles
-  CCS_ADJUSTABLE* = 0x00000020
-  CCS_BOTTOM* = 0x00000003
-  CCS_NODIVIDER* = 0x00000040
-  CCS_NOMOVEY* = 0x00000002
-  CCS_NOPARENTALIGN* = 0x00000008
-  CCS_NORESIZE* = 0x00000004
-  CCS_TOP* = 0x00000001
-  ANIMATE_CLASSA* = "SysAnimate32"
-  HOTKEY_CLASSA* = "msctls_hotkey32"
-  PROGRESS_CLASSA* = "msctls_progress32"
-  STATUSCLASSNAMEA* = "msctls_statusbar32"
-  TOOLBARCLASSNAMEA* = "ToolbarWindow32"
-  TOOLTIPS_CLASSA* = "tooltips_class32"
-  TRACKBAR_CLASSA* = "msctls_trackbar32"
-  UPDOWN_CLASSA* = "msctls_updown32"
-  WC_HEADERA* = "SysHeader32"
-  WC_LISTVIEWA* = "SysListView32"
-  WC_TABCONTROLA* = "SysTabControl32"
-  WC_TREEVIEWA* = "SysTreeView32"
-
-when defined(winUnicode):
-  const
-    ANIMATE_CLASS* = ANIMATE_CLASSW
-    HOTKEY_CLASS* = HOTKEY_CLASSW
-    PROGRESS_CLASS* = PROGRESS_CLASSW
-    STATUSCLASSNAME* = STATUSCLASSNAMEW
-    TOOLBARCLASSNAME* = TOOLBARCLASSNAMEW
-    TOOLTIPS_CLASS* = TOOLTIPS_CLASSW
-    TRACKBAR_CLASS* = TRACKBAR_CLASSW
-    UPDOWN_CLASS* = UPDOWN_CLASSW
-    WC_HEADER* = WC_HEADERW
-    WC_LISTVIEW* = WC_LISTVIEWW
-    WC_TABCONTROL* = WC_TABCONTROLW
-    WC_TREEVIEW* = WC_TREEVIEWW
-else:
-  const
-    ANIMATE_CLASS* = ANIMATE_CLASSA
-    HOTKEY_CLASS* = HOTKEY_CLASSA
-    PROGRESS_CLASS* = PROGRESS_CLASSA
-    STATUSCLASSNAME* = STATUSCLASSNAMEA
-    TOOLBARCLASSNAME* = TOOLBARCLASSNAMEA
-    TOOLTIPS_CLASS* = TOOLTIPS_CLASSA
-    TRACKBAR_CLASS* = TRACKBAR_CLASSA
-    UPDOWN_CLASS* = UPDOWN_CLASSA
-    WC_HEADER* = WC_HEADERA
-    WC_LISTVIEW* = WC_LISTVIEWA
-    WC_TABCONTROL* = WC_TABCONTROLA
-    WC_TREEVIEW* = WC_TREEVIEWA
-# winUnicode
-# Header control styles
-
-const
-  HDS_BUTTONS* = 2
-  HDS_HIDDEN* = 8
-  HDS_HORZ* = 0               # HD_ITEM structure
-  HDI_BITMAP* = 16
-  HDI_FORMAT* = 4
-  HDI_HEIGHT* = 1
-  HDI_LPARAM* = 8
-  HDI_TEXT* = 2
-  HDI_WIDTH* = 1
-  HDF_CENTER* = 2
-  HDF_LEFT* = 0
-  HDF_RIGHT* = 1
-  HDF_RTLREADING* = 4
-  HDF_BITMAP* = 8192
-  HDF_OWNERDRAW* = 32768
-  HDF_STRING* = 16384
-  HDF_JUSTIFYMASK* = 3        # HD_HITTESTINFO structure
-  HHT_NOWHERE* = 1
-  HHT_ONDIVIDER* = 4
-  HHT_ONDIVOPEN* = 8
-  HHT_ONHEADER* = 2
-  HHT_TOLEFT* = 2048
-  HHT_TORIGHT* = 1024         # TBADDBITMAP structure
-                              # was #define dname def_expr
-
-proc HINST_COMMCTRL*(): HINST
-const
-  IDB_STD_LARGE_COLOR* = 1
-  IDB_STD_SMALL_COLOR* = 0
-  IDB_VIEW_LARGE_COLOR* = 5
-  IDB_VIEW_SMALL_COLOR* = 4
-  STD_COPY* = 1
-  STD_CUT* = 0
-  STD_DELETE* = 5
-  STD_FILENEW* = 6
-  STD_FILEOPEN* = 7
-  STD_FILESAVE* = 8
-  STD_FIND* = 12
-  STD_HELP* = 11
-  STD_PASTE* = 2
-  STD_PRINT* = 14
-  STD_PRINTPRE* = 9
-  STD_PROPERTIES* = 10
-  STD_REDOW* = 4
-  STD_REPLACE* = 13
-  STD_UNDO* = 3
-  VIEW_LARGEICONS* = 0
-  VIEW_SMALLICONS* = 1
-  VIEW_LIST* = 2
-  VIEW_DETAILS* = 3
-  VIEW_SORTNAME* = 4
-  VIEW_SORTSIZE* = 5
-  VIEW_SORTDATE* = 6
-  VIEW_SORTTYPE* = 7          # Toolbar styles
-  TBSTYLE_ALTDRAG* = 1024
-  TBSTYLE_TOOLTIPS* = 256
-  TBSTYLE_WRAPABLE* = 512
-  TBSTYLE_BUTTON* = 0
-  TBSTYLE_CHECK* = 2
-  TBSTYLE_CHECKGROUP* = 6
-  TBSTYLE_GROUP* = 4
-  TBSTYLE_SEP* = 1            # Toolbar states
-  TBSTATE_CHECKED* = 1
-  TBSTATE_ENABLED* = 4
-  TBSTATE_HIDDEN* = 8
-  TBSTATE_INDETERMINATE* = 16
-  TBSTATE_PRESSED* = 2
-  TBSTATE_WRAP* = 32          # Tooltip styles
-  TTS_ALWAYSTIP* = 1
-  TTS_NOPREFIX* = 2           # TOOLINFO structure
-  TTF_IDISHWND* = 1
-  TTF_CENTERTIP* = 2
-  TTF_RTLREADING* = 4
-  TTF_SUBCLASS* = 16          # TTM_SETDELAYTIME message
-  TTDT_AUTOMATIC* = 0
-  TTDT_AUTOPOP* = 2
-  TTDT_INITIAL* = 3
-  TTDT_RESHOW* = 1            # Status window
-  SBARS_SIZEGRIP* = 256       #SBARS_SIZEGRIP = 256;already above
-                              # DL_DRAGGING message
-  DL_MOVECURSOR* = 3
-  DL_COPYCURSOR* = 2
-  DL_STOPCURSOR* = 1          # Up-down control styles
-  UDS_ALIGNLEFT* = 8
-  UDS_ALIGNRIGHT* = 4
-  UDS_ARROWKEYS* = 32
-  UDS_AUTOBUDDY* = 16
-  UDS_HORZ* = 64
-  UDS_NOTHOUSANDS* = 128
-  UDS_SETBUDDYINT* = 2
-  UDS_WRAP* = 1               # UDM_SETRANGE message
-  UD_MAXVAL* = 32767
-  UD_MINVAL* = - (32767)      # HKM_GETHOTKEY message
-  HOTKEYF_ALT* = 4
-  HOTKEYF_CONTROL* = 2
-  HOTKEYF_EXT* = 8
-  HOTKEYF_SHIFT* = 1          # HKM_SETRULES message
-  HKCOMB_A* = 8
-  HKCOMB_C* = 4
-  HKCOMB_CA* = 64
-  HKCOMB_NONE* = 1
-  HKCOMB_S* = 2
-  HKCOMB_SA* = 32
-  HKCOMB_SC* = 16
-  HKCOMB_SCA* = 128           # Trackbar styles
-  TBS_HORZ* = 0
-  TBS_VERT* = 2
-  TBS_AUTOTICKS* = 1
-  TBS_NOTICKS* = 16
-  TBS_TOP* = 4
-  TBS_BOTTOM* = 0
-  TBS_LEFT* = 4
-  TBS_RIGHT* = 0
-  TBS_BOTH* = 8
-  TBS_ENABLESELRANGE* = 32
-  TBS_FIXEDLENGTH* = 64
-  TBS_NOTHUMB* = 128
-  TB_BOTTOM* = 7
-  TB_ENDTRACK* = 8
-  TB_LINEDOWN* = 1
-  TB_LINEUP* = 0
-  TB_PAGEDOWN* = 3
-  TB_PAGEUP* = 2
-  TB_THUMBPOSITION* = 4
-  TB_THUMBTRACK* = 5
-  TB_TOP* = 6                 # List view styles
-  LVS_ALIGNLEFT* = 2048
-  LVS_ALIGNTOP* = 0
-  LVS_AUTOARRANGE* = 256
-  LVS_EDITLABELS* = 512
-  LVS_ICON* = 0
-  LVS_LIST* = 3
-  LVS_NOCOLUMNHEADER* = 16384
-  LVS_NOLABELWRAP* = 128
-  LVS_NOSCROLL* = 8192
-  LVS_NOSORTHEADER* = 32768
-  LVS_OWNERDRAWFIXED* = 1024
-  LVS_REPORT* = 1
-  LVS_SHAREIMAGELISTS* = 64
-  LVS_SHOWSELALWAYS* = 8
-  LVS_SINGLESEL* = 4
-  LVS_SMALLICON* = 2
-  LVS_SORTASCENDING* = 16
-  LVS_SORTDESCENDING* = 32
-  LVS_TYPESTYLEMASK* = 64512
-  LVSIL_NORMAL* = 0
-  LVSIL_SMALL* = 1
-  LVSIL_STATE* = 2
-  LVIS_CUT* = 4
-  LVIS_DROPHILITED* = 8
-  LVIS_FOCUSED* = 1
-  LVIS_SELECTED* = 2
-  LVIS_OVERLAYMASK* = 3840
-  LVIS_STATEIMAGEMASK* = 61440 # was #define dname def_expr
-
-proc LPSTR_TEXTCALLBACKW*(): LPWSTR
-  # was #define dname def_expr
-proc LPSTR_TEXTCALLBACKA*(): LPSTR
-when defined(winUnicode):
-  proc LPSTR_TEXTCALLBACK*(): LPWSTR
-else:
-  proc LPSTR_TEXTCALLBACK*(): LPSTR
-const
-  LVIF_TEXT* = 1
-  LVIF_IMAGE* = 2
-  LVIF_PARAM* = 4
-  LVIF_STATE* = 8
-  LVIF_DI_SETITEM* = 4096     # LVM_GETNEXTITEM structure
-  LVNI_ABOVE* = 256
-  LVNI_ALL* = 0
-  LVNI_BELOW* = 512
-  LVNI_TOLEFT* = 1024
-  LVNI_TORIGHT* = 2048
-  LVNI_CUT* = 4
-  LVNI_DROPHILITED* = 8
-  LVNI_FOCUSED* = 1
-  LVNI_SELECTED* = 2          # LV_FINDINFO structure
-  LVFI_PARAM* = 1
-  LVFI_PARTIAL* = 8
-  LVFI_STRING* = 2
-  LVFI_WRAP* = 32
-  LVFI_NEARESTXY* = 64        # LV_HITTESTINFO structure
-  LVHT_ABOVE* = 8
-  LVHT_BELOW* = 16
-  LVHT_NOWHERE* = 1
-  LVHT_ONITEMICON* = 2
-  LVHT_ONITEMLABEL* = 4
-  LVHT_ONITEMSTATEICON* = 8
-  LVHT_TOLEFT* = 64
-  LVHT_TORIGHT* = 32          # LV_COLUMN structure
-  LVCF_FMT* = 1
-  LVCF_SUBITEM* = 8
-  LVCF_TEXT* = 4
-  LVCF_WIDTH* = 2
-  LVCFMT_CENTER* = 2
-  LVCFMT_LEFT* = 0
-  LVCFMT_RIGHT* = 1           # ListView_GetItemRect
-  LVIR_BOUNDS* = 0
-  LVIR_ICON* = 1
-  LVIR_LABEL* = 2
-  LVIR_SELECTBOUNDS* = 3      # LVM_ARRANGE message
-  LVA_ALIGNLEFT* = 1
-  LVA_ALIGNTOP* = 2
-  LVA_DEFAULT* = 0
-  LVA_SNAPTOGRID* = 5         # LVM_SETCOLUMNWIDTH message
-  LVSCW_AUTOSIZE* = - (1)
-  LVSCW_AUTOSIZE_USEHEADER* = - (2) # Tree View styles
-  TVS_DISABLEDRAGDROP* = 16
-  TVS_EDITLABELS* = 8
-  TVS_HASBUTTONS* = 1
-  TVS_HASLINES* = 2
-  TVS_LINESATROOT* = 4
-  TVS_SHOWSELALWAYS* = 32     # Tree View states
-  TVIS_BOLD* = 16
-  TVIS_CUT* = 4
-  TVIS_DROPHILITED* = 8
-  TVIS_EXPANDED* = 32
-  TVIS_EXPANDEDONCE* = 64
-  TVIS_FOCUSED* = 1
-  TVIS_OVERLAYMASK* = 3840
-  TVIS_SELECTED* = 2
-  TVIS_STATEIMAGEMASK* = 61440
-  TVIS_USERMASK* = 61440      # TV_ITEM structure
-  TVIF_CHILDREN* = 64
-  TVIF_HANDLE* = 16
-  TVIF_IMAGE* = 2
-  TVIF_PARAM* = 4
-  TVIF_SELECTEDIMAGE* = 32
-  TVIF_STATE* = 8
-  TVIF_TEXT* = 1
-  I_CHILDRENCALLBACK* = - (1)
-  I_IMAGECALLBACK* = - (1)    # TV_INSERTSTRUCT structure
-                              # added manually PM, TREEITEM is not defined in the C headers
-
-type
-  TTREEITEM* {.final, pure.} = object
-  HTREEITEM* = ptr TTREEITEM
-  PTREEITEM* = ptr TTREEITEM
-
-proc TVI_ROOT*(): HTREEITEM
-  # was #define dname def_expr
-proc TVI_FIRST*(): HTREEITEM
-  # was #define dname def_expr
-proc TVI_LAST*(): HTREEITEM
-  # was #define dname def_expr
-proc TVI_SORT*(): HTREEITEM
-  # TV_HITTESTINFO structure
-const
-  TVHT_ABOVE* = 256
-  TVHT_BELOW* = 512
-  TVHT_NOWHERE* = 1
-  TVHT_ONITEM* = 70
-  TVHT_ONITEMBUTTON* = 16
-  TVHT_ONITEMICON* = 2
-  TVHT_ONITEMINDENT* = 8
-  TVHT_ONITEMLABEL* = 4
-  TVHT_ONITEMRIGHT* = 32
-  TVHT_ONITEMSTATEICON* = 64
-  TVHT_TOLEFT* = 2048
-  TVHT_TORIGHT* = 1024        # TVM_EXPAND message
-  TVE_COLLAPSE* = 1
-  TVE_COLLAPSERESET* = 32768
-  TVE_EXPAND* = 2
-  TVE_TOGGLE* = 3             # TVM_GETIMAGELIST message
-  TVSIL_NORMAL* = 0
-  TVSIL_STATE* = 2            # TVM_GETNEXTITEM message
-  TVGN_CARET* = 9
-  TVGN_CHILD* = 4
-  TVGN_DROPHILITE* = 8
-  TVGN_FIRSTVISIBLE* = 5
-  TVGN_NEXT* = 1
-  TVGN_NEXTVISIBLE* = 6
-  TVGN_PARENT* = 3
-  TVGN_PREVIOUS* = 2
-  TVGN_PREVIOUSVISIBLE* = 7
-  TVGN_ROOT* = 0              # TVN_SELCHANGED message
-  TVC_BYKEYBOARD* = 2
-  TVC_BYMOUSE* = 1
-  TVC_UNKNOWN* = 0            # Tab control styles
-  TCS_BUTTONS* = 256
-  TCS_FIXEDWIDTH* = 1024
-  TCS_FOCUSNEVER* = 32768
-  TCS_FOCUSONBUTTONDOWN* = 4096
-  TCS_FORCEICONLEFT* = 16
-  TCS_FORCELABELLEFT* = 32
-  TCS_MULTILINE* = 512
-  TCS_OWNERDRAWFIXED* = 8192
-  TCS_RAGGEDRIGHT* = 2048
-  TCS_RIGHTJUSTIFY* = 0
-  TCS_SINGLELINE* = 0
-  TCS_TABS* = 0
-  TCS_TOOLTIPS* = 16384       # TC_ITEM structure
-  TCIF_TEXT* = 1
-  TCIF_IMAGE* = 2
-  TCIF_PARAM* = 8
-  TCIF_RTLREADING* = 4        # TC_HITTESTINFO structure
-  TCHT_NOWHERE* = 1
-  TCHT_ONITEM* = 6
-  TCHT_ONITEMICON* = 2
-  TCHT_ONITEMLABEL* = 4       # Animation control styles
-  ACS_AUTOPLAY* = 4
-  ACS_CENTER* = 1
-  ACS_TRANSPARENT* = 2        # MODEMDEVCAPS structure
-  DIALOPTION_BILLING* = 64
-  DIALOPTION_QUIET* = 128
-  DIALOPTION_DIALTONE* = 256
-  MDMVOLFLAG_LOW* = 1
-  MDMVOLFLAG_MEDIUM* = 2
-  MDMVOLFLAG_HIGH* = 4
-  MDMVOL_LOW* = 0
-  MDMVOL_MEDIUM* = 1
-  MDMVOL_HIGH* = 2
-  MDMSPKRFLAG_OFF* = 1
-  MDMSPKRFLAG_DIAL* = 2
-  MDMSPKRFLAG_ON* = 4
-  MDMSPKRFLAG_CALLSETUP* = 8
-  MDMSPKR_OFF* = 0
-  MDMSPKR_DIAL* = 1
-  MDMSPKR_ON* = 2
-  MDMSPKR_CALLSETUP* = 3
-  MDM_BLIND_DIAL* = 512
-  MDM_CCITT_OVERRIDE* = 64
-  MDM_CELLULAR* = 8
-  MDM_COMPRESSION* = 1
-  MDM_ERROR_CONTROL* = 2
-  MDM_FLOWCONTROL_HARD* = 16
-  MDM_FLOWCONTROL_SOFT* = 32
-  MDM_FORCED_EC* = 4
-  MDM_SPEED_ADJUST* = 128
-  MDM_TONE_DIAL* = 256
-  MDM_V23_OVERRIDE* = 1024 # Languages
-                           #
-                           #  Language IDs.
-                           #
-                           #  The following two combinations of primary language ID and
-                           #  sublanguage ID have special semantics:
-                           #
-                           #    Primary Language ID   Sublanguage ID      Result
-                           #    -------------------   ---------------     ------------------------
-                           #    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
-                           #    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language
-                           #    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language
-                           #    LANG_INVARIANT        SUBLANG_NEUTRAL     Invariant locale
-                           #
-                           #
-                           #  Primary language IDs.
-                           #
-  LANG_NEUTRAL* = 0x00000000
-  LANG_INVARIANT* = 0x0000007F
-  LANG_AFRIKAANS* = 0x00000036
-  LANG_ALBANIAN* = 0x0000001C
-  LANG_ARABIC* = 0x00000001
-  LANG_ARMENIAN* = 0x0000002B
-  LANG_ASSAMESE* = 0x0000004D
-  LANG_AZERI* = 0x0000002C
-  LANG_BASQUE* = 0x0000002D
-  LANG_BELARUSIAN* = 0x00000023
-  LANG_BENGALI* = 0x00000045
-  LANG_BULGARIAN* = 0x00000002
-  LANG_CATALAN* = 0x00000003
-  LANG_CHINESE* = 0x00000004
-  LANG_CROATIAN* = 0x0000001A
-  LANG_CZECH* = 0x00000005
-  LANG_DANISH* = 0x00000006
-  LANG_DIVEHI* = 0x00000065
-  LANG_DUTCH* = 0x00000013
-  LANG_ENGLISH* = 0x00000009
-  LANG_ESTONIAN* = 0x00000025
-  LANG_FAEROESE* = 0x00000038
-  LANG_FARSI* = 0x00000029
-  LANG_FINNISH* = 0x0000000B
-  LANG_FRENCH* = 0x0000000C
-  LANG_GALICIAN* = 0x00000056
-  LANG_GEORGIAN* = 0x00000037
-  LANG_GERMAN* = 0x00000007
-  LANG_GREEK* = 0x00000008
-  LANG_GUJARATI* = 0x00000047
-  LANG_HEBREW* = 0x0000000D
-  LANG_HINDI* = 0x00000039
-  LANG_HUNGARIAN* = 0x0000000E
-  LANG_ICELANDIC* = 0x0000000F
-  LANG_INDONESIAN* = 0x00000021
-  LANG_ITALIAN* = 0x00000010
-  LANG_JAPANESE* = 0x00000011
-  LANG_KANNADA* = 0x0000004B
-  LANG_KASHMIRI* = 0x00000060
-  LANG_KAZAK* = 0x0000003F
-  LANG_KONKANI* = 0x00000057
-  LANG_KOREAN* = 0x00000012
-  LANG_KYRGYZ* = 0x00000040
-  LANG_LATVIAN* = 0x00000026
-  LANG_LITHUANIAN* = 0x00000027
-  LANG_MACEDONIAN* = 0x0000002F # the Former Yugoslav Republic of Macedonia
-  LANG_MALAY* = 0x0000003E
-  LANG_MALAYALAM* = 0x0000004C
-  LANG_MANIPURI* = 0x00000058
-  LANG_MARATHI* = 0x0000004E
-  LANG_MONGOLIAN* = 0x00000050
-  LANG_NEPALI* = 0x00000061
-  LANG_NORWEGIAN* = 0x00000014
-  LANG_ORIYA* = 0x00000048
-  LANG_POLISH* = 0x00000015
-  LANG_PORTUGUESE* = 0x00000016
-  LANG_PUNJABI* = 0x00000046
-  LANG_ROMANIAN* = 0x00000018
-  LANG_RUSSIAN* = 0x00000019
-  LANG_SANSKRIT* = 0x0000004F
-  LANG_SERBIAN* = 0x0000001A
-  LANG_SINDHI* = 0x00000059
-  LANG_SLOVAK* = 0x0000001B
-  LANG_SLOVENIAN* = 0x00000024
-  LANG_SPANISH* = 0x0000000A
-  LANG_SWAHILI* = 0x00000041
-  LANG_SWEDISH* = 0x0000001D
-  LANG_SYRIAC* = 0x0000005A
-  LANG_TAMIL* = 0x00000049
-  LANG_TATAR* = 0x00000044
-  LANG_TELUGU* = 0x0000004A
-  LANG_THAI* = 0x0000001E
-  LANG_TURKISH* = 0x0000001F
-  LANG_UKRAINIAN* = 0x00000022
-  LANG_URDU* = 0x00000020
-  LANG_UZBEK* = 0x00000043
-  LANG_VIETNAMESE* = 0x0000002A #
-                                #  Sublanguage IDs.
-                                #
-                                #  The name immediately following SUBLANG_ dictates which primary
-                                #  language ID that sublanguage ID can be combined with to form a
-                                #  valid language ID.
-                                #
-  SUBLANG_NEUTRAL* = 0x00000000 # language neutral
-  SUBLANG_DEFAULT* = 0x00000001 # user default
-  SUBLANG_SYS_DEFAULT* = 0x00000002 # system default
-  SUBLANG_ARABIC_SAUDI_ARABIA* = 0x00000001 # Arabic (Saudi Arabia)
-  SUBLANG_ARABIC_IRAQ* = 0x00000002 # Arabic (Iraq)
-  SUBLANG_ARABIC_EGYPT* = 0x00000003 # Arabic (Egypt)
-  SUBLANG_ARABIC_LIBYA* = 0x00000004 # Arabic (Libya)
-  SUBLANG_ARABIC_ALGERIA* = 0x00000005 # Arabic (Algeria)
-  SUBLANG_ARABIC_MOROCCO* = 0x00000006 # Arabic (Morocco)
-  SUBLANG_ARABIC_TUNISIA* = 0x00000007 # Arabic (Tunisia)
-  SUBLANG_ARABIC_OMAN* = 0x00000008 # Arabic (Oman)
-  SUBLANG_ARABIC_YEMEN* = 0x00000009 # Arabic (Yemen)
-  SUBLANG_ARABIC_SYRIA* = 0x0000000A # Arabic (Syria)
-  SUBLANG_ARABIC_JORDAN* = 0x0000000B # Arabic (Jordan)
-  SUBLANG_ARABIC_LEBANON* = 0x0000000C # Arabic (Lebanon)
-  SUBLANG_ARABIC_KUWAIT* = 0x0000000D # Arabic (Kuwait)
-  SUBLANG_ARABIC_UAE* = 0x0000000E # Arabic (U.A.E)
-  SUBLANG_ARABIC_BAHRAIN* = 0x0000000F # Arabic (Bahrain)
-  SUBLANG_ARABIC_QATAR* = 0x00000010 # Arabic (Qatar)
-  SUBLANG_AZERI_LATIN* = 0x00000001 # Azeri (Latin)
-  SUBLANG_AZERI_CYRILLIC* = 0x00000002 # Azeri (Cyrillic)
-  SUBLANG_CHINESE_TRADITIONAL* = 0x00000001 # Chinese (Taiwan)
-  SUBLANG_CHINESE_SIMPLIFIED* = 0x00000002 # Chinese (PR China)
-  SUBLANG_CHINESE_HONGKONG* = 0x00000003 # Chinese (Hong Kong S.A.R., P.R.C.)
-  SUBLANG_CHINESE_SINGAPORE* = 0x00000004 # Chinese (Singapore)
-  SUBLANG_CHINESE_MACAU* = 0x00000005 # Chinese (Macau S.A.R.)
-  SUBLANG_DUTCH* = 0x00000001 # Dutch
-  SUBLANG_DUTCH_BELGIAN* = 0x00000002 # Dutch (Belgian)
-  SUBLANG_ENGLISH_US* = 0x00000001 # English (USA)
-  SUBLANG_ENGLISH_UK* = 0x00000002 # English (UK)
-  SUBLANG_ENGLISH_AUS* = 0x00000003 # English (Australian)
-  SUBLANG_ENGLISH_CAN* = 0x00000004 # English (Canadian)
-  SUBLANG_ENGLISH_NZ* = 0x00000005 # English (New Zealand)
-  SUBLANG_ENGLISH_EIRE* = 0x00000006 # English (Irish)
-  SUBLANG_ENGLISH_SOUTH_AFRICA* = 0x00000007 # English (South Africa)
-  SUBLANG_ENGLISH_JAMAICA* = 0x00000008 # English (Jamaica)
-  SUBLANG_ENGLISH_CARIBBEAN* = 0x00000009 # English (Caribbean)
-  SUBLANG_ENGLISH_BELIZE* = 0x0000000A # English (Belize)
-  SUBLANG_ENGLISH_TRINIDAD* = 0x0000000B # English (Trinidad)
-  SUBLANG_ENGLISH_ZIMBABWE* = 0x0000000C # English (Zimbabwe)
-  SUBLANG_ENGLISH_PHILIPPINES* = 0x0000000D # English (Philippines)
-  SUBLANG_FRENCH* = 0x00000001 # French
-  SUBLANG_FRENCH_BELGIAN* = 0x00000002 # French (Belgian)
-  SUBLANG_FRENCH_CANADIAN* = 0x00000003 # French (Canadian)
-  SUBLANG_FRENCH_SWISS* = 0x00000004 # French (Swiss)
-  SUBLANG_FRENCH_LUXEMBOURG* = 0x00000005 # French (Luxembourg)
-  SUBLANG_FRENCH_MONACO* = 0x00000006 # French (Monaco)
-  SUBLANG_GERMAN* = 0x00000001 # German
-  SUBLANG_GERMAN_SWISS* = 0x00000002 # German (Swiss)
-  SUBLANG_GERMAN_AUSTRIAN* = 0x00000003 # German (Austrian)
-  SUBLANG_GERMAN_LUXEMBOURG* = 0x00000004 # German (Luxembourg)
-  SUBLANG_GERMAN_LIECHTENSTEIN* = 0x00000005 # German (Liechtenstein)
-  SUBLANG_ITALIAN* = 0x00000001 # Italian
-  SUBLANG_ITALIAN_SWISS* = 0x00000002 # Italian (Swiss)
-  SUBLANG_KASHMIRI_SASIA* = 0x00000002 # Kashmiri (South Asia)
-  SUBLANG_KASHMIRI_INDIA* = 0x00000002 # For app compatibility only
-  SUBLANG_KOREAN* = 0x00000001 # Korean (Extended Wansung)
-  SUBLANG_LITHUANIAN* = 0x00000001 # Lithuanian
-  SUBLANG_MALAY_MALAYSIA* = 0x00000001 # Malay (Malaysia)
-  SUBLANG_MALAY_BRUNEI_DARUSSALAM* = 0x00000002 # Malay (Brunei Darussalam)
-  SUBLANG_NEPALI_INDIA* = 0x00000002 # Nepali (India)
-  SUBLANG_NORWEGIAN_BOKMAL* = 0x00000001 # Norwegian (Bokmal)
-  SUBLANG_NORWEGIAN_NYNORSK* = 0x00000002 # Norwegian (Nynorsk)
-  SUBLANG_PORTUGUESE* = 0x00000002 # Portuguese
-  SUBLANG_PORTUGUESE_BRAZILIAN* = 0x00000001 # Portuguese (Brazilian)
-  SUBLANG_SERBIAN_LATIN* = 0x00000002 # Serbian (Latin)
-  SUBLANG_SERBIAN_CYRILLIC* = 0x00000003 # Serbian (Cyrillic)
-  SUBLANG_SPANISH* = 0x00000001 # Spanish (Castilian)
-  SUBLANG_SPANISH_MEXICAN* = 0x00000002 # Spanish (Mexican)
-  SUBLANG_SPANISH_MODERN* = 0x00000003 # Spanish (Spain)
-  SUBLANG_SPANISH_GUATEMALA* = 0x00000004 # Spanish (Guatemala)
-  SUBLANG_SPANISH_COSTA_RICA* = 0x00000005 # Spanish (Costa Rica)
-  SUBLANG_SPANISH_PANAMA* = 0x00000006 # Spanish (Panama)
-  SUBLANG_SPANISH_DOMINICAN_REPUBLIC* = 0x00000007 # Spanish (Dominican Republic)
-  SUBLANG_SPANISH_VENEZUELA* = 0x00000008 # Spanish (Venezuela)
-  SUBLANG_SPANISH_COLOMBIA* = 0x00000009 # Spanish (Colombia)
-  SUBLANG_SPANISH_PERU* = 0x0000000A # Spanish (Peru)
-  SUBLANG_SPANISH_ARGENTINA* = 0x0000000B # Spanish (Argentina)
-  SUBLANG_SPANISH_ECUADOR* = 0x0000000C # Spanish (Ecuador)
-  SUBLANG_SPANISH_CHILE* = 0x0000000D # Spanish (Chile)
-  SUBLANG_SPANISH_URUGUAY* = 0x0000000E # Spanish (Uruguay)
-  SUBLANG_SPANISH_PARAGUAY* = 0x0000000F # Spanish (Paraguay)
-  SUBLANG_SPANISH_BOLIVIA* = 0x00000010 # Spanish (Bolivia)
-  SUBLANG_SPANISH_EL_SALVADOR* = 0x00000011 # Spanish (El Salvador)
-  SUBLANG_SPANISH_HONDURAS* = 0x00000012 # Spanish (Honduras)
-  SUBLANG_SPANISH_NICARAGUA* = 0x00000013 # Spanish (Nicaragua)
-  SUBLANG_SPANISH_PUERTO_RICO* = 0x00000014 # Spanish (Puerto Rico)
-  SUBLANG_SWEDISH* = 0x00000001 # Swedish
-  SUBLANG_SWEDISH_FINLAND* = 0x00000002 # Swedish (Finland)
-  SUBLANG_URDU_PAKISTAN* = 0x00000001 # Urdu (Pakistan)
-  SUBLANG_URDU_INDIA* = 0x00000002 # Urdu (India)
-  SUBLANG_UZBEK_LATIN* = 0x00000001 # Uzbek (Latin)
-  SUBLANG_UZBEK_CYRILLIC* = 0x00000002 # Uzbek (Cyrillic)
-                                       #
-                                       #  Sorting IDs.
-                                       #
-  SORT_DEFAULT* = 0x00000000  # sorting default
-  SORT_JAPANESE_XJIS* = 0x00000000 # Japanese XJIS order
-  SORT_JAPANESE_UNICODE* = 0x00000001 # Japanese Unicode order
-  SORT_CHINESE_BIG5* = 0x00000000 # Chinese BIG5 order
-  SORT_CHINESE_PRCP* = 0x00000000 # PRC Chinese Phonetic order
-  SORT_CHINESE_UNICODE* = 0x00000001 # Chinese Unicode order
-  SORT_CHINESE_PRC* = 0x00000002 # PRC Chinese Stroke Count order
-  SORT_CHINESE_BOPOMOFO* = 0x00000003 # Traditional Chinese Bopomofo order
-  SORT_KOREAN_KSC* = 0x00000000 # Korean KSC order
-  SORT_KOREAN_UNICODE* = 0x00000001 # Korean Unicode order
-  SORT_GERMAN_PHONE_BOOK* = 0x00000001 # German Phone Book order
-  SORT_HUNGARIAN_DEFAULT* = 0x00000000 # Hungarian Default order
-  SORT_HUNGARIAN_TECHNICAL* = 0x00000001 # Hungarian Technical order
-  SORT_GEORGIAN_TRADITIONAL* = 0x00000000 # Georgian Traditional order
-  SORT_GEORGIAN_MODERN* = 0x00000001 # Georgian Modern order
-                                     # SYSTEM_INFO structure
-  PROCESSOR_INTEL_386* = 386
-  PROCESSOR_INTEL_486* = 486
-  PROCESSOR_INTEL_PENTIUM* = 586
-  PROCESSOR_MIPS_R4000* = 4000
-  PROCESSOR_ALPHA_21064* = 21064 # FSCTL_SET_COMPRESSION
-  COMPRESSION_FORMAT_NONE* = 0
-  COMPRESSION_FORMAT_DEFAULT* = 1
-  COMPRESSION_FORMAT_LZNT1* = 2 # TAPE_GET_DRIVE_PARAMETERS structure
-  TAPE_DRIVE_COMPRESSION* = 131072
-  TAPE_DRIVE_ECC* = 65536
-  TAPE_DRIVE_ERASE_BOP_ONLY* = 64
-  TAPE_DRIVE_ERASE_LONG* = 32
-  TAPE_DRIVE_ERASE_IMMEDIATE* = 128
-  TAPE_DRIVE_ERASE_SHORT* = 16
-  TAPE_DRIVE_FIXED* = 1
-  TAPE_DRIVE_FIXED_BLOCK* = 1024
-  TAPE_DRIVE_INITIATOR* = 4
-  TAPE_DRIVE_PADDING* = 262144
-  TAPE_DRIVE_GET_ABSOLUTE_BLK* = 1048576
-  TAPE_DRIVE_GET_LOGICAL_BLK* = 2097152
-  TAPE_DRIVE_REPORT_SMKS* = 524288
-  TAPE_DRIVE_SELECT* = 2
-  TAPE_DRIVE_SET_EOT_WZ_SIZE* = 4194304
-  TAPE_DRIVE_TAPE_CAPACITY* = 256
-  TAPE_DRIVE_TAPE_REMAINING* = 512
-  TAPE_DRIVE_VARIABLE_BLOCK* = 2048
-  TAPE_DRIVE_WRITE_PROTECT* = 4096
-  TAPE_DRIVE_ABS_BLK_IMMED* = - (2147475456)
-  TAPE_DRIVE_ABSOLUTE_BLK* = - (2147479552)
-  TAPE_DRIVE_END_OF_DATA* = - (2147418112)
-  TAPE_DRIVE_FILEMARKS* = - (2147221504)
-  TAPE_DRIVE_LOAD_UNLOAD* = - (2147483647)
-  TAPE_DRIVE_LOAD_UNLD_IMMED* = - (2147483616)
-  TAPE_DRIVE_LOCK_UNLOCK* = - (2147483644)
-  TAPE_DRIVE_LOCK_UNLK_IMMED* = - (2147483520)
-  TAPE_DRIVE_LOG_BLK_IMMED* = - (2147450880)
-  TAPE_DRIVE_LOGICAL_BLK* = - (2147467264)
-  TAPE_DRIVE_RELATIVE_BLKS* = - (2147352576)
-  TAPE_DRIVE_REVERSE_POSITION* = - (2143289344)
-  TAPE_DRIVE_REWIND_IMMEDIATE* = - (2147483640)
-  TAPE_DRIVE_SEQUENTIAL_FMKS* = - (2146959360)
-  TAPE_DRIVE_SEQUENTIAL_SMKS* = - (2145386496)
-  TAPE_DRIVE_SET_BLOCK_SIZE* = - (2147483632)
-  TAPE_DRIVE_SET_COMPRESSION* = - (2147483136)
-  TAPE_DRIVE_SET_ECC* = - (2147483392)
-  TAPE_DRIVE_SET_PADDING* = - (2147482624)
-  TAPE_DRIVE_SET_REPORT_SMKS* = - (2147481600)
-  TAPE_DRIVE_SETMARKS* = - (2146435072)
-  TAPE_DRIVE_SPACE_IMMEDIATE* = - (2139095040)
-  TAPE_DRIVE_TENSION* = - (2147483646)
-  TAPE_DRIVE_TENSION_IMMED* = - (2147483584)
-  TAPE_DRIVE_WRITE_FILEMARKS* = - (2113929216)
-  TAPE_DRIVE_WRITE_LONG_FMKS* = - (2013265920)
-  TAPE_DRIVE_WRITE_MARK_IMMED* = - (1879048192)
-  TAPE_DRIVE_WRITE_SETMARKS* = - (2130706432)
-  TAPE_DRIVE_WRITE_SHORT_FMKS* = - (2080374784) # Standard rights
-  STANDARD_RIGHTS_REQUIRED* = 0x000F0000
-  STANDARD_RIGHTS_WRITE* = 0x00020000
-  STANDARD_RIGHTS_READ* = 0x00020000
-  STANDARD_RIGHTS_EXECUTE* = 0x00020000
-  STANDARD_RIGHTS_ALL* = 0x001F0000
-  SPECIFIC_RIGHTS_ALL* = 0x0000FFFF # ACCESS_MASK
-  MAXIMUM_ALLOWED* = 0x02000000
-  GENERIC_ALL* = 0x10000000   # SID
-  SECURITY_NULL_RID* = 0
-  SECURITY_WORLD_RID* = 0
-  SECURITY_LOCAL_RID* = 0
-  SECURITY_CREATOR_OWNER_RID* = 0
-  SECURITY_CREATOR_GROUP_RID* = 0x00000001
-  SECURITY_DIALUP_RID* = 0x00000001
-  SECURITY_NETWORK_RID* = 0x00000002
-  SECURITY_BATCH_RID* = 0x00000003
-  SECURITY_INTERACTIVE_RID* = 0x00000004
-  SECURITY_LOGON_IDS_RID* = 0x00000005
-  SECURITY_LOGON_IDS_RID_COUNT* = 0x00000003
-  SECURITY_SERVICE_RID* = 0x00000006
-  SECURITY_LOCAL_SYSTEM_RID* = 0x00000012
-  SECURITY_BUILTIN_DOMAIN_RID* = 0x00000020
-  DOMAIN_USER_RID_ADMIN* = 0x000001F4
-  DOMAIN_USER_RID_GUEST* = 0x000001F5
-  DOMAIN_GROUP_RID_ADMINS* = 0x00000200
-  DOMAIN_GROUP_RID_USERS* = 0x00000201
-  DOMAIN_ALIAS_RID_ADMINS* = 0x00000220
-  DOMAIN_ALIAS_RID_USERS* = 0x00000221
-  DOMAIN_ALIAS_RID_GUESTS* = 0x00000222
-  DOMAIN_ALIAS_RID_POWER_USERS* = 0x00000223
-  DOMAIN_ALIAS_RID_ACCOUNT_OPS* = 0x00000224
-  DOMAIN_ALIAS_RID_SYSTEM_OPS* = 0x00000225
-  DOMAIN_ALIAS_RID_PRINT_OPS* = 0x00000226
-  DOMAIN_ALIAS_RID_BACKUP_OPS* = 0x00000227
-  DOMAIN_ALIAS_RID_REPLICATOR* = 0x00000228 # TOKEN_GROUPS structure
-  SE_GROUP_MANDATORY* = 0x00000001
-  SE_GROUP_ENABLED_BY_DEFAULT* = 0x00000002
-  SE_GROUP_ENABLED* = 0x00000004
-  SE_GROUP_OWNER* = 0x00000008
-  SE_GROUP_LOGON_ID* = 0xC0000000 # ACL Defines
-  ACL_REVISION* = 2           # ACE_HEADER structure
-  ACCESS_ALLOWED_ACE_TYPE* = 0x00000000
-  ACCESS_DENIED_ACE_TYPE* = 0x00000001
-  SYSTEM_AUDIT_ACE_TYPE* = 0x00000002
-  SYSTEM_ALARM_ACE_TYPE* = 0x00000003 # ACE flags in the ACE_HEADER structure
-  OBJECT_INHERIT_ACE* = 0x00000001
-  CONTAINER_INHERIT_ACE* = 0x00000002
-  NO_PROPAGATE_INHERIT_ACE* = 0x00000004
-  INHERIT_ONLY_ACE* = 0x00000008
-  SUCCESSFUL_ACCESS_ACE_FLAG* = 0x00000040
-  FAILED_ACCESS_ACE_FLAG* = 0x00000080 # SECURITY_DESCRIPTOR_CONTROL
-                                       #SECURITY_DESCRIPTOR_REVISION = 1;already defined above
-  SECURITY_DESCRIPTOR_MIN_LENGTH* = 20
-  SE_OWNER_DEFAULTED* = 1
-  SE_GROUP_DEFAULTED* = 2
-  SE_DACL_PRESENT* = 4
-  SE_DACL_DEFAULTED* = 8
-  SE_SACL_PRESENT* = 16
-  SE_SACL_DEFAULTED* = 32
-  SE_SELF_RELATIVE* = 32768   # PRIVILEGE_SET
-  SE_PRIVILEGE_ENABLED_BY_DEFAULT* = 0x00000001
-  SE_PRIVILEGE_ENABLED* = 0x00000002
-  SE_PRIVILEGE_USED_FOR_ACCESS* = 0x80000000
-  PRIVILEGE_SET_ALL_NECESSARY* = 0x00000001 # OPENFILENAME structure
-  OFN_ALLOWMULTISELECT* = 0x00000200
-  OFN_CREATEPROMPT* = 0x00002000
-  OFN_ENABLEHOOK* = 0x00000020
-  OFN_ENABLETEMPLATE* = 0x00000040
-  OFN_ENABLETEMPLATEHANDLE* = 0x00000080
-  OFN_EXPLORER* = 0x00080000
-  OFN_EXTENSIONDIFFERENT* = 0x00000400
-  OFN_FILEMUSTEXIST* = 0x00001000
-  OFN_HIDEREADONLY* = 0x00000004
-  OFN_LONGNAMES* = 0x00200000
-  OFN_NOCHANGEDIR* = 0x00000008
-  OFN_NODEREFERENCELINKS* = 0x00100000
-  OFN_NOLONGNAMES* = 0x00040000
-  OFN_NONETWORKBUTTON* = 0x00020000
-  OFN_NOREADONLYRETURN* = 0x00008000
-  OFN_NOTESTFILECREATE* = 0x00010000
-  OFN_NOVALIDATE* = 0x00000100
-  OFN_OVERWRITEPROMPT* = 0x00000002
-  OFN_PATHMUSTEXIST* = 0x00000800
-  OFN_READONLY* = 0x00000001
-  OFN_SHAREAWARE* = 0x00004000
-  OFN_SHOWHELP* = 0x00000010  # SHAREVISTRING message
-  OFN_SHAREFALLTHROUGH* = 0x00000002
-  OFN_SHARENOWARN* = 0x00000001
-  OFN_SHAREWARN* = 0          # Open/Save notifications
-  CDN_INITDONE* = 0xFFFFFDA7
-  CDN_SELCHANGE* = 0xFFFFFDA6
-  CDN_FOLDERCHANGE* = 0xFFFFFDA5
-  CDN_SHAREVIOLATION* = 0xFFFFFDA4
-  CDN_HELP* = 0xFFFFFDA3
-  CDN_FILEOK* = 0xFFFFFDA2
-  CDN_TYPECHANGE* = 0xFFFFFDA1 # Open/Save messages
-  CDM_GETFILEPATH* = 0x00000465
-  CDM_GETFOLDERIDLIST* = 0x00000467
-  CDM_GETFOLDERPATH* = 0x00000466
-  CDM_GETSPEC* = 0x00000464
-  CDM_HIDECONTROL* = 0x00000469
-  CDM_SETCONTROLTEXT* = 0x00000468
-  CDM_SETDEFEXT* = 0x0000046A # CHOOSECOLOR structure
-  CC_ENABLEHOOK* = 0x00000010
-  CC_ENABLETEMPLATE* = 0x00000020
-  CC_ENABLETEMPLATEHANDLE* = 0x00000040
-  CC_FULLOPEN* = 0x00000002
-  CC_PREVENTFULLOPEN* = 0x00000004
-  CC_RGBINIT* = 0x00000001
-  CC_SHOWHELP* = 0x00000008
-  CC_SOLIDCOLOR* = 0x00000080 # FINDREPLACE structure
-  FR_DIALOGTERM* = 0x00000040
-  FR_DOWN* = 0x00000001
-  FR_ENABLEHOOK* = 0x00000100
-  FR_ENABLETEMPLATE* = 0x00000200
-  FR_ENABLETEMPLATEHANDLE* = 0x00002000
-  FR_FINDNEXT* = 0x00000008
-  FR_HIDEUPDOWN* = 0x00004000
-  FR_HIDEMATCHCASE* = 0x00008000
-  FR_HIDEWHOLEWORD* = 0x00010000
-  FR_MATCHCASE* = 0x00000004
-  FR_NOMATCHCASE* = 0x00000800
-  FR_NOUPDOWN* = 0x00000400
-  FR_NOWHOLEWORD* = 0x00001000
-  FR_REPLACE* = 0x00000010
-  FR_REPLACEALL* = 0x00000020
-  FR_SHOWHELP* = 0x00000080
-  FR_WHOLEWORD* = 0x00000002  # CHOOSEFONT structure
-  CF_APPLY* = 0x00000200
-  CF_ANSIONLY* = 0x00000400
-  CF_BOTH* = 0x00000003
-  CF_TTONLY* = 0x00040000
-  CF_EFFECTS* = 0x00000100
-  CF_ENABLEHOOK* = 0x00000008
-  CF_ENABLETEMPLATE* = 0x00000010
-  CF_ENABLETEMPLATEHANDLE* = 0x00000020
-  CF_FIXEDPITCHONLY* = 0x00004000
-  CF_FORCEFONTEXIST* = 0x00010000
-  CF_INITTOLOGFONTSTRUCT* = 0x00000040
-  CF_LIMITSIZE* = 0x00002000
-  CF_NOOEMFONTS* = 0x00000800
-  CF_NOFACESEL* = 0x00080000
-  CF_NOSCRIPTSEL* = 0x00800000
-  CF_NOSTYLESEL* = 0x00100000
-  CF_NOSIZESEL* = 0x00200000
-  CF_NOSIMULATIONS* = 0x00001000
-  CF_NOVECTORFONTS* = 0x00000800
-  CF_NOVERTFONTS* = 0x01000000
-  CF_PRINTERFONTS* = 0x00000002
-  CF_SCALABLEONLY* = 0x00020000
-  CF_SCREENFONTS* = 0x00000001
-  CF_SCRIPTSONLY* = 0x00000400
-  CF_SELECTSCRIPT* = 0x00400000
-  CF_SHOWHELP* = 0x00000004
-  CF_USESTYLE* = 0x00000080
-  CF_WYSIWYG* = 0x00008000
-  BOLD_FONTTYPE* = 0x00000100
-  ITALIC_FONTTYPE* = 0x00000200
-  PRINTER_FONTTYPE* = 0x00004000
-  REGULAR_FONTTYPE* = 0x00000400
-  SCREEN_FONTTYPE* = 0x00002000
-  SIMULATED_FONTTYPE* = 0x00008000 # Common dialog messages
-  COLOROKSTRINGW* = "commdlg_ColorOK"
-  FILEOKSTRINGW* = "commdlg_FileNameOK"
-  FINDMSGSTRINGW* = "commdlg_FindReplace"
-  HELPMSGSTRINGW* = "commdlg_help"
-  LBSELCHSTRINGW* = "commdlg_LBSelChangedNotify"
-  SETRGBSTRINGW* = "commdlg_SetRGBColor"
-  SHAREVISTRINGW* = "commdlg_ShareViolation"
-  COLOROKSTRINGA* = "commdlg_ColorOK"
-  FILEOKSTRINGA* = "commdlg_FileNameOK"
-  FINDMSGSTRINGA* = "commdlg_FindReplace"
-  HELPMSGSTRINGA* = "commdlg_help"
-  LBSELCHSTRINGA* = "commdlg_LBSelChangedNotify"
-  SETRGBSTRINGA* = "commdlg_SetRGBColor"
-  SHAREVISTRINGA* = "commdlg_ShareViolation"
-
-when defined(winUnicode):
-  const
-    COLOROKSTRING* = COLOROKSTRINGW
-    FILEOKSTRING* = FILEOKSTRINGW
-    FINDMSGSTRING* = FINDMSGSTRINGW
-    HELPMSGSTRING* = HELPMSGSTRINGW
-    LBSELCHSTRING* = LBSELCHSTRINGW
-    SETRGBSTRING* = SETRGBSTRINGW
-    SHAREVISTRING* = SHAREVISTRINGW
-else:
-  const
-    COLOROKSTRING* = COLOROKSTRINGA
-    FILEOKSTRING* = FILEOKSTRINGA
-    FINDMSGSTRING* = FINDMSGSTRINGA
-    HELPMSGSTRING* = HELPMSGSTRINGA
-    LBSELCHSTRING* = LBSELCHSTRINGA
-    SETRGBSTRING* = SETRGBSTRINGA
-    SHAREVISTRING* = SHAREVISTRINGA
-# LBSELCHSTRING message
-
-const
-  CD_LBSELCHANGE* = 0
-  CD_LBSELADD* = 2
-  CD_LBSELSUB* = 1
-  CD_LBSELNOITEMS* = - (1)    # DEVNAMES structure
-  DN_DEFAULTPRN* = 1          # PRINTDLG structure
-  PD_ALLPAGES* = 0
-  PD_COLLATE* = 16
-  PD_DISABLEPRINTTOFILE* = 524288
-  PD_ENABLEPRINTHOOK* = 4096
-  PD_ENABLEPRINTTEMPLATE* = 16384
-  PD_ENABLEPRINTTEMPLATEHANDLE* = 65536
-  PD_ENABLESETUPHOOK* = 8192
-  PD_ENABLESETUPTEMPLATE* = 32768
-  PD_ENABLESETUPTEMPLATEHANDLE* = 131072
-  PD_HIDEPRINTTOFILE* = 1048576
-  PD_NOPAGENUMS* = 8
-  PD_NOSELECTION* = 4
-  PD_NOWARNING* = 128
-  PD_PAGENUMS* = 2
-  PD_PRINTSETUP* = 64
-  PD_PRINTTOFILE* = 32
-  PD_RETURNDC* = 256
-  PD_RETURNDEFAULT* = 1024
-  PD_RETURNIC* = 512
-  PD_SELECTION* = 1
-  PD_SHOWHELP* = 2048
-  PD_USEDEVMODECOPIES* = 262144
-  PD_USEDEVMODECOPIESANDCOLLATE* = 262144 # PAGESETUPDLG structure
-  PSD_DEFAULTMINMARGINS* = 0
-  PSD_DISABLEMARGINS* = 16
-  PSD_DISABLEORIENTATION* = 256
-  PSD_DISABLEPAGEPAINTING* = 524288
-  PSD_DISABLEPAPER* = 512
-  PSD_DISABLEPRINTER* = 32
-  PSD_ENABLEPAGEPAINTHOOK* = 262144
-  PSD_ENABLEPAGESETUPHOOK* = 8192
-  PSD_ENABLEPAGESETUPTEMPLATE* = 32768
-  PSD_ENABLEPAGESETUPTEMPLATEHANDLE* = 131072
-  PSD_INHUNDREDTHSOFMILLIMETERS* = 8
-  PSD_INTHOUSANDTHSOFINCHES* = 4
-  PSD_INWININIINTLMEASURE* = 0
-  PSD_MARGINS* = 2
-  PSD_MINMARGINS* = 1
-  PSD_NOWARNING* = 128
-  PSD_RETURNDEFAULT* = 1024
-  PSD_SHOWHELP* = 2048        # WM_SHOWWINDOW message
-  SW_OTHERUNZOOM* = 4
-  SW_OTHERZOOM* = 2
-  SW_PARENTCLOSING* = 1
-  SW_PARENTOPENING* = 3       # Virtual Key codes
-  VK_LBUTTON* = 1
-  VK_RBUTTON* = 2
-  VK_CANCEL* = 3
-  VK_MBUTTON* = 4
-  VK_BACK* = 8
-  VK_TAB* = 9
-  VK_CLEAR* = 12
-  VK_RETURN* = 13
-  VK_SHIFT* = 16
-  VK_CONTROL* = 17
-  VK_MENU* = 18
-  VK_PAUSE* = 19
-  VK_CAPITAL* = 20
-  VK_ESCAPE* = 27
-  VK_SPACE* = 32
-  VK_PRIOR* = 33
-  VK_NEXT* = 34
-  VK_END* = 35
-  VK_HOME* = 36
-  VK_LEFT* = 37
-  VK_UP* = 38
-  VK_RIGHT* = 39
-  VK_DOWN* = 40
-  VK_SELECT* = 41
-  VK_PRINT* = 42
-  VK_EXECUTE* = 43
-  VK_SNAPSHOT* = 44
-  VK_INSERT* = 45
-  VK_DELETE* = 46
-  VK_HELP* = 47
-  VK_0* = 48
-  VK_1* = 49
-  VK_2* = 50
-  VK_3* = 51
-  VK_4* = 52
-  VK_5* = 53
-  VK_6* = 54
-  VK_7* = 55
-  VK_8* = 56
-  VK_9* = 57
-  VK_A* = 65
-  VK_B* = 66
-  VK_C* = 67
-  VK_D* = 68
-  VK_E* = 69
-  VK_F* = 70
-  VK_G* = 71
-  VK_H* = 72
-  VK_I* = 73
-  VK_J* = 74
-  VK_K* = 75
-  VK_L* = 76
-  VK_M* = 77
-  VK_N* = 78
-  VK_O* = 79
-  VK_P* = 80
-  VK_Q* = 81
-  VK_R* = 82
-  VK_S* = 83
-  VK_T* = 84
-  VK_U* = 85
-  VK_V* = 86
-  VK_W* = 87
-  VK_X* = 88
-  VK_Y* = 89
-  VK_Z* = 90
-  VK_LWIN* = 91
-  VK_RWIN* = 92
-  VK_APPS* = 93
-  VK_NUMPAD0* = 96
-  VK_NUMPAD1* = 97
-  VK_NUMPAD2* = 98
-  VK_NUMPAD3* = 99
-  VK_NUMPAD4* = 100
-  VK_NUMPAD5* = 101
-  VK_NUMPAD6* = 102
-  VK_NUMPAD7* = 103
-  VK_NUMPAD8* = 104
-  VK_NUMPAD9* = 105
-  VK_MULTIPLY* = 106
-  VK_ADD* = 107
-  VK_SEPARATOR* = 108
-  VK_SUBTRACT* = 109
-  VK_DECIMAL* = 110
-  VK_DIVIDE* = 111
-  VK_F1* = 112
-  VK_F2* = 113
-  VK_F3* = 114
-  VK_F4* = 115
-  VK_F5* = 116
-  VK_F6* = 117
-  VK_F7* = 118
-  VK_F8* = 119
-  VK_F9* = 120
-  VK_F10* = 121
-  VK_F11* = 122
-  VK_F12* = 123
-  VK_F13* = 124
-  VK_F14* = 125
-  VK_F15* = 126
-  VK_F16* = 127
-  VK_F17* = 128
-  VK_F18* = 129
-  VK_F19* = 130
-  VK_F20* = 131
-  VK_F21* = 132
-  VK_F22* = 133
-  VK_F23* = 134
-  VK_F24* = 135               # GetAsyncKeyState
-  VK_NUMLOCK* = 144
-  VK_SCROLL* = 145
-  VK_LSHIFT* = 160
-  VK_LCONTROL* = 162
-  VK_LMENU* = 164
-  VK_RSHIFT* = 161
-  VK_RCONTROL* = 163
-  VK_RMENU* = 165             # ImmGetVirtualKey
-  VK_PROCESSKEY* = 229        # Keystroke Message Flags
-  KF_ALTDOWN* = 8192
-  KF_DLGMODE* = 2048
-  KF_EXTENDED* = 256
-  KF_MENUMODE* = 4096
-  KF_REPEAT* = 16384
-  KF_UP* = 32768              # GetKeyboardLayoutName
-  KL_NAMELENGTH* = 9          # WM_ACTIVATE message
-  WA_ACTIVE* = 1
-  WA_CLICKACTIVE* = 2
-  WA_INACTIVE* = 0            # WM_ACTIVATE message
-  PWR_CRITICALRESUME* = 3
-  PWR_SUSPENDREQUEST* = 1
-  PWR_SUSPENDRESUME* = 2
-  PWR_FAIL* = - (1)
-  PWR_OK* = 1                 # WM_NOTIFYFORMAT message
-  NF_QUERY* = 3
-  NF_REQUERY* = 4
-  NFR_ANSI* = 1
-  NFR_UNICODE* = 2            # WM_SIZING message
-  WMSZ_BOTTOM* = 6
-  WMSZ_BOTTOMLEFT* = 7
-  WMSZ_BOTTOMRIGHT* = 8
-  WMSZ_LEFT* = 1
-  WMSZ_RIGHT* = 2
-  WMSZ_TOP* = 3
-  WMSZ_TOPLEFT* = 4
-  WMSZ_TOPRIGHT* = 5          # WM_MOUSEACTIVATE message
-  MA_ACTIVATE* = 1
-  MA_ACTIVATEANDEAT* = 2
-  MA_NOACTIVATE* = 3
-  MA_NOACTIVATEANDEAT* = 4    # WM_SIZE message
-  SIZE_MAXHIDE* = 4
-  SIZE_MAXIMIZED* = 2
-  SIZE_MAXSHOW* = 3
-  SIZE_MINIMIZED* = 1
-  SIZE_RESTORED* = 0          # WM_NCCALCSIZE message
-  WVR_ALIGNTOP* = 16
-  WVR_ALIGNLEFT* = 32
-  WVR_ALIGNBOTTOM* = 64
-  WVR_ALIGNRIGHT* = 128
-  WVR_HREDRAW* = 256
-  WVR_VREDRAW* = 512
-  WVR_REDRAW* = 768
-  WVR_VALIDRECTS* = 1024      # WM_NCHITTEST message
-  HTBOTTOM* = 15
-  HTBOTTOMLEFT* = 16
-  HTBOTTOMRIGHT* = 17
-  HTCAPTION* = 2
-  HTCLIENT* = 1
-  HTERROR* = - (2)
-  HTGROWBOX* = 4
-  HTHSCROLL* = 6
-  HTLEFT* = 10
-  HTMENU* = 5
-  HTNOWHERE* = 0
-  HTREDUCE* = 8
-  HTRIGHT* = 11
-  HTSIZE* = 4
-  HTSYSMENU* = 3
-  HTTOP* = 12
-  HTTOPLEFT* = 13
-  HTTOPRIGHT* = 14
-  HTTRANSPARENT* = - (1)
-  HTVSCROLL* = 7
-  HTZOOM* = 9                 # Mouse messages
-  MK_CONTROL* = 8
-  MK_LBUTTON* = 1
-  MK_MBUTTON* = 16
-  MK_RBUTTON* = 2
-  MK_SHIFT* = 4               # WNDCLASS structure
-  CS_BYTEALIGNCLIENT* = 4096
-  CS_BYTEALIGNWINDOW* = 8192
-  CS_CLASSDC* = 64
-  CS_DBLCLKS* = 8
-  CS_GLOBALCLASS* = 16384
-  CS_HREDRAW* = 2
-  CS_KEYCVTWINDOW* = 4
-  CS_NOCLOSE* = 512
-  CS_NOKEYCVT* = 256
-  CS_OWNDC* = 32
-  CS_PARENTDC* = 128
-  CS_SAVEBITS* = 2048
-  CS_VREDRAW* = 1
-  DLGWINDOWEXTRA* = 30        # ACCEL structure
-  FALT* = 16
-  FCONTROL* = 8
-  FNOINVERT* = 2
-  FSHIFT* = 4
-  FVIRTKEY* = 1               # WM_MENUCHAR return constants
-  MNC_IGNORE* = 0
-  MNC_CLOSE* = 1
-  MNC_EXECUTE* = 2
-  MNC_SELECT* = 3             # MENUINFO structure
-  MIM_MAXHEIGHT* = 1
-  MIM_BACKGROUND* = 2
-  MIM_HELPID* = 4
-  MIM_MENUDATA* = 8
-  MIM_STYLE* = 16
-  MIM_APPLYTOSUBMENUS* = 0x80000000
-  MNS_CHECKORBMP* = 0x04000000
-  MNS_NOTIFYBYPOS* = 0x08000000
-  MNS_AUTODISMISS* = 0x10000000
-  MNS_DRAGDROP* = 0x20000000
-  MNS_MODELESS* = 0x40000000
-  MNS_NOCHECK* = 0x80000000   # MENUITEMINFO structure
-  MIIM_CHECKMARKS* = 8
-  MIIM_DATA* = 32
-  MIIM_ID* = 2
-  MIIM_STATE* = 1
-  MIIM_SUBMENU* = 4
-  MIIM_TYPE* = 16
-  MIIM_STRING* = 64
-  MIIM_BITMAP* = 128
-  MIIM_FTYPE* = 256
-  MFT_BITMAP* = 0x00000004
-  MFT_MENUBARBREAK* = 0x00000020
-  MFT_MENUBREAK* = 0x00000040
-  MFT_OWNERDRAW* = 0x00000100
-  MFT_RADIOCHECK* = 0x00000200
-  MFT_RIGHTJUSTIFY* = 0x00004000
-  MFT_SEPARATOR* = 0x00000800
-  MFT_RIGHTORDER* = 0x00002000
-  MFT_STRING* = 0
-  MFS_CHECKED* = 0x00000008
-  MFS_DEFAULT* = 0x00001000
-  MFS_DISABLED* = 0x00000003
-  MFS_ENABLED* = 0
-  MFS_GRAYED* = 0x00000003
-  MFS_HILITE* = 0x00000080
-  MFS_UNCHECKED* = 0
-  MFS_UNHILITE* = 0
-  HBMMENU_CALLBACK* = - 1
-  HBMMENU_SYSTEM* = 1
-  HBMMENU_MBAR_RESTORE* = 2
-  HBMMENU_MBAR_MINIMIZE* = 3
-  HBMMENU_MBAR_CLOSE* = 5
-  HBMMENU_MBAR_CLOSE_D* = 6
-  HBMMENU_MBAR_MINIMIZE_D* = 7
-  HBMMENU_POPUP_CLOSE* = 8
-  HBMMENU_POPUP_RESTORE* = 9
-  HBMMENU_POPUP_MAXIMIZE* = 10
-  HBMMENU_POPUP_MINIMIZE* = 11 # SERIALKEYS structure
-  SERKF_AVAILABLE* = 2
-  SERKF_INDICATOR* = 4
-  SERKF_SERIALKEYSON* = 1     # FILTERKEYS structure
-  FKF_AVAILABLE* = 2
-  FKF_CLICKON* = 64
-  FKF_FILTERKEYSON* = 1
-  FKF_HOTKEYACTIVE* = 4
-  FKF_HOTKEYSOUND* = 16
-  FKF_CONFIRMHOTKEY* = 8
-  FKF_INDICATOR* = 32         # HELPINFO structure
-  HELPINFO_MENUITEM* = 2
-  HELPINFO_WINDOW* = 1        # WM_PRINT message
-  PRF_CHECKVISIBLE* = 0x00000001
-  PRF_CHILDREN* = 0x00000010
-  PRF_CLIENT* = 0x00000004
-  PRF_ERASEBKGND* = 0x00000008
-  PRF_NONCLIENT* = 0x00000002
-  PRF_OWNED* = 0x00000020     # MapWindowPoints
-                              # was #define dname def_expr
-
-proc HWND_DESKTOP*(): HWND
-  # WM_SYSCOMMAND message
-const
-  SC_CLOSE* = 61536
-  SC_CONTEXTHELP* = 61824
-  SC_DEFAULT* = 61792
-  SC_HOTKEY* = 61776
-  SC_HSCROLL* = 61568
-  SC_KEYMENU* = 61696
-  SC_MAXIMIZE* = 61488
-  SC_ZOOM* = 61488
-  SC_MINIMIZE* = 61472
-  SC_ICON* = 61472
-  SC_MONITORPOWER* = 61808
-  SC_MOUSEMENU* = 61584
-  SC_MOVE* = 61456
-  SC_NEXTWINDOW* = 61504
-  SC_PREVWINDOW* = 61520
-  SC_RESTORE* = 61728
-  SC_SCREENSAVE* = 61760
-  SC_SIZE* = 61440
-  SC_TASKLIST* = 61744
-  SC_VSCROLL* = 61552         # DM_GETDEFID message
-  DC_HASDEFID* = 21323        # WM_GETDLGCODE message
-  DLGC_BUTTON* = 8192
-  DLGC_DEFPUSHBUTTON* = 16
-  DLGC_HASSETSEL* = 8
-  DLGC_RADIOBUTTON* = 64
-  DLGC_STATIC* = 256
-  DLGC_UNDEFPUSHBUTTON* = 32
-  DLGC_WANTALLKEYS* = 4
-  DLGC_WANTARROWS* = 1
-  DLGC_WANTCHARS* = 128
-  DLGC_WANTMESSAGE* = 4
-  DLGC_WANTTAB* = 2           # EM_SETMARGINS message
-  EC_LEFTMARGIN* = 1
-  EC_RIGHTMARGIN* = 2
-  EC_USEFONTINFO* = 65535     # LB_SETCOUNT message
-  LB_ERR* = - (1)
-  LB_ERRSPACE* = - (2)
-  LB_OKAY* = 0                # CB_DIR message
-  CB_ERR* = - (1)
-  CB_ERRSPACE* = - (2)        # WM_IME_CONTROL message
-  IMC_GETCANDIDATEPOS* = 7
-  IMC_GETCOMPOSITIONFONT* = 9
-  IMC_GETCOMPOSITIONWINDOW* = 11
-  IMC_GETSTATUSWINDOWPOS* = 15
-  IMC_CLOSESTATUSWINDOW* = 33
-  IMC_OPENSTATUSWINDOW* = 34
-  IMC_SETCANDIDATEPOS* = 8
-  IMC_SETCOMPOSITIONFONT* = 10
-  IMC_SETCOMPOSITIONWINDOW* = 12
-  IMC_SETSTATUSWINDOWPOS* = 16 # WM_IME_CONTROL message
-  IMN_CHANGECANDIDATE* = 3
-  IMN_CLOSECANDIDATE* = 4
-  IMN_CLOSESTATUSWINDOW* = 1
-  IMN_GUIDELINE* = 13
-  IMN_OPENCANDIDATE* = 5
-  IMN_OPENSTATUSWINDOW* = 2
-  IMN_SETCANDIDATEPOS* = 9
-  IMN_SETCOMPOSITIONFONT* = 10
-  IMN_SETCOMPOSITIONWINDOW* = 11
-  IMN_SETCONVERSIONMODE* = 6
-  IMN_SETOPENSTATUS* = 8
-  IMN_SETSENTENCEMODE* = 7
-  IMN_SETSTATUSWINDOWPOS* = 12
-  IMN_PRIVATE* = 14           # STICKYKEYS structure
-  SKF_AUDIBLEFEEDBACK* = 64
-  SKF_AVAILABLE* = 2
-  SKF_CONFIRMHOTKEY* = 8
-  SKF_HOTKEYACTIVE* = 4
-  SKF_HOTKEYSOUND* = 16
-  SKF_INDICATOR* = 32
-  SKF_STICKYKEYSON* = 1
-  SKF_TRISTATE* = 128
-  SKF_TWOKEYSOFF* = 256       # MOUSEKEYS structure
-  MKF_AVAILABLE* = 2
-  MKF_CONFIRMHOTKEY* = 8
-  MKF_HOTKEYACTIVE* = 4
-  MKF_HOTKEYSOUND* = 16
-  MKF_INDICATOR* = 32
-  MKF_MOUSEKEYSON* = 1
-  MKF_MODIFIERS* = 64
-  MKF_REPLACENUMBERS* = 128   # SOUNDSENTRY structure
-  SSF_AVAILABLE* = 2
-  SSF_SOUNDSENTRYON* = 1
-  SSTF_BORDER* = 2
-  SSTF_CHARS* = 1
-  SSTF_DISPLAY* = 3
-  SSTF_NONE* = 0
-  SSGF_DISPLAY* = 3
-  SSGF_NONE* = 0
-  SSWF_CUSTOM* = 4
-  SSWF_DISPLAY* = 3
-  SSWF_NONE* = 0
-  SSWF_TITLE* = 1
-  SSWF_WINDOW* = 2            # ACCESSTIMEOUT structure
-  ATF_ONOFFFEEDBACK* = 2
-  ATF_TIMEOUTON* = 1          # HIGHCONTRAST structure
-  HCF_AVAILABLE* = 2
-  HCF_CONFIRMHOTKEY* = 8
-  HCF_HIGHCONTRASTON* = 1
-  HCF_HOTKEYACTIVE* = 4
-  HCF_HOTKEYAVAILABLE* = 64
-  HCF_HOTKEYSOUND* = 16
-  HCF_INDICATOR* = 32         # TOGGLEKEYS structure
-  TKF_AVAILABLE* = 2
-  TKF_CONFIRMHOTKEY* = 8
-  TKF_HOTKEYACTIVE* = 4
-  TKF_HOTKEYSOUND* = 16
-  TKF_TOGGLEKEYSON* = 1       # Installable Policy
-  PP_DISPLAYERRORS* = 1       # SERVICE_INFO structure
-  RESOURCEDISPLAYTYPE_DOMAIN* = 1
-  RESOURCEDISPLAYTYPE_FILE* = 4
-  RESOURCEDISPLAYTYPE_GENERIC* = 0
-  RESOURCEDISPLAYTYPE_GROUP* = 5
-  RESOURCEDISPLAYTYPE_SERVER* = 2
-  RESOURCEDISPLAYTYPE_SHARE* = 3 # KEY_EVENT_RECORD structure
-  CAPSLOCK_ON* = 128
-  ENHANCED_KEY* = 256
-  LEFT_ALT_PRESSED* = 2
-  LEFT_CTRL_PRESSED* = 8
-  NUMLOCK_ON* = 32
-  RIGHT_ALT_PRESSED* = 1
-  RIGHT_CTRL_PRESSED* = 4
-  SCROLLLOCK_ON* = 64
-  SHIFT_PRESSED* = 16         # MOUSE_EVENT_RECORD structure
-  FROM_LEFT_1ST_BUTTON_PRESSED* = 1
-  RIGHTMOST_BUTTON_PRESSED* = 2
-  FROM_LEFT_2ND_BUTTON_PRESSED* = 4
-  FROM_LEFT_3RD_BUTTON_PRESSED* = 8
-  FROM_LEFT_4TH_BUTTON_PRESSED* = 16
-  DOUBLE_CLICK* = 2
-  MOUSE_MOVED* = 1            # INPUT_RECORD structure
-  KEY_EVENT* = 1
-  cMOUSE_EVENT* = 2
-  WINDOW_BUFFER_SIZE_EVENT* = 4
-  MENU_EVENT* = 8
-  FOCUS_EVENT* = 16           # BITMAPINFOHEADER structure
-  BI_RGB* = 0
-  BI_RLE8* = 1
-  BI_RLE4* = 2
-  BI_BITFIELDS* = 3           # Extensions to OpenGL
-                              # ChoosePixelFormat
-  PFD_DOUBLEBUFFER* = 0x00000001
-  PFD_STEREO* = 0x00000002
-  PFD_DRAW_TO_WINDOW* = 0x00000004
-  PFD_DRAW_TO_BITMAP* = 0x00000008
-  PFD_SUPPORT_GDI* = 0x00000010
-  PFD_SUPPORT_OPENGL* = 0x00000020
-  PFD_DEPTH_DONTCARE* = 0x20000000
-  PFD_DOUBLEBUFFER_DONTCARE* = 0x40000000
-  PFD_STEREO_DONTCARE* = 0x80000000
-  PFD_TYPE_RGBA* = 0
-  PFD_TYPE_COLORINDEX* = 1
-  PFD_MAIN_PLANE* = 0
-  PFD_OVERLAY_PLANE* = 1
-  PFD_UNDERLAY_PLANE* = - (1) # wglUseFontOutlines
-  WGL_FONT_LINES* = 0
-  WGL_FONT_POLYGONS* = 1      # LAYERPLANEDESCRIPTOR structure
-                              # PIXELFORMATDESCRIPTOR structure
-  PFD_GENERIC_FORMAT* = 0x00000040
-  PFD_NEED_PALETTE* = 0x00000080
-  PFD_NEED_SYSTEM_PALETTE* = 0x00000100
-  PFD_SWAP_EXCHANGE* = 0x00000200
-  PFD_SWAP_COPY* = 0x00000400
-  PFD_SWAP_LAYER_BUFFERS* = 0x00000800
-  PFD_GENERIC_ACCELERATED* = 0x00001000
-  PFD_SUPPORT_DIRECTDRAW* = 0x00002000 # TEXTMETRIC structure
-  TMPF_FIXED_PITCH* = 0x00000001
-  TMPF_VECTOR* = 0x00000002
-  TMPF_TRUETYPE* = 0x00000004
-  TMPF_DEVICE* = 0x00000008
-  WM_CTLCOLOR* = 25
-  LWA_COLORKEY* = 0x00000001
-  LWA_ALPHA* = 0x00000002
-  ULW_COLORKEY* = 0x00000001
-  ULW_ALPHA* = 0x00000002
-  ULW_OPAQUE* = 0x00000004
-  WS_EX_LAYERED* = 0x00080000
-  WS_EX_NOINHERITLAYOUT* = 0x00100000
-  WS_EX_LAYOUTRTL* = 0x00400000
-  WS_EX_COMPOSITED* = 0x02000000
-  WS_EX_NOACTIVATE* = 0x08000000
-  C3_LEXICAL* = 1024 # --------------------- old stuff, need to organize! ---------------
-                     # BEGINNING of windowsx.h stuff from old headers:
-                     #  Not convertable by H2PAS
-                     #  #define CRACK_VOID_F(fn,args) (void)(fn args)
-                     #  #define CRACK_BOOL_F(fn,args) (WINBOOL)(fn args)
-                     #  #define CRACK_HMENU_F(fn,args) (HMENU)(fn args)
-                     #  #define CRACK_HWND_F(fn,args) (HWND)(fn args)
-                     #  #define CRACK_LONG_F(fn, args) (LRESULT)(fn args)
-                     #  #define CRACK_ZERO_F(fn, args)  (fn args,0)
-                     #
-                     # was #define dname(params) def_expr
-
-proc GetFirstChild*(h: HWND): HWND
-  # was #define dname(params) def_expr
-proc GetNextSibling*(h: HWND): HWND
-  # was #define dname(params) def_expr
-proc GetWindowID*(h: HWND): int32
-  # was #define dname(params) def_expr
-proc SubclassWindow*(h: HWND, p: LONG): LONG
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_COMMAND_CMD*(w, L: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_COMMAND_ID*(w, L: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-proc GET_WM_CTLCOLOR_HDC*(w, L, msg: int32): HDC
-  # was #define dname(params) def_expr
-  # argument types are unknown
-proc GET_WM_CTLCOLOR_HWND*(w, L, msg: int32): HWND
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_HSCROLL_CODE*(w, L: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-proc GET_WM_HSCROLL_HWND*(w, L: int32): HWND
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_HSCROLL_POS*(w, L: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_MDIACTIVATE_FACTIVATE*(h, a, b: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-proc GET_WM_MDIACTIVATE_HWNDACTIVATE*(a, b: int32): HWND
-  # was #define dname(params) def_expr
-  # argument types are unknown
-proc GET_WM_MDIACTIVATE_HWNDDEACT*(a, b: int32): HWND
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_VSCROLL_CODE*(w, L: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-proc GET_WM_VSCROLL_HWND*(w, L: int32): HWND
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc GET_WM_VSCROLL_POS*(w, L: int32): int32
-  # return type might be wrong
-  #  Not convertable by H2PAS
-  #  #define FORWARD_WM_CLOSE(h, fn)                 CRACK_VOID_F(fn,(h, WM_CLOSE, 0, 0))
-  #  #define FORWARD_WM_COMMAND(h, id, c, n, fn)     CRACK_VOID_F(fn,(h, WM_COMMAND, MAKEWPARAM(id,n), (LPARAM)c))
-  #  #define FORWARD_WM_CREATE(h, p, fn)             CRACK_BOOL_F(fn,(h, WM_CREATE, 0, (LPARAM)p))
-  #  #define FORWARD_WM_DESTROY(h, fn)               CRACK_VOID_F(fn,(h, WM_DESTROY, 0, 0))
-  #  #define FORWARD_WM_ENABLE(h, e, fn)             CRACK_VOID_F(fn,(h, WM_ENABLE, (WPARAM)e, 0))
-  #  #define FORWARD_WM_INITDIALOG(h, c, L, fn)      CRACK_BOOL_F(fn,(h, WM_INITDIALOG, (WPARAM)c, L))
-  #  #define FORWARD_WM_MDICASCADE(h, c, fn)         CRACK_BOOL_F(fn,(h, WM_MDICASCADE, (WPARAM)c, 0))
-  #  #define FORWARD_WM_MDIDESTROY(h, d, fn)         CRACK_VOID_F(fn,(h, WM_MDIDESTROY, (WPARAM)d, 0))
-  #  #define FORWARD_WM_MDIGETACTIVE(h, fn)          CRACK_HWND_F(fn,(h, WM_MDIGETACTIVE, 0, 0))
-  #  #define FORWARD_WM_MDIICONARRANGE(h, fn)        CRACK_VOID_F(fn,(h, WM_MDIICONARRANGE, 0, 0))
-  #  #define FORWARD_WM_MDISETMENU(h, fr, hf, hw, fn) CRACK_HMENU_F(fn,(h, WM_MDISETMENU, (WPARAM)((fr) ? (hf) : 0), (LPARAM)(hw)))
-  #  #define FORWARD_WM_MDITILE(h, c, fn)            CRACK_BOOL_F(fn,(h, WM_MDITILE, (WPARAM)(c), 0))
-  #  #define FORWARD_WM_PAINT(h, fn)                 CRACK_VOID_F(fn,(h, WM_PAINT, 0, 0))
-  #  #define FORWARD_WM_QUERYENDSESSION(h, fn)       CRACK_BOOL_F(fn,(h, WM_QUERYENDSESSION, 0, 0))
-  #  #define FORWARD_WM_SIZE(h, state, cx, cy, fn)   CRACK_VOID_F(fn,(h, WM_SIZE, (WPARAM)state, MAKELPARAM(cx, cy)))
-  #  #define FORWARD_WM_SYSCOMMAND(h, c, x, y, fn)   CRACK_VOID_F(fn,(h, WM_SYSCOMMAND, (WPARAM)c, MAKELPARAM(x, y)))
-  #
-  #  #define HANDLE_WM_CLOSE(h, w, L, fn)            CRACK_ZERO_F(fn,(h));
-  #  #define HANDLE_WM_COMMAND(h, w, L, fn)          CRACK_ZERO_F(fn,(h, SEXT_LOWORD(w), (HWND)L, HIWORD(w)))
-  #  #define HANDLE_WM_CREATE(h, w, L, fn)           (LRESULT)((fn(h, (CREATESTRUCT  )L)) ? 0 : -1)
-  #  #define HANDLE_WM_DESTROY(h, w, L, fn)          CRACK_ZERO_F(fn,(h))
-  #  #define HANDLE_WM_ENABLE(h, w, L, fn)           CRACK_ZERO_F(fn,(h, (WINBOOL)w))
-  #  #define HANDLE_WM_INITDIALOG(h, w, L, fn)       CRACK_LONG_F(fn,(h, (HWND)w, L))
-  #  #define HANDLE_WM_MDICASCADE(h, w, L, fn)       CRACK_LONG_F(fn, (h, (UINT)w)
-  #  #define HANDLE_WM_MDIDESTROY(h, w, L, fn)       CRACK_ZERO_F(fn,(h, (HWND)w))
-  #  #define HANDLE_WM_MDIGETACTIVE(h, w, L, fn)     CRACK_LONG_F(fn,(h))
-  #  #define HANDLE_WM_MDIICONARRANGE(h, w, L, fn)   CRACK_ZERO_F(fn,(h))
-  #  #define HANDLE_WM_MDISETMENU(h, w, L, fn)       CRACK_LONG_F(fn,(h, (WINBOOL)w, (HMENU)w, (HMENU)L)
-  #  #define HANDLE_WM_MDITILE(h, w, L, fn)          CRACK_LONG_F(fn,(h, (UINT)w))
-  #  #define HANDLE_WM_PAINT(h, w, L, fn)            CRACK_ZERO_F(fn,(h))
-  #  #define HANDLE_WM_QUERYENDSESSION(h, w, L, fn)  MAKELRESULT(fn(h), 0)
-  #  #define HANDLE_WM_SIZE(h, w, L, fn)             CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(L), SEXT_HIWORD(L)))
-  #  #define HANDLE_WM_SYSCOMMAND(h, w, L, fn)       CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(L), SEXT_HIWORD(L)))
-  #
-  # Totally disgusting! get wParam and lParam from the environment !
-  #  Not convertable by H2PAS
-  #  #define HANDLE_MSG(h, message, fn) case message: return HANDLE_##message(h, wParam, lParam, fn)
-  #
-  # END OF windowsx.h stuff from old headers
-  # ------------------------------------------------------------------
-  # BEGINNING of shellapi.h stuff from old headers
-const
-  SE_ERR_SHARE* = 26
-  SE_ERR_ASSOCINCOMPLETE* = 27
-  SE_ERR_DDETIMEOUT* = 28
-  SE_ERR_DDEFAIL* = 29
-  SE_ERR_DDEBUSY* = 30
-  SE_ERR_NOASSOC* = 31 # END OF shellapi.h stuff from old headers
-                       #
-                       # ------------------------------------------------------------------
-                       # From ddeml.h in old Cygnus headers
-  XCLASS_BOOL* = 0x00001000
-  XCLASS_DATA* = 0x00002000
-  XCLASS_FLAGS* = 0x00004000
-  XCLASS_MASK* = 0x0000FC00
-  XCLASS_NOTIFICATION* = 0x00008000
-  XTYPF_NOBLOCK* = 0x00000002
-  XTYP_ADVDATA* = 0x00004010
-  XTYP_ADVREQ* = 0x00002022
-  XTYP_ADVSTART* = 0x00001030
-  XTYP_ADVSTOP* = 0x00008040
-  XTYP_CONNECT* = 0x00001062
-  XTYP_CONNECT_CONFIRM* = 0x00008072
-  XTYP_DISCONNECT* = 0x000080C2
-  XTYP_EXECUTE* = 0x00004050
-  XTYP_POKE* = 0x00004090
-  XTYP_REQUEST* = 0x000020B0
-  XTYP_WILDCONNECT* = 0x000020E2
-  XTYP_REGISTER* = 0x000080A2
-  XTYP_ERROR* = 0x00008002
-  XTYP_XACT_COMPLETE* = 0x00008080
-  XTYP_UNREGISTER* = 0x000080D2
-  DMLERR_DLL_USAGE* = 0x00004004
-  DMLERR_INVALIDPARAMETER* = 0x00004006
-  DMLERR_NOTPROCESSED* = 0x00004009
-  DMLERR_POSTMSG_FAILED* = 0x0000400C
-  DMLERR_SERVER_DIED* = 0x0000400E
-  DMLERR_SYS_ERROR* = 0x0000400F
-  DMLERR_BUSY* = 0x00004001
-  DMLERR_DATAACKTIMEOUT* = 0x00004002
-  DMLERR_ADVACKTIMEOUT* = 0x00004000
-  DMLERR_DLL_NOT_INITIALIZED* = 0x00004003
-  DMLERR_LOW_MEMORY* = 0x00004007
-  DMLERR_MEMORY_ERROR* = 0x00004008
-  DMLERR_POKEACKTIMEOUT* = 0x0000400B
-  DMLERR_NO_CONV_ESTABLISHED* = 0x0000400A
-  DMLERR_REENTRANCY* = 0x0000400D
-  DMLERR_UNFOUND_QUEUE_ID* = 0x00004011
-  DMLERR_UNADVACKTIMEOUT* = 0x00004010
-  DMLERR_EXECACKTIMEOUT* = 0x00004005
-  DDE_FACK* = 0x00008000
-  DDE_FNOTPROCESSED* = 0x00000000
-  DNS_REGISTER* = 0x00000001
-  DNS_UNREGISTER* = 0x00000002
-  CP_WINANSI* = 1004
-  CP_WINUNICODE* = 1200       #  Not convertable by H2PAS
-                              #  #define EXPENTRY CALLBACK
-                              #
-  APPCLASS_STANDARD* = 0x00000000 # End of stuff from ddeml.h in old Cygnus headers
-                                  #
-                                  # -----------------------------------------------
-  BKMODE_LAST* = 2
-  CTLCOLOR_MSGBOX* = 0
-  CTLCOLOR_EDIT* = 1
-  CTLCOLOR_LISTBOX* = 2
-  CTLCOLOR_BTN* = 3
-  CTLCOLOR_DLG* = 4
-  CTLCOLOR_SCROLLBAR* = 5
-  CTLCOLOR_STATIC* = 6
-  CTLCOLOR_MAX* = 7
-  META_SETMAPMODE* = 0x00000103
-  META_SETWINDOWORG* = 0x0000020B
-  META_SETWINDOWEXT* = 0x0000020C
-  POLYFILL_LAST* = 2
-  STATUS_WAIT_0* = 0x00000000
-  STATUS_ABANDONED_WAIT_0* = 0x00000080
-  STATUS_USER_APC* = 0x000000C0
-  STATUS_TIMEOUT* = 0x00000102
-  STATUS_PENDING* = 0x00000103
-  STATUS_GUARD_PAGE_VIOLATION* = 0x80000001
-  STATUS_DATATYPE_MISALIGNMENT* = 0x80000002
-  STATUS_BREAKPOINT* = 0x80000003
-  STATUS_SINGLE_STEP* = 0x80000004
-  STATUS_IN_PAGE_ERROR* = 0xC0000006
-  STATUS_INVALID_HANDLE* = 0xC0000008
-  STATUS_ILLEGAL_INSTRUCTION* = 0xC000001D
-  STATUS_NONCONTINUABLE_EXCEPTION* = 0xC0000025
-  STATUS_INVALID_DISPOSITION* = 0xC0000026
-  STATUS_ARRAY_BOUNDS_EXCEEDED* = 0xC000008C
-  STATUS_FLOAT_DENORMAL_OPERAND* = 0xC000008D
-  STATUS_FLOAT_DIVIDE_BY_ZERO* = 0xC000008E
-  STATUS_FLOAT_INEXACT_RESULT* = 0xC000008F
-  STATUS_FLOAT_INVALID_OPERATION* = 0xC0000090
-  STATUS_FLOAT_OVERFLOW* = 0xC0000091
-  STATUS_FLOAT_STACK_CHECK* = 0xC0000092
-  STATUS_FLOAT_UNDERFLOW* = 0xC0000093
-  STATUS_INTEGER_DIVIDE_BY_ZERO* = 0xC0000094
-  STATUS_INTEGER_OVERFLOW* = 0xC0000095
-  STATUS_PRIVILEGED_INSTRUCTION* = 0xC0000096
-  STATUS_STACK_OVERFLOW* = 0xC00000FD
-  STATUS_CONTROL_C_EXIT* = 0xC000013A
-  PROCESSOR_ARCHITECTURE_INTEL* = 0
-  PROCESSOR_ARCHITECTURE_MIPS* = 1
-  PROCESSOR_ARCHITECTURE_ALPHA* = 2
-  PROCESSOR_ARCHITECTURE_PPC* = 3
-
-# was #define dname(params) def_expr
-
-proc FreeModule*(h: HINST): WINBOOL
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc MakeProcInstance*(p, i: int32): int32
-  # return type might be wrong
-  # was #define dname(params) def_expr
-  # argument types are unknown
-  # return type might be wrong
-proc FreeProcInstance*(p: int32): int32
-  # return type might be wrong
-const                         # _fmemcpy = memcpy; these are functions
-                              # Used by wxwindows.
-  SIZEFULLSCREEN* = SIZE_MAXIMIZED
-  SIZENORMAL* = SIZE_RESTORED
-  SIZEICONIC* = SIZE_MINIMIZED # NPLOGPALETTE = PLOGPALETTE; probably a type
-                               # In the old winnt.h
-                               #  Not convertable by H2PAS anyhow with if 0
-                               #  #if 0
-                               #  #ifdef ANAL
-                               #  #define DECLARE_HANDLE(h) struct h## { int dummy; }; typedef struct h##  h
-                               #  #else
-                               #  #define DECLARE_HANDLE(h)  typedef void  h
-                               #  #endif
-                               #  DECLARE_HANDLE(HANDLE);
-                               #  #endif
-                               #
-
-const
-  EXCEPTION_READ_FAULT* = 0   # Access violation was caused by a read
-  EXCEPTION_WRITE_FAULT* = 1  # Access violation was caused by a write
-
-when defined(cpuia64):
-  const
-    EXCEPTION_EXECUTE_FAULT* = 2 # Access violation was caused by an instruction fetch
-else:
-  const
-    EXCEPTION_EXECUTE_FAULT* = 8
-when defined(cpupowerpc32):
-  # ppc
-  const
-    CONTEXT_CONTROL* = 1
-    CONTEXT_FLOATING_POINT* = 2
-    CONTEXT_INTEGER* = 4
-    CONTEXT_DEBUG_REGISTERS* = 8
-    CONTEXT_FULL* = (CONTEXT_CONTROL or CONTEXT_FLOATING_POINT) or
-        CONTEXT_INTEGER
-    CONTEXT_DEBUGGER* = CONTEXT_FULL
-when defined(cpui386):
-  # x86
-  # The doc refered me to winnt.h, so I had to look...
-  const
-    SIZE_OF_80387_REGISTERS* = 80 # Values for contextflags
-    CONTEXT_i386* = 0x00010000 # this assumes that i386 and
-    CONTEXT_i486* = 0x00010000 # i486 have identical context records
-    CONTEXT_CONTROL* = CONTEXT_i386 or 1 # SS:SP, CS:IP, FLAGS, BP
-    CONTEXT_INTEGER* = CONTEXT_i386 or 2 # AX, BX, CX, DX, SI, DI
-    CONTEXT_SEGMENTS* = CONTEXT_i386 or 4 # DS, ES, FS, GS
-    CONTEXT_FLOATING_POINT* = CONTEXT_i386 or 8 # 387 state
-    CONTEXT_DEBUG_REGISTERS* = CONTEXT_i386 or 0x00000010 # DB 0-3,6,7
-    CONTEXT_EXTENDED_REGISTERS* = CONTEXT_i386 or 0x00000020 # cpu specific extensions
-    CONTEXT_FULL* = (CONTEXT_CONTROL or CONTEXT_INTEGER) or CONTEXT_SEGMENTS
-    CONTEXT_ALL* = CONTEXT_FULL or CONTEXT_FLOATING_POINT or
-        CONTEXT_DEBUG_REGISTERS or CONTEXT_EXTENDED_REGISTERS # our own invention
-    FLAG_TRACE_BIT* = 0x00000100
-    CONTEXT_DEBUGGER* = CONTEXT_FULL or CONTEXT_FLOATING_POINT
-when defined(cpux86_64):
-  const
-    INITIAL_MXCSR* = 0x00001F80 # initial MXCSR value
-    INITIAL_FPCSR* = 0x0000027F # initial FPCSR value
-    CONTEXT_AMD64* = 0x00100000
-    CONTEXT_CONTROL* = (CONTEXT_AMD64 or 0x00000001)
-    CONTEXT_INTEGER* = (CONTEXT_AMD64 or 0x00000002)
-    CONTEXT_SEGMENTS* = (CONTEXT_AMD64 or 0x00000004)
-    CONTEXT_FLOATING_POINT* = (CONTEXT_AMD64 or 0x00000008)
-    CONTEXT_DEBUG_REGISTERS* = (CONTEXT_AMD64 or 0x00000010)
-    CONTEXT_FULL* = (
-      CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_FLOATING_POINT)
-    CONTEXT_ALL* = (CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or
-        CONTEXT_FLOATING_POINT or CONTEXT_DEBUG_REGISTERS)
-    CONTEXT_EXCEPTION_ACTIVE* = 0x08000000
-    CONTEXT_SERVICE_ACTIVE* = 0x10000000
-    CONTEXT_EXCEPTION_REQUEST* = 0x40000000
-    CONTEXT_EXCEPTION_REPORTING* = 0x80000000
-const
-  FILTER_TEMP_DUPLICATE_ACCOUNT* = 0x00000001
-  FILTER_NORMAL_ACCOUNT* = 0x00000002
-  FILTER_INTERDOMAIN_TRUST_ACCOUNT* = 0x00000008
-  FILTER_WORKSTATION_TRUST_ACCOUNT* = 0x00000010
-  FILTER_SERVER_TRUST_ACCOUNT* = 0x00000020
-  LOGON32_LOGON_INTERACTIVE* = 0x00000002
-  LOGON32_LOGON_BATCH* = 0x00000004
-  LOGON32_LOGON_SERVICE* = 0x00000005
-  LOGON32_PROVIDER_DEFAULT* = 0x00000000
-  LOGON32_PROVIDER_WINNT35* = 0x00000001
-  QID_SYNC* = 0xFFFFFFFF      # Magic numbers in PE executable header.
-                              # e_magic field
-  IMAGE_DOS_SIGNATURE* = 0x00005A4D # nt_signature field
-  IMAGE_NT_SIGNATURE* = 0x00004550 # Severity values
-  SEVERITY_SUCCESS* = 0
-  SEVERITY_ERROR* = 1         # Variant type codes (wtypes.h).
-                              #    Some, not all though
-  VT_EMPTY* = 0
-  VT_NULL* = 1
-  VT_I2* = 2
-  VT_I4* = 3
-  VT_R4* = 4
-  VT_R8* = 5
-  VT_BSTR* = 8
-  VT_ERROR* = 10
-  VT_BOOL* = 11
-  VT_UI1* = 17
-  VT_BYREF* = 0x00004000
-  VT_RESERVED* = 0x00008000   # Define the facility codes
-
-const
-  FACILITY_WINDOWS* = 8
-  FACILITY_STORAGE* = 3
-  FACILITY_RPC* = 1
-  FACILITY_SSPI* = 9
-  FACILITY_WIN32* = 7
-  FACILITY_CONTROL* = 10
-  FACILITY_NULL* = 0
-  FACILITY_INTERNET* = 12
-  FACILITY_ITF* = 4
-  FACILITY_DISPATCH* = 2
-  FACILITY_CERT* = 11         # Manually added, bug 2672
-  ICON_SMALL* = 0
-  ICON_BIG* = 1               # For the TRackMouseEvent
-  TME_HOVER* = 0x00000001
-  TME_LEAVE* = 0x00000002
-  TME_QUERY* = 0x40000000
-  TME_CANCEL* = DWORD(0x80000000)
-  HOVER_DEFAULT* = DWORD(0xFFFFFFFF) # Manually added, bug 3270
-  COLOR_HOTLIGHT* = 26
-  COLOR_GRADIENTACTIVECAPTION* = 27
-  COLOR_GRADIENTINACTIVECAPTION* = 28
-  COLOR_MENUHILIGHT* = 29
-  COLOR_MENUBAR* = 30
-  WM_APP* = 0x00008000
-  SYSRGN* = 4
-  UIS_SET* = 1
-  UIS_CLEAR* = 2
-  UIS_INITIALIZE* = 3
-  UISF_HIDEFOCUS* = 0x00000001
-  UISF_HIDEACCEL* = 0x00000002
-  UISF_ACTIVE* = 0x00000004
-
-type                          # WARNING
-                              #      the variable argument list
-                              #      is not implemented for FPC
-                              #      va_list is just a dummy record
-                              #      MvdV: Nevertheless it should be a pointer type, not a record
-  va_list* = cstring
-  TABC* {.final, pure.} = object
-    abcA*: int32
-    abcB*: UINT
-    abcC*: int32
-
-  LPABC* = ptr TABC
-  PABC* = ptr TABC
-  TABCFLOAT* {.final, pure.} = object
-    abcfA*: float32
-    abcfB*: float32
-    abcfC*: float32
-  LPABCFLOAT* = ptr TABCFLOAT
-  PABCFLOAT* = ptr TABCFLOAT
-
-  TACCEL* {.final, pure.} = object
-    fVirt*: int8
-    key*: int16
-    cmd*: int16
-  LPACCEL* = ptr TACCEL
-  PACCEL* = ptr TACCEL
-  ACE_HEADER* {.final, pure.} = object
-    AceType*: int8
-    AceFlags*: int8
-    AceSize*: int16
-
-  TACE_HEADER* = ACE_HEADER
-  PACE_HEADER* = ptr ACE_HEADER
-  ACCESS_MASK* = DWORD
-  REGSAM* = ACCESS_MASK
-  ACCESS_ALLOWED_ACE* {.final, pure.} = object
-    Header*: ACE_HEADER
-    Mask*: ACCESS_MASK
-    SidStart*: DWORD
-
-  TACCESS_ALLOWED_ACE* = ACCESS_ALLOWED_ACE
-  PACCESS_ALLOWED_ACE* = ptr ACCESS_ALLOWED_ACE
-  ACCESS_DENIED_ACE* {.final, pure.} = object
-    Header*: ACE_HEADER
-    Mask*: ACCESS_MASK
-    SidStart*: DWORD
-
-  TACCESS_DENIED_ACE* = ACCESS_DENIED_ACE
-  ACCESSTIMEOUT* {.final, pure.} = object
-    cbSize*: UINT
-    dwFlags*: DWORD
-    iTimeOutMSec*: DWORD
-
-  TACCESSTIMEOUT* = ACCESSTIMEOUT
-  PACCESSTIMEOUT* = ptr ACCESSTIMEOUT
-  ACL* {.final, pure.} = object
-    AclRevision*: int8
-    Sbz1*: int8
-    AclSize*: int16
-    AceCount*: int16
-    Sbz2*: int16
-
-  PACL* = ptr ACL
-  TACL* = ACL
-  TACL_REVISION_INFORMATION* {.final, pure.} = object
-    AclRevision*: DWORD
-  PACLREVISIONINFORMATION* = ptr TACL_REVISION_INFORMATION
-
-  TACL_SIZE_INFORMATION* {.final, pure.} = object
-    AceCount*: DWORD
-    AclBytesInUse*: DWORD
-    AclBytesFree*: DWORD
-  PACLSIZEINFORMATION* = ptr TACL_SIZE_INFORMATION
-  ACTION_HEADER* {.final, pure.} = object
-    transport_id*: ULONG
-    action_code*: USHORT
-    reserved*: USHORT
-
-  TACTIONHEADER* = ACTION_HEADER
-  PACTIONHEADER* = ptr ACTION_HEADER
-  ADAPTER_STATUS* {.final, pure.} = object
-    adapter_address*: array[0..5, UCHAR]
-    rev_major*: UCHAR
-    reserved0*: UCHAR
-    adapter_type*: UCHAR
-    rev_minor*: UCHAR
-    duration*: int16
-    frmr_recv*: int16
-    frmr_xmit*: int16
-    iframe_recv_err*: int16
-    xmit_aborts*: int16
-    xmit_success*: DWORD
-    recv_success*: DWORD
-    iframe_xmit_err*: int16
-    recv_buff_unavail*: int16
-    t1_timeouts*: int16
-    ti_timeouts*: int16
-    reserved1*: DWORD
-    free_ncbs*: int16
-    max_cfg_ncbs*: int16
-    max_ncbs*: int16
-    xmit_buf_unavail*: int16
-    max_dgram_size*: int16
-    pending_sess*: int16
-    max_cfg_sess*: int16
-    max_sess*: int16
-    max_sess_pkt_size*: int16
-    name_count*: int16
-
-  TADAPTERSTATUS* = ADAPTER_STATUS
-  PADAPTERSTATUS* = ptr ADAPTER_STATUS
-  ADDJOB_INFO_1* {.final, pure.} = object
-    Path*: LPTSTR
-    JobId*: DWORD
-
-  TADDJOB_INFO_1* = ADDJOB_INFO_1
-  PADDJOB_INFO_1* = ptr ADDJOB_INFO_1
-  ANIMATIONINFO* {.final, pure.} = object
-    cbSize*: UINT
-    iMinAnimate*: int32
-
-  LPANIMATIONINFO* = ptr ANIMATIONINFO
-  TANIMATIONINFO* = ANIMATIONINFO
-  PANIMATIONINFO* = ptr ANIMATIONINFO
-  POINT* {.final, pure.} = object
-    x*: LONG
-    y*: LONG
-
-  LPPOINT* = ptr POINT
-  TPOINT* = POINT
-  PPOINT* = ptr POINT
-  RECT* {.final, pure.} = object
-    TopLeft*, BottomRight*: TPoint
-
-  LPRECT* = ptr RECT
-  TRECT* = RECT
-  PRECT* = ptr RECT
-  RECTL* {.final, pure.} = object
-    left*: LONG
-    top*: LONG
-    right*: LONG
-    bottom*: LONG
-
-  TRECTL* = RECTL
-  PRECTL* = ptr RECTL
-  APPBARDATA* {.final, pure.} = object
-    cbSize*: DWORD
-    hWnd*: HWND
-    uCallbackMessage*: UINT
-    uEdge*: UINT
-    rc*: RECT
-    lParam*: LPARAM
-
-  TAppBarData* = APPBARDATA
-  PAppBarData* = ptr APPBARDATA
-  BITMAP* {.final, pure.} = object
-    bmType*: LONG
-    bmWidth*: LONG
-    bmHeight*: LONG
-    bmWidthBytes*: LONG
-    bmPlanes*: int16
-    bmBitsPixel*: int16
-    bmBits*: LPVOID
-
-  PBITMAP* = ptr BITMAP
-  NPBITMAP* = ptr BITMAP
-  LPBITMAP* = ptr BITMAP
-  TBITMAP* = BITMAP
-  BITMAPCOREHEADER* {.final, pure.} = object
-    bcSize*: DWORD
-    bcWidth*: int16
-    bcHeight*: int16
-    bcPlanes*: int16
-    bcBitCount*: int16
-
-  TBITMAPCOREHEADER* = BITMAPCOREHEADER
-  PBITMAPCOREHEADER* = ptr BITMAPCOREHEADER
-  RGBTRIPLE* {.final, pure.} = object
-    rgbtBlue*: int8
-    rgbtGreen*: int8
-    rgbtRed*: int8
-
-  TRGBTRIPLE* = RGBTRIPLE
-  PRGBTRIPLE* = ptr RGBTRIPLE
-  BITMAPCOREINFO* {.final, pure.} = object
-    bmciHeader*: BITMAPCOREHEADER
-    bmciColors*: array[0..0, RGBTRIPLE]
-
-  PBITMAPCOREINFO* = ptr BITMAPCOREINFO
-  LPBITMAPCOREINFO* = ptr BITMAPCOREINFO
-  TBITMAPCOREINFO* = BITMAPCOREINFO # error
-                                    #  WORD    bfReserved1;
-                                    #  WORD    bfReserved2;
-                                    # in declarator_list
-  BITMAPINFOHEADER* {.final, pure.} = object
-    biSize*: DWORD
-    biWidth*: LONG
-    biHeight*: LONG
-    biPlanes*: int16
-    biBitCount*: int16
-    biCompression*: DWORD
-    biSizeImage*: DWORD
-    biXPelsPerMeter*: LONG
-    biYPelsPerMeter*: LONG
-    biClrUsed*: DWORD
-    biClrImportant*: DWORD
-
-  LPBITMAPINFOHEADER* = ptr BITMAPINFOHEADER
-  TBITMAPINFOHEADER* = BITMAPINFOHEADER
-  PBITMAPINFOHEADER* = ptr BITMAPINFOHEADER
-  RGBQUAD* {.final, pure.} = object
-    rgbBlue*: int8
-    rgbGreen*: int8
-    rgbRed*: int8
-    rgbReserved*: int8
-
-  TRGBQUAD* = RGBQUAD
-  PRGBQUAD* = ptr RGBQUAD
-  BITMAPINFO* {.final, pure.} = object
-    bmiHeader*: BITMAPINFOHEADER
-    bmiColors*: array[0..0, RGBQUAD]
-
-  LPBITMAPINFO* = ptr BITMAPINFO
-  PBITMAPINFO* = ptr BITMAPINFO
-  TBITMAPINFO* = BITMAPINFO
-  FXPT2DOT30* = int32
-  LPFXPT2DOT30* = ptr FXPT2DOT30
-  TPFXPT2DOT30* = FXPT2DOT30
-  PPFXPT2DOT30* = ptr FXPT2DOT30
-  CIEXYZ* {.final, pure.} = object
-    ciexyzX*: FXPT2DOT30
-    ciexyzY*: FXPT2DOT30
-    ciexyzZ*: FXPT2DOT30
-
-  LPCIEXYZ* = ptr CIEXYZ
-  TPCIEXYZ* = CIEXYZ
-  PCIEXYZ* = ptr CIEXYZ
-  CIEXYZTRIPLE* {.final, pure.} = object
-    ciexyzRed*: CIEXYZ
-    ciexyzGreen*: CIEXYZ
-    ciexyzBlue*: CIEXYZ
-
-  LPCIEXYZTRIPLE* = ptr CIEXYZTRIPLE
-  TCIEXYZTRIPLE* = CIEXYZTRIPLE
-  PCIEXYZTRIPLE* = ptr CIEXYZTRIPLE
-  BITMAPV4HEADER* {.final, pure.} = object
-    bV4Size*: DWORD
-    bV4Width*: LONG
-    bV4Height*: LONG
-    bV4Planes*: int16
-    bV4BitCount*: int16
-    bV4V4Compression*: DWORD
-    bV4SizeImage*: DWORD
-    bV4XPelsPerMeter*: LONG
-    bV4YPelsPerMeter*: LONG
-    bV4ClrUsed*: DWORD
-    bV4ClrImportant*: DWORD
-    bV4RedMask*: DWORD
-    bV4GreenMask*: DWORD
-    bV4BlueMask*: DWORD
-    bV4AlphaMask*: DWORD
-    bV4CSType*: DWORD
-    bV4Endpoints*: CIEXYZTRIPLE
-    bV4GammaRed*: DWORD
-    bV4GammaGreen*: DWORD
-    bV4GammaBlue*: DWORD
-
-  LPBITMAPV4HEADER* = ptr BITMAPV4HEADER
-  TBITMAPV4HEADER* = BITMAPV4HEADER
-  PBITMAPV4HEADER* = ptr BITMAPV4HEADER
-  BITMAPFILEHEADER* {.final, pure.} = object
-    bfType*: int16
-    bfSize*: DWord
-    bfReserved1*: int16
-    bfReserved2*: int16
-    bfOffBits*: DWord
-
-  BLOB* {.final, pure.} = object
-    cbSize*: ULONG
-    pBlobData*: ptr int8
-
-  TBLOB* = BLOB
-  PBLOB* = ptr BLOB
-  SHITEMID* {.final, pure.} = object
-    cb*: USHORT
-    abID*: array[0..0, int8]
-
-  LPSHITEMID* = ptr SHITEMID
-  LPCSHITEMID* = ptr SHITEMID
-  TSHITEMID* = SHITEMID
-  PSHITEMID* = ptr SHITEMID
-  ITEMIDLIST* {.final, pure.} = object
-    mkid*: SHITEMID
-
-  LPITEMIDLIST* = ptr ITEMIDLIST
-  LPCITEMIDLIST* = ptr ITEMIDLIST
-  TITEMIDLIST* = ITEMIDLIST
-  PITEMIDLIST* = ptr ITEMIDLIST
-  BROWSEINFO* {.final, pure.} = object
-    hwndOwner*: HWND
-    pidlRoot*: LPCITEMIDLIST
-    pszDisplayName*: LPSTR
-    lpszTitle*: LPCSTR
-    ulFlags*: UINT
-    lpfn*: BFFCALLBACK
-    lParam*: LPARAM
-    iImage*: int32
-
-  LPBROWSEINFO* = ptr BROWSEINFO
-  Tbrowseinfo* = BROWSEINFO
-  PBROWSEINFO* = ptr BROWSEINFO
-  FILETIME* {.final, pure.} = object
-    dwLowDateTime*: DWORD
-    dwHighDateTime*: DWORD
-
-  LPFILETIME* = ptr FILETIME
-  TFILETIME* = FILETIME
-  PFILETIME* = ptr FILETIME
-  BY_HANDLE_FILE_INFORMATION* {.final, pure.} = object
-    dwFileAttributes*: DWORD
-    ftCreationTime*: FILETIME
-    ftLastAccessTime*: FILETIME
-    ftLastWriteTime*: FILETIME
-    dwVolumeSerialNumber*: DWORD
-    nFileSizeHigh*: DWORD
-    nFileSizeLow*: DWORD
-    nNumberOfLinks*: DWORD
-    nFileIndexHigh*: DWORD
-    nFileIndexLow*: DWORD
-
-  LPBY_HANDLE_FILE_INFORMATION* = ptr BY_HANDLE_FILE_INFORMATION
-  TBYHANDLEFILEINFORMATION* = BY_HANDLE_FILE_INFORMATION
-  PBYHANDLEFILEINFORMATION* = ptr BY_HANDLE_FILE_INFORMATION
-  FIXED* {.final, pure.} = object
-    fract*: int16
-    value*: SHORT
-
-  TFIXED* = FIXED
-  PFIXED* = ptr FIXED
-  POINTFX* {.final, pure.} = object
-    x*: FIXED
-    y*: FIXED
-
-  TPOINTFX* = POINTFX
-  PPOINTFX* = ptr POINTFX
-  POINTL* {.final, pure.} = object
-    x*: LONG
-    y*: LONG
-
-  TPOINTL* = POINTL
-  PPOINTL* = ptr POINTL
-  TSmallPoint* {.final, pure.} = object
-    X*, Y*: SHORT
-
-  POINTS* {.final, pure.} = object
-    x*: SHORT
-    y*: SHORT
-
-  TPOINTS* = POINTS
-  PPOINTS* = ptr POINTS
-  CANDIDATEFORM* {.final, pure.} = object
-    dwIndex*: DWORD
-    dwStyle*: DWORD
-    ptCurrentPos*: POINT
-    rcArea*: RECT
-
-  LPCANDIDATEFORM* = ptr CANDIDATEFORM
-  TCANDIDATEFORM* = CANDIDATEFORM
-  PCANDIDATEFORM* = ptr CANDIDATEFORM
-  CANDIDATELIST* {.final, pure.} = object
-    dwSize*: DWORD
-    dwStyle*: DWORD
-    dwCount*: DWORD
-    dwSelection*: DWORD
-    dwPageStart*: DWORD
-    dwPageSize*: DWORD
-    dwOffset*: array[0..0, DWORD]
-
-  LPCANDIDATELIST* = ptr CANDIDATELIST
-  TCANDIDATELIST* = CANDIDATELIST
-  PCANDIDATELIST* = ptr CANDIDATELIST
-  CREATESTRUCT* {.final, pure.} = object
-    lpCreateParams*: LPVOID
-    hInstance*: HINST
-    hMenu*: HMENU
-    hwndParent*: HWND
-    cy*: int32
-    cx*: int32
-    y*: int32
-    x*: int32
-    style*: LONG
-    lpszName*: LPCTSTR
-    lpszClass*: LPCTSTR
-    dwExStyle*: DWORD
-
-  LPCREATESTRUCT* = ptr CREATESTRUCT
-  TCREATESTRUCT* = CREATESTRUCT
-  PCREATESTRUCT* = ptr CREATESTRUCT
-  CBT_CREATEWND* {.final, pure.} = object
-    lpcs*: LPCREATESTRUCT
-    hwndInsertAfter*: HWND
-
-  TCBT_CREATEWND* = CBT_CREATEWND
-  PCBT_CREATEWND* = ptr CBT_CREATEWND
-  CBTACTIVATESTRUCT* {.final, pure.} = object
-    fMouse*: WINBOOL
-    hWndActive*: HWND
-
-  TCBTACTIVATESTRUCT* = CBTACTIVATESTRUCT
-  PCBTACTIVATESTRUCT* = ptr CBTACTIVATESTRUCT
-  CHAR_INFO* {.final, pure.} = object
-    UnicodeChar*: WCHAR
-    Attributes*: int16        # other union part: AsciiChar : CHAR
-
-  TCHAR_INFO* = CHAR_INFO
-  PCHAR_INFO* = ptr CHAR_INFO
-  CHARFORMAT* {.final, pure.} = object
-    cbSize*: UINT
-    dwMask*: DWORD
-    dwEffects*: DWORD
-    yHeight*: LONG
-    yOffset*: LONG
-    crTextColor*: COLORREF
-    bCharSet*: int8
-    bPitchAndFamily*: int8
-    szFaceName*: array[0..(LF_FACESIZE) - 1, TCHAR]
-
-  Tcharformat* = CHARFORMAT
-  Pcharformat* = ptr CHARFORMAT
-  CHARRANGE* {.final, pure.} = object
-    cpMin*: LONG
-    cpMax*: LONG
-
-  Tcharrange* = CHARRANGE
-  Pcharrange* = ptr CHARRANGE
-  CHARSET* {.final, pure.} = object
-    aflBlock*: array[0..2, DWORD]
-    flLang*: DWORD
-
-  TCHARSET* = CHARSET
-  PCHARSET* = ptr CHARSET
-  FONTSIGNATURE* {.final, pure.} = object
-    fsUsb*: array[0..3, DWORD]
-    fsCsb*: array[0..1, DWORD]
-
-  LPFONTSIGNATURE* = ptr FONTSIGNATURE
-  TFONTSIGNATURE* = FONTSIGNATURE
-  PFONTSIGNATURE* = ptr FONTSIGNATURE
-  CHARSETINFO* {.final, pure.} = object
-    ciCharset*: UINT
-    ciACP*: UINT
-    fs*: FONTSIGNATURE
-
-  LPCHARSETINFO* = ptr CHARSETINFO
-  TCHARSETINFO* = CHARSETINFO
-  PCHARSETINFO* = ptr CHARSETINFO #CHOOSECOLOR = record confilcts with function ChooseColor
-  TCHOOSECOLOR* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hInstance*: HWND
-    rgbResult*: COLORREF
-    lpCustColors*: ptr COLORREF
-    Flags*: DWORD
-    lCustData*: LPARAM
-    lpfnHook*: LPCCHOOKPROC
-    lpTemplateName*: LPCTSTR
-
-  LPCHOOSECOLOR* = ptr TCHOOSECOLOR
-  PCHOOSECOLOR* = ptr TCHOOSECOLOR
-  LOGFONT* {.final, pure.} = object
-    lfHeight*: LONG
-    lfWidth*: LONG
-    lfEscapement*: LONG
-    lfOrientation*: LONG
-    lfWeight*: LONG
-    lfItalic*: int8
-    lfUnderline*: int8
-    lfStrikeOut*: int8
-    lfCharSet*: int8
-    lfOutPrecision*: int8
-    lfClipPrecision*: int8
-    lfQuality*: int8
-    lfPitchAndFamily*: int8
-    lfFaceName*: array[0..(LF_FACESIZE) - 1, TCHAR]
-
-  LPLOGFONT* = ptr LOGFONT
-  TLOGFONT* = LOGFONT
-  TLOGFONTA* = LOGFONT
-  PLOGFONT* = ptr LOGFONT
-  PLOGFONTA* = PLOGFONT
-  LOGFONTW* {.final, pure.} = object
-    lfHeight*: LONG
-    lfWidth*: LONG
-    lfEscapement*: LONG
-    lfOrientation*: LONG
-    lfWeight*: LONG
-    lfItalic*: int8
-    lfUnderline*: int8
-    lfStrikeOut*: int8
-    lfCharSet*: int8
-    lfOutPrecision*: int8
-    lfClipPrecision*: int8
-    lfQuality*: int8
-    lfPitchAndFamily*: int8
-    lfFaceName*: array[0..LF_FACESIZE - 1, WCHAR]
-
-  LPLOGFONTW* = ptr LOGFONTW
-  NPLOGFONTW* = ptr LOGFONTW
-  TLogFontW* = LOGFONTW
-  PLogFontW* = ptr TLogFontW
-  TCHOOSEFONT* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hDC*: HDC
-    lpLogFont*: LPLOGFONT
-    iPointSize*: WINT
-    Flags*: DWORD
-    rgbColors*: DWORD
-    lCustData*: LPARAM
-    lpfnHook*: LPCFHOOKPROC
-    lpTemplateName*: LPCTSTR
-    hInstance*: HINST
-    lpszStyle*: LPTSTR
-    nFontType*: int16
-    MISSING_ALIGNMENT*: int16
-    nSizeMin*: WINT
-    nSizeMax*: WINT
-
-  LPCHOOSEFONT* = ptr TCHOOSEFONT
-  PCHOOSEFONT* = ptr TCHOOSEFONT
-  CIDA* {.final, pure.} = object
-    cidl*: UINT
-    aoffset*: array[0..0, UINT]
-
-  LPIDA* = ptr CIDA
-  TIDA* = CIDA
-  PIDA* = ptr CIDA
-  CLIENTCREATESTRUCT* {.final, pure.} = object
-    hWindowMenu*: HANDLE
-    idFirstChild*: UINT
-
-  LPCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT
-  TCLIENTCREATESTRUCT* = CLIENTCREATESTRUCT
-  PCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT
-  CMINVOKECOMMANDINFO* {.final, pure.} = object
-    cbSize*: DWORD
-    fMask*: DWORD
-    hwnd*: HWND
-    lpVerb*: LPCSTR
-    lpParameters*: LPCSTR
-    lpDirectory*: LPCSTR
-    nShow*: int32
-    dwHotKey*: DWORD
-    hIcon*: HANDLE
-
-  LPCMINVOKECOMMANDINFO* = ptr CMINVOKECOMMANDINFO
-  TCMInvokeCommandInfo* = CMINVOKECOMMANDINFO
-  PCMInvokeCommandInfo* = ptr CMINVOKECOMMANDINFO
-  COLORADJUSTMENT* {.final, pure.} = object
-    caSize*: int16
-    caFlags*: int16
-    caIlluminantIndex*: int16
-    caRedGamma*: int16
-    caGreenGamma*: int16
-    caBlueGamma*: int16
-    caReferenceBlack*: int16
-    caReferenceWhite*: int16
-    caContrast*: SHORT
-    caBrightness*: SHORT
-    caColorfulness*: SHORT
-    caRedGreenTint*: SHORT
-
-  LPCOLORADJUSTMENT* = ptr COLORADJUSTMENT
-  TCOLORADJUSTMENT* = COLORADJUSTMENT
-  PCOLORADJUSTMENT* = ptr COLORADJUSTMENT
-  COLORMAP* {.final, pure.} = object
-    `from`*: COLORREF
-    `to`*: COLORREF          # XXX!
-
-  LPCOLORMAP* = ptr COLORMAP
-  TCOLORMAP* = COLORMAP
-  PCOLORMAP* = ptr COLORMAP
-  DCB* {.final, pure.} = object
-    DCBlength*: DWORD
-    BaudRate*: DWORD
-    flags*: DWORD
-    wReserved*: int16
-    XonLim*: int16
-    XoffLim*: int16
-    ByteSize*: int8
-    Parity*: int8
-    StopBits*: int8
-    XonChar*: char
-    XoffChar*: char
-    ErrorChar*: char
-    EofChar*: char
-    EvtChar*: char
-    wReserved1*: int16
-
-  LPDCB* = ptr DCB
-  TDCB* = DCB
-  PDCB* = ptr DCB
-
-const
-  bm_DCB_fBinary* = 0x00000001
-  bp_DCB_fBinary* = 0
-  bm_DCB_fParity* = 0x00000002
-  bp_DCB_fParity* = 1
-  bm_DCB_fOutxCtsFlow* = 0x00000004
-  bp_DCB_fOutxCtsFlow* = 2
-  bm_DCB_fOutxDsrFlow* = 0x00000008
-  bp_DCB_fOutxDsrFlow* = 3
-  bm_DCB_fDtrControl* = 0x00000030
-  bp_DCB_fDtrControl* = 4
-  bm_DCB_fDsrSensitivity* = 0x00000040
-  bp_DCB_fDsrSensitivity* = 6
-  bm_DCB_fTXContinueOnXoff* = 0x00000080
-  bp_DCB_fTXContinueOnXoff* = 7
-  bm_DCB_fOutX* = 0x00000100
-  bp_DCB_fOutX* = 8
-  bm_DCB_fInX* = 0x00000200
-  bp_DCB_fInX* = 9
-  bm_DCB_fErrorChar* = 0x00000400
-  bp_DCB_fErrorChar* = 10
-  bm_DCB_fNull* = 0x00000800
-  bp_DCB_fNull* = 11
-  bm_DCB_fRtsControl* = 0x00003000
-  bp_DCB_fRtsControl* = 12
-  bm_DCB_fAbortOnError* = 0x00004000
-  bp_DCB_fAbortOnError* = 14
-  bm_DCB_fDummy2* = 0xFFFF8000
-  bp_DCB_fDummy2* = 15
-
-proc fBinary*(a: var DCB): DWORD
-proc set_fBinary*(a: var DCB, fBinary: DWORD)
-proc fParity*(a: var DCB): DWORD
-proc set_fParity*(a: var DCB, fParity: DWORD)
-proc fOutxCtsFlow*(a: var DCB): DWORD
-proc set_fOutxCtsFlow*(a: var DCB, fOutxCtsFlow: DWORD)
-proc fOutxDsrFlow*(a: var DCB): DWORD
-proc set_fOutxDsrFlow*(a: var DCB, fOutxDsrFlow: DWORD)
-proc fDtrControl*(a: var DCB): DWORD
-proc set_fDtrControl*(a: var DCB, fDtrControl: DWORD)
-proc fDsrSensitivity*(a: var DCB): DWORD
-proc set_fDsrSensitivity*(a: var DCB, fDsrSensitivity: DWORD)
-proc fTXContinueOnXoff*(a: var DCB): DWORD
-proc set_fTXContinueOnXoff*(a: var DCB, fTXContinueOnXoff: DWORD)
-proc fOutX*(a: var DCB): DWORD
-proc set_fOutX*(a: var DCB, fOutX: DWORD)
-proc fInX*(a: var DCB): DWORD
-proc set_fInX*(a: var DCB, fInX: DWORD)
-proc fErrorChar*(a: var DCB): DWORD
-proc set_fErrorChar*(a: var DCB, fErrorChar: DWORD)
-proc fNull*(a: var DCB): DWORD
-proc set_fNull*(a: var DCB, fNull: DWORD)
-proc fRtsControl*(a: var DCB): DWORD
-proc set_fRtsControl*(a: var DCB, fRtsControl: DWORD)
-proc fAbortOnError*(a: var DCB): DWORD
-proc set_fAbortOnError*(a: var DCB, fAbortOnError: DWORD)
-proc fDummy2*(a: var DCB): DWORD
-proc set_fDummy2*(a: var DCB, fDummy2: DWORD)
-type
-  COMMCONFIG* {.final, pure.} = object
-    dwSize*: DWORD
-    wVersion*: int16
-    wReserved*: int16
-    dcb*: DCB
-    dwProviderSubType*: DWORD
-    dwProviderOffset*: DWORD
-    dwProviderSize*: DWORD
-    wcProviderData*: array[0..0, WCHAR]
-
-  LPCOMMCONFIG* = ptr COMMCONFIG
-  TCOMMCONFIG* = COMMCONFIG
-  PCOMMCONFIG* = ptr COMMCONFIG
-  COMMPROP* {.final, pure.} = object
-    wPacketLength*: int16
-    wPacketVersion*: int16
-    dwServiceMask*: DWORD
-    dwReserved1*: DWORD
-    dwMaxTxQueue*: DWORD
-    dwMaxRxQueue*: DWORD
-    dwMaxBaud*: DWORD
-    dwProvSubType*: DWORD
-    dwProvCapabilities*: DWORD
-    dwSettableParams*: DWORD
-    dwSettableBaud*: DWORD
-    wSettableData*: int16
-    wSettableStopParity*: int16
-    dwCurrentTxQueue*: DWORD
-    dwCurrentRxQueue*: DWORD
-    dwProvSpec1*: DWORD
-    dwProvSpec2*: DWORD
-    wcProvChar*: array[0..0, WCHAR]
-
-  LPCOMMPROP* = ptr COMMPROP
-  TCOMMPROP* = COMMPROP
-  PCOMMPROP* = ptr COMMPROP
-  COMMTIMEOUTS* {.final, pure.} = object
-    ReadIntervalTimeout*: DWORD
-    ReadTotalTimeoutMultiplier*: DWORD
-    ReadTotalTimeoutConstant*: DWORD
-    WriteTotalTimeoutMultiplier*: DWORD
-    WriteTotalTimeoutConstant*: DWORD
-
-  LPCOMMTIMEOUTS* = ptr COMMTIMEOUTS
-  TCOMMTIMEOUTS* = COMMTIMEOUTS
-  PCOMMTIMEOUTS* = ptr COMMTIMEOUTS
-  COMPAREITEMSTRUCT* {.final, pure.} = object
-    CtlType*: UINT
-    CtlID*: UINT
-    hwndItem*: HWND
-    itemID1*: UINT
-    itemData1*: ULONG_PTR
-    itemID2*: UINT
-    itemData2*: ULONG_PTR
-
-  TCOMPAREITEMSTRUCT* = COMPAREITEMSTRUCT
-  PCOMPAREITEMSTRUCT* = ptr COMPAREITEMSTRUCT
-  COMPCOLOR* {.final, pure.} = object
-    crText*: COLORREF
-    crBackground*: COLORREF
-    dwEffects*: DWORD
-
-  TCOMPCOLOR* = COMPCOLOR
-  PCOMPCOLOR* = ptr COMPCOLOR
-  COMPOSITIONFORM* {.final, pure.} = object
-    dwStyle*: DWORD
-    ptCurrentPos*: POINT
-    rcArea*: RECT
-
-  LPCOMPOSITIONFORM* = ptr COMPOSITIONFORM
-  TCOMPOSITIONFORM* = COMPOSITIONFORM
-  PCOMPOSITIONFORM* = ptr COMPOSITIONFORM #     TComStatFlags = set of (fCtsHold, fDsrHold, fRlsdHold , fXoffHold ,
-                                          #                    fXoffSent , fEof ,  fTxim  , fReserved);
-  COMSTAT* {.final, pure.} = object
-    flag0*: DWORD             # can't use tcomstatflags, set packing issues
-                              # and conflicts with macro's
-    cbInQue*: DWORD
-    cbOutQue*: DWORD
-
-  LPCOMSTAT* = ptr COMSTAT
-  TCOMSTAT* = COMSTAT
-  PCOMSTAT* = ptr COMSTAT
-
-const
-  bm_COMSTAT_fCtsHold* = 0x00000001
-  bp_COMSTAT_fCtsHold* = 0
-  bm_COMSTAT_fDsrHold* = 0x00000002
-  bp_COMSTAT_fDsrHold* = 1
-  bm_COMSTAT_fRlsdHold* = 0x00000004
-  bp_COMSTAT_fRlsdHold* = 2
-  bm_COMSTAT_fXoffHold* = 0x00000008
-  bp_COMSTAT_fXoffHold* = 3
-  bm_COMSTAT_fXoffSent* = 0x00000010
-  bp_COMSTAT_fXoffSent* = 4
-  bm_COMSTAT_fEof* = 0x00000020
-  bp_COMSTAT_fEof* = 5
-  bm_COMSTAT_fTxim* = 0x00000040
-  bp_COMSTAT_fTxim* = 6
-  bm_COMSTAT_fReserved* = 0xFFFFFF80
-  bp_COMSTAT_fReserved* = 7
-
-proc fCtsHold*(a: var COMSTAT): DWORD
-  # should be renamed to get_<x>?
-proc set_fCtsHold*(a: var COMSTAT, fCtsHold: DWORD)
-proc fDsrHold*(a: var COMSTAT): DWORD
-proc set_fDsrHold*(a: var COMSTAT, fDsrHold: DWORD)
-proc fRlsdHold*(a: var COMSTAT): DWORD
-proc set_fRlsdHold*(a: var COMSTAT, fRlsdHold: DWORD)
-proc fXoffHold*(a: var COMSTAT): DWORD
-proc set_fXoffHold*(a: var COMSTAT, fXoffHold: DWORD)
-proc fXoffSent*(a: var COMSTAT): DWORD
-proc set_fXoffSent*(a: var COMSTAT, fXoffSent: DWORD)
-proc fEof*(a: var COMSTAT): DWORD
-proc set_fEof*(a: var COMSTAT, fEof: DWORD)
-proc fTxim*(a: var COMSTAT): DWORD
-proc set_fTxim*(a: var COMSTAT, fTxim: DWORD)
-proc fReserved*(a: var COMSTAT): DWORD
-proc set_fReserved*(a: var COMSTAT, fReserved: DWORD)
-type
-  CONSOLE_CURSOR_INFO* {.final, pure.} = object
-    dwSize*: DWORD
-    bVisible*: WINBOOL
-
-  PCONSOLE_CURSOR_INFO* = ptr CONSOLE_CURSOR_INFO
-  TCONSOLECURSORINFO* = CONSOLE_CURSOR_INFO
-  TCURSORINFO* = CONSOLE_CURSOR_INFO
-  COORD* {.final, pure.} = object
-    X*: SHORT
-    Y*: SHORT
-
-  TCOORD* = COORD
-  PCOORD* = ptr COORD
-  SMALL_RECT* {.final, pure.} = object
-    Left*: SHORT
-    Top*: SHORT
-    Right*: SHORT
-    Bottom*: SHORT
-
-  TSMALL_RECT* = SMALL_RECT
-  PSMALL_RECT* = ptr SMALL_RECT
-  CONSOLE_SCREEN_BUFFER_INFO* {.final, pure.} = object
-    dwSize*: COORD
-    dwCursorPosition*: COORD
-    wAttributes*: int16
-    srWindow*: SMALL_RECT
-    dwMaximumWindowSize*: COORD
-
-  PCONSOLE_SCREEN_BUFFER_INFO* = ptr CONSOLE_SCREEN_BUFFER_INFO
-  TCONSOLESCREENBUFFERINFO* = CONSOLE_SCREEN_BUFFER_INFO
-
-when defined(i386):
-  type
-    FLOATING_SAVE_AREA* {.final, pure.} = object
-      ControlWord*: DWORD
-      StatusWord*: DWORD
-      TagWord*: DWORD
-      ErrorOffset*: DWORD
-      ErrorSelector*: DWORD
-      DataOffset*: DWORD
-      DataSelector*: DWORD
-      RegisterArea*: array[0..79, int8]
-      Cr0NpxState*: DWORD
-
-    TFLOATINGSAVEAREA* = FLOATING_SAVE_AREA
-    PFLOATINGSAVEAREA* = ptr FLOATING_SAVE_AREA
-    CONTEXT* {.final, pure.} = object
-      ContextFlags*: DWORD
-      Dr0*: DWORD
-      Dr1*: DWORD
-      Dr2*: DWORD
-      Dr3*: DWORD
-      Dr6*: DWORD
-      Dr7*: DWORD
-      FloatSave*: FLOATING_SAVE_AREA
-      SegGs*: DWORD
-      SegFs*: DWORD
-      SegEs*: DWORD
-      SegDs*: DWORD
-      Edi*: DWORD
-      Esi*: DWORD
-      Ebx*: DWORD
-      Edx*: DWORD
-      Ecx*: DWORD
-      Eax*: DWORD
-      Ebp*: DWORD
-      Eip*: DWORD
-      SegCs*: DWORD
-      EFlags*: DWORD
-      Esp*: DWORD
-      SegSs*: DWORD
-
-when defined(x86_64):
-  #
-  # Define 128-bit 16-byte aligned xmm register type.
-  #
-  type
-    M128A* {.final, pure.} = object
-      Low*: ULONGLONG
-      High*: LONGLONG
-
-    TM128A* = M128A
-    PM128A* = TM128A #
-                     # Format of data for 32-bit fxsave/fxrstor instructions.
-                     #
-                     #typedef struct _XMM_SAVE_AREA32 {
-  type
-    XMM_SAVE_AREA32* {.final, pure.} = object
-      ControlWord*: int16
-      StatusWord*: int16
-      TagWord*: int8
-      Reserved1*: int8
-      ErrorOpcode*: int16
-      ErrorOffset*: DWORD
-      ErrorSelector*: int16
-      Reserved2*: int16
-      DataOffset*: DWORD
-      DataSelector*: int16
-      Reserved3*: int16
-      MxCsr*: DWORD
-      MxCsr_Mask*: DWORD
-      FloatRegisters*: array[0..7, M128A]
-      XmmRegisters*: array[0..16, M128A]
-      Reserved4*: array[0..95, int8]
-
-    TXmmSaveArea* = XMM_SAVE_AREA32
-    PXmmSaveArea* = ptr TXmmSaveArea
-  type
-    CONTEXT* {.final, pure.} = object
-      P1Home*: DWORD64
-      P2Home*: DWORD64
-      P3Home*: DWORD64
-      P4Home*: DWORD64
-      P5Home*: DWORD64
-      P6Home*: DWORD64        #
-                              # Control flags.
-                              #
-      ContextFlags*: DWORD
-      MxCsr*: DWORD           #
-                              # Segment Registers and processor flags.
-                              #
-      SegCs*: int16
-      SegDs*: int16
-      SegEs*: int16
-      SegFs*: int16
-      SegGs*: int16
-      SegSs*: int16
-      EFlags*: DWORD          #
-                              # Debug registers
-                              #
-      Dr0*: DWORD64
-      Dr1*: DWORD64
-      Dr2*: DWORD64
-      Dr3*: DWORD64
-      Dr6*: DWORD64
-      Dr7*: DWORD64           #
-                              # Integer registers.
-                              #
-      Rax*: DWORD64
-      Rcx*: DWORD64
-      Rdx*: DWORD64
-      Rbx*: DWORD64
-      Rsp*: DWORD64
-      Rbp*: DWORD64
-      Rsi*: DWORD64
-      Rdi*: DWORD64
-      R8*: DWORD64
-      R9*: DWORD64
-      R10*: DWORD64
-      R11*: DWORD64
-      R12*: DWORD64
-      R13*: DWORD64
-      R14*: DWORD64
-      R15*: DWORD64           #
-                              # Program counter.
-                              #
-      Rip*: DWORD64           #
-                              # Floating point state.
-                              #
-      FltSave*: XMM_SAVE_AREA32 # MWE: only translated the FltSave part of the union
-                                #
-                                # Vector registers.
-                                #
-      VectorRegister*: array[0..25, M128A]
-      VectorControl*: DWORD64 #
-                              # Special debug control registers.
-                              #
-      DebugControl*: DWORD64
-      LastBranchToRip*: DWORD64
-      LastBranchFromRip*: DWORD64
-      LastExceptionToRip*: DWORD64
-      LastExceptionFromRip*: DWORD64
-
-when defined(powerpc32):
-  # ppc
-  # Floating point registers returned when CONTEXT_FLOATING_POINT is set
-  # Integer registers returned when CONTEXT_INTEGER is set.
-  # Condition register
-  # Fixed point exception register
-  # The following are set when CONTEXT_CONTROL is set.
-  # Machine status register
-  # Instruction address register
-  # Link register
-  # Control register
-  # Control which context values are returned
-  # Registers returned if CONTEXT_DEBUG_REGISTERS is set.
-  # Breakpoint Register 1
-  # Breakpoint Register 2
-  # Breakpoint Register 3
-  # Breakpoint Register 4
-  # Breakpoint Register 5
-  # Breakpoint Register 6
-  # Debug Status Register
-  # Debug Control Register
-  type
-    CONTEXT* {.final, pure.} = object
-      Fpr0*: float64
-      Fpr1*: float64
-      Fpr2*: float64
-      Fpr3*: float64
-      Fpr4*: float64
-      Fpr5*: float64
-      Fpr6*: float64
-      Fpr7*: float64
-      Fpr8*: float64
-      Fpr9*: float64
-      Fpr10*: float64
-      Fpr11*: float64
-      Fpr12*: float64
-      Fpr13*: float64
-      Fpr14*: float64
-      Fpr15*: float64
-      Fpr16*: float64
-      Fpr17*: float64
-      Fpr18*: float64
-      Fpr19*: float64
-      Fpr20*: float64
-      Fpr21*: float64
-      Fpr22*: float64
-      Fpr23*: float64
-      Fpr24*: float64
-      Fpr25*: float64
-      Fpr26*: float64
-      Fpr27*: float64
-      Fpr28*: float64
-      Fpr29*: float64
-      Fpr30*: float64
-      Fpr31*: float64
-      Fpscr*: float64
-      Gpr0*: DWORD
-      Gpr1*: DWORD
-      Gpr2*: DWORD
-      Gpr3*: DWORD
-      Gpr4*: DWORD
-      Gpr5*: DWORD
-      Gpr6*: DWORD
-      Gpr7*: DWORD
-      Gpr8*: DWORD
-      Gpr9*: DWORD
-      Gpr10*: DWORD
-      Gpr11*: DWORD
-      Gpr12*: DWORD
-      Gpr13*: DWORD
-      Gpr14*: DWORD
-      Gpr15*: DWORD
-      Gpr16*: DWORD
-      Gpr17*: DWORD
-      Gpr18*: DWORD
-      Gpr19*: DWORD
-      Gpr20*: DWORD
-      Gpr21*: DWORD
-      Gpr22*: DWORD
-      Gpr23*: DWORD
-      Gpr24*: DWORD
-      Gpr25*: DWORD
-      Gpr26*: DWORD
-      Gpr27*: DWORD
-      Gpr28*: DWORD
-      Gpr29*: DWORD
-      Gpr30*: DWORD
-      Gpr31*: DWORD
-      Cr*: DWORD
-      Xer*: DWORD
-      Msr*: DWORD
-      Iar*: DWORD
-      Lr*: DWORD
-      Ctr*: DWORD
-      ContextFlags*: DWORD
-      Fill*: array[0..2, DWORD]
-      Dr0*: DWORD
-      Dr1*: DWORD
-      Dr2*: DWORD
-      Dr3*: DWORD
-      Dr4*: DWORD
-      Dr5*: DWORD
-      Dr6*: DWORD
-      Dr7*: DWORD
-
-type
-  LPCONTEXT* = ptr CONTEXT
-  TCONTEXT* = CONTEXT
-  PCONTEXT* = ptr CONTEXT
-
-type
-  LIST_ENTRY* {.final, pure.} = object
-    Flink*: ptr LIST_ENTRY
-    Blink*: ptr LIST_ENTRY
-
-  TLISTENTRY* = LIST_ENTRY
-  PLISTENTRY* = ptr LIST_ENTRY
-  CRITICAL_SECTION_DEBUG* {.final, pure.} = object
-    `type`*: int16
-    CreatorBackTraceIndex*: int16
-    CriticalSection*: ptr TCRITICAL_SECTION
-    ProcessLocksList*: LIST_ENTRY
-    EntryCount*: DWORD
-    ContentionCount*: DWORD
-    Depth*: DWORD
-    OwnerBackTrace*: array[0..4, PVOID]
-
-  TRTL_CRITICAL_SECTION* {.final, pure.} = object
-    DebugInfo*: ptr CRITICAL_SECTION_DEBUG
-    LockCount*: int32
-    RecursionCount*: int32
-    OwningThread*: Handle
-    LockSemaphore*: Handle
-    Reserved*: DWORD
-
-  PRTLCriticalSection* = ptr TRTLCriticalSection
-
-  LPCRITICAL_SECTION_DEBUG* = ptr CRITICAL_SECTION_DEBUG
-  PCRITICAL_SECTION_DEBUG* = ptr CRITICAL_SECTION_DEBUG
-  TCRITICALSECTIONDEBUG* = CRITICAL_SECTION_DEBUG
-  TCRITICAL_SECTION* = TRTLCriticalSection
-  PCRITICAL_SECTION* = PRTLCriticalSection
-  LPCRITICAL_SECTION* = PRTLCriticalSection
-  SECURITY_QUALITY_OF_SERVICE* {.final, pure.} = object
-    len*: DWORD
-    ImpersonationLevel*: SECURITY_IMPERSONATION_LEVEL
-    ContextTrackingMode*: WINBOOL
-    EffectiveOnly*: bool
-
-  PSECURITY_QUALITY_OF_SERVICE* = ptr SECURITY_QUALITY_OF_SERVICE
-  TSECURITYQUALITYOFSERVICE* = SECURITY_QUALITY_OF_SERVICE
-  CONVCONTEXT* {.final, pure.} = object
-    cb*: UINT
-    wFlags*: UINT
-    wCountryID*: UINT
-    iCodePage*: int32
-    dwLangID*: DWORD
-    dwSecurity*: DWORD
-    qos*: SECURITY_QUALITY_OF_SERVICE
-
-  TCONVCONTEXT* = CONVCONTEXT
-  PCONVCONTEXT* = ptr CONVCONTEXT
-  CONVINFO* {.final, pure.} = object
-    cb*: DWORD
-    hUser*: DWORD
-    hConvPartner*: HCONV
-    hszSvcPartner*: HSZ
-    hszServiceReq*: HSZ
-    hszTopic*: HSZ
-    hszItem*: HSZ
-    wFmt*: UINT
-    wType*: UINT
-    wStatus*: UINT
-    wConvst*: UINT
-    wLastError*: UINT
-    hConvList*: HCONVLIST
-    ConvCtxt*: CONVCONTEXT
-    hwnd*: HWND
-    hwndPartner*: HWND
-
-  TCONVINFO* = CONVINFO
-  PCONVINFO* = ptr CONVINFO
-  COPYDATASTRUCT* {.final, pure.} = object
-    dwData*: DWORD
-    cbData*: DWORD
-    lpData*: PVOID
-
-  TCOPYDATASTRUCT* = COPYDATASTRUCT
-  PCOPYDATASTRUCT* = ptr COPYDATASTRUCT
-  CPINFO* {.final, pure.} = object
-    MaxCharSize*: UINT
-    DefaultChar*: array[0..(MAX_DEFAULTCHAR) - 1, int8]
-    LeadByte*: array[0..(MAX_LEADBYTES) - 1, int8]
-
-  LPCPINFO* = ptr CPINFO
-  Tcpinfo* = CPINFO
-  Pcpinfo* = ptr CPINFO
-  CPLINFO* {.final, pure.} = object
-    idIcon*: int32
-    idName*: int32
-    idInfo*: int32
-    lData*: LONG
-
-  TCPLINFO* = CPLINFO
-  PCPLINFO* = ptr CPLINFO
-  CREATE_PROCESS_DEBUG_INFO* {.final, pure.} = object
-    hFile*: HANDLE
-    hProcess*: HANDLE
-    hThread*: HANDLE
-    lpBaseOfImage*: LPVOID
-    dwDebugInfoFileOffset*: DWORD
-    nDebugInfoSize*: DWORD
-    lpThreadLocalBase*: LPVOID
-    lpStartAddress*: LPTHREAD_START_ROUTINE
-    lpImageName*: LPVOID
-    fUnicode*: int16
-
-  TCREATEPROCESSDEBUGINFO* = CREATE_PROCESS_DEBUG_INFO
-  PCREATEPROCESSDEBUGINFO* = ptr CREATE_PROCESS_DEBUG_INFO
-  CREATE_THREAD_DEBUG_INFO* {.final, pure.} = object
-    hThread*: HANDLE
-    lpThreadLocalBase*: LPVOID
-    lpStartAddress*: LPTHREAD_START_ROUTINE
-
-  TCREATETHREADDEBUGINFO* = CREATE_THREAD_DEBUG_INFO
-  PCREATETHREADDEBUGINFO* = ptr CREATE_THREAD_DEBUG_INFO #
-                                                         #   TODO: sockets
-                                                         #  typedef struct _SOCKET_ADDRESS {
-                                                         #    LPSOCKADDR lpSockaddr ;
-                                                         #    INT iSockaddrLength ;
-                                                         #  } SOCKET_ADDRESS,  PSOCKET_ADDRESS,  LPSOCKET_ADDRESS;
-                                                         #   }
-                                                         #  {
-                                                         #  typedef struct _CSADDR_INFO {
-                                                         #    SOCKET_ADDRESS  LocalAddr;
-                                                         #    SOCKET_ADDRESS  RemoteAddr;
-                                                         #    INT             iSocketType;
-                                                         #    INT             iProtocol;
-                                                         #  } CSADDR_INFO;
-                                                         #
-  CURRENCYFMT* {.final, pure.} = object
-    NumDigits*: UINT
-    LeadingZero*: UINT
-    Grouping*: UINT
-    lpDecimalSep*: LPTSTR
-    lpThousandSep*: LPTSTR
-    NegativeOrder*: UINT
-    PositiveOrder*: UINT
-    lpCurrencySymbol*: LPTSTR
-
-  Tcurrencyfmt* = CURRENCYFMT
-  Pcurrencyfmt* = ptr CURRENCYFMT
-  CURSORSHAPE* {.final, pure.} = object
-    xHotSpot*: int32
-    yHotSpot*: int32
-    cx*: int32
-    cy*: int32
-    cbWidth*: int32
-    Planes*: int8
-    BitsPixel*: int8
-
-  LPCURSORSHAPE* = ptr CURSORSHAPE
-  TCURSORSHAPE* = CURSORSHAPE
-  PCURSORSHAPE* = ptr CURSORSHAPE
-  CWPRETSTRUCT* {.final, pure.} = object
-    lResult*: LRESULT
-    lParam*: LPARAM
-    wParam*: WPARAM
-    message*: DWORD
-    hwnd*: HWND
-
-  TCWPRETSTRUCT* = CWPRETSTRUCT
-  PCWPRETSTRUCT* = ptr CWPRETSTRUCT
-  CWPSTRUCT* {.final, pure.} = object
-    lParam*: LPARAM
-    wParam*: WPARAM
-    message*: UINT
-    hwnd*: HWND
-
-  TCWPSTRUCT* = CWPSTRUCT
-  PCWPSTRUCT* = ptr CWPSTRUCT
-  DATATYPES_INFO_1* {.final, pure.} = object
-    pName*: LPTSTR
-
-  TDATATYPESINFO1* = DATATYPES_INFO_1
-  PDATATYPESINFO1* = ptr DATATYPES_INFO_1
-  DDEACK* {.final, pure.} = object
-    flag0*: int16
-
-  TDDEACK* = DDEACK
-  PDDEACK* = ptr DDEACK
-
-const
-  bm_DDEACK_bAppReturnCode* = 0x000000FF'i16
-  bp_DDEACK_bAppReturnCode* = 0'i16
-  bm_DDEACK_reserved* = 0x00003F00'i16
-  bp_DDEACK_reserved* = 8'i16
-  bm_DDEACK_fBusy* = 0x00004000'i16
-  bp_DDEACK_fBusy* = 14'i16
-  bm_DDEACK_fAck* = 0x00008000'i16
-  bp_DDEACK_fAck* = 15'i16
-
-proc bAppReturnCode*(a: var DDEACK): int16
-proc set_bAppReturnCode*(a: var DDEACK, bAppReturnCode: int16)
-proc reserved*(a: var DDEACK): int16
-proc set_reserved*(a: var DDEACK, reserved: int16)
-proc fBusy*(a: var DDEACK): int16
-proc set_fBusy*(a: var DDEACK, fBusy: int16)
-proc fAck*(a: var DDEACK): int16
-proc set_fAck*(a: var DDEACK, fAck: int16)
-type
-  DDEADVISE* {.final, pure.} = object
-    flag0*: int16
-    cfFormat*: SHORT
-
-  TDDEADVISE* = DDEADVISE
-  PDDEADVISE* = ptr DDEADVISE
-
-const
-  bm_DDEADVISE_reserved* = 0x00003FFF'i16
-  bp_DDEADVISE_reserved* = 0'i16
-  bm_DDEADVISE_fDeferUpd* = 0x00004000'i16
-  bp_DDEADVISE_fDeferUpd* = 14'i16
-  bm_DDEADVISE_fAckReq* = 0x00008000'i16
-  bp_DDEADVISE_fAckReq* = 15'i16
-
-proc reserved*(a: var DDEADVISE): int16
-proc set_reserved*(a: var DDEADVISE, reserved: int16)
-proc fDeferUpd*(a: var DDEADVISE): int16
-proc set_fDeferUpd*(a: var DDEADVISE, fDeferUpd: int16)
-proc fAckReq*(a: var DDEADVISE): int16
-proc set_fAckReq*(a: var DDEADVISE, fAckReq: int16)
-type
-  DDEDATA* {.final, pure.} = object
-    flag0*: int16
-    cfFormat*: SHORT
-    Value*: array[0..0, int8]
-
-  PDDEDATA* = ptr DDEDATA
-
-const
-  bm_DDEDATA_unused* = 0x00000FFF'i16
-  bp_DDEDATA_unused* = 0'i16
-  bm_DDEDATA_fResponse* = 0x00001000'i16
-  bp_DDEDATA_fResponse* = 12'i16
-  bm_DDEDATA_fRelease* = 0x00002000'i16
-  bp_DDEDATA_fRelease* = 13'i16
-  bm_DDEDATA_reserved* = 0x00004000'i16
-  bp_DDEDATA_reserved* = 14'i16
-  bm_DDEDATA_fAckReq* = 0x00008000'i16
-  bp_DDEDATA_fAckReq* = 15'i16
-
-proc unused*(a: var DDEDATA): int16
-proc set_unused*(a: var DDEDATA, unused: int16)
-proc fResponse*(a: var DDEDATA): int16
-proc set_fResponse*(a: var DDEDATA, fResponse: int16)
-proc fRelease*(a: var DDEDATA): int16
-proc set_fRelease*(a: var DDEDATA, fRelease: int16)
-proc reserved*(a: var DDEDATA): int16
-proc set_reserved*(a: var DDEDATA, reserved: int16)
-proc fAckReq*(a: var DDEDATA): int16
-proc set_fAckReq*(a: var DDEDATA, fAckReq: int16)
-type
-  DDELN* {.final, pure.} = object
-    flag0*: int16
-    cfFormat*: SHORT
-
-  TDDELN* = DDELN
-  PDDELN* = ptr DDELN
-
-const
-  bm_DDELN_unused* = 0x00001FFF'i16
-  bp_DDELN_unused* = 0'i16
-  bm_DDELN_fRelease* = 0x00002000'i16
-  bp_DDELN_fRelease* = 13'i16
-  bm_DDELN_fDeferUpd* = 0x00004000'i16
-  bp_DDELN_fDeferUpd* = 14'i16
-  bm_DDELN_fAckReq* = 0x00008000'i16
-  bp_DDELN_fAckReq* = 15'i16
-
-proc unused*(a: var DDELN): int16
-proc set_unused*(a: var DDELN, unused: int16)
-proc fRelease*(a: var DDELN): int16
-proc set_fRelease*(a: var DDELN, fRelease: int16)
-proc fDeferUpd*(a: var DDELN): int16
-proc set_fDeferUpd*(a: var DDELN, fDeferUpd: int16)
-proc fAckReq*(a: var DDELN): int16
-proc set_fAckReq*(a: var DDELN, fAckReq: int16)
-type
-  DDEML_MSG_HOOK_DATA* {.final, pure.} = object
-    uiLo*: UINT
-    uiHi*: UINT
-    cbData*: DWORD
-    Data*: array[0..7, DWORD]
-
-  TDDEMLMSGHOOKDATA* = DDEML_MSG_HOOK_DATA
-  PDDEMLMSGHOOKDATA* = ptr DDEML_MSG_HOOK_DATA
-  DDEPOKE* {.final, pure.} = object
-    flag0*: int16
-    cfFormat*: SHORT
-    Value*: array[0..0, int8]
-
-  TDDEPOKE* = DDEPOKE
-  PDDEPOKE* = ptr DDEPOKE
-
-const
-  bm_DDEPOKE_unused* = 0x00001FFF'i16
-  bp_DDEPOKE_unused* = 0'i16
-  bm_DDEPOKE_fRelease* = 0x00002000'i16
-  bp_DDEPOKE_fRelease* = 13'i16
-  bm_DDEPOKE_fReserved* = 0x0000C000'i16
-  bp_DDEPOKE_fReserved* = 14'i16
-
-proc unused*(a: var DDEPOKE): int16
-proc set_unused*(a: var DDEPOKE, unused: int16)
-proc fRelease*(a: var DDEPOKE): int16
-proc set_fRelease*(a: var DDEPOKE, fRelease: int16)
-proc fReserved*(a: var DDEPOKE): int16
-proc set_fReserved*(a: var DDEPOKE, fReserved: int16)
-type
-  DDEUP* {.final, pure.} = object
-    flag0*: int16
-    cfFormat*: SHORT
-    rgb*: array[0..0, int8]
-
-  TDDEUP* = DDEUP
-  PDDEUP* = ptr DDEUP
-
-const
-  bm_DDEUP_unused* = 0x00000FFF'i16
-  bp_DDEUP_unused* = 0'i16
-  bm_DDEUP_fAck* = 0x00001000'i16
-  bp_DDEUP_fAck* = 12'i16
-  bm_DDEUP_fRelease* = 0x00002000'i16
-  bp_DDEUP_fRelease* = 13'i16
-  bm_DDEUP_fReserved* = 0x00004000'i16
-  bp_DDEUP_fReserved* = 14'i16
-  bm_DDEUP_fAckReq* = 0x00008000'i16
-  bp_DDEUP_fAckReq* = 15'i16
-
-proc unused*(a: var DDEUP): int16
-proc set_unused*(a: var DDEUP, unused: int16)
-proc fAck*(a: var DDEUP): int16
-proc set_fAck*(a: var DDEUP, fAck: int16)
-proc fRelease*(a: var DDEUP): int16
-proc set_fRelease*(a: var DDEUP, fRelease: int16)
-proc fReserved*(a: var DDEUP): int16
-proc set_fReserved*(a: var DDEUP, fReserved: int16)
-proc fAckReq*(a: var DDEUP): int16
-proc set_fAckReq*(a: var DDEUP, fAckReq: int16)
-type
-  EXCEPTION_RECORD* {.final, pure.} = object
-    ExceptionCode*: DWORD
-    ExceptionFlags*: DWORD
-    ExceptionRecord*: ptr EXCEPTION_RECORD
-    ExceptionAddress*: PVOID
-    NumberParameters*: DWORD
-    ExceptionInformation*: array[0..(EXCEPTION_MAXIMUM_PARAMETERS) - 1,
-                                 ULONG_PTR]
-
-  PEXCEPTION_RECORD* = ptr EXCEPTION_RECORD
-  TEXCEPTIONRECORD* = EXCEPTION_RECORD
-  EXCEPTION_DEBUG_INFO* {.final, pure.} = object
-    ExceptionRecord*: EXCEPTION_RECORD
-    dwFirstChance*: DWORD
-
-  PEXCEPTION_DEBUG_INFO* = ptr EXCEPTION_DEBUG_INFO
-  TEXCEPTIONDEBUGINFO* = EXCEPTION_DEBUG_INFO
-  EXCEPTION_RECORD32* {.final, pure.} = object
-    ExceptionCode*: DWORD
-    ExceptionFlags*: DWORD
-    ExceptionRecord*: DWORD
-    ExceptionAddress*: DWORD
-    NumberParameters*: DWORD
-    ExceptionInformation*: array[0..(EXCEPTION_MAXIMUM_PARAMETERS) - 1, DWORD]
-
-  PEXCEPTION_RECORD32* = ptr EXCEPTION_RECORD32
-  TExceptionRecord32* = EXCEPTION_RECORD32
-  EXCEPTION_DEBUG_INFO32* {.final, pure.} = object
-    ExceptionRecord*: EXCEPTION_RECORD32
-    dwFirstChance*: DWORD
-
-  PEXCEPTION_DEBUG_INFO32* = ptr EXCEPTION_DEBUG_INFO32
-  TExceptionDebugInfo32* = EXCEPTION_DEBUG_INFO32
-  EXCEPTION_RECORD64* {.final, pure.} = object
-    ExceptionCode*: DWORD
-    ExceptionFlags*: DWORD
-    ExceptionRecord*: DWORD64
-    ExceptionAddress*: DWORD64
-    NumberParameters*: DWORD
-    unusedAlignment*: DWORD
-    ExceptionInformation*: array[0..(EXCEPTION_MAXIMUM_PARAMETERS) - 1, DWORD64]
-
-  PEXCEPTION_RECORD64* = ptr EXCEPTION_RECORD64
-  TExceptionRecord64* = EXCEPTION_RECORD64
-  EXCEPTION_DEBUG_INFO64* {.final, pure.} = object
-    ExceptionRecord*: EXCEPTION_RECORD64
-    dwFirstChance*: DWORD
-
-  PEXCEPTION_DEBUG_INFO64* = ptr EXCEPTION_DEBUG_INFO64
-  TExceptionDebugInfo64* = EXCEPTION_DEBUG_INFO64
-  EXIT_PROCESS_DEBUG_INFO* {.final, pure.} = object
-    dwExitCode*: DWORD
-
-  TEXITPROCESSDEBUGINFO* = EXIT_PROCESS_DEBUG_INFO
-  PEXITPROCESSDEBUGINFO* = ptr EXIT_PROCESS_DEBUG_INFO
-  EXIT_THREAD_DEBUG_INFO* {.final, pure.} = object
-    dwExitCode*: DWORD
-
-  TEXITTHREADDEBUGINFO* = EXIT_THREAD_DEBUG_INFO
-  PEXITTHREADDEBUGINFO* = ptr EXIT_THREAD_DEBUG_INFO
-  LOAD_DLL_DEBUG_INFO* {.final, pure.} = object
-    hFile*: HANDLE
-    lpBaseOfDll*: LPVOID
-    dwDebugInfoFileOffset*: DWORD
-    nDebugInfoSize*: DWORD
-    lpImageName*: LPVOID
-    fUnicode*: int16
-
-  TLOADDLLDEBUGINFO* = LOAD_DLL_DEBUG_INFO
-  PLOADDLLDEBUGINFO* = ptr LOAD_DLL_DEBUG_INFO
-  UNLOAD_DLL_DEBUG_INFO* {.final, pure.} = object
-    lpBaseOfDll*: LPVOID
-
-  TUNLOADDLLDEBUGINFO* = UNLOAD_DLL_DEBUG_INFO
-  PUNLOADDLLDEBUGINFO* = ptr UNLOAD_DLL_DEBUG_INFO
-  OUTPUT_DEBUG_STRING_INFO* {.final, pure.} = object
-    lpDebugStringData*: LPSTR
-    fUnicode*: int16
-    nDebugStringLength*: int16
-
-  TOUTPUTDEBUGSTRINGINFO* = OUTPUT_DEBUG_STRING_INFO
-  POUTPUTDEBUGSTRINGINFO* = ptr OUTPUT_DEBUG_STRING_INFO
-  RIP_INFO* {.final, pure.} = object
-    dwError*: DWORD
-    dwType*: DWORD
-
-  TRIPINFO* = RIP_INFO
-  PRIPINFO* = ptr RIP_INFO
-  DEBUG_EVENT* {.final, pure.} = object
-    dwDebugEventCode*: DWORD
-    dwProcessId*: DWORD
-    dwThreadId*: DWORD
-    data*: array[0..15, DWORD] #
-                               # case longint of
-                               # 0 : ( Exception : EXCEPTION_DEBUG_INFO );
-                               # 1 : ( CreateThread : CREATE_THREAD_DEBUG_INFO );
-                               # 2 : ( CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO );
-                               # 3 : ( ExitThread : EXIT_THREAD_DEBUG_INFO );
-                               # 4 : ( ExitProcess : EXIT_PROCESS_DEBUG_INFO );
-                               # 5 : ( LoadDll : LOAD_DLL_DEBUG_INFO );
-                               # 6 : ( UnloadDll : UNLOAD_DLL_DEBUG_INFO );
-                               # 7 : ( DebugString : OUTPUT_DEBUG_STRING_INFO );
-                               # 8 : ( RipInfo : RIP_INFO );
-
-  LPDEBUG_EVENT* = ptr DEBUG_EVENT
-  TDEBUGEVENT* = DEBUG_EVENT
-  PDEBUGEVENT* = ptr DEBUG_EVENT
-  DEBUGHOOKINFO* {.final, pure.} = object
-    idThread*: DWORD
-    idThreadInstaller*: DWORD
-    lParam*: LPARAM
-    wParam*: WPARAM
-    code*: int32
-
-  TDEBUGHOOKINFO* = DEBUGHOOKINFO
-  PDEBUGHOOKINFO* = ptr DEBUGHOOKINFO
-  DELETEITEMSTRUCT* {.final, pure.} = object
-    CtlType*: UINT
-    CtlID*: UINT
-    itemID*: UINT
-    hwndItem*: HWND
-    itemData*: ULONG_PTR
-
-  TDELETEITEMSTRUCT* = DELETEITEMSTRUCT
-  PDELETEITEMSTRUCT* = ptr DELETEITEMSTRUCT
-  DEV_BROADCAST_HDR* {.final, pure.} = object
-    dbch_size*: ULONG
-    dbch_devicetype*: ULONG
-    dbch_reserved*: ULONG
-
-  PDEV_BROADCAST_HDR* = ptr DEV_BROADCAST_HDR
-  TDEVBROADCASTHDR* = DEV_BROADCAST_HDR
-  DEV_BROADCAST_OEM* {.final, pure.} = object
-    dbco_size*: ULONG
-    dbco_devicetype*: ULONG
-    dbco_reserved*: ULONG
-    dbco_identifier*: ULONG
-    dbco_suppfunc*: ULONG
-
-  PDEV_BROADCAST_OEM* = ptr DEV_BROADCAST_OEM
-  TDEVBROADCASTOEM* = DEV_BROADCAST_OEM
-  DEV_BROADCAST_PORT* {.final, pure.} = object
-    dbcp_size*: ULONG
-    dbcp_devicetype*: ULONG
-    dbcp_reserved*: ULONG
-    dbcp_name*: array[0..0, char]
-
-  PDEV_BROADCAST_PORT* = ptr DEV_BROADCAST_PORT
-  TDEVBROADCASTPORT* = DEV_BROADCAST_PORT
-  DEV_BROADCAST_USERDEFINED* {.final, pure.} = object
-    dbud_dbh*: DEV_BROADCAST_HDR
-    dbud_szName*: array[0..0, char]
-    dbud_rgbUserDefined*: array[0..0, int8]
-
-  TDEVBROADCASTUSERDEFINED* = DEV_BROADCAST_USERDEFINED
-  PDEVBROADCASTUSERDEFINED* = ptr DEV_BROADCAST_USERDEFINED
-  DEV_BROADCAST_VOLUME* {.final, pure.} = object
-    dbcv_size*: ULONG
-    dbcv_devicetype*: ULONG
-    dbcv_reserved*: ULONG
-    dbcv_unitmask*: ULONG
-    dbcv_flags*: USHORT
-
-  PDEV_BROADCAST_VOLUME* = ptr DEV_BROADCAST_VOLUME
-  TDEVBROADCASTVOLUME* = DEV_BROADCAST_VOLUME
-  DEVMODE* {.final, pure.} = object
-    dmDeviceName*: array[0..(CCHDEVICENAME) - 1, BCHAR]
-    dmSpecVersion*: int16
-    dmDriverVersion*: int16
-    dmSize*: int16
-    dmDriverExtra*: int16
-    dmFields*: DWORD
-    dmOrientation*: int16
-    dmPaperSize*: int16
-    dmPaperLength*: int16
-    dmPaperWidth*: int16
-    dmScale*: int16
-    dmCopies*: int16
-    dmDefaultSource*: int16
-    dmPrintQuality*: int16
-    dmColor*: int16
-    dmDuplex*: int16
-    dmYResolution*: int16
-    dmTTOption*: int16
-    dmCollate*: int16
-    dmFormName*: array[0..(CCHFORMNAME) - 1, BCHAR]
-    dmLogPixels*: int16
-    dmBitsPerPel*: DWORD
-    dmPelsWidth*: DWORD
-    dmPelsHeight*: DWORD
-    dmDisplayFlags*: DWORD
-    dmDisplayFrequency*: DWORD
-    dmICMMethod*: DWORD
-    dmICMIntent*: DWORD
-    dmMediaType*: DWORD
-    dmDitherType*: DWORD
-    dmICCManufacturer*: DWORD
-    dmICCModel*: DWORD        # other union part:
-                              # dmPosition: POINTL;
-                              # dmDisplayOrientation: DWORD;
-                              # dmDisplayFixedOutput: DWORD;
-
-  LPDEVMODE* = ptr DEVMODE
-  devicemode* = DEVMODE
-  tdevicemode* = DEVMODE
-  tdevicemodeA* = DEVMODE
-  PDeviceModeA* = LPDEVMODE
-  PDeviceMode* = LPDEVMODE
-  TDEVMODE* = DEVMODE
-  PDEVMODE* = LPDEVMODE
-  devmodeW* {.final, pure.} = object
-    dmDeviceName*: array[0..CCHDEVICENAME - 1, WCHAR]
-    dmSpecVersion*: int16
-    dmDriverVersion*: int16
-    dmSize*: int16
-    dmDriverExtra*: int16
-    dmFields*: DWORD
-    dmOrientation*: short
-    dmPaperSize*: short
-    dmPaperLength*: short
-    dmPaperWidth*: short
-    dmScale*: short
-    dmCopies*: short
-    dmDefaultSource*: short
-    dmPrintQuality*: short
-    dmColor*: short
-    dmDuplex*: short
-    dmYResolution*: short
-    dmTTOption*: short
-    dmCollate*: short
-    dmFormName*: array[0..CCHFORMNAME - 1, wchar]
-    dmLogPixels*: int16
-    dmBitsPerPel*: DWORD
-    dmPelsWidth*: DWORD
-    dmPelsHeight*: DWORD
-    dmDisplayFlags*: DWORD
-    dmDisplayFrequency*: DWORD
-    dmICMMethod*: DWORD
-    dmICMIntent*: DWORD
-    dmMediaType*: DWORD
-    dmDitherType*: DWORD
-    dmReserved1*: DWORD
-    dmReserved2*: DWORD
-    dmPanningWidth*: DWORD
-    dmPanningHeight*: DWORD
-
-  LPDEVMODEW* = ptr DEVMODEW
-  devicemodeW* = DEVMODEW
-  TDeviceModeW* = DEVMODEW
-  PDeviceModeW* = LPDEVMODEW
-  TDEVMODEW* = DEVMODEW
-  PDEVMODEW* = LPDEVMODEW
-  DEVNAMES* {.final, pure.} = object
-    wDriverOffset*: int16
-    wDeviceOffset*: int16
-    wOutputOffset*: int16
-    wDefault*: int16
-
-  LPDEVNAMES* = ptr DEVNAMES
-  TDEVNAMES* = DEVNAMES
-  PDEVNAMES* = ptr DEVNAMES
-  DIBSECTION* {.final, pure.} = object
-    dsBm*: BITMAP
-    dsBmih*: BITMAPINFOHEADER
-    dsBitfields*: array[0..2, DWORD]
-    dshSection*: HANDLE
-    dsOffset*: DWORD
-
-  TDIBSECTION* = DIBSECTION
-  PDIBSECTION* = ptr DIBSECTION #
-                                #     LARGE_INTEGER = record
-                                #        case byte of
-                                #          0: (LowPart : DWORD;
-                                #              HighPart : LONG);
-                                #          1: (QuadPart : LONGLONG);
-                                #       end;     ULARGE_INTEGER = record
-                                #        case byte of
-                                #          0: (LowPart : DWORD;
-                                #              HighPart : DWORD);
-                                #          1: (QuadPart : LONGLONG);
-                                #       end;
-                                #
-  LARGE_INTEGER* = int64
-  ULARGE_INTEGER* = int64
-  PLARGE_INTEGER* = ptr LARGE_INTEGER
-  TLargeInteger* = Int64
-  PULARGE_INTEGER* = ptr ULARGE_INTEGER
-  TULargeInteger* = int64
-  DISK_GEOMETRY* {.final, pure.} = object
-    Cylinders*: LARGE_INTEGER
-    MediaType*: MEDIA_TYPE
-    TracksPerCylinder*: DWORD
-    SectorsPerTrack*: DWORD
-    BytesPerSector*: DWORD
-
-  TDISKGEOMETRY* = DISK_GEOMETRY
-  PDISKGEOMETRY* = ptr DISK_GEOMETRY
-  DISK_PERFORMANCE* {.final, pure.} = object
-    BytesRead*: LARGE_INTEGER
-    BytesWritten*: LARGE_INTEGER
-    ReadTime*: LARGE_INTEGER
-    WriteTime*: LARGE_INTEGER
-    ReadCount*: DWORD
-    WriteCount*: DWORD
-    QueueDepth*: DWORD
-
-  TDISKPERFORMANCE* = DISK_PERFORMANCE
-  PDISKPERFORMANCE* = ptr DISK_PERFORMANCE
-  DLGITEMTEMPLATE* {.final, pure.} = object
-    style*: DWORD
-    dwExtendedStyle*: DWORD
-    x*: int16
-    y*: int16
-    cx*: int16
-    cy*: int16
-    id*: int16
-
-  LPDLGITEMTEMPLATE* = ptr DLGITEMTEMPLATE
-  TDLGITEMTEMPLATE* = DLGITEMTEMPLATE
-  PDLGITEMTEMPLATE* = ptr DLGITEMTEMPLATE
-  DLGTEMPLATE* {.final, pure.} = object
-    style*: DWORD
-    dwExtendedStyle*: DWORD
-    cdit*: int16
-    x*: int16
-    y*: int16
-    cx*: int16
-    cy*: int16
-
-  LPDLGTEMPLATE* = ptr DLGTEMPLATE
-  LPCDLGTEMPLATE* = ptr DLGTEMPLATE
-  TDLGTEMPLATE* = DLGTEMPLATE
-  PDLGTEMPLATE* = ptr DLGTEMPLATE
-  DOC_INFO_1* {.final, pure.} = object
-    pDocName*: LPTSTR
-    pOutputFile*: LPTSTR
-    pDatatype*: LPTSTR
-
-  TDOCINFO1* = DOC_INFO_1
-  PDOCINFO1* = ptr DOC_INFO_1
-  DOC_INFO_2* {.final, pure.} = object
-    pDocName*: LPTSTR
-    pOutputFile*: LPTSTR
-    pDatatype*: LPTSTR
-    dwMode*: DWORD
-    JobId*: DWORD
-
-  TDOCINFO2* = DOC_INFO_2
-  PDOCINFO2* = ptr DOC_INFO_2
-  DOCINFO* {.final, pure.} = object
-    cbSize*: int32
-    lpszDocName*: LPCTSTR
-    lpszOutput*: LPCTSTR
-    lpszDatatype*: LPCTSTR
-    fwType*: DWORD
-
-  TDOCINFO* = DOCINFO
-  TDOCINFOA* = DOCINFO
-  PDOCINFO* = ptr DOCINFO
-  DRAGLISTINFO* {.final, pure.} = object
-    uNotification*: UINT
-    hWnd*: HWND
-    ptCursor*: POINT
-
-  LPDRAGLISTINFO* = ptr DRAGLISTINFO
-  TDRAGLISTINFO* = DRAGLISTINFO
-  PDRAGLISTINFO* = ptr DRAGLISTINFO
-  DRAWITEMSTRUCT* {.final, pure.} = object
-    CtlType*: UINT
-    CtlID*: UINT
-    itemID*: UINT
-    itemAction*: UINT
-    itemState*: UINT
-    hwndItem*: HWND
-    hDC*: HDC
-    rcItem*: RECT
-    itemData*: ULONG_PTR
-
-  LPDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT
-  TDRAWITEMSTRUCT* = DRAWITEMSTRUCT
-  PDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT
-  DRAWTEXTPARAMS* {.final, pure.} = object
-    cbSize*: UINT
-    iTabLength*: int32
-    iLeftMargin*: int32
-    iRightMargin*: int32
-    uiLengthDrawn*: UINT
-
-  LPDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS
-  TDRAWTEXTPARAMS* = DRAWTEXTPARAMS
-  PDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS
-  PARTITION_INFORMATION* {.final, pure.} = object
-    PartitionType*: int8
-    BootIndicator*: bool
-    RecognizedPartition*: bool
-    RewritePartition*: bool
-    StartingOffset*: LARGE_INTEGER
-    PartitionLength*: LARGE_INTEGER
-    HiddenSectors*: LARGE_INTEGER
-
-  TPARTITIONINFORMATION* = PARTITION_INFORMATION
-  PPARTITIONINFORMATION* = ptr PARTITION_INFORMATION
-  DRIVE_LAYOUT_INFORMATION* {.final, pure.} = object
-    PartitionCount*: DWORD
-    Signature*: DWORD
-    PartitionEntry*: array[0..0, PARTITION_INFORMATION]
-
-  TDRIVELAYOUTINFORMATION* = DRIVE_LAYOUT_INFORMATION
-  PDRIVELAYOUTINFORMATION* = ptr DRIVE_LAYOUT_INFORMATION
-  DRIVER_INFO_1* {.final, pure.} = object
-    pName*: LPTSTR
-
-  TDRIVERINFO1* = DRIVER_INFO_1
-  PDRIVERINFO1* = ptr DRIVER_INFO_1
-  DRIVER_INFO_2* {.final, pure.} = object
-    cVersion*: DWORD
-    pName*: LPTSTR
-    pEnvironment*: LPTSTR
-    pDriverPath*: LPTSTR
-    pDataFile*: LPTSTR
-    pConfigFile*: LPTSTR
-
-  TDRIVERINFO2* = DRIVER_INFO_2
-  PDRIVERINFO2* = ptr DRIVER_INFO_2
-  DRIVER_INFO_3* {.final, pure.} = object
-    cVersion*: DWORD
-    pName*: LPTSTR
-    pEnvironment*: LPTSTR
-    pDriverPath*: LPTSTR
-    pDataFile*: LPTSTR
-    pConfigFile*: LPTSTR
-    pHelpFile*: LPTSTR
-    pDependentFiles*: LPTSTR
-    pMonitorName*: LPTSTR
-    pDefaultDataType*: LPTSTR
-
-  TDRIVERINFO3* = DRIVER_INFO_3
-  PDRIVERINFO3* = ptr DRIVER_INFO_3
-  EDITSTREAM* {.final, pure.} = object
-    dwCookie*: DWORD
-    dwError*: DWORD
-    pfnCallback*: EDITSTREAMCALLBACK
-
-  Teditstream* = EDITSTREAM
-  Peditstream* = ptr EDITSTREAM
-  EMR* {.final, pure.} = object
-    iType*: DWORD
-    nSize*: DWORD
-
-  TEMR* = EMR
-  PEMR* = ptr EMR
-  EMRANGLEARC* {.final, pure.} = object
-    emr*: EMR
-    ptlCenter*: POINTL
-    nRadius*: DWORD
-    eStartAngle*: float32
-    eSweepAngle*: float32
-
-  TEMRANGLEARC* = EMRANGLEARC
-  PEMRANGLEARC* = ptr EMRANGLEARC
-  EMRARC* {.final, pure.} = object
-    emr*: EMR
-    rclBox*: RECTL
-    ptlStart*: POINTL
-    ptlEnd*: POINTL
-
-  TEMRARC* = EMRARC
-  PEMRARC* = ptr EMRARC
-  EMRARCTO* = EMRARC
-  TEMRARCTO* = EMRARC
-  PEMRARCTO* = ptr EMRARC
-  EMRCHORD* = EMRARC
-  TEMRCHORD* = EMRARC
-  PEMRCHORD* = ptr EMRARC
-  EMRPIE* = EMRARC
-  TEMRPIE* = EMRARC
-  PEMRPIE* = ptr EMRARC
-  XFORM* {.final, pure.} = object
-    eM11*: float32
-    eM12*: float32
-    eM21*: float32
-    eM22*: float32
-    eDx*: float32
-    eDy*: float32
-
-  LPXFORM* = ptr XFORM
-  TXFORM* = XFORM
-  PXFORM* = ptr XFORM
-  EMRBITBLT* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    xDest*: LONG
-    yDest*: LONG
-    cxDest*: LONG
-    cyDest*: LONG
-    dwRop*: DWORD
-    xSrc*: LONG
-    ySrc*: LONG
-    xformSrc*: XFORM
-    crBkColorSrc*: COLORREF
-    iUsageSrc*: DWORD
-    offBmiSrc*: DWORD
-    offBitsSrc*: DWORD
-    cbBitsSrc*: DWORD
-
-  TEMRBITBLT* = EMRBITBLT
-  PEMRBITBLT* = ptr EMRBITBLT
-  LOGBRUSH* {.final, pure.} = object
-    lbStyle*: UINT
-    lbColor*: COLORREF
-    lbHatch*: LONG
-
-  TLOGBRUSH* = LOGBRUSH
-  PLOGBRUSH* = ptr LOGBRUSH
-  EMRCREATEBRUSHINDIRECT* {.final, pure.} = object
-    emr*: EMR
-    ihBrush*: DWORD
-    lb*: LOGBRUSH
-
-  TEMRCREATEBRUSHINDIRECT* = EMRCREATEBRUSHINDIRECT
-  PEMRCREATEBRUSHINDIRECT* = ptr EMRCREATEBRUSHINDIRECT
-  LCSCSTYPE* = LONG
-  LCSGAMUTMATCH* = LONG
-  LOGCOLORSPACE* {.final, pure.} = object
-    lcsSignature*: DWORD
-    lcsVersion*: DWORD
-    lcsSize*: DWORD
-    lcsCSType*: LCSCSTYPE
-    lcsIntent*: LCSGAMUTMATCH
-    lcsEndpoints*: CIEXYZTRIPLE
-    lcsGammaRed*: DWORD
-    lcsGammaGreen*: DWORD
-    lcsGammaBlue*: DWORD
-    lcsFilename*: array[0..(MAX_PATH) - 1, TCHAR]
-
-  LPLOGCOLORSPACE* = ptr LOGCOLORSPACE
-  TLOGCOLORSPACE* = LOGCOLORSPACE
-  TLOGCOLORSPACEA* = LOGCOLORSPACE
-  PLOGCOLORSPACE* = ptr LOGCOLORSPACE
-  EMRCREATECOLORSPACE* {.final, pure.} = object
-    emr*: EMR
-    ihCS*: DWORD
-    lcs*: LOGCOLORSPACE
-
-  TEMRCREATECOLORSPACE* = EMRCREATECOLORSPACE
-  PEMRCREATECOLORSPACE* = ptr EMRCREATECOLORSPACE
-  EMRCREATEDIBPATTERNBRUSHPT* {.final, pure.} = object
-    emr*: EMR
-    ihBrush*: DWORD
-    iUsage*: DWORD
-    offBmi*: DWORD
-    cbBmi*: DWORD
-    offBits*: DWORD
-    cbBits*: DWORD
-
-  TEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT
-  PEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT
-  EMRCREATEMONOBRUSH* {.final, pure.} = object
-    emr*: EMR
-    ihBrush*: DWORD
-    iUsage*: DWORD
-    offBmi*: DWORD
-    cbBmi*: DWORD
-    offBits*: DWORD
-    cbBits*: DWORD
-
-  TEMRCREATEMONOBRUSH* = EMRCREATEMONOBRUSH
-  PEMRCREATEMONOBRUSH* = ptr EMRCREATEMONOBRUSH
-  PALETTEENTRY* {.final, pure.} = object
-    peRed*: int8
-    peGreen*: int8
-    peBlue*: int8
-    peFlags*: int8
-
-  LPPALETTEENTRY* = ptr PALETTEENTRY
-  TPALETTEENTRY* = PALETTEENTRY
-  PPALETTEENTRY* = ptr PALETTEENTRY
-  LOGPALETTE* {.final, pure.} = object
-    palVersion*: int16
-    palNumEntries*: int16
-    palPalEntry*: array[0..0, PALETTEENTRY]
-
-  LPLOGPALETTE* = ptr LOGPALETTE
-  TLOGPALETTE* = LOGPALETTE
-  PLOGPALETTE* = ptr LOGPALETTE
-  EMRCREATEPALETTE* {.final, pure.} = object
-    emr*: EMR
-    ihPal*: DWORD
-    lgpl*: LOGPALETTE
-
-  TEMRCREATEPALETTE* = EMRCREATEPALETTE
-  PEMRCREATEPALETTE* = ptr EMRCREATEPALETTE
-  LOGPEN* {.final, pure.} = object
-    lopnStyle*: UINT
-    lopnWidth*: POINT
-    lopnColor*: COLORREF
-
-  TLOGPEN* = LOGPEN
-  PLOGPEN* = ptr LOGPEN
-  EMRCREATEPEN* {.final, pure.} = object
-    emr*: EMR
-    ihPen*: DWORD
-    lopn*: LOGPEN
-
-  TEMRCREATEPEN* = EMRCREATEPEN
-  PEMRCREATEPEN* = ptr EMRCREATEPEN
-  EMRELLIPSE* {.final, pure.} = object
-    emr*: EMR
-    rclBox*: RECTL
-
-  TEMRELLIPSE* = EMRELLIPSE
-  PEMRELLIPSE* = ptr EMRELLIPSE
-  EMRRECTANGLE* = EMRELLIPSE
-  TEMRRECTANGLE* = EMRELLIPSE
-  PEMRRECTANGLE* = ptr EMRELLIPSE
-  EMREOF* {.final, pure.} = object
-    emr*: EMR
-    nPalEntries*: DWORD
-    offPalEntries*: DWORD
-    nSizeLast*: DWORD
-
-  TEMREOF* = EMREOF
-  PEMREOF* = ptr EMREOF
-  EMREXCLUDECLIPRECT* {.final, pure.} = object
-    emr*: EMR
-    rclClip*: RECTL
-
-  TEMREXCLUDECLIPRECT* = EMREXCLUDECLIPRECT
-  PEMREXCLUDECLIPRECT* = ptr EMREXCLUDECLIPRECT
-  EMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT
-  TEMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT
-  PEMRINTERSECTCLIPRECT* = ptr EMREXCLUDECLIPRECT
-  PANOSE* {.final, pure.} = object
-    bFamilyType*: int8
-    bSerifStyle*: int8
-    bWeight*: int8
-    bProportion*: int8
-    bContrast*: int8
-    bStrokeVariation*: int8
-    bArmStyle*: int8
-    bLetterform*: int8
-    bMidline*: int8
-    bXHeight*: int8
-
-  TPANOSE* = PANOSE
-  PPANOSE* = ptr PANOSE
-  EXTLOGFONT* {.final, pure.} = object
-    elfLogFont*: LOGFONT
-    elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR]
-    elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR]
-    elfVersion*: DWORD
-    elfStyleSize*: DWORD
-    elfMatch*: DWORD
-    elfReserved*: DWORD
-    elfVendorId*: array[0..(ELF_VENDOR_SIZE) - 1, int8]
-    elfCulture*: DWORD
-    elfPanose*: PANOSE
-
-  TEXTLOGFONT* = EXTLOGFONT
-  PEXTLOGFONT* = ptr EXTLOGFONT
-  EMREXTCREATEFONTINDIRECTW* {.final, pure.} = object
-    emr*: EMR
-    ihFont*: DWORD
-    elfw*: EXTLOGFONT
-
-  TEMREXTCREATEFONTINDIRECTW* = EMREXTCREATEFONTINDIRECTW
-  PEMREXTCREATEFONTINDIRECTW* = ptr EMREXTCREATEFONTINDIRECTW
-  EXTLOGPEN* {.final, pure.} = object
-    elpPenStyle*: UINT
-    elpWidth*: UINT
-    elpBrushStyle*: UINT
-    elpColor*: COLORREF
-    elpHatch*: LONG
-    elpNumEntries*: DWORD
-    elpStyleEntry*: array[0..0, DWORD]
-
-  TEXTLOGPEN* = EXTLOGPEN
-  PEXTLOGPEN* = ptr EXTLOGPEN
-  EMREXTCREATEPEN* {.final, pure.} = object
-    emr*: EMR
-    ihPen*: DWORD
-    offBmi*: DWORD
-    cbBmi*: DWORD
-    offBits*: DWORD
-    cbBits*: DWORD
-    elp*: EXTLOGPEN
-
-  TEMREXTCREATEPEN* = EMREXTCREATEPEN
-  PEMREXTCREATEPEN* = ptr EMREXTCREATEPEN
-  EMREXTFLOODFILL* {.final, pure.} = object
-    emr*: EMR
-    ptlStart*: POINTL
-    crColor*: COLORREF
-    iMode*: DWORD
-
-  TEMREXTFLOODFILL* = EMREXTFLOODFILL
-  PEMREXTFLOODFILL* = ptr EMREXTFLOODFILL
-  EMREXTSELECTCLIPRGN* {.final, pure.} = object
-    emr*: EMR
-    cbRgnData*: DWORD
-    iMode*: DWORD
-    RgnData*: array[0..0, int8]
-
-  TEMREXTSELECTCLIPRGN* = EMREXTSELECTCLIPRGN
-  PEMREXTSELECTCLIPRGN* = ptr EMREXTSELECTCLIPRGN
-  EMRTEXT* {.final, pure.} = object
-    ptlReference*: POINTL
-    nChars*: DWORD
-    offString*: DWORD
-    fOptions*: DWORD
-    rcl*: RECTL
-    offDx*: DWORD
-
-  TEMRTEXT* = EMRTEXT
-  PEMRTEXT* = ptr EMRTEXT
-  EMREXTTEXTOUTA* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    iGraphicsMode*: DWORD
-    exScale*: float32
-    eyScale*: float32
-    emrtext*: EMRTEXT
-
-  TEMREXTTEXTOUTA* = EMREXTTEXTOUTA
-  PEMREXTTEXTOUTA* = ptr EMREXTTEXTOUTA
-  EMREXTTEXTOUTW* = EMREXTTEXTOUTA
-  TEMREXTTEXTOUTW* = EMREXTTEXTOUTA
-  PEMREXTTEXTOUTW* = ptr EMREXTTEXTOUTA
-  EMRFILLPATH* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-
-  TEMRFILLPATH* = EMRFILLPATH
-  PEMRFILLPATH* = ptr EMRFILLPATH
-  EMRSTROKEANDFILLPATH* = EMRFILLPATH
-  TEMRSTROKEANDFILLPATH* = EMRFILLPATH
-  PEMRSTROKEANDFILLPATH* = ptr EMRFILLPATH
-  EMRSTROKEPATH* = EMRFILLPATH
-  TEMRSTROKEPATH* = EMRFILLPATH
-  PEMRSTROKEPATH* = ptr EMRFILLPATH
-  EMRFILLRGN* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cbRgnData*: DWORD
-    ihBrush*: DWORD
-    RgnData*: array[0..0, int8]
-
-  TEMRFILLRGN* = EMRFILLRGN
-  PEMRFILLRGN* = ptr EMRFILLRGN
-  EMRFORMAT* {.final, pure.} = object
-    dSignature*: DWORD
-    nVersion*: DWORD
-    cbData*: DWORD
-    offData*: DWORD
-
-  TEMRFORMAT* = EMRFORMAT
-  PEMRFORMAT* = ptr EMRFORMAT
-  SIZE* {.final, pure.} = object
-    cx*: LONG
-    cy*: LONG
-
-  LPSIZE* = ptr SIZE
-  TSIZE* = SIZE
-  PSIZE* = ptr SIZE
-  SIZEL* = SIZE
-  TSIZEL* = SIZE
-  PSIZEL* = ptr SIZE
-  LPSIZEL* = ptr SIZE
-  EMRFRAMERGN* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cbRgnData*: DWORD
-    ihBrush*: DWORD
-    szlStroke*: SIZEL
-    RgnData*: array[0..0, int8]
-
-  TEMRFRAMERGN* = EMRFRAMERGN
-  PEMRFRAMERGN* = ptr EMRFRAMERGN
-  EMRGDICOMMENT* {.final, pure.} = object
-    emr*: EMR
-    cbData*: DWORD
-    Data*: array[0..0, int8]
-
-  TEMRGDICOMMENT* = EMRGDICOMMENT
-  PEMRGDICOMMENT* = ptr EMRGDICOMMENT
-  EMRINVERTRGN* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cbRgnData*: DWORD
-    RgnData*: array[0..0, int8]
-
-  TEMRINVERTRGN* = EMRINVERTRGN
-  PEMRINVERTRGN* = ptr EMRINVERTRGN
-  EMRPAINTRGN* = EMRINVERTRGN
-  TEMRPAINTRGN* = EMRINVERTRGN
-  PEMRPAINTRGN* = ptr EMRINVERTRGN
-  EMRLINETO* {.final, pure.} = object
-    emr*: EMR
-    ptl*: POINTL
-
-  TEMRLINETO* = EMRLINETO
-  PEMRLINETO* = ptr EMRLINETO
-  EMRMOVETOEX* = EMRLINETO
-  TEMRMOVETOEX* = EMRLINETO
-  PEMRMOVETOEX* = ptr EMRLINETO
-  EMRMASKBLT* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    xDest*: LONG
-    yDest*: LONG
-    cxDest*: LONG
-    cyDest*: LONG
-    dwRop*: DWORD
-    xSrc*: LONG
-    ySrc*: LONG
-    xformSrc*: XFORM
-    crBkColorSrc*: COLORREF
-    iUsageSrc*: DWORD
-    offBmiSrc*: DWORD
-    cbBmiSrc*: DWORD
-    offBitsSrc*: DWORD
-    cbBitsSrc*: DWORD
-    xMask*: LONG
-    yMask*: LONG
-    iUsageMask*: DWORD
-    offBmiMask*: DWORD
-    cbBmiMask*: DWORD
-    offBitsMask*: DWORD
-    cbBitsMask*: DWORD
-
-  TEMRMASKBLT* = EMRMASKBLT
-  PEMRMASKBLT* = ptr EMRMASKBLT
-  EMRMODIFYWORLDTRANSFORM* {.final, pure.} = object
-    emr*: EMR
-    xform*: XFORM
-    iMode*: DWORD
-
-  TEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM
-  PEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM
-  EMROFFSETCLIPRGN* {.final, pure.} = object
-    emr*: EMR
-    ptlOffset*: POINTL
-
-  TEMROFFSETCLIPRGN* = EMROFFSETCLIPRGN
-  PEMROFFSETCLIPRGN* = ptr EMROFFSETCLIPRGN
-  EMRPLGBLT* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    aptlDest*: array[0..2, POINTL]
-    xSrc*: LONG
-    ySrc*: LONG
-    cxSrc*: LONG
-    cySrc*: LONG
-    xformSrc*: XFORM
-    crBkColorSrc*: COLORREF
-    iUsageSrc*: DWORD
-    offBmiSrc*: DWORD
-    cbBmiSrc*: DWORD
-    offBitsSrc*: DWORD
-    cbBitsSrc*: DWORD
-    xMask*: LONG
-    yMask*: LONG
-    iUsageMask*: DWORD
-    offBmiMask*: DWORD
-    cbBmiMask*: DWORD
-    offBitsMask*: DWORD
-    cbBitsMask*: DWORD
-
-  TEMRPLGBLT* = EMRPLGBLT
-  PEMRPLGBLT* = ptr EMRPLGBLT
-  EMRPOLYDRAW* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cptl*: DWORD
-    aptl*: array[0..0, POINTL]
-    abTypes*: array[0..0, int8]
-
-  TEMRPOLYDRAW* = EMRPOLYDRAW
-  PEMRPOLYDRAW* = ptr EMRPOLYDRAW
-  EMRPOLYDRAW16* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cpts*: DWORD
-    apts*: array[0..0, POINTS]
-    abTypes*: array[0..0, int8]
-
-  TEMRPOLYDRAW16* = EMRPOLYDRAW16
-  PEMRPOLYDRAW16* = ptr EMRPOLYDRAW16
-  EMRPOLYLINE* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cptl*: DWORD
-    aptl*: array[0..0, POINTL]
-
-  TEMRPOLYLINE* = EMRPOLYLINE
-  PEMRPOLYLINE* = ptr EMRPOLYLINE
-  EMRPOLYBEZIER* = EMRPOLYLINE
-  TEMRPOLYBEZIER* = EMRPOLYLINE
-  PEMRPOLYBEZIER* = ptr EMRPOLYLINE
-  EMRPOLYGON* = EMRPOLYLINE
-  TEMRPOLYGON* = EMRPOLYLINE
-  PEMRPOLYGON* = ptr EMRPOLYLINE
-  EMRPOLYBEZIERTO* = EMRPOLYLINE
-  TEMRPOLYBEZIERTO* = EMRPOLYLINE
-  PEMRPOLYBEZIERTO* = ptr EMRPOLYLINE
-  EMRPOLYLINETO* = EMRPOLYLINE
-  TEMRPOLYLINETO* = EMRPOLYLINE
-  PEMRPOLYLINETO* = ptr EMRPOLYLINE
-  EMRPOLYLINE16* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    cpts*: DWORD
-    apts*: array[0..0, POINTL]
-
-  TEMRPOLYLINE16* = EMRPOLYLINE16
-  PEMRPOLYLINE16* = ptr EMRPOLYLINE16
-  EMRPOLYBEZIER16* = EMRPOLYLINE16
-  TEMRPOLYBEZIER16* = EMRPOLYLINE16
-  PEMRPOLYBEZIER16* = ptr EMRPOLYLINE16
-  EMRPOLYGON16* = EMRPOLYLINE16
-  TEMRPOLYGON16* = EMRPOLYLINE16
-  PEMRPOLYGON16* = ptr EMRPOLYLINE16
-  EMRPOLYBEZIERTO16* = EMRPOLYLINE16
-  TEMRPOLYBEZIERTO16* = EMRPOLYLINE16
-  PEMRPOLYBEZIERTO16* = ptr EMRPOLYLINE16
-  EMRPOLYLINETO16* = EMRPOLYLINE16
-  TEMRPOLYLINETO16* = EMRPOLYLINE16
-  PEMRPOLYLINETO16* = ptr EMRPOLYLINE16
-  EMRPOLYPOLYLINE* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    nPolys*: DWORD
-    cptl*: DWORD
-    aPolyCounts*: array[0..0, DWORD]
-    aptl*: array[0..0, POINTL]
-
-  TEMRPOLYPOLYLINE* = EMRPOLYPOLYLINE
-  PEMRPOLYPOLYLINE* = ptr EMRPOLYPOLYLINE
-  EMRPOLYPOLYGON* = EMRPOLYPOLYLINE
-  TEMRPOLYPOLYGON* = EMRPOLYPOLYLINE
-  PEMRPOLYPOLYGON* = ptr EMRPOLYPOLYLINE
-  EMRPOLYPOLYLINE16* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    nPolys*: DWORD
-    cpts*: DWORD
-    aPolyCounts*: array[0..0, DWORD]
-    apts*: array[0..0, POINTS]
-
-  TEMRPOLYPOLYLINE16* = EMRPOLYPOLYLINE16
-  PEMRPOLYPOLYLINE16* = ptr EMRPOLYPOLYLINE16
-  EMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16
-  TEMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16
-  PEMRPOLYPOLYGON16* = ptr EMRPOLYPOLYLINE16
-  EMRPOLYTEXTOUTA* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    iGraphicsMode*: DWORD
-    exScale*: float32
-    eyScale*: float32
-    cStrings*: LONG
-    aemrtext*: array[0..0, EMRTEXT]
-
-  TEMRPOLYTEXTOUTA* = EMRPOLYTEXTOUTA
-  PEMRPOLYTEXTOUTA* = ptr EMRPOLYTEXTOUTA
-  EMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA
-  TEMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA
-  PEMRPOLYTEXTOUTW* = ptr EMRPOLYTEXTOUTA
-  EMRRESIZEPALETTE* {.final, pure.} = object
-    emr*: EMR
-    ihPal*: DWORD
-    cEntries*: DWORD
-
-  TEMRRESIZEPALETTE* = EMRRESIZEPALETTE
-  PEMRRESIZEPALETTE* = ptr EMRRESIZEPALETTE
-  EMRRESTOREDC* {.final, pure.} = object
-    emr*: EMR
-    iRelative*: LONG
-
-  TEMRRESTOREDC* = EMRRESTOREDC
-  PEMRRESTOREDC* = ptr EMRRESTOREDC
-  EMRROUNDRECT* {.final, pure.} = object
-    emr*: EMR
-    rclBox*: RECTL
-    szlCorner*: SIZEL
-
-  TEMRROUNDRECT* = EMRROUNDRECT
-  PEMRROUNDRECT* = ptr EMRROUNDRECT
-  EMRSCALEVIEWPORTEXTEX* {.final, pure.} = object
-    emr*: EMR
-    xNum*: LONG
-    xDenom*: LONG
-    yNum*: LONG
-    yDenom*: LONG
-
-  TEMRSCALEVIEWPORTEXTEX* = EMRSCALEVIEWPORTEXTEX
-  PEMRSCALEVIEWPORTEXTEX* = ptr EMRSCALEVIEWPORTEXTEX
-  EMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX
-  TEMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX
-  PEMRSCALEWINDOWEXTEX* = ptr EMRSCALEVIEWPORTEXTEX
-  EMRSELECTCOLORSPACE* {.final, pure.} = object
-    emr*: EMR
-    ihCS*: DWORD
-
-  TEMRSELECTCOLORSPACE* = EMRSELECTCOLORSPACE
-  PEMRSELECTCOLORSPACE* = ptr EMRSELECTCOLORSPACE
-  EMRDELETECOLORSPACE* = EMRSELECTCOLORSPACE
-  TEMRDELETECOLORSPACE* = EMRSELECTCOLORSPACE
-  PEMRDELETECOLORSPACE* = ptr EMRSELECTCOLORSPACE
-  EMRSELECTOBJECT* {.final, pure.} = object
-    emr*: EMR
-    ihObject*: DWORD
-
-  TEMRSELECTOBJECT* = EMRSELECTOBJECT
-  PEMRSELECTOBJECT* = ptr EMRSELECTOBJECT
-  EMRDELETEOBJECT* = EMRSELECTOBJECT
-  TEMRDELETEOBJECT* = EMRSELECTOBJECT
-  PEMRDELETEOBJECT* = ptr EMRSELECTOBJECT
-  EMRSELECTPALETTE* {.final, pure.} = object
-    emr*: EMR
-    ihPal*: DWORD
-
-  TEMRSELECTPALETTE* = EMRSELECTPALETTE
-  PEMRSELECTPALETTE* = ptr EMRSELECTPALETTE
-  EMRSETARCDIRECTION* {.final, pure.} = object
-    emr*: EMR
-    iArcDirection*: DWORD
-
-  TEMRSETARCDIRECTION* = EMRSETARCDIRECTION
-  PEMRSETARCDIRECTION* = ptr EMRSETARCDIRECTION
-  EMRSETBKCOLOR* {.final, pure.} = object
-    emr*: EMR
-    crColor*: COLORREF
-
-  TEMRSETBKCOLOR* = EMRSETBKCOLOR
-  PEMRSETBKCOLOR* = ptr EMRSETBKCOLOR
-  EMRSETTEXTCOLOR* = EMRSETBKCOLOR
-  TEMRSETTEXTCOLOR* = EMRSETBKCOLOR
-  PEMRSETTEXTCOLOR* = ptr EMRSETBKCOLOR
-  EMRSETCOLORADJUSTMENT* {.final, pure.} = object
-    emr*: EMR
-    ColorAdjustment*: COLORADJUSTMENT
-
-  TEMRSETCOLORADJUSTMENT* = EMRSETCOLORADJUSTMENT
-  PEMRSETCOLORADJUSTMENT* = ptr EMRSETCOLORADJUSTMENT
-  EMRSETDIBITSTODEVICE* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    xDest*: LONG
-    yDest*: LONG
-    xSrc*: LONG
-    ySrc*: LONG
-    cxSrc*: LONG
-    cySrc*: LONG
-    offBmiSrc*: DWORD
-    cbBmiSrc*: DWORD
-    offBitsSrc*: DWORD
-    cbBitsSrc*: DWORD
-    iUsageSrc*: DWORD
-    iStartScan*: DWORD
-    cScans*: DWORD
-
-  TEMRSETDIBITSTODEVICE* = EMRSETDIBITSTODEVICE
-  PEMRSETDIBITSTODEVICE* = ptr EMRSETDIBITSTODEVICE
-  EMRSETMAPPERFLAGS* {.final, pure.} = object
-    emr*: EMR
-    dwFlags*: DWORD
-
-  TEMRSETMAPPERFLAGS* = EMRSETMAPPERFLAGS
-  PEMRSETMAPPERFLAGS* = ptr EMRSETMAPPERFLAGS
-  EMRSETMITERLIMIT* {.final, pure.} = object
-    emr*: EMR
-    eMiterLimit*: float32
-
-  TEMRSETMITERLIMIT* = EMRSETMITERLIMIT
-  PEMRSETMITERLIMIT* = ptr EMRSETMITERLIMIT
-  EMRSETPALETTEENTRIES* {.final, pure.} = object
-    emr*: EMR
-    ihPal*: DWORD
-    iStart*: DWORD
-    cEntries*: DWORD
-    aPalEntries*: array[0..0, PALETTEENTRY]
-
-  TEMRSETPALETTEENTRIES* = EMRSETPALETTEENTRIES
-  PEMRSETPALETTEENTRIES* = ptr EMRSETPALETTEENTRIES
-  EMRSETPIXELV* {.final, pure.} = object
-    emr*: EMR
-    ptlPixel*: POINTL
-    crColor*: COLORREF
-
-  TEMRSETPIXELV* = EMRSETPIXELV
-  PEMRSETPIXELV* = ptr EMRSETPIXELV
-  EMRSETVIEWPORTEXTEX* {.final, pure.} = object
-    emr*: EMR
-    szlExtent*: SIZEL
-
-  TEMRSETVIEWPORTEXTEX* = EMRSETVIEWPORTEXTEX
-  PEMRSETVIEWPORTEXTEX* = ptr EMRSETVIEWPORTEXTEX
-  EMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX
-  TEMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX
-  PEMRSETWINDOWEXTEX* = ptr EMRSETVIEWPORTEXTEX
-  EMRSETVIEWPORTORGEX* {.final, pure.} = object
-    emr*: EMR
-    ptlOrigin*: POINTL
-
-  TEMRSETVIEWPORTORGEX* = EMRSETVIEWPORTORGEX
-  PEMRSETVIEWPORTORGEX* = ptr EMRSETVIEWPORTORGEX
-  EMRSETWINDOWORGEX* = EMRSETVIEWPORTORGEX
-  TEMRSETWINDOWORGEX* = EMRSETVIEWPORTORGEX
-  PEMRSETWINDOWORGEX* = ptr EMRSETVIEWPORTORGEX
-  EMRSETBRUSHORGEX* = EMRSETVIEWPORTORGEX
-  TEMRSETBRUSHORGEX* = EMRSETVIEWPORTORGEX
-  PEMRSETBRUSHORGEX* = ptr EMRSETVIEWPORTORGEX
-  EMRSETWORLDTRANSFORM* {.final, pure.} = object
-    emr*: EMR
-    xform*: XFORM
-
-  TEMRSETWORLDTRANSFORM* = EMRSETWORLDTRANSFORM
-  PEMRSETWORLDTRANSFORM* = ptr EMRSETWORLDTRANSFORM
-  EMRSTRETCHBLT* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    xDest*: LONG
-    yDest*: LONG
-    cxDest*: LONG
-    cyDest*: LONG
-    dwRop*: DWORD
-    xSrc*: LONG
-    ySrc*: LONG
-    xformSrc*: XFORM
-    crBkColorSrc*: COLORREF
-    iUsageSrc*: DWORD
-    offBmiSrc*: DWORD
-    cbBmiSrc*: DWORD
-    offBitsSrc*: DWORD
-    cbBitsSrc*: DWORD
-    cxSrc*: LONG
-    cySrc*: LONG
-
-  TEMRSTRETCHBLT* = EMRSTRETCHBLT
-  PEMRSTRETCHBLT* = ptr EMRSTRETCHBLT
-  EMRSTRETCHDIBITS* {.final, pure.} = object
-    emr*: EMR
-    rclBounds*: RECTL
-    xDest*: LONG
-    yDest*: LONG
-    xSrc*: LONG
-    ySrc*: LONG
-    cxSrc*: LONG
-    cySrc*: LONG
-    offBmiSrc*: DWORD
-    cbBmiSrc*: DWORD
-    offBitsSrc*: DWORD
-    cbBitsSrc*: DWORD
-    iUsageSrc*: DWORD
-    dwRop*: DWORD
-    cxDest*: LONG
-    cyDest*: LONG
-
-  TEMRSTRETCHDIBITS* = EMRSTRETCHDIBITS
-  PEMRSTRETCHDIBITS* = ptr EMRSTRETCHDIBITS
-  EMRABORTPATH* {.final, pure.} = object
-    emr*: EMR
-
-  TEMRABORTPATH* = EMRABORTPATH
-  PEMRABORTPATH* = ptr EMRABORTPATH
-  TABORTPATH* = EMRABORTPATH
-  EMRBEGINPATH* = EMRABORTPATH
-  TEMRBEGINPATH* = EMRABORTPATH
-  PEMRBEGINPATH* = ptr EMRABORTPATH
-  EMRENDPATH* = EMRABORTPATH
-  TEMRENDPATH* = EMRABORTPATH
-  PEMRENDPATH* = ptr EMRABORTPATH
-  EMRCLOSEFIGURE* = EMRABORTPATH
-  TEMRCLOSEFIGURE* = EMRABORTPATH
-  PEMRCLOSEFIGURE* = ptr EMRABORTPATH
-  EMRFLATTENPATH* = EMRABORTPATH
-  TEMRFLATTENPATH* = EMRABORTPATH
-  PEMRFLATTENPATH* = ptr EMRABORTPATH
-  EMRWIDENPATH* = EMRABORTPATH
-  TEMRWIDENPATH* = EMRABORTPATH
-  PEMRWIDENPATH* = ptr EMRABORTPATH
-  EMRSETMETARGN* = EMRABORTPATH
-  TEMRSETMETARGN* = EMRABORTPATH
-  PEMRSETMETARGN* = ptr EMRABORTPATH
-  EMRSAVEDC* = EMRABORTPATH
-  TEMRSAVEDC* = EMRABORTPATH
-  PEMRSAVEDC* = ptr EMRABORTPATH
-  EMRREALIZEPALETTE* = EMRABORTPATH
-  TEMRREALIZEPALETTE* = EMRABORTPATH
-  PEMRREALIZEPALETTE* = ptr EMRABORTPATH
-  EMRSELECTCLIPPATH* {.final, pure.} = object
-    emr*: EMR
-    iMode*: DWORD
-
-  TEMRSELECTCLIPPATH* = EMRSELECTCLIPPATH
-  PEMRSELECTCLIPPATH* = ptr EMRSELECTCLIPPATH
-  EMRSETBKMODE* = EMRSELECTCLIPPATH
-  TEMRSETBKMODE* = EMRSELECTCLIPPATH
-  PEMRSETBKMODE* = ptr EMRSELECTCLIPPATH
-  EMRSETMAPMODE* = EMRSELECTCLIPPATH
-  TEMRSETMAPMODE* = EMRSELECTCLIPPATH
-  PEMRSETMAPMODE* = ptr EMRSELECTCLIPPATH
-  EMRSETPOLYFILLMODE* = EMRSELECTCLIPPATH
-  TEMRSETPOLYFILLMODE* = EMRSELECTCLIPPATH
-  PEMRSETPOLYFILLMODE* = ptr EMRSELECTCLIPPATH
-  EMRSETROP2* = EMRSELECTCLIPPATH
-  TEMRSETROP2* = EMRSELECTCLIPPATH
-  PEMRSETROP2* = ptr EMRSELECTCLIPPATH
-  EMRSETSTRETCHBLTMODE* = EMRSELECTCLIPPATH
-  TEMRSETSTRETCHBLTMODE* = EMRSELECTCLIPPATH
-  PEMRSETSTRETCHBLTMODE* = ptr EMRSELECTCLIPPATH
-  EMRSETTEXTALIGN* = EMRSELECTCLIPPATH
-  TEMRSETTEXTALIGN* = EMRSELECTCLIPPATH
-  PEMRSETTEXTALIGN* = ptr EMRSELECTCLIPPATH
-  EMRENABLEICM* = EMRSELECTCLIPPATH
-  TEMRENABLEICM* = EMRSELECTCLIPPATH
-  PEMRENABLEICM* = ptr EMRSELECTCLIPPATH
-  NMHDR* {.final, pure.} = object
-    hwndFrom*: HWND
-    idFrom*: UINT
-    code*: UINT
-
-  TNMHDR* = NMHDR
-  PNMHDR* = ptr NMHDR
-  TENCORRECTTEXT* {.final, pure.} = object
-    nmhdr*: NMHDR
-    chrg*: CHARRANGE
-    seltyp*: int16
-
-  Pencorrecttext* = ptr TENCORRECTTEXT
-  TENDROPFILES* {.final, pure.} = object
-    nmhdr*: NMHDR
-    hDrop*: HANDLE
-    cp*: LONG
-    fProtected*: WINBOOL
-
-  Pendropfiles* = ptr TENDROPFILES
-  TENSAVECLIPBOARD* {.final, pure.} = object
-    nmhdr*: NMHDR
-    cObjectCount*: LONG
-    cch*: LONG
-
-  PENSAVECLIPBOARD* = ptr TENSAVECLIPBOARD
-  TENOLEOPFAILED* {.final, pure.} = object
-    nmhdr*: NMHDR
-    iob*: LONG
-    lOper*: LONG
-    hr*: HRESULT
-
-  PENOLEOPFAILED* = ptr TENOLEOPFAILED
-  TENHMETAHEADER* {.final, pure.} = object
-    iType*: DWORD
-    nSize*: DWORD
-    rclBounds*: RECTL
-    rclFrame*: RECTL
-    dSignature*: DWORD
-    nVersion*: DWORD
-    nBytes*: DWORD
-    nRecords*: DWORD
-    nHandles*: int16
-    sReserved*: int16
-    nDescription*: DWORD
-    offDescription*: DWORD
-    nPalEntries*: DWORD
-    szlDevice*: SIZEL
-    szlMillimeters*: SIZEL
-
-  LPENHMETAHEADER* = ptr TENHMETAHEADER
-  PENHMETAHEADER* = ptr TENHMETAHEADER
-  TENHMETARECORD* {.final, pure.} = object
-    iType*: DWORD
-    nSize*: DWORD
-    dParm*: array[0..0, DWORD]
-
-  LPENHMETARECORD* = ptr TENHMETARECORD
-  PENHMETARECORD* = ptr TENHMETARECORD
-  TENPROTECTED* {.final, pure.} = object
-    nmhdr*: NMHDR
-    msg*: UINT
-    wParam*: WPARAM
-    lParam*: LPARAM
-    chrg*: CHARRANGE
-
-  Penprotected* = ptr TENPROTECTED
-  SERVICE_STATUS* {.final, pure.} = object
-    dwServiceType*: DWORD
-    dwCurrentState*: DWORD
-    dwControlsAccepted*: DWORD
-    dwWin32ExitCode*: DWORD
-    dwServiceSpecificExitCode*: DWORD
-    dwCheckPoint*: DWORD
-    dwWaitHint*: DWORD
-
-  LPSERVICE_STATUS* = ptr SERVICE_STATUS
-  TSERVICESTATUS* = SERVICE_STATUS
-  PSERVICESTATUS* = ptr SERVICE_STATUS
-  ENUM_SERVICE_STATUS* {.final, pure.} = object
-    lpServiceName*: LPTSTR
-    lpDisplayName*: LPTSTR
-    ServiceStatus*: SERVICE_STATUS
-
-  LPENUM_SERVICE_STATUS* = ptr ENUM_SERVICE_STATUS
-  TENUMSERVICESTATUS* = ENUM_SERVICE_STATUS
-  PENUMSERVICESTATUS* = ptr ENUM_SERVICE_STATUS
-  ENUMLOGFONT* {.final, pure.} = object
-    elfLogFont*: LOGFONT
-    elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR]
-    elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR]
-
-  TENUMLOGFONT* = ENUMLOGFONT
-  PENUMLOGFONT* = ptr ENUMLOGFONT
-  ENUMLOGFONTEX* {.final, pure.} = object
-    elfLogFont*: LOGFONT
-    elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR]
-    elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR]
-    elfScript*: array[0..(LF_FACESIZE) - 1, BCHAR]
-
-  TENUMLOGFONTEX* = ENUMLOGFONTEX
-  PENUMLOGFONTEX* = ptr ENUMLOGFONTEX #
-                                      #    Then follow:
-                                      #
-                                      #    TCHAR SourceName[]
-                                      #    TCHAR Computername[]
-                                      #    SID   UserSid
-                                      #    TCHAR Strings[]
-                                      #    BYTE  Data[]
-                                      #    CHAR  Pad[]
-                                      #    DWORD Length;
-                                      #
-  EVENTLOGRECORD* {.final, pure.} = object
-    len*: DWORD
-    Reserved*: DWORD
-    RecordNumber*: DWORD
-    TimeGenerated*: DWORD
-    TimeWritten*: DWORD
-    EventID*: DWORD
-    EventType*: int16
-    NumStrings*: int16
-    EventCategory*: int16
-    ReservedFlags*: int16
-    ClosingRecordNumber*: DWORD
-    StringOffset*: DWORD
-    UserSidLength*: DWORD
-    UserSidOffset*: DWORD
-    DataLength*: DWORD
-    DataOffset*: DWORD
-
-  TEVENTLOGRECORD* = EVENTLOGRECORD
-  PEVENTLOGRECORD* = ptr EVENTLOGRECORD
-  EVENTMSG* {.final, pure.} = object
-    message*: UINT
-    paramL*: UINT
-    paramH*: UINT
-    time*: DWORD
-    hwnd*: HWND
-
-  TEVENTMSG* = EVENTMSG
-  PEVENTMSG* = ptr EVENTMSG
-  EXCEPTION_POINTERS* {.final, pure.} = object
-    ExceptionRecord*: PEXCEPTION_RECORD
-    ContextRecord*: PCONTEXT
-
-  LPEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS
-  PEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS
-  TEXCEPTIONPOINTERS* = EXCEPTION_POINTERS
-  EXT_BUTTON* {.final, pure.} = object
-    idCommand*: int16
-    idsHelp*: int16
-    fsStyle*: int16
-
-  LPEXT_BUTTON* = ptr EXT_BUTTON
-  TEXTBUTTON* = EXT_BUTTON
-  PEXTBUTTON* = ptr EXT_BUTTON
-  FILTERKEYS* {.final, pure.} = object
-    cbSize*: UINT
-    dwFlags*: DWORD
-    iWaitMSec*: DWORD
-    iDelayMSec*: DWORD
-    iRepeatMSec*: DWORD
-    iBounceMSec*: DWORD
-
-  TFILTERKEYS* = FILTERKEYS
-  PFILTERKEYS* = ptr FILTERKEYS
-  FIND_NAME_BUFFER* {.final, pure.} = object
-    len*: UCHAR
-    access_control*: UCHAR
-    frame_control*: UCHAR
-    destination_addr*: array[0..5, UCHAR]
-    source_addr*: array[0..5, UCHAR]
-    routing_info*: array[0..17, UCHAR]
-
-  TFINDNAMEBUFFER* = FIND_NAME_BUFFER
-  PFINDNAMEBUFFER* = ptr FIND_NAME_BUFFER
-  FIND_NAME_HEADER* {.final, pure.} = object
-    node_count*: int16
-    reserved*: UCHAR
-    unique_group*: UCHAR
-
-  TFINDNAMEHEADER* = FIND_NAME_HEADER
-  PFINDNAMEHEADER* = ptr FIND_NAME_HEADER
-  FINDREPLACE* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hInstance*: HINST
-    Flags*: DWORD
-    lpstrFindWhat*: LPTSTR
-    lpstrReplaceWith*: LPTSTR
-    wFindWhatLen*: int16
-    wReplaceWithLen*: int16
-    lCustData*: LPARAM
-    lpfnHook*: LPFRHOOKPROC
-    lpTemplateName*: LPCTSTR
-
-  LPFINDREPLACE* = ptr FINDREPLACE
-  TFINDREPLACE* = FINDREPLACE
-  PFINDREPLACE* = ptr FINDREPLACE #FINDTEXT = record conflicts with FindText function
-  TFINDTEXT* {.final, pure.} = object
-    chrg*: CHARRANGE
-    lpstrText*: LPSTR
-
-  Pfindtext* = ptr TFINDTEXT
-  FINDTEXTEX* {.final, pure.} = object
-    chrg*: CHARRANGE
-    lpstrText*: LPSTR
-    chrgText*: CHARRANGE
-
-  Tfindtextex* = FINDTEXTEX
-  Pfindtextex* = ptr FINDTEXTEX
-  FMS_GETDRIVEINFO* {.final, pure.} = object
-    dwTotalSpace*: DWORD
-    dwFreeSpace*: DWORD
-    szPath*: array[0..259, TCHAR]
-    szVolume*: array[0..13, TCHAR]
-    szShare*: array[0..127, TCHAR]
-
-  TFMSGETDRIVEINFO* = FMS_GETDRIVEINFO
-  PFMSGETDRIVEINFO* = ptr FMS_GETDRIVEINFO
-  FMS_GETFILESEL* {.final, pure.} = object
-    ftTime*: FILETIME
-    dwSize*: DWORD
-    bAttr*: int8
-    szName*: array[0..259, TCHAR]
-
-  TFMSGETFILESEL* = FMS_GETFILESEL
-  PFMSGETFILESEL* = ptr FMS_GETFILESEL
-  FMS_LOAD* {.final, pure.} = object
-    dwSize*: DWORD
-    szMenuName*: array[0..(MENU_TEXT_LEN) - 1, TCHAR]
-    hMenu*: HMENU
-    wMenuDelta*: UINT
-
-  TFMSLOAD* = FMS_LOAD
-  PFMSLOAD* = ptr FMS_LOAD
-  FMS_TOOLBARLOAD* {.final, pure.} = object
-    dwSize*: DWORD
-    lpButtons*: LPEXT_BUTTON
-    cButtons*: int16
-    cBitmaps*: int16
-    idBitmap*: int16
-    hBitmap*: HBITMAP
-
-  TFMSTOOLBARLOAD* = FMS_TOOLBARLOAD
-  PFMSTOOLBARLOAD* = ptr FMS_TOOLBARLOAD
-  FOCUS_EVENT_RECORD* {.final, pure.} = object
-    bSetFocus*: WINBOOL
-
-  TFOCUSEVENTRECORD* = FOCUS_EVENT_RECORD
-  PFOCUSEVENTRECORD* = ptr FOCUS_EVENT_RECORD
-  FORM_INFO_1* {.final, pure.} = object
-    Flags*: DWORD
-    pName*: LPTSTR
-    Size*: SIZEL
-    ImageableArea*: RECTL
-
-  TFORMINFO1* = FORM_INFO_1
-  PFORMINFO1* = ptr FORM_INFO_1
-  FORMAT_PARAMETERS* {.final, pure.} = object
-    MediaType*: MEDIA_TYPE
-    StartCylinderNumber*: DWORD
-    EndCylinderNumber*: DWORD
-    StartHeadNumber*: DWORD
-    EndHeadNumber*: DWORD
-
-  TFORMATPARAMETERS* = FORMAT_PARAMETERS
-  PFORMATPARAMETERS* = ptr FORMAT_PARAMETERS
-  FORMATRANGE* {.final, pure.} = object
-    hdc*: HDC
-    hdcTarget*: HDC
-    rc*: RECT
-    rcPage*: RECT
-    chrg*: CHARRANGE
-
-  Tformatrange* = FORMATRANGE
-  Pformatrange* = ptr FORMATRANGE
-  GCP_RESULTS* {.final, pure.} = object
-    lStructSize*: DWORD
-    lpOutString*: LPTSTR
-    lpOrder*: ptr UINT
-    lpDx*: ptr WINT
-    lpCaretPos*: ptr WINT
-    lpClass*: LPTSTR
-    lpGlyphs*: ptr UINT
-    nGlyphs*: UINT
-    nMaxFit*: UINT
-
-  LPGCP_RESULTS* = ptr GCP_RESULTS
-  TGCPRESULTS* = GCP_RESULTS
-  PGCPRESULTS* = ptr GCP_RESULTS
-  GENERIC_MAPPING* {.final, pure.} = object
-    GenericRead*: ACCESS_MASK
-    GenericWrite*: ACCESS_MASK
-    GenericExecute*: ACCESS_MASK
-    GenericAll*: ACCESS_MASK
-
-  PGENERIC_MAPPING* = ptr GENERIC_MAPPING
-  TGENERICMAPPING* = GENERIC_MAPPING
-  GLYPHMETRICS* {.final, pure.} = object
-    gmBlackBoxX*: UINT
-    gmBlackBoxY*: UINT
-    gmptGlyphOrigin*: POINT
-    gmCellIncX*: SHORT
-    gmCellIncY*: SHORT
-
-  LPGLYPHMETRICS* = ptr GLYPHMETRICS
-  TGLYPHMETRICS* = GLYPHMETRICS
-  PGLYPHMETRICS* = ptr GLYPHMETRICS
-  HANDLETABLE* {.final, pure.} = object
-    objectHandle*: array[0..0, HGDIOBJ]
-
-  THANDLETABLE* = HANDLETABLE
-  LPHANDLETABLE* = ptr HANDLETABLE
-  HD_HITTESTINFO* {.final, pure.} = object
-    pt*: POINT
-    flags*: UINT
-    iItem*: int32
-
-  THDHITTESTINFO* = HD_HITTESTINFO
-  PHDHITTESTINFO* = ptr HD_HITTESTINFO
-  HD_ITEM* {.final, pure.} = object
-    mask*: UINT
-    cxy*: int32
-    pszText*: LPTSTR
-    hbm*: HBITMAP
-    cchTextMax*: int32
-    fmt*: int32
-    lParam*: LPARAM
-
-  THDITEM* = HD_ITEM
-  PHDITEM* = ptr HD_ITEM
-  WINDOWPOS* {.final, pure.} = object
-    hwnd*: HWND
-    hwndInsertAfter*: HWND
-    x*: int32
-    y*: int32
-    cx*: int32
-    cy*: int32
-    flags*: UINT
-
-  LPWINDOWPOS* = ptr WINDOWPOS
-  TWINDOWPOS* = WINDOWPOS
-  PWINDOWPOS* = ptr WINDOWPOS
-  HD_LAYOUT* {.final, pure.} = object
-    prc*: ptr RECT
-    pwpos*: ptr WINDOWPOS
-
-  THDLAYOUT* = HD_LAYOUT
-  PHDLAYOUT* = ptr HD_LAYOUT
-  HD_NOTIFY* {.final, pure.} = object
-    hdr*: NMHDR
-    iItem*: int32
-    iButton*: int32
-    pitem*: ptr HD_ITEM
-
-  THDNOTIFY* = HD_NOTIFY
-  PHDNOTIFY* = ptr HD_NOTIFY
-  HELPINFO* {.final, pure.} = object
-    cbSize*: UINT
-    iContextType*: int32
-    iCtrlId*: int32
-    hItemHandle*: HANDLE
-    dwContextId*: DWORD
-    MousePos*: POINT
-
-  LPHELPINFO* = ptr HELPINFO
-  THELPINFO* = HELPINFO
-  PHELPINFO* = ptr HELPINFO
-  HELPWININFO* {.final, pure.} = object
-    wStructSize*: int32
-    x*: int32
-    y*: int32
-    dx*: int32
-    dy*: int32
-    wMax*: int32
-    rgchMember*: array[0..1, TCHAR]
-
-  THELPWININFO* = HELPWININFO
-  PHELPWININFO* = ptr HELPWININFO
-  HIGHCONTRAST* {.final, pure.} = object
-    cbSize*: UINT
-    dwFlags*: DWORD
-    lpszDefaultScheme*: LPTSTR
-
-  LPHIGHCONTRAST* = ptr HIGHCONTRAST
-  THIGHCONTRAST* = HIGHCONTRAST
-  PHIGHCONTRAST* = ptr HIGHCONTRAST
-  HSZPAIR* {.final, pure.} = object
-    hszSvc*: HSZ
-    hszTopic*: HSZ
-
-  THSZPAIR* = HSZPAIR
-  PHSZPAIR* = ptr HSZPAIR
-  ICONINFO* {.final, pure.} = object
-    fIcon*: WINBOOL
-    xHotspot*: DWORD
-    yHotspot*: DWORD
-    hbmMask*: HBITMAP
-    hbmColor*: HBITMAP
-
-  TICONINFO* = ICONINFO
-  PICONINFO* = ptr ICONINFO
-  ICONMETRICS* {.final, pure.} = object
-    cbSize*: UINT
-    iHorzSpacing*: int32
-    iVertSpacing*: int32
-    iTitleWrap*: int32
-    lfFont*: LOGFONT
-
-  LPICONMETRICS* = ptr ICONMETRICS
-  TICONMETRICS* = ICONMETRICS
-  PICONMETRICS* = ptr ICONMETRICS
-  IMAGEINFO* {.final, pure.} = object
-    hbmImage*: HBITMAP
-    hbmMask*: HBITMAP
-    Unused1*: int32
-    Unused2*: int32
-    rcImage*: RECT
-
-  TIMAGEINFO* = IMAGEINFO
-  PIMAGEINFO* = ptr IMAGEINFO
-  KEY_EVENT_RECORD* {.final, pure.} = object
-    bKeyDown*: WINBOOL
-    wRepeatCount*: int16
-    wVirtualKeyCode*: int16
-    wVirtualScanCode*: int16
-    UnicodeChar*: WCHAR
-    dwControlKeyState*: DWORD # other union part: AsciiChar: CHAR
-
-  TKEYEVENTRECORD* = KEY_EVENT_RECORD
-  PKEYEVENTRECORD* = ptr KEY_EVENT_RECORD
-  MOUSE_EVENT_RECORD* {.final, pure.} = object
-    dwMousePosition*: COORD
-    dwButtonState*: DWORD
-    dwControlKeyState*: DWORD
-    dwEventFlags*: DWORD
-
-  TMOUSEEVENTRECORD* = MOUSE_EVENT_RECORD
-  PMOUSEEVENTRECORD* = ptr MOUSE_EVENT_RECORD
-  WINDOW_BUFFER_SIZE_RECORD* {.final, pure.} = object
-    dwSize*: COORD
-
-  TWINDOWBUFFERSIZERECORD* = WINDOW_BUFFER_SIZE_RECORD
-  PWINDOWBUFFERSIZERECORD* = ptr WINDOW_BUFFER_SIZE_RECORD
-  MENU_EVENT_RECORD* {.final, pure.} = object
-    dwCommandId*: UINT
-
-  PMENU_EVENT_RECORD* = ptr MENU_EVENT_RECORD
-  TMENUEVENTRECORD* = MENU_EVENT_RECORD
-  INPUT_RECORD* {.final, pure.} = object
-    EventType*: int16
-    Reserved*: int16
-    event*: array[0..5, DWORD] #Event : record case longint of
-                               #                 0 : ( KeyEvent : KEY_EVENT_RECORD );
-                               #                 1 : ( MouseEvent : MOUSE_EVENT_RECORD );
-                               #                 2 : ( WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD );
-                               #                 3 : ( MenuEvent : MENU_EVENT_RECORD );
-                               #                 4 : ( FocusEvent : FOCUS_EVENT_RECORD );
-                               #       end;
-
-  PINPUT_RECORD* = ptr INPUT_RECORD
-  TINPUTRECORD* = INPUT_RECORD
-  SYSTEMTIME* {.final, pure.} = object
-    wYear*: int16
-    wMonth*: int16
-    wDayOfWeek*: int16
-    wDay*: int16
-    wHour*: int16
-    wMinute*: int16
-    wSecond*: int16
-    wMilliseconds*: int16
-
-  LPSYSTEMTIME* = ptr SYSTEMTIME
-  TSYSTEMTIME* = SYSTEMTIME
-  PSYSTEMTIME* = ptr SYSTEMTIME
-  JOB_INFO_1* {.final, pure.} = object
-    JobId*: DWORD
-    pPrinterName*: LPTSTR
-    pMachineName*: LPTSTR
-    pUserName*: LPTSTR
-    pDocument*: LPTSTR
-    pDatatype*: LPTSTR
-    pStatus*: LPTSTR
-    Status*: DWORD
-    Priority*: DWORD
-    Position*: DWORD
-    TotalPages*: DWORD
-    PagesPrinted*: DWORD
-    Submitted*: SYSTEMTIME
-
-  TJOBINFO1* = JOB_INFO_1
-  PJOBINFO1* = ptr JOB_INFO_1
-  SID_IDENTIFIER_AUTHORITY* {.final, pure.} = object
-    Value*: array[0..5, int8]
-
-  LPSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY
-  PSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY
-  TSIDIDENTIFIERAUTHORITY* = SID_IDENTIFIER_AUTHORITY
-  SID* {.final, pure.} = object
-    Revision*: int8
-    SubAuthorityCount*: int8
-    IdentifierAuthority*: SID_IDENTIFIER_AUTHORITY
-    SubAuthority*: array[0..(ANYSIZE_ARRAY) - 1, DWORD]
-
-  TSID* = SID
-  PSID* = ptr SID
-  SECURITY_DESCRIPTOR_CONTROL* = int16
-  PSECURITY_DESCRIPTOR_CONTROL* = ptr SECURITY_DESCRIPTOR_CONTROL
-  TSECURITYDESCRIPTORCONTROL* = SECURITY_DESCRIPTOR_CONTROL
-  SECURITY_DESCRIPTOR* {.final, pure.} = object
-    Revision*: int8
-    Sbz1*: int8
-    Control*: SECURITY_DESCRIPTOR_CONTROL
-    Owner*: PSID
-    Group*: PSID
-    Sacl*: PACL
-    Dacl*: PACL
-
-  PSECURITY_DESCRIPTOR* = ptr SECURITY_DESCRIPTOR
-  TSECURITYDESCRIPTOR* = SECURITY_DESCRIPTOR
-  JOB_INFO_2* {.final, pure.} = object
-    JobId*: DWORD
-    pPrinterName*: LPTSTR
-    pMachineName*: LPTSTR
-    pUserName*: LPTSTR
-    pDocument*: LPTSTR
-    pNotifyName*: LPTSTR
-    pDatatype*: LPTSTR
-    pPrintProcessor*: LPTSTR
-    pParameters*: LPTSTR
-    pDriverName*: LPTSTR
-    pDevMode*: LPDEVMODE
-    pStatus*: LPTSTR
-    pSecurityDescriptor*: PSECURITY_DESCRIPTOR
-    Status*: DWORD
-    Priority*: DWORD
-    Position*: DWORD
-    StartTime*: DWORD
-    UntilTime*: DWORD
-    TotalPages*: DWORD
-    Size*: DWORD
-    Submitted*: SYSTEMTIME
-    Time*: DWORD
-    PagesPrinted*: DWORD
-
-  TJOBINFO2* = JOB_INFO_2
-  PJOBINFO2* = ptr JOB_INFO_2
-  KERNINGPAIR* {.final, pure.} = object
-    wFirst*: int16
-    wSecond*: int16
-    iKernAmount*: int32
-
-  LPKERNINGPAIR* = ptr KERNINGPAIR
-  TKERNINGPAIR* = KERNINGPAIR
-  PKERNINGPAIR* = ptr KERNINGPAIR
-  LANA_ENUM* {.final, pure.} = object
-    len*: UCHAR
-    lana*: array[0..(MAX_LANA) - 1, UCHAR]
-
-  TLANAENUM* = LANA_ENUM
-  PLANAENUM* = ptr LANA_ENUM
-  LDT_ENTRY* {.final, pure.} = object
-    LimitLow*: int16
-    BaseLow*: int16
-    BaseMid*: int8
-    Flags1*: int8
-    Flags2*: int8
-    BaseHi*: int8
-
-  LPLDT_ENTRY* = ptr LDT_ENTRY
-  PLDT_ENTRY* = ptr LDT_ENTRY
-  TLDTENTRY* = LDT_ENTRY
-
-const
-  bm_LDT_ENTRY_BaseMid* = 0x000000FF
-  bp_LDT_ENTRY_BaseMid* = 0
-  bm_LDT_ENTRY_Type* = 0x00001F00
-  bp_LDT_ENTRY_Type* = 8
-  bm_LDT_ENTRY_Dpl* = 0x00006000
-  bp_LDT_ENTRY_Dpl* = 13
-  bm_LDT_ENTRY_Pres* = 0x00008000
-  bp_LDT_ENTRY_Pres* = 15
-  bm_LDT_ENTRY_LimitHi* = 0x000F0000
-  bp_LDT_ENTRY_LimitHi* = 16
-  bm_LDT_ENTRY_Sys* = 0x00100000
-  bp_LDT_ENTRY_Sys* = 20
-  bm_LDT_ENTRY_Reserved_0* = 0x00200000
-  bp_LDT_ENTRY_Reserved_0* = 21
-  bm_LDT_ENTRY_Default_Big* = 0x00400000
-  bp_LDT_ENTRY_Default_Big* = 22
-  bm_LDT_ENTRY_Granularity* = 0x00800000
-  bp_LDT_ENTRY_Granularity* = 23
-  bm_LDT_ENTRY_BaseHi* = 0xFF000000
-  bp_LDT_ENTRY_BaseHi* = 24
-
-type
-  LOCALESIGNATURE* {.final, pure.} = object
-    lsUsb*: array[0..3, DWORD]
-    lsCsbDefault*: array[0..1, DWORD]
-    lsCsbSupported*: array[0..1, DWORD]
-
-  TLOCALESIGNATURE* = LOCALESIGNATURE
-  PLOCALESIGNATURE* = ptr LOCALESIGNATURE
-  LOCALGROUP_MEMBERS_INFO_0* {.final, pure.} = object
-    lgrmi0_sid*: PSID
-
-  TLOCALGROUPMEMBERSINFO0* = LOCALGROUP_MEMBERS_INFO_0
-  PLOCALGROUPMEMBERSINFO0* = ptr LOCALGROUP_MEMBERS_INFO_0
-  LOCALGROUP_MEMBERS_INFO_3* {.final, pure.} = object
-    lgrmi3_domainandname*: LPWSTR
-
-  TLOCALGROUPMEMBERSINFO3* = LOCALGROUP_MEMBERS_INFO_3
-  PLOCALGROUPMEMBERSINFO3* = ptr LOCALGROUP_MEMBERS_INFO_3
-  FXPT16DOT16* = int32
-  LPFXPT16DOT16* = ptr FXPT16DOT16
-  TFXPT16DOT16* = FXPT16DOT16
-  PFXPT16DOT16* = ptr FXPT16DOT16
-  LUID* = TlargeInteger
-  TLUID* = LUID
-  PLUID* = ptr LUID
-  LUID_AND_ATTRIBUTES* {.final, pure.} = object
-    Luid*: LUID
-    Attributes*: DWORD
-
-  TLUIDANDATTRIBUTES* = LUID_AND_ATTRIBUTES
-  PLUIDANDATTRIBUTES* = ptr LUID_AND_ATTRIBUTES
-  LUID_AND_ATTRIBUTES_ARRAY* = array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES]
-  PLUID_AND_ATTRIBUTES_ARRAY* = ptr LUID_AND_ATTRIBUTES_ARRAY
-  TLUIDANDATTRIBUTESARRAY* = LUID_AND_ATTRIBUTES_ARRAY
-  LV_COLUMN* {.final, pure.} = object
-    mask*: UINT
-    fmt*: int32
-    cx*: int32
-    pszText*: LPTSTR
-    cchTextMax*: int32
-    iSubItem*: int32
-
-  TLVCOLUMN* = LV_COLUMN
-  PLVCOLUMN* = ptr LV_COLUMN
-  LV_ITEM* {.final, pure.} = object
-    mask*: UINT
-    iItem*: int32
-    iSubItem*: int32
-    state*: UINT
-    stateMask*: UINT
-    pszText*: LPTSTR
-    cchTextMax*: int32
-    iImage*: int32
-    lParam*: LPARAM
-
-  TLVITEM* = LV_ITEM
-  PLVITEM* = ptr LV_ITEM
-  LV_DISPINFO* {.final, pure.} = object
-    hdr*: NMHDR
-    item*: LV_ITEM
-
-  TLVDISPINFO* = LV_DISPINFO
-  PLVDISPINFO* = ptr LV_DISPINFO
-  LV_FINDINFO* {.final, pure.} = object
-    flags*: UINT
-    psz*: LPCTSTR
-    lParam*: LPARAM
-    pt*: POINT
-    vkDirection*: UINT
-
-  TLVFINDINFO* = LV_FINDINFO
-  PLVFINDINFO* = ptr LV_FINDINFO
-  LV_HITTESTINFO* {.final, pure.} = object
-    pt*: POINT
-    flags*: UINT
-    iItem*: int32
-
-  TLVHITTESTINFO* = LV_HITTESTINFO
-  PLVHITTESTINFO* = ptr LV_HITTESTINFO
-  LV_KEYDOWN* {.final, pure.} = object
-    hdr*: NMHDR
-    wVKey*: int16
-    flags*: UINT
-
-  TLVKEYDOWN* = LV_KEYDOWN
-  PLVKEYDOWN* = ptr LV_KEYDOWN
-  MAT2* {.final, pure.} = object
-    eM11*: FIXED
-    eM12*: FIXED
-    eM21*: FIXED
-    eM22*: FIXED
-
-  TMAT2* = MAT2
-  PMAT2* = ptr MAT2
-  MDICREATESTRUCT* {.final, pure.} = object
-    szClass*: LPCTSTR
-    szTitle*: LPCTSTR
-    hOwner*: HANDLE
-    x*: int32
-    y*: int32
-    cx*: int32
-    cy*: int32
-    style*: DWORD
-    lParam*: LPARAM
-
-  LPMDICREATESTRUCT* = ptr MDICREATESTRUCT
-  TMDICREATESTRUCT* = MDICREATESTRUCT
-  PMDICREATESTRUCT* = ptr MDICREATESTRUCT
-  MEASUREITEMSTRUCT* {.final, pure.} = object
-    CtlType*: UINT
-    CtlID*: UINT
-    itemID*: UINT
-    itemWidth*: UINT
-    itemHeight*: UINT
-    itemData*: ULONG_PTR
-
-  LPMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT
-  TMEASUREITEMSTRUCT* = MEASUREITEMSTRUCT
-  PMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT
-  MEMORY_BASIC_INFORMATION* {.final, pure.} = object
-    BaseAddress*: PVOID
-    AllocationBase*: PVOID
-    AllocationProtect*: DWORD
-    RegionSize*: DWORD
-    State*: DWORD
-    Protect*: DWORD
-    `type`*: DWORD
-
-  PMEMORY_BASIC_INFORMATION* = ptr MEMORY_BASIC_INFORMATION
-  TMEMORYBASICINFORMATION* = MEMORY_BASIC_INFORMATION
-  MEMORYSTATUS* {.final, pure.} = object
-    dwLength*: DWORD
-    dwMemoryLoad*: DWORD
-    dwTotalPhys*: int
-    dwAvailPhys*: int
-    dwTotalPageFile*: int
-    dwAvailPageFile*: int
-    dwTotalVirtual*: int
-    dwAvailVirtual*: int
-
-  TGUID* {.final, pure.} = object
-    D1*: int32
-    D2*: int16
-    D3*: int16
-    D4*: array [0..7, int8]
-
-  LPMEMORYSTATUS* = ptr MEMORYSTATUS
-  TMEMORYSTATUS* = MEMORYSTATUS
-  PMEMORYSTATUS* = ptr MEMORYSTATUS
-  MENUEX_TEMPLATE_HEADER* {.final, pure.} = object
-    wVersion*: int16
-    wOffset*: int16
-    dwHelpId*: DWORD
-
-  TMENUXTEMPLATEHEADER* = MENUEX_TEMPLATE_HEADER
-  PMENUXTEMPLATEHEADER* = ptr MENUEX_TEMPLATE_HEADER
-  MENUEX_TEMPLATE_ITEM* {.final, pure.} = object
-    dwType*: DWORD
-    dwState*: DWORD
-    uId*: UINT
-    bResInfo*: int8
-    szText*: array[0..0, WCHAR]
-    dwHelpId*: DWORD
-
-  TMENUEXTEMPLATEITEM* = MENUEX_TEMPLATE_ITEM
-  PMENUEXTEMPLATEITEM* = ptr MENUEX_TEMPLATE_ITEM
-  MENUINFO* {.final, pure.} = object
-    cbSize*: DWORD
-    fMask*: DWORD
-    dwStyle*: DWORD
-    cyMax*: UINT
-    hbrBack*: HBRUSH
-    dwContextHelpID*: DWORD
-    dwMenuData*: ULONG_PTR
-
-  LPMENUINFO* = ptr MENUINFO
-  LPCMENUINFO* = ptr MENUINFO
-  TMENUINFO* = MENUINFO
-  PMENUINFO* = ptr MENUINFO
-  MENUITEMINFO* {.final, pure.} = object
-    cbSize*: UINT
-    fMask*: UINT
-    fType*: UINT
-    fState*: UINT
-    wID*: UINT
-    hSubMenu*: HMENU
-    hbmpChecked*: HBITMAP
-    hbmpUnchecked*: HBITMAP
-    dwItemData*: ULONG_PTR
-    dwTypeData*: LPTSTR
-    cch*: UINT
-    hbmpItem*: HBITMAP
-
-  LPMENUITEMINFO* = ptr MENUITEMINFO
-  LPCMENUITEMINFO* = ptr MENUITEMINFO
-  TMENUITEMINFO* = MENUITEMINFO
-  TMENUITEMINFOA* = MENUITEMINFO
-  PMENUITEMINFO* = ptr MENUITEMINFO
-  MENUITEMTEMPLATE* {.final, pure.} = object
-    mtOption*: int16
-    mtID*: int16
-    mtString*: array[0..0, WCHAR]
-
-  TMENUITEMTEMPLATE* = MENUITEMTEMPLATE
-  PMENUITEMTEMPLATE* = ptr MENUITEMTEMPLATE
-  MENUITEMTEMPLATEHEADER* {.final, pure.} = object
-    versionNumber*: int16
-    offset*: int16
-
-  TMENUITEMTEMPLATEHEADER* = MENUITEMTEMPLATEHEADER
-  PMENUITEMTEMPLATEHEADER* = ptr MENUITEMTEMPLATEHEADER
-  MENUTEMPLATE* {.final, pure.} = object
-  LPMENUTEMPLATE* = ptr MENUTEMPLATE
-  TMENUTEMPLATE* = MENUTEMPLATE
-  PMENUTEMPLATE* = ptr MENUTEMPLATE
-  METAFILEPICT* {.final, pure.} = object
-    mm*: LONG
-    xExt*: LONG
-    yExt*: LONG
-    hMF*: HMETAFILE
-
-  LPMETAFILEPICT* = ptr METAFILEPICT
-  TMETAFILEPICT* = METAFILEPICT
-  PMETAFILEPICT* = ptr METAFILEPICT
-  METAHEADER* {.final, pure.} = object
-    mtType*: int16
-    mtHeaderSize*: int16
-    mtVersion*: int16
-    mtSize*: DWORD
-    mtNoObjects*: int16
-    mtMaxRecord*: DWORD
-    mtNoParameters*: int16
-
-  TMETAHEADER* = METAHEADER
-  PMETAHEADER* = ptr METAHEADER
-  METARECORD* {.final, pure.} = object
-    rdSize*: DWORD
-    rdFunction*: int16
-    rdParm*: array[0..0, int16]
-
-  LPMETARECORD* = ptr METARECORD
-  TMETARECORD* = METARECORD
-  PMETARECORD* = ptr METARECORD
-  MINIMIZEDMETRICS* {.final, pure.} = object
-    cbSize*: UINT
-    iWidth*: int32
-    iHorzGap*: int32
-    iVertGap*: int32
-    iArrange*: int32
-
-  LPMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS
-  TMINIMIZEDMETRICS* = MINIMIZEDMETRICS
-  PMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS
-  MINMAXINFO* {.final, pure.} = object
-    ptReserved*: POINT
-    ptMaxSize*: POINT
-    ptMaxPosition*: POINT
-    ptMinTrackSize*: POINT
-    ptMaxTrackSize*: POINT
-
-  TMINMAXINFO* = MINMAXINFO
-  PMINMAXINFO* = ptr MINMAXINFO
-  MODEMDEVCAPS* {.final, pure.} = object
-    dwActualSize*: DWORD
-    dwRequiredSize*: DWORD
-    dwDevSpecificOffset*: DWORD
-    dwDevSpecificSize*: DWORD
-    dwModemProviderVersion*: DWORD
-    dwModemManufacturerOffset*: DWORD
-    dwModemManufacturerSize*: DWORD
-    dwModemModelOffset*: DWORD
-    dwModemModelSize*: DWORD
-    dwModemVersionOffset*: DWORD
-    dwModemVersionSize*: DWORD
-    dwDialOptions*: DWORD
-    dwCallSetupFailTimer*: DWORD
-    dwInactivityTimeout*: DWORD
-    dwSpeakerVolume*: DWORD
-    dwSpeakerMode*: DWORD
-    dwModemOptions*: DWORD
-    dwMaxDTERate*: DWORD
-    dwMaxDCERate*: DWORD
-    abVariablePortion*: array[0..0, int8]
-
-  LPMODEMDEVCAPS* = ptr MODEMDEVCAPS
-  TMODEMDEVCAPS* = MODEMDEVCAPS
-  PMODEMDEVCAPS* = ptr MODEMDEVCAPS
-  MODEMSETTINGS* {.final, pure.} = object
-    dwActualSize*: DWORD
-    dwRequiredSize*: DWORD
-    dwDevSpecificOffset*: DWORD
-    dwDevSpecificSize*: DWORD
-    dwCallSetupFailTimer*: DWORD
-    dwInactivityTimeout*: DWORD
-    dwSpeakerVolume*: DWORD
-    dwSpeakerMode*: DWORD
-    dwPreferredModemOptions*: DWORD
-    dwNegotiatedModemOptions*: DWORD
-    dwNegotiatedDCERate*: DWORD
-    abVariablePortion*: array[0..0, int8]
-
-  LPMODEMSETTINGS* = ptr MODEMSETTINGS
-  TMODEMSETTINGS* = MODEMSETTINGS
-  PMODEMSETTINGS* = ptr MODEMSETTINGS
-  MONCBSTRUCT* {.final, pure.} = object
-    cb*: UINT
-    dwTime*: DWORD
-    hTask*: HANDLE
-    dwRet*: DWORD
-    wType*: UINT
-    wFmt*: UINT
-    hConv*: HCONV
-    hsz1*: HSZ
-    hsz2*: HSZ
-    hData*: HDDEDATA
-    dwData1*: DWORD
-    dwData2*: DWORD
-    cc*: CONVCONTEXT
-    cbData*: DWORD
-    Data*: array[0..7, DWORD]
-
-  TMONCBSTRUCT* = MONCBSTRUCT
-  PMONCBSTRUCT* = ptr MONCBSTRUCT
-  MONCONVSTRUCT* {.final, pure.} = object
-    cb*: UINT
-    fConnect*: WINBOOL
-    dwTime*: DWORD
-    hTask*: HANDLE
-    hszSvc*: HSZ
-    hszTopic*: HSZ
-    hConvClient*: HCONV
-    hConvServer*: HCONV
-
-  TMONCONVSTRUCT* = MONCONVSTRUCT
-  PMONCONVSTRUCT* = ptr MONCONVSTRUCT
-  MONERRSTRUCT* {.final, pure.} = object
-    cb*: UINT
-    wLastError*: UINT
-    dwTime*: DWORD
-    hTask*: HANDLE
-
-  TMONERRSTRUCT* = MONERRSTRUCT
-  PMONERRSTRUCT* = ptr MONERRSTRUCT
-  MONHSZSTRUCT* {.final, pure.} = object
-    cb*: UINT
-    fsAction*: WINBOOL
-    dwTime*: DWORD
-    hsz*: HSZ
-    hTask*: HANDLE
-    str*: array[0..0, TCHAR]
-
-  TMONHSZSTRUCT* = MONHSZSTRUCT
-  PMONHSZSTRUCT* = ptr MONHSZSTRUCT
-  MONITOR_INFO_1* {.final, pure.} = object
-    pName*: LPTSTR
-
-  TMONITORINFO1* = MONITOR_INFO_1
-  PMONITORINFO1* = ptr MONITOR_INFO_1
-  MONITOR_INFO_2* {.final, pure.} = object
-    pName*: LPTSTR
-    pEnvironment*: LPTSTR
-    pDLLName*: LPTSTR
-
-  TMONITORINFO2* = MONITOR_INFO_2
-  PMONITORINFO2* = ptr MONITOR_INFO_2
-  MONLINKSTRUCT* {.final, pure.} = object
-    cb*: UINT
-    dwTime*: DWORD
-    hTask*: HANDLE
-    fEstablished*: WINBOOL
-    fNoData*: WINBOOL
-    hszSvc*: HSZ
-    hszTopic*: HSZ
-    hszItem*: HSZ
-    wFmt*: UINT
-    fServer*: WINBOOL
-    hConvServer*: HCONV
-    hConvClient*: HCONV
-
-  TMONLINKSTRUCT* = MONLINKSTRUCT
-  PMONLINKSTRUCT* = ptr MONLINKSTRUCT
-  MONMSGSTRUCT* {.final, pure.} = object
-    cb*: UINT
-    hwndTo*: HWND
-    dwTime*: DWORD
-    hTask*: HANDLE
-    wMsg*: UINT
-    wParam*: WPARAM
-    lParam*: LPARAM
-    dmhd*: DDEML_MSG_HOOK_DATA
-
-  TMONMSGSTRUCT* = MONMSGSTRUCT
-  PMONMSGSTRUCT* = ptr MONMSGSTRUCT
-  MOUSEHOOKSTRUCT* {.final, pure.} = object
-    pt*: POINT
-    hwnd*: HWND
-    wHitTestCode*: UINT
-    dwExtraInfo*: DWORD
-
-  LPMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT
-  TMOUSEHOOKSTRUCT* = MOUSEHOOKSTRUCT
-  PMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT
-  MOUSEKEYS* {.final, pure.} = object
-    cbSize*: DWORD
-    dwFlags*: DWORD
-    iMaxSpeed*: DWORD
-    iTimeToMaxSpeed*: DWORD
-    iCtrlSpeed*: DWORD
-    dwReserved1*: DWORD
-    dwReserved2*: DWORD
-
-  TMOUSEKEYS* = MOUSEKEYS
-  PMOUSEKEYS* = ptr MOUSEKEYS
-  MSGBOXCALLBACK* = proc (lpHelpInfo: LPHELPINFO){.stdcall.}
-  TMSGBOXCALLBACK* = MSGBOXCALLBACK
-  MSGBOXPARAMS* {.final, pure.} = object
-    cbSize*: UINT
-    hwndOwner*: HWND
-    hInstance*: HINST
-    lpszText*: LPCSTR
-    lpszCaption*: LPCSTR
-    dwStyle*: DWORD
-    lpszIcon*: LPCSTR
-    dwContextHelpId*: DWORD
-    lpfnMsgBoxCallback*: MSGBOXCALLBACK
-    dwLanguageId*: DWORD
-
-  LPMSGBOXPARAMS* = ptr MSGBOXPARAMS
-  TMSGBOXPARAMS* = MSGBOXPARAMS
-  TMSGBOXPARAMSA* = MSGBOXPARAMS
-  PMSGBOXPARAMS* = ptr MSGBOXPARAMS
-  MSGFILTER* {.final, pure.} = object
-    nmhdr*: NMHDR
-    msg*: UINT
-    wParam*: WPARAM
-    lParam*: LPARAM
-
-  Tmsgfilter* = MSGFILTER
-  Pmsgfilter* = ptr MSGFILTER
-  MULTIKEYHELP* {.final, pure.} = object
-    mkSize*: DWORD
-    mkKeylist*: TCHAR
-    szKeyphrase*: array[0..0, TCHAR]
-
-  TMULTIKEYHELP* = MULTIKEYHELP
-  PMULTIKEYHELP* = ptr MULTIKEYHELP
-  NAME_BUFFER* {.final, pure.} = object
-    name*: array[0..(NCBNAMSZ) - 1, UCHAR]
-    name_num*: UCHAR
-    name_flags*: UCHAR
-
-  TNAMEBUFFER* = NAME_BUFFER
-  PNAMEBUFFER* = ptr NAME_BUFFER
-  p_NCB* = ptr NCB
-  NCB* {.final, pure.} = object
-    ncb_command*: UCHAR
-    ncb_retcode*: UCHAR
-    ncb_lsn*: UCHAR
-    ncb_num*: UCHAR
-    ncb_buffer*: PUCHAR
-    ncb_length*: int16
-    ncb_callname*: array[0..(NCBNAMSZ) - 1, UCHAR]
-    ncb_name*: array[0..(NCBNAMSZ) - 1, UCHAR]
-    ncb_rto*: UCHAR
-    ncb_sto*: UCHAR
-    ncb_post*: proc (para1: p_NCB){.CDECL.}
-    ncb_lana_num*: UCHAR
-    ncb_cmd_cplt*: UCHAR
-    ncb_reserve*: array[0..9, UCHAR]
-    ncb_event*: HANDLE
-
-  TNCB* = NCB
-  NCCALCSIZE_PARAMS* {.final, pure.} = object
-    rgrc*: array[0..2, RECT]
-    lppos*: PWINDOWPOS
-
-  TNCCALCSIZEPARAMS* = NCCALCSIZE_PARAMS
-  PNCCALCSIZEPARAMS* = ptr NCCALCSIZE_PARAMS
-  NDDESHAREINFO* {.final, pure.} = object
-    lRevision*: LONG
-    lpszShareName*: LPTSTR
-    lShareType*: LONG
-    lpszAppTopicList*: LPTSTR
-    fSharedFlag*: LONG
-    fService*: LONG
-    fStartAppFlag*: LONG
-    nCmdShow*: LONG
-    qModifyId*: array[0..1, LONG]
-    cNumItems*: LONG
-    lpszItemList*: LPTSTR
-
-  TNDDESHAREINFO* = NDDESHAREINFO
-  PNDDESHAREINFO* = ptr NDDESHAREINFO
-  NETRESOURCE* {.final, pure.} = object
-    dwScope*: DWORD
-    dwType*: DWORD
-    dwDisplayType*: DWORD
-    dwUsage*: DWORD
-    lpLocalName*: LPTSTR
-    lpRemoteName*: LPTSTR
-    lpComment*: LPTSTR
-    lpProvider*: LPTSTR
-
-  LPNETRESOURCE* = ptr NETRESOURCE
-  TNETRESOURCE* = NETRESOURCE
-  TNETRESOURCEA* = NETRESOURCE
-  PNETRESOURCE* = ptr NETRESOURCE
-  PNETRESOURCEA* = ptr NETRESOURCE
-  NEWCPLINFO* {.final, pure.} = object
-    dwSize*: DWORD
-    dwFlags*: DWORD
-    dwHelpContext*: DWORD
-    lData*: LONG
-    hIcon*: HICON
-    szName*: array[0..31, TCHAR]
-    szInfo*: array[0..63, TCHAR]
-    szHelpFile*: array[0..127, TCHAR]
-
-  TNEWCPLINFO* = NEWCPLINFO
-  PNEWCPLINFO* = ptr NEWCPLINFO
-  NEWTEXTMETRIC* {.final, pure.} = object
-    tmHeight*: LONG
-    tmAscent*: LONG
-    tmDescent*: LONG
-    tmInternalLeading*: LONG
-    tmExternalLeading*: LONG
-    tmAveCharWidth*: LONG
-    tmMaxCharWidth*: LONG
-    tmWeight*: LONG
-    tmOverhang*: LONG
-    tmDigitizedAspectX*: LONG
-    tmDigitizedAspectY*: LONG
-    tmFirstChar*: BCHAR
-    tmLastChar*: BCHAR
-    tmDefaultChar*: BCHAR
-    tmBreakChar*: BCHAR
-    tmItalic*: int8
-    tmUnderlined*: int8
-    tmStruckOut*: int8
-    tmPitchAndFamily*: int8
-    tmCharSet*: int8
-    ntmFlags*: DWORD
-    ntmSizeEM*: UINT
-    ntmCellHeight*: UINT
-    ntmAvgWidth*: UINT
-
-  TNEWTEXTMETRIC* = NEWTEXTMETRIC
-  PNEWTEXTMETRIC* = ptr NEWTEXTMETRIC
-  NEWTEXTMETRICEX* {.final, pure.} = object
-    ntmentm*: NEWTEXTMETRIC
-    ntmeFontSignature*: FONTSIGNATURE
-
-  TNEWTEXTMETRICEX* = NEWTEXTMETRICEX
-  PNEWTEXTMETRICEX* = ptr NEWTEXTMETRICEX
-  NM_LISTVIEW* {.final, pure.} = object
-    hdr*: NMHDR
-    iItem*: int32
-    iSubItem*: int32
-    uNewState*: UINT
-    uOldState*: UINT
-    uChanged*: UINT
-    ptAction*: POINT
-    lParam*: LPARAM
-
-  TNMLISTVIEW* = NM_LISTVIEW
-  PNMLISTVIEW* = ptr NM_LISTVIEW
-  TV_ITEM* {.final, pure.} = object
-    mask*: UINT
-    hItem*: HTREEITEM
-    state*: UINT
-    stateMask*: UINT
-    pszText*: LPTSTR
-    cchTextMax*: int32
-    iImage*: int32
-    iSelectedImage*: int32
-    cChildren*: int32
-    lParam*: LPARAM
-
-  LPTV_ITEM* = ptr TV_ITEM
-  TTVITEM* = TV_ITEM
-  PTVITEM* = ptr TV_ITEM
-  NM_TREEVIEW* {.final, pure.} = object
-    hdr*: NMHDR
-    action*: UINT
-    itemOld*: TV_ITEM
-    itemNew*: TV_ITEM
-    ptDrag*: POINT
-
-  LPNM_TREEVIEW* = ptr NM_TREEVIEW
-  TNMTREEVIEW* = NM_TREEVIEW
-  PNMTREEVIEW* = ptr NM_TREEVIEW
-  NM_UPDOWNW* {.final, pure.} = object
-    hdr*: NMHDR
-    iPos*: int32
-    iDelta*: int32
-
-  TNMUPDOWN* = NM_UPDOWNW
-  PNMUPDOWN* = ptr NM_UPDOWNW
-  NONCLIENTMETRICS* {.final, pure.} = object
-    cbSize*: UINT
-    iBorderWidth*: int32
-    iScrollWidth*: int32
-    iScrollHeight*: int32
-    iCaptionWidth*: int32
-    iCaptionHeight*: int32
-    lfCaptionFont*: LOGFONT
-    iSmCaptionWidth*: int32
-    iSmCaptionHeight*: int32
-    lfSmCaptionFont*: LOGFONT
-    iMenuWidth*: int32
-    iMenuHeight*: int32
-    lfMenuFont*: LOGFONT
-    lfStatusFont*: LOGFONT
-    lfMessageFont*: LOGFONT
-
-  LPNONCLIENTMETRICS* = ptr NONCLIENTMETRICS
-  TNONCLIENTMETRICS* = NONCLIENTMETRICS
-  PNONCLIENTMETRICS* = ptr NONCLIENTMETRICS
-  SERVICE_ADDRESS* {.final, pure.} = object
-    dwAddressType*: DWORD
-    dwAddressFlags*: DWORD
-    dwAddressLength*: DWORD
-    dwPrincipalLength*: DWORD
-    lpAddress*: ptr int8
-    lpPrincipal*: ptr int8
-
-  TSERVICEADDRESS* = SERVICE_ADDRESS
-  PSERVICEADDRESS* = ptr SERVICE_ADDRESS
-  SERVICE_ADDRESSES* {.final, pure.} = object
-    dwAddressCount*: DWORD
-    Addresses*: array[0..0, SERVICE_ADDRESS]
-
-  LPSERVICE_ADDRESSES* = ptr SERVICE_ADDRESSES
-  TSERVICEADDRESSES* = SERVICE_ADDRESSES
-  PSERVICEADDRESSES* = ptr SERVICE_ADDRESSES
-  LPGUID* = ptr TGUID
-  PGUID* = ptr TGUID
-  CLSID* = TGUID
-  LPCLSID* = ptr CLSID
-  TCLSID* = CLSID
-  PCLSID* = ptr CLSID
-  SERVICE_INFO* {.final, pure.} = object
-    lpServiceType*: LPGUID
-    lpServiceName*: LPTSTR
-    lpComment*: LPTSTR
-    lpLocale*: LPTSTR
-    dwDisplayHint*: DWORD
-    dwVersion*: DWORD
-    dwTime*: DWORD
-    lpMachineName*: LPTSTR
-    lpServiceAddress*: LPSERVICE_ADDRESSES
-    ServiceSpecificInfo*: BLOB
-
-  TSERVICEINFO* = SERVICE_INFO
-  PSERVICEINFO* = ptr SERVICE_INFO
-  NS_SERVICE_INFO* {.final, pure.} = object
-    dwNameSpace*: DWORD
-    ServiceInfo*: SERVICE_INFO
-
-  TNSSERVICEINFO* = NS_SERVICE_INFO
-  PNSSERVICEINFO* = ptr NS_SERVICE_INFO
-  NUMBERFMT* {.final, pure.} = object
-    NumDigits*: UINT
-    LeadingZero*: UINT
-    Grouping*: UINT
-    lpDecimalSep*: LPTSTR
-    lpThousandSep*: LPTSTR
-    NegativeOrder*: UINT
-
-  Tnumberfmt* = NUMBERFMT
-  Pnumberfmt* = ptr NUMBERFMT
-  OFSTRUCT* {.final, pure.} = object
-    cBytes*: int8
-    fFixedDisk*: int8
-    nErrCode*: int16
-    Reserved1*: int16
-    Reserved2*: int16
-    szPathName*: array[0..(OFS_MAXPATHNAME) - 1, CHAR]
-
-  LPOFSTRUCT* = ptr OFSTRUCT
-  TOFSTRUCT* = OFSTRUCT
-  POFSTRUCT* = ptr OFSTRUCT
-  OPENFILENAME_NT4* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hInstance*: HINST
-    lpstrFilter*: LPCTSTR
-    lpstrCustomFilter*: LPTSTR
-    nMaxCustFilter*: DWORD
-    nFilterIndex*: DWORD
-    lpstrFile*: LPTSTR
-    nMaxFile*: DWORD
-    lpstrFileTitle*: LPTSTR
-    nMaxFileTitle*: DWORD
-    lpstrInitialDir*: LPCTSTR
-    lpstrTitle*: LPCTSTR
-    Flags*: DWORD
-    nFileOffset*: int16
-    nFileExtension*: int16
-    lpstrDefExt*: LPCTSTR
-    lCustData*: LPARAM
-    lpfnHook*: LPOFNHOOKPROC
-    lpTemplateName*: LPCTSTR
-
-  LPOPENFILENAME_NT4* = ptr OPENFILENAME_NT4
-  TOPENFILENAME_NT4* = OPENFILENAME_NT4
-  POPENFILENAME_NT4* = ptr OPENFILENAME_NT4
-  TOPENFILENAME* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hInstance*: HINST
-    lpstrFilter*: LPCTSTR
-    lpstrCustomFilter*: LPTSTR
-    nMaxCustFilter*: DWORD
-    nFilterIndex*: DWORD
-    lpstrFile*: LPTSTR
-    nMaxFile*: DWORD
-    lpstrFileTitle*: LPTSTR
-    nMaxFileTitle*: DWORD
-    lpstrInitialDir*: LPCTSTR
-    lpstrTitle*: LPCTSTR
-    Flags*: DWORD
-    nFileOffset*: int16
-    nFileExtension*: int16
-    lpstrDefExt*: LPCTSTR
-    lCustData*: LPARAM
-    lpfnHook*: LPOFNHOOKPROC
-    lpTemplateName*: LPCTSTR
-    pvReserved*: pointer
-    dwreserved*: dword
-    FlagsEx*: dword
-
-  LPOPENFILENAME* = ptr TOPENFILENAME
-  POPENFILENAME* = ptr TOPENFILENAME
-  OFN* = TOPENFILENAME
-  POFN* = ptr TOPENFILENAME
-  OFNOTIFY* {.final, pure.} = object
-    hdr*: NMHDR
-    lpOFN*: LPOPENFILENAME
-    pszFile*: LPTSTR
-
-  LPOFNOTIFY* = ptr OFNOTIFY
-  TOFNOTIFY* = OFNOTIFY
-  POFNOTIFY* = ptr OFNOTIFY
-  OSVERSIONINFO* {.final, pure.} = object
-    dwOSVersionInfoSize*: DWORD
-    dwMajorVersion*: DWORD
-    dwMinorVersion*: DWORD
-    dwBuildNumber*: DWORD
-    dwPlatformId*: DWORD
-    szCSDVersion*: array[0..127, TCHAR]
-
-  LPOSVERSIONINFO* = ptr OSVERSIONINFO
-  TOSVERSIONINFO* = OSVERSIONINFO
-  POSVERSIONINFO* = ptr OSVERSIONINFO
-  OSVERSIONINFOW* {.final, pure.} = object
-    dwOSVersionInfoSize*: DWORD
-    dwMajorVersion*: DWORD
-    dwMinorVersion*: DWORD
-    dwBuildNumber*: DWORD
-    dwPlatformId*: DWORD
-    szCSDVersion*: array[0..127, WCHAR]
-
-  LPOSVERSIONINFOW* = ptr OSVERSIONINFOW
-  TOSVERSIONINFOW* = OSVERSIONINFOW
-  POSVERSIONINFOW* = ptr OSVERSIONINFOW
-  TEXTMETRIC* {.final, pure.} = object
-    tmHeight*: LONG
-    tmAscent*: LONG
-    tmDescent*: LONG
-    tmInternalLeading*: LONG
-    tmExternalLeading*: LONG
-    tmAveCharWidth*: LONG
-    tmMaxCharWidth*: LONG
-    tmWeight*: LONG
-    tmOverhang*: LONG
-    tmDigitizedAspectX*: LONG
-    tmDigitizedAspectY*: LONG
-    tmFirstChar*: BCHAR
-    tmLastChar*: BCHAR
-    tmDefaultChar*: BCHAR
-    tmBreakChar*: BCHAR
-    tmItalic*: int8
-    tmUnderlined*: int8
-    tmStruckOut*: int8
-    tmPitchAndFamily*: int8
-    tmCharSet*: int8
-
-  LPTEXTMETRIC* = ptr TEXTMETRIC
-  TTEXTMETRIC* = TEXTMETRIC
-  PTEXTMETRIC* = ptr TEXTMETRIC
-  TEXTMETRICW* {.final, pure.} = object
-    tmHeight*: LONG
-    tmAscent*: LONG
-    tmDescent*: LONG
-    tmInternalLeading*: LONG
-    tmExternalLeading*: LONG
-    tmAveCharWidth*: LONG
-    tmMaxCharWidth*: LONG
-    tmWeight*: LONG
-    tmOverhang*: LONG
-    tmDigitizedAspectX*: LONG
-    tmDigitizedAspectY*: LONG
-    tmFirstChar*: WCHAR
-    tmLastChar*: WCHAR
-    tmDefaultChar*: WCHAR
-    tmBreakChar*: WCHAR
-    tmItalic*: int8
-    tmUnderlined*: int8
-    tmStruckOut*: int8
-    tmPitchAndFamily*: int8
-    tmCharSet*: int8
-
-  LPTEXTMETRICW* = ptr TEXTMETRICW
-  TTEXTMETRICW* = TEXTMETRICW
-  PTEXTMETRICW* = ptr TEXTMETRICW
-  OUTLINETEXTMETRIC* {.final, pure.} = object
-    otmSize*: UINT
-    otmTextMetrics*: TEXTMETRIC
-    otmFiller*: int8
-    otmPanoseNumber*: PANOSE
-    otmfsSelection*: UINT
-    otmfsType*: UINT
-    otmsCharSlopeRise*: int32
-    otmsCharSlopeRun*: int32
-    otmItalicAngle*: int32
-    otmEMSquare*: UINT
-    otmAscent*: int32
-    otmDescent*: int32
-    otmLineGap*: UINT
-    otmsCapEmHeight*: UINT
-    otmsXHeight*: UINT
-    otmrcFontBox*: RECT
-    otmMacAscent*: int32
-    otmMacDescent*: int32
-    otmMacLineGap*: UINT
-    otmusMinimumPPEM*: UINT
-    otmptSubscriptSize*: POINT
-    otmptSubscriptOffset*: POINT
-    otmptSuperscriptSize*: POINT
-    otmptSuperscriptOffset*: POINT
-    otmsStrikeoutSize*: UINT
-    otmsStrikeoutPosition*: int32
-    otmsUnderscoreSize*: int32
-    otmsUnderscorePosition*: int32
-    otmpFamilyName*: PSTR
-    otmpFaceName*: PSTR
-    otmpStyleName*: PSTR
-    otmpFullName*: PSTR
-
-  LPOUTLINETEXTMETRIC* = ptr OUTLINETEXTMETRIC
-  TOUTLINETEXTMETRIC* = OUTLINETEXTMETRIC
-  POUTLINETEXTMETRIC* = ptr OUTLINETEXTMETRIC
-  OVERLAPPED* {.final, pure.} = object
-    Internal*: DWORD
-    InternalHigh*: DWORD
-    Offset*: DWORD
-    OffsetHigh*: DWORD
-    hEvent*: HANDLE
-
-  LPOVERLAPPED* = ptr OVERLAPPED
-  TOVERLAPPED* = OVERLAPPED
-  POVERLAPPED* = ptr OVERLAPPED #PAGESETUPDLG = record conflicts with function PageSetupDlg
-  TPAGESETUPDLG* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hDevMode*: HGLOBAL
-    hDevNames*: HGLOBAL
-    Flags*: DWORD
-    ptPaperSize*: POINT
-    rtMinMargin*: RECT
-    rtMargin*: RECT
-    hInstance*: HINST
-    lCustData*: LPARAM
-    lpfnPageSetupHook*: LPPAGESETUPHOOK
-    lpfnPagePaintHook*: LPPAGEPAINTHOOK
-    lpPageSetupTemplateName*: LPCTSTR
-    hPageSetupTemplate*: HGLOBAL
-
-  LPPAGESETUPDLG* = ptr TPAGESETUPDLG
-  PPAGESETUPDLG* = ptr TPAGESETUPDLG
-  TPSD* = TPAGESETUPDLG
-  PPSD* = ptr TPAGESETUPDLG
-  PAINTSTRUCT* {.final, pure.} = object
-    hdc*: HDC
-    fErase*: WINBOOL
-    rcPaint*: RECT
-    fRestore*: WINBOOL
-    fIncUpdate*: WINBOOL
-    rgbReserved*: array[0..31, int8]
-
-  LPPAINTSTRUCT* = ptr PAINTSTRUCT
-  TPAINTSTRUCT* = PAINTSTRUCT
-  PPAINTSTRUCT* = ptr PAINTSTRUCT
-  PARAFORMAT* {.final, pure.} = object
-    cbSize*: UINT
-    dwMask*: DWORD
-    wNumbering*: int16
-    wReserved*: int16
-    dxStartIndent*: LONG
-    dxRightIndent*: LONG
-    dxOffset*: LONG
-    wAlignment*: int16
-    cTabCount*: SHORT
-    rgxTabs*: array[0..(MAX_TAB_STOPS) - 1, LONG]
-
-  Tparaformat* = PARAFORMAT
-  Pparaformat* = ptr PARAFORMAT
-  PERF_COUNTER_BLOCK* {.final, pure.} = object
-    ByteLength*: DWORD
-
-  TPERFCOUNTERBLOCK* = PERF_COUNTER_BLOCK
-  PPERFCOUNTERBLOCK* = ptr PERF_COUNTER_BLOCK
-  PERF_COUNTER_DEFINITION* {.final, pure.} = object
-    ByteLength*: DWORD
-    CounterNameTitleIndex*: DWORD
-    CounterNameTitle*: LPWSTR
-    CounterHelpTitleIndex*: DWORD
-    CounterHelpTitle*: LPWSTR
-    DefaultScale*: DWORD
-    DetailLevel*: DWORD
-    CounterType*: DWORD
-    CounterSize*: DWORD
-    CounterOffset*: DWORD
-
-  TPERFCOUNTERDEFINITION* = PERF_COUNTER_DEFINITION
-  PPERFCOUNTERDEFINITION* = ptr PERF_COUNTER_DEFINITION
-  PERF_DATA_BLOCK* {.final, pure.} = object
-    Signature*: array[0..3, WCHAR]
-    LittleEndian*: DWORD
-    Version*: DWORD
-    Revision*: DWORD
-    TotalByteLength*: DWORD
-    HeaderLength*: DWORD
-    NumObjectTypes*: DWORD
-    DefaultObject*: DWORD
-    SystemTime*: SYSTEMTIME
-    PerfTime*: LARGE_INTEGER
-    PerfFreq*: LARGE_INTEGER
-    PerfTime100nSec*: LARGE_INTEGER
-    SystemNameLength*: DWORD
-    SystemNameOffset*: DWORD
-
-  TPERFDATABLOCK* = PERF_DATA_BLOCK
-  PPERFDATABLOCK* = ptr PERF_DATA_BLOCK
-  PERF_INSTANCE_DEFINITION* {.final, pure.} = object
-    ByteLength*: DWORD
-    ParentObjectTitleIndex*: DWORD
-    ParentObjectInstance*: DWORD
-    UniqueID*: DWORD
-    NameOffset*: DWORD
-    NameLength*: DWORD
-
-  TPERFINSTANCEDEFINITION* = PERF_INSTANCE_DEFINITION
-  PPERFINSTANCEDEFINITION* = PERF_INSTANCE_DEFINITION
-  PERF_OBJECT_TYPE* {.final, pure.} = object
-    TotalByteLength*: DWORD
-    DefinitionLength*: DWORD
-    HeaderLength*: DWORD
-    ObjectNameTitleIndex*: DWORD
-    ObjectNameTitle*: LPWSTR
-    ObjectHelpTitleIndex*: DWORD
-    ObjectHelpTitle*: LPWSTR
-    DetailLevel*: DWORD
-    NumCounters*: DWORD
-    DefaultCounter*: DWORD
-    NumInstances*: DWORD
-    CodePage*: DWORD
-    PerfTime*: LARGE_INTEGER
-    PerfFreq*: LARGE_INTEGER
-
-  TPERFOBJECTTYPE* = PERF_OBJECT_TYPE
-  PPERFOBJECTTYPE* = ptr PERF_OBJECT_TYPE
-  POLYTEXT* {.final, pure.} = object
-    x*: int32
-    y*: int32
-    n*: UINT
-    lpstr*: LPCTSTR
-    uiFlags*: UINT
-    rcl*: RECT
-    pdx*: ptr int32
-
-  TPOLYTEXT* = POLYTEXT
-  PPOLYTEXT* = ptr POLYTEXT
-  PORT_INFO_1* {.final, pure.} = object
-    pName*: LPTSTR
-
-  TPORTINFO1* = PORT_INFO_1
-  PPORTINFO1* = ptr PORT_INFO_1
-  PORT_INFO_2* {.final, pure.} = object
-    pPortName*: LPSTR
-    pMonitorName*: LPSTR
-    pDescription*: LPSTR
-    fPortType*: DWORD
-    Reserved*: DWORD
-
-  TPORTINFO2* = PORT_INFO_2
-  PPORTINFO2* = ptr PORT_INFO_2
-  PREVENT_MEDIA_REMOVAL* {.final, pure.} = object
-    PreventMediaRemoval*: bool
-
-  TPREVENTMEDIAREMOVAL* = PREVENT_MEDIA_REMOVAL
-  PPREVENTMEDIAREMOVAL* = ptr PREVENT_MEDIA_REMOVAL #PRINTDLG = record conflicts with PrintDlg function
-  TPRINTDLG* {.final, pure.} = object
-    lStructSize*: DWORD
-    hwndOwner*: HWND
-    hDevMode*: HANDLE
-    hDevNames*: HANDLE
-    hDC*: HDC
-    Flags*: DWORD
-    nFromPage*: int16
-    nToPage*: int16
-    nMinPage*: int16
-    nMaxPage*: int16
-    nCopies*: int16
-    hInstance*: HINST
-    lCustData*: DWORD
-    lpfnPrintHook*: LPPRINTHOOKPROC
-    lpfnSetupHook*: LPSETUPHOOKPROC
-    lpPrintTemplateName*: LPCTSTR
-    lpSetupTemplateName*: LPCTSTR
-    hPrintTemplate*: HANDLE
-    hSetupTemplate*: HANDLE
-
-  LPPRINTDLG* = ptr TPRINTDLG
-  PPRINTDLG* = ptr TPRINTDLG
-  TPD* = TPRINTDLG
-  PPD* = ptr TPRINTDLG
-  PRINTER_DEFAULTS* {.final, pure.} = object
-    pDatatype*: LPTSTR
-    pDevMode*: LPDEVMODE
-    DesiredAccess*: ACCESS_MASK
-
-  TPRINTERDEFAULTS* = PRINTER_DEFAULTS
-  PPRINTERDEFAULTS* = ptr PRINTER_DEFAULTS
-  PRINTER_INFO_1* {.final, pure.} = object
-    Flags*: DWORD
-    pDescription*: LPTSTR
-    pName*: LPTSTR
-    pComment*: LPTSTR
-
-  LPPRINTER_INFO_1* = ptr PRINTER_INFO_1
-  PPRINTER_INFO_1* = ptr PRINTER_INFO_1
-  TPRINTERINFO1* = PRINTER_INFO_1
-  PRINTER_INFO_2* {.final, pure.} = object
-    pServerName*: LPTSTR
-    pPrinterName*: LPTSTR
-    pShareName*: LPTSTR
-    pPortName*: LPTSTR
-    pDriverName*: LPTSTR
-    pComment*: LPTSTR
-    pLocation*: LPTSTR
-    pDevMode*: LPDEVMODE
-    pSepFile*: LPTSTR
-    pPrintProcessor*: LPTSTR
-    pDatatype*: LPTSTR
-    pParameters*: LPTSTR
-    pSecurityDescriptor*: PSECURITY_DESCRIPTOR
-    Attributes*: DWORD
-    Priority*: DWORD
-    DefaultPriority*: DWORD
-    StartTime*: DWORD
-    UntilTime*: DWORD
-    Status*: DWORD
-    cJobs*: DWORD
-    AveragePPM*: DWORD
-
-  TPRINTERINFO2* = PRINTER_INFO_2
-  PPRINTERINFO2* = ptr PRINTER_INFO_2
-  PRINTER_INFO_3* {.final, pure.} = object
-    pSecurityDescriptor*: PSECURITY_DESCRIPTOR
-
-  TPRINTERINFO3* = PRINTER_INFO_3
-  PPRINTERINFO3* = ptr PRINTER_INFO_3
-  PRINTER_INFO_4* {.final, pure.} = object
-    pPrinterName*: LPTSTR
-    pServerName*: LPTSTR
-    Attributes*: DWORD
-
-  TPRINTERINFO4* = PRINTER_INFO_4
-  PPRINTERINFO4* = ptr PRINTER_INFO_4
-  PRINTER_INFO_5* {.final, pure.} = object
-    pPrinterName*: LPTSTR
-    pPortName*: LPTSTR
-    Attributes*: DWORD
-    DeviceNotSelectedTimeout*: DWORD
-    TransmissionRetryTimeout*: DWORD
-
-  TPRINTERINFO5* = PRINTER_INFO_5
-  PPRINTERINFO5* = ptr PRINTER_INFO_5
-  PRINTER_NOTIFY_INFO_DATA* {.final, pure.} = object
-    `type`*: int16
-    Field*: int16
-    Reserved*: DWORD
-    Id*: DWORD
-    cbBuf*: DWORD
-    pBuf*: LPVOID
-
-  TPRINTERNOTIFYINFODATA* = PRINTER_NOTIFY_INFO_DATA
-  PPRINTERNOTIFYINFODATA* = ptr PRINTER_NOTIFY_INFO_DATA
-  PRINTER_NOTIFY_INFO* {.final, pure.} = object
-    Version*: DWORD
-    Flags*: DWORD
-    Count*: DWORD
-    aData*: array[0..0, PRINTER_NOTIFY_INFO_DATA]
-
-  TPRINTERNOTIFYINFO* = PRINTER_NOTIFY_INFO
-  PPRINTERNOTIFYINFO* = ptr PRINTER_NOTIFY_INFO
-  PRINTER_NOTIFY_OPTIONS_TYPE* {.final, pure.} = object
-    `type`*: int16
-    Reserved0*: int16
-    Reserved1*: DWORD
-    Reserved2*: DWORD
-    Count*: DWORD
-    pFields*: PWORD
-
-  PPRINTER_NOTIFY_OPTIONS_TYPE* = ptr PRINTER_NOTIFY_OPTIONS_TYPE
-  TPRINTERNOTIFYOPTIONSTYPE* = PRINTER_NOTIFY_OPTIONS_TYPE
-  PRINTER_NOTIFY_OPTIONS* {.final, pure.} = object
-    Version*: DWORD
-    Flags*: DWORD
-    Count*: DWORD
-    pTypes*: PPRINTER_NOTIFY_OPTIONS_TYPE
-
-  TPRINTERNOTIFYOPTIONS* = PRINTER_NOTIFY_OPTIONS
-  PPRINTERNOTIFYOPTIONS* = ptr PRINTER_NOTIFY_OPTIONS
-  PRINTPROCESSOR_INFO_1* {.final, pure.} = object
-    pName*: LPTSTR
-
-  TPRINTPROCESSORINFO1* = PRINTPROCESSOR_INFO_1
-  PPRINTPROCESSORINFO1* = ptr PRINTPROCESSOR_INFO_1
-  PRIVILEGE_SET* {.final, pure.} = object
-    PrivilegeCount*: DWORD
-    Control*: DWORD
-    Privilege*: array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES]
-
-  LPPRIVILEGE_SET* = ptr PRIVILEGE_SET
-  PPRIVILEGE_SET* = ptr PRIVILEGE_SET
-  TPRIVILEGESET* = PRIVILEGE_SET
-  PROCESS_HEAPENTRY* {.final, pure.} = object
-    lpData*: PVOID
-    cbData*: DWORD
-    cbOverhead*: int8
-    iRegionIndex*: int8
-    wFlags*: int16
-    dwCommittedSize*: DWORD
-    dwUnCommittedSize*: DWORD
-    lpFirstBlock*: LPVOID
-    lpLastBlock*: LPVOID
-    hMem*: HANDLE
-
-  LPPROCESS_HEAP_ENTRY* = ptr PROCESS_HEAPENTRY
-  TPROCESSHEAPENTRY* = PROCESS_HEAPENTRY
-  PPROCESSHEAPENTRY* = ptr PROCESS_HEAPENTRY
-  PROCESS_INFORMATION* {.final, pure.} = object
-    hProcess*: HANDLE
-    hThread*: HANDLE
-    dwProcessId*: DWORD
-    dwThreadId*: DWORD
-
-  LPPROCESS_INFORMATION* = ptr PROCESS_INFORMATION
-  TPROCESSINFORMATION* = PROCESS_INFORMATION
-  PPROCESSINFORMATION* = ptr PROCESS_INFORMATION
-  LPFNPSPCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPVOID): UINT{.
-      stdcall.}
-  TFNPSPCALLBACK* = LPFNPSPCALLBACK
-  PROPSHEETPAGE* {.final, pure.} = object
-    dwSize*: DWORD
-    dwFlags*: DWORD
-    hInstance*: HINST
-    pszIcon*: LPCTSTR
-    pszTitle*: LPCTSTR
-    pfnDlgProc*: DLGPROC
-    lParam*: LPARAM
-    pfnCallback*: LPFNPSPCALLBACK
-    pcRefParent*: ptr UINT
-
-  LPPROPSHEETPAGE* = ptr PROPSHEETPAGE
-  LPCPROPSHEETPAGE* = ptr PROPSHEETPAGE
-  TPROPSHEETPAGE* = PROPSHEETPAGE
-  PPROPSHEETPAGE* = ptr PROPSHEETPAGE
-  emptyrecord* {.final, pure.} = object
-  lpemptyrecord* = ptr emptyrecord
-  HPROPSHEETPAGE* = ptr emptyrecord
-  PROPSHEETHEADER* {.final, pure.} = object
-    dwSize*: DWORD
-    dwFlags*: DWORD
-    hwndParent*: HWND
-    hInstance*: HINST
-    pszIcon*: LPCTSTR
-    pszCaption*: LPCTSTR
-    nPages*: UINT
-    pStartPage*: LPCTSTR
-    phpage*: ptr HPROPSHEETPAGE
-    pfnCallback*: PFNPROPSHEETCALLBACK
-    pszbmWatermark*: LPCTSTR
-    hplWatermark*: HPALETTE
-    pszbmHeader*: cstring
-
-  LPPROPSHEETHEADER* = ptr PROPSHEETHEADER
-  LPCPROPSHEETHEADER* = ptr PROPSHEETHEADER
-  TPROPSHEETHEADER* = PROPSHEETHEADER
-  PPROPSHEETHEADER* = ptr PROPSHEETHEADER # PropertySheet callbacks
-  LPFNADDPROPSHEETPAGE* = proc (para1: HPROPSHEETPAGE, para2: LPARAM): WINBOOL{.
-      stdcall.}
-  TFNADDPROPSHEETPAGE* = LPFNADDPROPSHEETPAGE
-  LPFNADDPROPSHEETPAGES* = proc (para1: LPVOID, para2: LPFNADDPROPSHEETPAGE,
-                                 para3: LPARAM): WINBOOL{.stdcall.}
-  TFNADDPROPSHEETPAGES* = LPFNADDPROPSHEETPAGES
-  PROTOCOL_INFO* {.final, pure.} = object
-    dwServiceFlags*: DWORD
-    iAddressFamily*: WINT
-    iMaxSockAddr*: WINT
-    iMinSockAddr*: WINT
-    iSocketType*: WINT
-    iProtocol*: WINT
-    dwMessageSize*: DWORD
-    lpProtocol*: LPTSTR
-
-  TPROTOCOLINFO* = PROTOCOL_INFO
-  PPROTOCOLINFO* = ptr PROTOCOL_INFO
-  PROVIDOR_INFO_1* {.final, pure.} = object
-    pName*: LPTSTR
-    pEnvironment*: LPTSTR
-    pDLLName*: LPTSTR
-
-  TPROVIDORINFO1* = PROVIDOR_INFO_1
-  PPROVIDORINFO1* = ptr PROVIDOR_INFO_1
-  PSHNOTIFY* {.final, pure.} = object
-    hdr*: NMHDR
-    lParam*: LPARAM
-
-  LPPSHNOTIFY* = ptr PSHNOTIFY
-  TPSHNOTIFY* = PSHNOTIFY
-  PPSHNOTIFY* = ptr PSHNOTIFY
-  PUNCTUATION* {.final, pure.} = object
-    iSize*: UINT
-    szPunctuation*: LPSTR
-
-  Tpunctuation* = PUNCTUATION
-  Ppunctuation* = ptr PUNCTUATION
-  TQUERY_SERVICE_CONFIG* {.final, pure.} = object
-    dwServiceType*: DWORD
-    dwStartType*: DWORD
-    dwErrorControl*: DWORD
-    lpBinaryPathName*: LPTSTR
-    lpLoadOrderGroup*: LPTSTR
-    dwTagId*: DWORD
-    lpDependencies*: LPTSTR
-    lpServiceStartName*: LPTSTR
-    lpDisplayName*: LPTSTR
-
-  LPQUERY_SERVICE_CONFIG* = ptr TQUERY_SERVICE_CONFIG
-  PQUERYSERVICECONFIG* = ptr TQUERY_SERVICE_CONFIG
-  TQUERY_SERVICE_LOCK_STATUS* {.final, pure.} = object
-    fIsLocked*: DWORD
-    lpLockOwner*: LPTSTR
-    dwLockDuration*: DWORD
-
-  LPQUERY_SERVICE_LOCK_STATUS* = ptr TQUERY_SERVICE_LOCK_STATUS
-  PQUERYSERVICELOCKSTATUS* = ptr TQUERY_SERVICE_LOCK_STATUS
-  RASAMB* {.final, pure.} = object
-    dwSize*: DWORD
-    dwError*: DWORD
-    szNetBiosError*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR]
-    bLana*: int8
-
-  TRASAMB* = RASAMB
-  PRASAMB* = ptr RASAMB
-  RASCONN* {.final, pure.} = object
-    dwSize*: DWORD
-    hrasconn*: HRASCONN
-    szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR]
-    szDeviceType*: array[0..(RAS_MaxDeviceType + 1) - 1, CHAR]
-    szDeviceName*: array[0..(RAS_MaxDeviceName + 1) - 1, CHAR]
-
-  TRASCONN* = RASCONN
-  PRASCONN* = ptr RASCONN
-  RASCONNSTATUS* {.final, pure.} = object
-    dwSize*: DWORD
-    rasconnstate*: RASCONNSTATE
-    dwError*: DWORD
-    szDeviceType*: array[0..(RAS_MaxDeviceType + 1) - 1, TCHAR]
-    szDeviceName*: array[0..(RAS_MaxDeviceName + 1) - 1, TCHAR]
-
-  TRASCONNSTATUS* = RASCONNSTATUS
-  PRASCONNSTATUS* = ptr RASCONNSTATUS
-  RASDIALEXTENSIONS* {.final, pure.} = object
-    dwSize*: DWORD
-    dwfOptions*: DWORD
-    hwndParent*: HWND
-    reserved*: DWORD
-
-  TRASDIALEXTENSIONS* = RASDIALEXTENSIONS
-  PRASDIALEXTENSIONS* = ptr RASDIALEXTENSIONS
-  RASDIALPARAMS* {.final, pure.} = object
-    dwSize*: DWORD
-    szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR]
-    szPhoneNumber*: array[0..(RAS_MaxPhoneNumber + 1) - 1, TCHAR]
-    szCallbackNumber*: array[0..(RAS_MaxCallbackNumber + 1) - 1, TCHAR]
-    szUserName*: array[0..(UNLEN + 1) - 1, TCHAR]
-    szPassword*: array[0..(PWLEN + 1) - 1, TCHAR]
-    szDomain*: array[0..(DNLEN + 1) - 1, TCHAR]
-
-  TRASDIALPARAMS* = RASDIALPARAMS
-  PRASDIALPARAMS* = ptr RASDIALPARAMS
-  RASENTRYNAME* {.final, pure.} = object
-    dwSize*: DWORD
-    szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR]
-
-  TRASENTRYNAME* = RASENTRYNAME
-  PRASENTRYNAME* = ptr RASENTRYNAME
-  RASPPPIP* {.final, pure.} = object
-    dwSize*: DWORD
-    dwError*: DWORD
-    szIpAddress*: array[0..(RAS_MaxIpAddress + 1) - 1, TCHAR]
-
-  TRASPPPIP* = RASPPPIP
-  PRASPPPIP* = ptr RASPPPIP
-  RASPPPIPX* {.final, pure.} = object
-    dwSize*: DWORD
-    dwError*: DWORD
-    szIpxAddress*: array[0..(RAS_MaxIpxAddress + 1) - 1, TCHAR]
-
-  TRASPPPIPX* = RASPPPIPX
-  PRASPPPIPX* = ptr RASPPPIPX
-  RASPPPNBF* {.final, pure.} = object
-    dwSize*: DWORD
-    dwError*: DWORD
-    dwNetBiosError*: DWORD
-    szNetBiosError*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR]
-    szWorkstationName*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR]
-    bLana*: int8
-
-  TRASPPPNBF* = RASPPPNBF
-  PRASPPPNBF* = ptr RASPPPNBF
-  RASTERIZER_STATUS* {.final, pure.} = object
-    nSize*: short
-    wFlags*: short
-    nLanguageID*: short
-
-  LPRASTERIZER_STATUS* = ptr RASTERIZER_STATUS
-  TRASTERIZERSTATUS* = RASTERIZER_STATUS
-  PRASTERIZERSTATUS* = ptr RASTERIZER_STATUS
-  REASSIGN_BLOCKS* {.final, pure.} = object
-    Reserved*: int16
-    Count*: int16
-    BlockNumber*: array[0..0, DWORD]
-
-  TREASSIGNBLOCKS* = REASSIGN_BLOCKS
-  PREASSIGNBLOCKS* = ptr REASSIGN_BLOCKS
-  REMOTE_NAME_INFO* {.final, pure.} = object
-    lpUniversalName*: LPTSTR
-    lpConnectionName*: LPTSTR
-    lpRemainingPath*: LPTSTR
-
-  TREMOTENAMEINFO* = REMOTE_NAME_INFO
-  PREMOTENAMEINFO* = ptr REMOTE_NAME_INFO #
-                                          #   TODO: OLE
-                                          #  typedef struct _reobject {
-                                          #    DWORD  cbStruct;
-                                          #    LONG   cp;
-                                          #    CLSID  clsid;
-                                          #    LPOLEOBJECT      poleobj;
-                                          #    LPSTORAGE        pstg;
-                                          #    LPOLECLIENTSITE  polesite;
-                                          #    SIZEL  sizel;
-                                          #    DWORD  dvaspect;
-                                          #    DWORD  dwFlags;
-                                          #    DWORD  dwUser;
-                                          #  } REOBJECT;
-                                          #
-  REPASTESPECIAL* {.final, pure.} = object
-    dwAspect*: DWORD
-    dwParam*: DWORD
-
-  Trepastespecial* = REPASTESPECIAL
-  Prepastespecial* = ptr REPASTESPECIAL
-  REQRESIZE* {.final, pure.} = object
-    nmhdr*: NMHDR
-    rc*: RECT
-
-  Treqresize* = REQRESIZE
-  Preqresize* = ptr REQRESIZE
-  RGNDATAHEADER* {.final, pure.} = object
-    dwSize*: DWORD
-    iType*: DWORD
-    nCount*: DWORD
-    nRgnSize*: DWORD
-    rcBound*: RECT
-
-  TRGNDATAHEADER* = RGNDATAHEADER
-  PRGNDATAHEADER* = ptr RGNDATAHEADER
-  RGNDATA* {.final, pure.} = object
-    rdh*: RGNDATAHEADER
-    Buffer*: array[0..0, char]
-
-  LPRGNDATA* = ptr RGNDATA
-  TRGNDATA* = RGNDATA
-  PRGNDATA* = ptr RGNDATA
-  SCROLLINFO* {.final, pure.} = object
-    cbSize*: UINT
-    fMask*: UINT
-    nMin*: int32
-    nMax*: int32
-    nPage*: UINT
-    nPos*: int32
-    nTrackPos*: int32
-
-  LPSCROLLINFO* = ptr SCROLLINFO
-  LPCSCROLLINFO* = ptr SCROLLINFO
-  TSCROLLINFO* = SCROLLINFO
-  PSCROLLINFO* = ptr SCROLLINFO
-  SECURITY_ATTRIBUTES* {.final, pure.} = object
-    nLength*: DWORD
-    lpSecurityDescriptor*: LPVOID
-    bInheritHandle*: WINBOOL
-
-  LPSECURITY_ATTRIBUTES* = ptr SECURITY_ATTRIBUTES
-  TSECURITYATTRIBUTES* = SECURITY_ATTRIBUTES
-  PSECURITYATTRIBUTES* = ptr SECURITY_ATTRIBUTES
-  SECURITY_INFORMATION* = DWORD
-  PSECURITY_INFORMATION* = ptr SECURITY_INFORMATION
-  TSECURITYINFORMATION* = SECURITY_INFORMATION
-  SELCHANGE* {.final, pure.} = object
-    nmhdr*: NMHDR
-    chrg*: CHARRANGE
-    seltyp*: int16
-
-  Tselchange* = SELCHANGE
-  Pselchange* = ptr SELCHANGE
-  SERIALKEYS* {.final, pure.} = object
-    cbSize*: DWORD
-    dwFlags*: DWORD
-    lpszActivePort*: LPSTR
-    lpszPort*: LPSTR
-    iBaudRate*: DWORD
-    iPortState*: DWORD
-
-  LPSERIALKEYS* = ptr SERIALKEYS
-  TSERIALKEYS* = SERIALKEYS
-  PSERIALKEYS* = ptr SERIALKEYS
-  SERVICE_TABLE_ENTRY* {.final, pure.} = object
-    lpServiceName*: LPTSTR
-    lpServiceProc*: LPSERVICE_MAIN_FUNCTION
-
-  LPSERVICE_TABLE_ENTRY* = ptr SERVICE_TABLE_ENTRY
-  TSERVICETABLEENTRY* = SERVICE_TABLE_ENTRY
-  PSERVICETABLEENTRY* = ptr SERVICE_TABLE_ENTRY
-  SERVICE_TYPE_VALUE_ABS* {.final, pure.} = object
-    dwNameSpace*: DWORD
-    dwValueType*: DWORD
-    dwValueSize*: DWORD
-    lpValueName*: LPTSTR
-    lpValue*: PVOID
-
-  TSERVICETYPEVALUEABS* = SERVICE_TYPE_VALUE_ABS
-  PSERVICETYPEVALUEABS* = ptr SERVICE_TYPE_VALUE_ABS
-  SERVICE_TYPE_INFO_ABS* {.final, pure.} = object
-    lpTypeName*: LPTSTR
-    dwValueCount*: DWORD
-    Values*: array[0..0, SERVICE_TYPE_VALUE_ABS]
-
-  TSERVICETYPEINFOABS* = SERVICE_TYPE_INFO_ABS
-  PSERVICETYPEINFOABS* = ptr SERVICE_TYPE_INFO_ABS
-  SESSION_BUFFER* {.final, pure.} = object
-    lsn*: UCHAR
-    state*: UCHAR
-    local_name*: array[0..(NCBNAMSZ) - 1, UCHAR]
-    remote_name*: array[0..(NCBNAMSZ) - 1, UCHAR]
-    rcvs_outstanding*: UCHAR
-    sends_outstanding*: UCHAR
-
-  TSESSIONBUFFER* = SESSION_BUFFER
-  PSESSIONBUFFER* = ptr SESSION_BUFFER
-  SESSION_HEADER* {.final, pure.} = object
-    sess_name*: UCHAR
-    num_sess*: UCHAR
-    rcv_dg_outstanding*: UCHAR
-    rcv_any_outstanding*: UCHAR
-
-  TSESSIONHEADER* = SESSION_HEADER
-  PSESSIONHEADER* = ptr SESSION_HEADER
-  SET_PARTITION_INFORMATION* {.final, pure.} = object
-    PartitionType*: int8
-
-  TSETPARTITIONINFORMATION* = SET_PARTITION_INFORMATION
-  PSETPARTITIONINFORMATION* = ptr SET_PARTITION_INFORMATION
-  SHCONTF* = enum
-    SHCONTF_FOLDERS = 32, SHCONTF_NONFOLDERS = 64, SHCONTF_INCLUDEHIDDEN = 128
-  TSHCONTF* = SHCONTF
-  SHFILEINFO* {.final, pure.} = object
-    hIcon*: HICON
-    iIcon*: int32
-    dwAttributes*: DWORD
-    szDisplayName*: array[0..(MAX_PATH) - 1, char]
-    szTypeName*: array[0..79, char]
-
-  TSHFILEINFO* = SHFILEINFO
-  PSHFILEINFO* = ptr SHFILEINFO
-  FILEOP_FLAGS* = int16
-  TFILEOPFLAGS* = FILEOP_FLAGS
-  PFILEOPFLAGS* = ptr FILEOP_FLAGS
-  SHFILEOPSTRUCT* {.final, pure.} = object
-    hwnd*: HWND
-    wFunc*: UINT
-    pFrom*: LPCSTR
-    pTo*: LPCSTR
-    fFlags*: FILEOP_FLAGS
-    fAnyOperationsAborted*: WINBOOL
-    hNameMappings*: LPVOID
-    lpszProgressTitle*: LPCSTR
-
-  LPSHFILEOPSTRUCT* = ptr SHFILEOPSTRUCT
-  TSHFILEOPSTRUCT* = SHFILEOPSTRUCT
-  PSHFILEOPSTRUCT* = ptr SHFILEOPSTRUCT
-  SHGNO* = enum
-    SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FORPARSING = 0x00008000
-  TSHGDN* = SHGNO
-  SHNAMEMAPPING* {.final, pure.} = object
-    pszOldPath*: LPSTR
-    pszNewPath*: LPSTR
-    cchOldPath*: int32
-    cchNewPath*: int32
-
-  LPSHNAMEMAPPING* = ptr SHNAMEMAPPING
-  TSHNAMEMAPPING* = SHNAMEMAPPING
-  PSHNAMEMAPPING* = ptr SHNAMEMAPPING
-  SID_AND_ATTRIBUTES* {.final, pure.} = object
-    Sid*: PSID
-    Attributes*: DWORD
-
-  TSIDANDATTRIBUTES* = SID_AND_ATTRIBUTES
-  PSIDANDATTRIBUTES* = ptr SID_AND_ATTRIBUTES
-  SID_AND_ATTRIBUTES_ARRAY* = array[0..(ANYSIZE_ARRAY) - 1, SID_AND_ATTRIBUTES]
-  PSID_AND_ATTRIBUTES_ARRAY* = ptr SID_AND_ATTRIBUTES_ARRAY
-  TSIDANDATTRIBUTESARRAY* = SID_AND_ATTRIBUTES_ARRAY
-  SINGLE_LIST_ENTRY* {.final, pure.} = object
-    Next*: ptr SINGLE_LIST_ENTRY
-
-  TSINGLELISTENTRY* = SINGLE_LIST_ENTRY
-  PSINGLELISTENTRY* = ptr SINGLE_LIST_ENTRY
-  SOUNDSENTRY* {.final, pure.} = object
-    cbSize*: UINT
-    dwFlags*: DWORD
-    iFSTextEffect*: DWORD
-    iFSTextEffectMSec*: DWORD
-    iFSTextEffectColorBits*: DWORD
-    iFSGrafEffect*: DWORD
-    iFSGrafEffectMSec*: DWORD
-    iFSGrafEffectColor*: DWORD
-    iWindowsEffect*: DWORD
-    iWindowsEffectMSec*: DWORD
-    lpszWindowsEffectDLL*: LPTSTR
-    iWindowsEffectOrdinal*: DWORD
-
-  LPSOUNDSENTRY* = ptr SOUNDSENTRY
-  TSOUNDSENTRY* = SOUNDSENTRY
-  PSOUNDSENTRY* = ptr SOUNDSENTRY
-  STARTUPINFO* {.final, pure.} = object
-    cb*: DWORD
-    lpReserved*: LPTSTR
-    lpDesktop*: LPTSTR
-    lpTitle*: LPTSTR
-    dwX*: DWORD
-    dwY*: DWORD
-    dwXSize*: DWORD
-    dwYSize*: DWORD
-    dwXCountChars*: DWORD
-    dwYCountChars*: DWORD
-    dwFillAttribute*: DWORD
-    dwFlags*: DWORD
-    wShowWindow*: int16
-    cbReserved2*: int16
-    lpReserved2*: LPBYTE
-    hStdInput*: HANDLE
-    hStdOutput*: HANDLE
-    hStdError*: HANDLE
-
-  LPSTARTUPINFO* = ptr STARTUPINFO
-  TSTARTUPINFO* = STARTUPINFO
-  PSTARTUPINFO* = ptr STARTUPINFO
-  STICKYKEYS* {.final, pure.} = object
-    cbSize*: DWORD
-    dwFlags*: DWORD
-
-  LPSTICKYKEYS* = ptr STICKYKEYS
-  TSTICKYKEYS* = STICKYKEYS
-  PSTICKYKEYS* = ptr STICKYKEYS
-  STRRET* {.final, pure.} = object
-    uType*: UINT
-    cStr*: array[0..(MAX_PATH) - 1, char]
-
-  LPSTRRET* = ptr STRRET
-  TSTRRET* = STRRET
-  PSTRRET* = ptr STRRET
-  STYLEBUF* {.final, pure.} = object
-    dwStyle*: DWORD
-    szDescription*: array[0..31, CHAR]
-
-  LPSTYLEBUF* = ptr STYLEBUF
-  TSTYLEBUF* = STYLEBUF
-  PSTYLEBUF* = ptr STYLEBUF
-  STYLESTRUCT* {.final, pure.} = object
-    styleOld*: DWORD
-    styleNew*: DWORD
-
-  LPSTYLESTRUCT* = ptr STYLESTRUCT
-  TSTYLESTRUCT* = STYLESTRUCT
-  PSTYLESTRUCT* = ptr STYLESTRUCT
-  SYSTEM_AUDIT_ACE* {.final, pure.} = object
-    Header*: ACE_HEADER
-    Mask*: ACCESS_MASK
-    SidStart*: DWORD
-
-  TSYSTEMAUDITACE* = SYSTEM_AUDIT_ACE
-  PSYSTEMAUDITACE* = ptr SYSTEM_AUDIT_ACE
-  SYSTEM_INFO* {.final, pure.} = object
-    dwOemId*: DWORD
-    dwPageSize*: DWORD
-    lpMinimumApplicationAddress*: LPVOID
-    lpMaximumApplicationAddress*: LPVOID
-    dwActiveProcessorMask*: DWORD
-    dwNumberOfProcessors*: DWORD
-    dwProcessorType*: DWORD
-    dwAllocationGranularity*: DWORD
-    wProcessorLevel*: int16
-    wProcessorRevision*: int16
-
-  LPSYSTEM_INFO* = ptr SYSTEM_INFO
-  TSYSTEMINFO* = SYSTEM_INFO
-  PSYSTEMINFO* = ptr SYSTEM_INFO
-  SYSTEM_POWER_STATUS* {.final, pure.} = object
-    ACLineStatus*: int8
-    BatteryFlag*: int8
-    BatteryLifePercent*: int8
-    Reserved1*: int8
-    BatteryLifeTime*: DWORD
-    BatteryFullLifeTime*: DWORD
-
-  TSYSTEMPOWERSTATUS* = SYSTEM_POWER_STATUS
-  PSYSTEMPOWERSTATUS* = ptr SYSTEM_POWER_STATUS
-  LPSYSTEM_POWER_STATUS* = ptr emptyrecord
-  TAPE_ERASE* {.final, pure.} = object
-    `type`*: ULONG
-
-  TTAPEERASE* = TAPE_ERASE
-  PTAPEERASE* = ptr TAPE_ERASE
-  TAPE_GET_DRIVE_PARAMETERS* {.final, pure.} = object
-    ECC*: bool
-    Compression*: bool
-    DataPadding*: bool
-    ReportSetmarks*: bool
-    DefaultBlockSize*: ULONG
-    MaximumBlockSize*: ULONG
-    MinimumBlockSize*: ULONG
-    MaximumPartitionCount*: ULONG
-    FeaturesLow*: ULONG
-    FeaturesHigh*: ULONG
-    EOTWarningZoneSize*: ULONG
-
-  TTAPEGETDRIVEPARAMETERS* = TAPE_GET_DRIVE_PARAMETERS
-  PTAPEGETDRIVEPARAMETERS* = ptr TAPE_GET_DRIVE_PARAMETERS
-  TAPE_GET_MEDIA_PARAMETERS* {.final, pure.} = object
-    Capacity*: LARGE_INTEGER
-    Remaining*: LARGE_INTEGER
-    BlockSize*: DWORD
-    PartitionCount*: DWORD
-    WriteProtected*: bool
-
-  TTAPEGETMEDIAPARAMETERS* = TAPE_GET_MEDIA_PARAMETERS
-  PTAPEGETMEDIAPARAMETERS* = ptr TAPE_GET_MEDIA_PARAMETERS
-  TAPE_GET_POSITION* {.final, pure.} = object
-    `type`*: ULONG
-    Partition*: ULONG
-    OffsetLow*: ULONG
-    OffsetHigh*: ULONG
-
-  TTAPEGETPOSITION* = TAPE_GET_POSITION
-  PTAPEGETPOSITION* = ptr TAPE_GET_POSITION
-  TAPE_PREPARE* {.final, pure.} = object
-    Operation*: ULONG
-
-  TTAPEPREPARE* = TAPE_PREPARE
-  PTAPEPREPARE* = ptr TAPE_PREPARE
-  TAPE_SET_DRIVE_PARAMETERS* {.final, pure.} = object
-    ECC*: bool
-    Compression*: bool
-    DataPadding*: bool
-    ReportSetmarks*: bool
-    EOTWarningZoneSize*: ULONG
-
-  TTAPESETDRIVEPARAMETERS* = TAPE_SET_DRIVE_PARAMETERS
-  PTAPESETDRIVEPARAMETERS* = ptr TAPE_SET_DRIVE_PARAMETERS
-  TAPE_SET_MEDIA_PARAMETERS* {.final, pure.} = object
-    BlockSize*: ULONG
-
-  TTAPESETMEDIAPARAMETERS* = TAPE_SET_MEDIA_PARAMETERS
-  PTAPESETMEDIAPARAMETERS* = ptr TAPE_SET_MEDIA_PARAMETERS
-  TAPE_SET_POSITION* {.final, pure.} = object
-    `Method`*: ULONG
-    Partition*: ULONG
-    OffsetLow*: ULONG
-    OffsetHigh*: ULONG
-
-  TTAPESETPOSITION* = TAPE_SET_POSITION
-  PTAPESETPOSITION* = ptr TAPE_SET_POSITION
-  TAPE_WRITE_MARKS* {.final, pure.} = object
-    `type`*: ULONG
-    Count*: ULONG
-
-  TTAPEWRITEMARKS* = TAPE_WRITE_MARKS
-  PTAPEWRITEMARKS* = ptr TAPE_WRITE_MARKS
-  TTBADDBITMAP* {.final, pure.} = object
-    hInst*: HINST
-    nID*: UINT
-
-  LPTBADDBITMAP* = ptr TTBADDBITMAP
-  PTBADDBITMAP* = ptr TTBADDBITMAP
-  TBBUTTON* {.final, pure.} = object
-    iBitmap*: int32
-    idCommand*: int32
-    fsState*: int8
-    fsStyle*: int8
-    dwData*: DWORD
-    iString*: int32
-
-  LPTBBUTTON* = ptr TBBUTTON
-  LPCTBBUTTON* = ptr TBBUTTON
-  TTBBUTTON* = TBBUTTON
-  PTBBUTTON* = ptr TBBUTTON
-  TBNOTIFY* {.final, pure.} = object
-    hdr*: NMHDR
-    iItem*: int32
-    tbButton*: TBBUTTON
-    cchText*: int32
-    pszText*: LPTSTR
-
-  LPTBNOTIFY* = ptr TBNOTIFY
-  TTBNOTIFY* = TBNOTIFY
-  PTBNOTIFY* = ptr TBNOTIFY
-  TBSAVEPARAMS* {.final, pure.} = object
-    hkr*: HKEY
-    pszSubKey*: LPCTSTR
-    pszValueName*: LPCTSTR
-
-  TTBSAVEPARAMS* = TBSAVEPARAMS
-  PTBSAVEPARAMS* = ptr TBSAVEPARAMS
-  TC_HITTESTINFO* {.final, pure.} = object
-    pt*: POINT
-    flags*: UINT
-
-  TTCHITTESTINFO* = TC_HITTESTINFO
-  PTCHITTESTINFO* = ptr TC_HITTESTINFO
-  TC_ITEM* {.final, pure.} = object
-    mask*: UINT
-    lpReserved1*: UINT
-    lpReserved2*: UINT
-    pszText*: LPTSTR
-    cchTextMax*: int32
-    iImage*: int32
-    lParam*: LPARAM
-
-  TTCITEM* = TC_ITEM
-  PTCITEM* = ptr TC_ITEM
-  TC_ITEMHEADER* {.final, pure.} = object
-    mask*: UINT
-    lpReserved1*: UINT
-    lpReserved2*: UINT
-    pszText*: LPTSTR
-    cchTextMax*: int32
-    iImage*: int32
-
-  TTCITEMHEADER* = TC_ITEMHEADER
-  PTCITEMHEADER* = ptr TC_ITEMHEADER
-  TC_KEYDOWN* {.final, pure.} = object
-    hdr*: NMHDR
-    wVKey*: int16
-    flags*: UINT
-
-  TTCKEYDOWN* = TC_KEYDOWN
-  PTCKEYDOWN* = ptr TC_KEYDOWN
-  TEXTRANGE* {.final, pure.} = object
-    chrg*: CHARRANGE
-    lpstrText*: LPSTR
-
-  Ttextrange* = TEXTRANGE
-  Ptextrange* = ptr TEXTRANGE
-  TIME_ZONE_INFORMATION* {.final, pure.} = object
-    Bias*: LONG
-    StandardName*: array[0..31, WCHAR]
-    StandardDate*: SYSTEMTIME
-    StandardBias*: LONG
-    DaylightName*: array[0..31, WCHAR]
-    DaylightDate*: SYSTEMTIME
-    DaylightBias*: LONG
-
-  LPTIME_ZONE_INFORMATION* = ptr TIME_ZONE_INFORMATION
-  TTIMEZONEINFORMATION* = TIME_ZONE_INFORMATION
-  PTIMEZONEINFORMATION* = ptr TIME_ZONE_INFORMATION
-  TOGGLEKEYS* {.final, pure.} = object
-    cbSize*: DWORD
-    dwFlags*: DWORD
-
-  TTOGGLEKEYS* = TOGGLEKEYS
-  PTOGGLEKEYS* = ptr TOGGLEKEYS
-  TTOKEN_SOURCE* {.final, pure.} = object
-    SourceName*: array[0..7, CHAR]
-    SourceIdentifier*: LUID
-
-  PTOKENSOURCE* = ptr TTOKEN_SOURCE
-  TOKEN_CONTROL* {.final, pure.} = object
-    TokenId*: LUID
-    AuthenticationId*: LUID
-    ModifiedId*: LUID
-    TokenSource*: TTOKEN_SOURCE
-
-  TTOKENCONTROL* = TOKEN_CONTROL
-  PTOKENCONTROL* = ptr TOKEN_CONTROL
-  TTOKEN_DEFAULT_DACL* {.final, pure.} = object
-    DefaultDacl*: PACL
-
-  PTOKENDEFAULTDACL* = ptr TTOKEN_DEFAULT_DACL
-  TTOKEN_GROUPS* {.final, pure.} = object
-    GroupCount*: DWORD
-    Groups*: array[0..(ANYSIZE_ARRAY) - 1, SID_AND_ATTRIBUTES]
-
-  LPTOKEN_GROUPS* = ptr TTOKEN_GROUPS
-  PTOKENGROUPS* = ptr TTOKEN_GROUPS
-  TTOKEN_OWNER* {.final, pure.} = object
-    Owner*: PSID
-
-  PTOKENOWNER* = ptr TTOKEN_OWNER
-  TTOKEN_PRIMARY_GROUP* {.final, pure.} = object
-    PrimaryGroup*: PSID
-
-  PTOKENPRIMARYGROUP* = ptr TTOKEN_PRIMARY_GROUP
-  TTOKEN_PRIVILEGES* {.final, pure.} = object
-    PrivilegeCount*: DWORD
-    Privileges*: array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES]
-
-  PTOKEN_PRIVILEGES* = ptr TTOKEN_PRIVILEGES
-  LPTOKEN_PRIVILEGES* = ptr TTOKEN_PRIVILEGES
-  TTOKEN_STATISTICS* {.final, pure.} = object
-    TokenId*: LUID
-    AuthenticationId*: LUID
-    ExpirationTime*: LARGE_INTEGER
-    TokenType*: TTOKEN_TYPE
-    ImpersonationLevel*: SECURITY_IMPERSONATION_LEVEL
-    DynamicCharged*: DWORD
-    DynamicAvailable*: DWORD
-    GroupCount*: DWORD
-    PrivilegeCount*: DWORD
-    ModifiedId*: LUID
-
-  PTOKENSTATISTICS* = ptr TTOKEN_STATISTICS
-  TTOKEN_USER* {.final, pure.} = object
-    User*: SID_AND_ATTRIBUTES
-
-  PTOKENUSER* = ptr TTOKEN_USER
-  TOOLINFO* {.final, pure.} = object
-    cbSize*: UINT
-    uFlags*: UINT
-    hwnd*: HWND
-    uId*: UINT
-    rect*: RECT
-    hinst*: HINST
-    lpszText*: LPTSTR
-
-  LPTOOLINFO* = ptr TOOLINFO
-  TTOOLINFO* = TOOLINFO
-  PTOOLINFO* = ptr TOOLINFO
-  TOOLTIPTEXT* {.final, pure.} = object
-    hdr*: NMHDR
-    lpszText*: LPTSTR
-    szText*: array[0..79, char]
-    hinst*: HINST
-    uFlags*: UINT
-
-  LPTOOLTIPTEXT* = ptr TOOLTIPTEXT
-  TTOOLTIPTEXT* = TOOLTIPTEXT
-  PTOOLTIPTEXT* = ptr TOOLTIPTEXT
-  TPMPARAMS* {.final, pure.} = object
-    cbSize*: UINT
-    rcExclude*: RECT
-
-  LPTPMPARAMS* = ptr TPMPARAMS
-  TTPMPARAMS* = TPMPARAMS
-  PTPMPARAMS* = ptr TPMPARAMS
-  TRANSMIT_FILE_BUFFERS* {.final, pure.} = object
-    Head*: PVOID
-    HeadLength*: DWORD
-    Tail*: PVOID
-    TailLength*: DWORD
-
-  TTRANSMITFILEBUFFERS* = TRANSMIT_FILE_BUFFERS
-  PTRANSMITFILEBUFFERS* = ptr TRANSMIT_FILE_BUFFERS
-  TTHITTESTINFO* {.final, pure.} = object
-    hwnd*: HWND
-    pt*: POINT
-    ti*: TOOLINFO
-
-  LPHITTESTINFO* = ptr TTHITTESTINFO
-  TTTHITTESTINFO* = TTHITTESTINFO
-  PTTHITTESTINFO* = ptr TTHITTESTINFO
-  TTPOLYCURVE* {.final, pure.} = object
-    wType*: int16
-    cpfx*: int16
-    apfx*: array[0..0, POINTFX]
-
-  LPTTPOLYCURVE* = ptr TTPOLYCURVE
-  TTTPOLYCURVE* = TTPOLYCURVE
-  PTTPOLYCURVE* = ptr TTPOLYCURVE
-  TTPOLYGONHEADER* {.final, pure.} = object
-    cb*: DWORD
-    dwType*: DWORD
-    pfxStart*: POINTFX
-
-  LPTTPOLYGONHEADER* = ptr TTPOLYGONHEADER
-  TTTPOLYGONHEADER* = TTPOLYGONHEADER
-  PTTPOLYGONHEADER* = ptr TTPOLYGONHEADER
-  TV_DISPINFO* {.final, pure.} = object
-    hdr*: NMHDR
-    item*: TV_ITEM
-
-  TTVDISPINFO* = TV_DISPINFO
-  PTVDISPINFO* = ptr TV_DISPINFO
-  TV_HITTESTINFO* {.final, pure.} = object
-    pt*: POINT
-    flags*: UINT
-    hItem*: HTREEITEM
-
-  LPTV_HITTESTINFO* = ptr TV_HITTESTINFO
-  TTVHITTESTINFO* = TV_HITTESTINFO
-  PTVHITTESTINFO* = ptr TV_HITTESTINFO
-  TV_INSERTSTRUCT* {.final, pure.} = object
-    hParent*: HTREEITEM
-    hInsertAfter*: HTREEITEM
-    item*: TV_ITEM
-
-  LPTV_INSERTSTRUCT* = ptr TV_INSERTSTRUCT
-  TTVINSERTSTRUCT* = TV_INSERTSTRUCT
-  PTVINSERTSTRUCT* = ptr TV_INSERTSTRUCT
-  TV_KEYDOWN* {.final, pure.} = object
-    hdr*: NMHDR
-    wVKey*: int16
-    flags*: UINT
-
-  TTVKEYDOWN* = TV_KEYDOWN
-  PTVKEYDOWN* = ptr TV_KEYDOWN
-  TV_SORTCB* {.final, pure.} = object
-    hParent*: HTREEITEM
-    lpfnCompare*: PFNTVCOMPARE
-    lParam*: LPARAM
-
-  LPTV_SORTCB* = ptr TV_SORTCB
-  TTVSORTCB* = TV_SORTCB
-  PTVSORTCB* = ptr TV_SORTCB
-  UDACCEL* {.final, pure.} = object
-    nSec*: UINT
-    nInc*: UINT
-
-  TUDACCEL* = UDACCEL
-  PUDACCEL* = ptr UDACCEL
-  UNIVERSAL_NAME_INFO* {.final, pure.} = object
-    lpUniversalName*: LPTSTR
-
-  TUNIVERSALNAMEINFO* = UNIVERSAL_NAME_INFO
-  PUNIVERSALNAMEINFO* = ptr UNIVERSAL_NAME_INFO
-  USEROBJECTFLAGS* {.final, pure.} = object
-    fInherit*: WINBOOL
-    fReserved*: WINBOOL
-    dwFlags*: DWORD
-
-  TUSEROBJECTFLAGS* = USEROBJECTFLAGS
-  PUSEROBJECTFLAGS* = ptr USEROBJECTFLAGS
-  VALENT* {.final, pure.} = object
-    ve_valuename*: LPTSTR
-    ve_valuelen*: DWORD
-    ve_valueptr*: DWORD
-    ve_type*: DWORD
-
-  TVALENT* = VALENT
-  PVALENT* = ptr VALENT
-  value_ent* = VALENT
-  Tvalue_ent* = VALENT
-  Pvalue_ent* = ptr VALENT
-  VERIFY_INFORMATION* {.final, pure.} = object
-    StartingOffset*: LARGE_INTEGER
-    len*: DWORD
-
-  TVERIFYINFORMATION* = VERIFY_INFORMATION
-  PVERIFYINFORMATION* = ptr VERIFY_INFORMATION
-  VS_FIXEDFILEINFO* {.final, pure.} = object
-    dwSignature*: DWORD
-    dwStrucVersion*: DWORD
-    dwFileVersionMS*: DWORD
-    dwFileVersionLS*: DWORD
-    dwProductVersionMS*: DWORD
-    dwProductVersionLS*: DWORD
-    dwFileFlagsMask*: DWORD
-    dwFileFlags*: DWORD
-    dwFileOS*: DWORD
-    dwFileType*: DWORD
-    dwFileSubtype*: DWORD
-    dwFileDateMS*: DWORD
-    dwFileDateLS*: DWORD
-
-  TVSFIXEDFILEINFO* = VS_FIXEDFILEINFO
-  PVSFIXEDFILEINFO* = ptr VS_FIXEDFILEINFO
-  WIN32_FIND_DATA* {.final, pure.} = object
-    dwFileAttributes*: DWORD
-    ftCreationTime*: FILETIME
-    ftLastAccessTime*: FILETIME
-    ftLastWriteTime*: FILETIME
-    nFileSizeHigh*: DWORD
-    nFileSizeLow*: DWORD
-    dwReserved0*: DWORD
-    dwReserved1*: DWORD
-    cFileName*: array[0..(MAX_PATH) - 1, TCHAR]
-    cAlternateFileName*: array[0..13, TCHAR]
-
-  LPWIN32_FIND_DATA* = ptr WIN32_FIND_DATA
-  PWIN32_FIND_DATA* = ptr WIN32_FIND_DATA
-  TWIN32FINDDATA* = WIN32_FIND_DATA
-  TWIN32FINDDATAA* = WIN32_FIND_DATA
-  WIN32_FIND_DATAW* {.final, pure.} = object
-    dwFileAttributes*: DWORD
-    ftCreationTime*: FILETIME
-    ftLastAccessTime*: FILETIME
-    ftLastWriteTime*: FILETIME
-    nFileSizeHigh*: DWORD
-    nFileSizeLow*: DWORD
-    dwReserved0*: DWORD
-    dwReserved1*: DWORD
-    cFileName*: array[0..(MAX_PATH) - 1, WCHAR]
-    cAlternateFileName*: array[0..13, WCHAR]
-
-  LPWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW
-  PWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW
-  TWIN32FINDDATAW* = WIN32_FIND_DATAW
-  WIN32_STREAM_ID* {.final, pure.} = object
-    dwStreamId*: DWORD
-    dwStreamAttributes*: DWORD
-    Size*: LARGE_INTEGER
-    dwStreamNameSize*: DWORD
-    cStreamName*: ptr WCHAR
-
-  TWIN32STREAMID* = WIN32_STREAM_ID
-  PWIN32STREAMID* = ptr WIN32_STREAM_ID
-  WINDOWPLACEMENT* {.final, pure.} = object
-    len*: UINT
-    flags*: UINT
-    showCmd*: UINT
-    ptMinPosition*: POINT
-    ptMaxPosition*: POINT
-    rcNormalPosition*: RECT
-
-  TWINDOWPLACEMENT* = WINDOWPLACEMENT
-  PWINDOWPLACEMENT* = ptr WINDOWPLACEMENT
-  WNDCLASS* {.final, pure.} = object
-    style*: UINT
-    lpfnWndProc*: WNDPROC
-    cbClsExtra*: int32
-    cbWndExtra*: int32
-    hInstance*: HANDLE
-    hIcon*: HICON
-    hCursor*: HCURSOR
-    hbrBackground*: HBRUSH
-    lpszMenuName*: LPCTSTR
-    lpszClassName*: LPCTSTR
-
-  LPWNDCLASS* = ptr WNDCLASS
-  TWNDCLASS* = WNDCLASS
-  TWNDCLASSA* = WNDCLASS
-  PWNDCLASS* = ptr WNDCLASS
-  WNDCLASSW* {.final, pure.} = object
-    style*: UINT
-    lpfnWndProc*: WNDPROC
-    cbClsExtra*: int32
-    cbWndExtra*: int32
-    hInstance*: HANDLE
-    hIcon*: HICON
-    hCursor*: HCURSOR
-    hbrBackground*: HBRUSH
-    lpszMenuName*: LPCWSTR
-    lpszClassName*: LPCWSTR
-
-  LPWNDCLASSW* = ptr WNDCLASSW
-  TWNDCLASSW* = WNDCLASSW
-  PWNDCLASSW* = ptr WNDCLASSW
-  WNDCLASSEX* {.final, pure.} = object
-    cbSize*: UINT
-    style*: UINT
-    lpfnWndProc*: WNDPROC
-    cbClsExtra*: int32
-    cbWndExtra*: int32
-    hInstance*: HANDLE
-    hIcon*: HICON
-    hCursor*: HCURSOR
-    hbrBackground*: HBRUSH
-    lpszMenuName*: LPCTSTR
-    lpszClassName*: LPCTSTR
-    hIconSm*: HANDLE
-
-  LPWNDCLASSEX* = ptr WNDCLASSEX
-  TWNDCLASSEX* = WNDCLASSEX
-  TWNDCLASSEXA* = WNDCLASSEX
-  PWNDCLASSEX* = ptr WNDCLASSEX
-  WNDCLASSEXW* {.final, pure.} = object
-    cbSize*: UINT
-    style*: UINT
-    lpfnWndProc*: WNDPROC
-    cbClsExtra*: int32
-    cbWndExtra*: int32
-    hInstance*: HANDLE
-    hIcon*: HICON
-    hCursor*: HCURSOR
-    hbrBackground*: HBRUSH
-    lpszMenuName*: LPCWSTR
-    lpszClassName*: LPCWSTR
-    hIconSm*: HANDLE
-
-  LPWNDCLASSEXW* = ptr WNDCLASSEXW
-  TWNDCLASSEXW* = WNDCLASSEXW
-  PWNDCLASSEXW* = ptr WNDCLASSEXW
-  CONNECTDLGSTRUCT* {.final, pure.} = object
-    cbStructure*: DWORD
-    hwndOwner*: HWND
-    lpConnRes*: LPNETRESOURCE
-    dwFlags*: DWORD
-    dwDevNum*: DWORD
-
-  LPCONNECTDLGSTRUCT* = ptr CONNECTDLGSTRUCT
-  TCONNECTDLGSTRUCT* = CONNECTDLGSTRUCT
-  PCONNECTDLGSTRUCT* = ptr CONNECTDLGSTRUCT
-  DISCDLGSTRUCT* {.final, pure.} = object
-    cbStructure*: DWORD
-    hwndOwner*: HWND
-    lpLocalName*: LPTSTR
-    lpRemoteName*: LPTSTR
-    dwFlags*: DWORD
-
-  LPDISCDLGSTRUCT* = ptr DISCDLGSTRUCT
-  TDISCDLGSTRUCT* = DISCDLGSTRUCT
-  TDISCDLGSTRUCTA* = DISCDLGSTRUCT
-  PDISCDLGSTRUCT* = ptr DISCDLGSTRUCT
-  NETINFOSTRUCT* {.final, pure.} = object
-    cbStructure*: DWORD
-    dwProviderVersion*: DWORD
-    dwStatus*: DWORD
-    dwCharacteristics*: DWORD
-    dwHandle*: DWORD
-    wNetType*: int16
-    dwPrinters*: DWORD
-    dwDrives*: DWORD
-
-  LPNETINFOSTRUCT* = ptr NETINFOSTRUCT
-  TNETINFOSTRUCT* = NETINFOSTRUCT
-  PNETINFOSTRUCT* = ptr NETINFOSTRUCT
-  NETCONNECTINFOSTRUCT* {.final, pure.} = object
-    cbStructure*: DWORD
-    dwFlags*: DWORD
-    dwSpeed*: DWORD
-    dwDelay*: DWORD
-    dwOptDataSize*: DWORD
-
-  LPNETCONNECTINFOSTRUCT* = ptr NETCONNECTINFOSTRUCT
-  TNETCONNECTINFOSTRUCT* = NETCONNECTINFOSTRUCT
-  PNETCONNECTINFOSTRUCT* = ptr NETCONNECTINFOSTRUCT
-  ENUMMETAFILEPROC* = proc (para1: HDC, para2: HANDLETABLE, para3: METARECORD,
-                            para4: int32, para5: LPARAM): int32{.stdcall.}
-  ENHMETAFILEPROC* = proc (para1: HDC, para2: HANDLETABLE, para3: TENHMETARECORD,
-                           para4: int32, para5: LPARAM): int32{.stdcall.}
-  ENUMFONTSPROC* = proc (para1: LPLOGFONT, para2: LPTEXTMETRIC, para3: DWORD,
-                         para4: LPARAM): int32{.stdcall.}
-  FONTENUMPROC* = proc (para1: var ENUMLOGFONT, para2: var NEWTEXTMETRIC,
-                        para3: int32, para4: LPARAM): int32{.stdcall.}
-  FONTENUMEXPROC* = proc (para1: var ENUMLOGFONTEX, para2: var NEWTEXTMETRICEX,
-                          para3: int32, para4: LPARAM): int32{.stdcall.}
-  LPOVERLAPPED_COMPLETION_ROUTINE* = proc (para1: DWORD, para2: DWORD,
-      para3: LPOVERLAPPED){.stdcall.} # Structures for the extensions to OpenGL
-  POINTFLOAT* {.final, pure.} = object
-    x*: float32
-    y*: float32
-
-  TPOINTFLOAT* = POINTFLOAT
-  PPOINTFLOAT* = ptr POINTFLOAT
-  GLYPHMETRICSFLOAT* {.final, pure.} = object
-    gmfBlackBoxX*: float32
-    gmfBlackBoxY*: float32
-    gmfptGlyphOrigin*: POINTFLOAT
-    gmfCellIncX*: float32
-    gmfCellIncY*: float32
-
-  LPGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT
-  TGLYPHMETRICSFLOAT* = GLYPHMETRICSFLOAT
-  PGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT
-  LAYERPLANEDESCRIPTOR* {.final, pure.} = object
-    nSize*: int16
-    nVersion*: int16
-    dwFlags*: DWORD
-    iPixelType*: int8
-    cColorBits*: int8
-    cRedBits*: int8
-    cRedShift*: int8
-    cGreenBits*: int8
-    cGreenShift*: int8
-    cBlueBits*: int8
-    cBlueShift*: int8
-    cAlphaBits*: int8
-    cAlphaShift*: int8
-    cAccumBits*: int8
-    cAccumRedBits*: int8
-    cAccumGreenBits*: int8
-    cAccumBlueBits*: int8
-    cAccumAlphaBits*: int8
-    cDepthBits*: int8
-    cStencilBits*: int8
-    cAuxBuffers*: int8
-    iLayerPlane*: int8
-    bReserved*: int8
-    crTransparent*: COLORREF
-
-  LPLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR
-  TLAYERPLANEDESCRIPTOR* = LAYERPLANEDESCRIPTOR
-  PLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR
-  PIXELFORMATDESCRIPTOR* {.final, pure.} = object
-    nSize*: int16
-    nVersion*: int16
-    dwFlags*: DWORD
-    iPixelType*: int8
-    cColorBits*: int8
-    cRedBits*: int8
-    cRedShift*: int8
-    cGreenBits*: int8
-    cGreenShift*: int8
-    cBlueBits*: int8
-    cBlueShift*: int8
-    cAlphaBits*: int8
-    cAlphaShift*: int8
-    cAccumBits*: int8
-    cAccumRedBits*: int8
-    cAccumGreenBits*: int8
-    cAccumBlueBits*: int8
-    cAccumAlphaBits*: int8
-    cDepthBits*: int8
-    cStencilBits*: int8
-    cAuxBuffers*: int8
-    iLayerType*: int8
-    bReserved*: int8
-    dwLayerMask*: DWORD
-    dwVisibleMask*: DWORD
-    dwDamageMask*: DWORD
-
-  LPPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR
-  TPIXELFORMATDESCRIPTOR* = PIXELFORMATDESCRIPTOR
-  PPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR
-  USER_INFO_2* {.final, pure.} = object
-    usri2_name*: LPWSTR
-    usri2_password*: LPWSTR
-    usri2_password_age*: DWORD
-    usri2_priv*: DWORD
-    usri2_home_dir*: LPWSTR
-    usri2_comment*: LPWSTR
-    usri2_flags*: DWORD
-    usri2_script_path*: LPWSTR
-    usri2_auth_flags*: DWORD
-    usri2_full_name*: LPWSTR
-    usri2_usr_comment*: LPWSTR
-    usri2_parms*: LPWSTR
-    usri2_workstations*: LPWSTR
-    usri2_last_logon*: DWORD
-    usri2_last_logoff*: DWORD
-    usri2_acct_expires*: DWORD
-    usri2_max_storage*: DWORD
-    usri2_units_per_week*: DWORD
-    usri2_logon_hours*: PBYTE
-    usri2_bad_pw_count*: DWORD
-    usri2_num_logons*: DWORD
-    usri2_logon_server*: LPWSTR
-    usri2_country_code*: DWORD
-    usri2_code_page*: DWORD
-
-  PUSER_INFO_2* = ptr USER_INFO_2
-  LPUSER_INFO_2* = ptr USER_INFO_2
-  TUSERINFO2* = USER_INFO_2
-  USER_INFO_0* {.final, pure.} = object
-    usri0_name*: LPWSTR
-
-  PUSER_INFO_0* = ptr USER_INFO_0
-  LPUSER_INFO_0* = ptr USER_INFO_0
-  TUSERINFO0* = USER_INFO_0
-  USER_INFO_3* {.final, pure.} = object
-    usri3_name*: LPWSTR
-    usri3_password*: LPWSTR
-    usri3_password_age*: DWORD
-    usri3_priv*: DWORD
-    usri3_home_dir*: LPWSTR
-    usri3_comment*: LPWSTR
-    usri3_flags*: DWORD
-    usri3_script_path*: LPWSTR
-    usri3_auth_flags*: DWORD
-    usri3_full_name*: LPWSTR
-    usri3_usr_comment*: LPWSTR
-    usri3_parms*: LPWSTR
-    usri3_workstations*: LPWSTR
-    usri3_last_logon*: DWORD
-    usri3_last_logoff*: DWORD
-    usri3_acct_expires*: DWORD
-    usri3_max_storage*: DWORD
-    usri3_units_per_week*: DWORD
-    usri3_logon_hours*: PBYTE
-    usri3_bad_pw_count*: DWORD
-    usri3_num_logons*: DWORD
-    usri3_logon_server*: LPWSTR
-    usri3_country_code*: DWORD
-    usri3_code_page*: DWORD
-    usri3_user_id*: DWORD
-    usri3_primary_group_id*: DWORD
-    usri3_profile*: LPWSTR
-    usri3_home_dir_drive*: LPWSTR
-    usri3_password_expired*: DWORD
-
-  PUSER_INFO_3* = ptr USER_INFO_3
-  LPUSER_INFO_3* = ptr USER_INFO_3
-  TUSERINFO3* = USER_INFO_3
-  GROUP_INFO_2* {.final, pure.} = object
-    grpi2_name*: LPWSTR
-    grpi2_comment*: LPWSTR
-    grpi2_group_id*: DWORD
-    grpi2_attributes*: DWORD
-
-  PGROUP_INFO_2* = ptr GROUP_INFO_2
-  TGROUPINFO2* = GROUP_INFO_2
-  LOCALGROUP_INFO_0* {.final, pure.} = object
-    lgrpi0_name*: LPWSTR
-
-  PLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0
-  LPLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0
-  TLOCALGROUPINFO0* = LOCALGROUP_INFO_0
-  IMAGE_DOS_HEADER* {.final, pure.} = object
-    e_magic*: int16
-    e_cblp*: int16
-    e_cp*: int16
-    e_crlc*: int16
-    e_cparhdr*: int16
-    e_minalloc*: int16
-    e_maxalloc*: int16
-    e_ss*: int16
-    e_sp*: int16
-    e_csum*: int16
-    e_ip*: int16
-    e_cs*: int16
-    e_lfarlc*: int16
-    e_ovno*: int16
-    e_res*: array[0..3, int16]
-    e_oemid*: int16
-    e_oeminfo*: int16
-    e_res2*: array[0..9, int16]
-    e_lfanew*: LONG
-
-  PIMAGE_DOS_HEADER* = ptr IMAGE_DOS_HEADER
-  TIMAGEDOSHEADER* = IMAGE_DOS_HEADER
-  NOTIFYICONDATAA* {.final, pure.} = object
-    cbSize*: DWORD
-    Wnd*: HWND
-    uID*: UINT
-    uFlags*: UINT
-    uCallbackMessage*: UINT
-    hIcon*: HICON
-    szTip*: array[0..63, Char]
-
-  NOTIFYICONDATA* = NOTIFYICONDATAA
-  NOTIFYICONDATAW* {.final, pure.} = object
-    cbSize*: DWORD
-    Wnd*: HWND
-    uID*: UINT
-    uFlags*: UINT
-    uCallbackMessage*: UINT
-    hIcon*: HICON
-    szTip*: array[0..63, int16]
-
-  TNotifyIconDataA* = NOTIFYICONDATAA
-  TNotifyIconDataW* = NOTIFYICONDATAW
-  TNotifyIconData* = TNotifyIconDataA
-  PNotifyIconDataA* = ptr TNotifyIconDataA
-  PNotifyIconDataW* = ptr TNotifyIconDataW
-  PNotifyIconData* = PNotifyIconDataA
-  TWOHandleArray* = array[0..MAXIMUM_WAIT_OBJECTS - 1, HANDLE]
-  PWOHandleArray* = ptr TWOHandleArray
-  MMRESULT* = int32
-
-type
-  PWaveFormatEx* = ptr TWaveFormatEx
-  TWaveFormatEx* {.final, pure.} = object
-    wFormatTag*: int16        # format type
-    nChannels*: int16         # number of channels (i.e. mono, stereo, etc.)
-    nSamplesPerSec*: DWORD    # sample rate
-    nAvgBytesPerSec*: DWORD   # for buffer estimation
-    nBlockAlign*: int16       # block size of data
-    wBitsPerSample*: int16    # number of bits per sample of mono data
-    cbSize*: int16            # the count in bytes of the size of
-
-  WIN32_FILE_ATTRIBUTE_DATA* {.final, pure.} = object
-    dwFileAttributes*: DWORD
-    ftCreationTime*: FILETIME
-    ftLastAccessTime*: FILETIME
-    ftLastWriteTime*: FILETIME
-    nFileSizeHigh*: DWORD
-    nFileSizeLow*: DWORD
-
-  LPWIN32_FILE_ATTRIBUTE_DATA* = ptr WIN32_FILE_ATTRIBUTE_DATA
-  TWIN32FILEATTRIBUTEDATA* = WIN32_FILE_ATTRIBUTE_DATA
-  PWIN32FILEATTRIBUTEDATA* = ptr WIN32_FILE_ATTRIBUTE_DATA # TrackMouseEvent. NT or higher only.
-  TTrackMouseEvent* {.final, pure.} = object
-    cbSize*: DWORD
-    dwFlags*: DWORD
-    hwndTrack*: HWND
-    dwHoverTime*: DWORD
-
-  PTrackMouseEvent* = ptr TTrackMouseEvent
-
-const
-  ACM_OPENW* = 1127
-  ACM_OPENA* = 1124
-
-when defined(winUnicode):
-  const
-    ACM_OPEN* = ACM_OPENW
-else:
-  const
-    ACM_OPEN* = ACM_OPENA
-# UNICODE
-
-const
-  ACM_PLAY* = 1125
-  ACM_STOP* = 1126
-  ACN_START* = 1
-  ACN_STOP* = 2               # Buttons
-  BM_CLICK* = 245
-  BM_GETCHECK* = 240
-  BM_GETIMAGE* = 246
-  BM_GETSTATE* = 242
-  BM_SETCHECK* = 241
-  BM_SETIMAGE* = 247
-  BM_SETSTATE* = 243
-  BM_SETSTYLE* = 244
-  BN_CLICKED* = 0
-  BN_DBLCLK* = 5
-  BN_DISABLE* = 4
-  BN_DOUBLECLICKED* = 5
-  BN_HILITE* = 2
-  BN_KILLFOCUS* = 7
-  BN_PAINT* = 1
-  BN_PUSHED* = 2
-  BN_SETFOCUS* = 6
-  BN_UNHILITE* = 3
-  BN_UNPUSHED* = 3            # Combo Box
-  CB_ADDSTRING* = 323
-  CB_DELETESTRING* = 324
-  CB_DIR* = 325
-  CB_FINDSTRING* = 332
-  CB_FINDSTRINGEXACT* = 344
-  CB_GETCOUNT* = 326
-  CB_GETCURSEL* = 327
-  CB_GETDROPPEDCONTROLRECT* = 338
-  CB_GETDROPPEDSTATE* = 343
-  CB_GETDROPPEDWIDTH* = 351
-  CB_GETEDITSEL* = 320
-  CB_GETEXTENDEDUI* = 342
-  CB_GETHORIZONTALEXTENT* = 349
-  CB_GETITEMDATA* = 336
-  CB_GETITEMHEIGHT* = 340
-  CB_GETLBTEXT* = 328
-  CB_GETLBTEXTLEN* = 329
-  CB_GETLOCALE* = 346
-  CB_GETTOPINDEX* = 347
-  CB_INITSTORAGE* = 353
-  CB_INSERTSTRING* = 330
-  CB_LIMITTEXT* = 321
-  CB_RESETCONTENT* = 331
-  CB_SELECTSTRING* = 333
-  CB_SETCURSEL* = 334
-  CB_SETDROPPEDWIDTH* = 352
-  CB_SETEDITSEL* = 322
-  CB_SETEXTENDEDUI* = 341
-  CB_SETHORIZONTALEXTENT* = 350
-  CB_SETITEMDATA* = 337
-  CB_SETITEMHEIGHT* = 339
-  CB_SETLOCALE* = 345
-  CB_SETTOPINDEX* = 348
-  CB_SHOWDROPDOWN* = 335      # Combo Box notifications
-  CBN_CLOSEUP* = 8
-  CBN_DBLCLK* = 2
-  CBN_DROPDOWN* = 7
-  CBN_EDITCHANGE* = 5
-  CBN_EDITUPDATE* = 6
-  CBN_ERRSPACE* = - (1)
-  CBN_KILLFOCUS* = 4
-  CBN_SELCHANGE* = 1
-  CBN_SELENDCANCEL* = 10
-  CBN_SELENDOK* = 9
-  CBN_SETFOCUS* = 3           # Control Panel
-                              # Device messages
-                              # Drag list box
-  DL_BEGINDRAG* = 1157
-  DL_CANCELDRAG* = 1160
-  DL_DRAGGING* = 1158
-  DL_DROPPED* = 1159          # Default push button
-  DM_GETDEFID* = 1024
-  DM_REPOSITION* = 1026
-  DM_SETDEFID* = 1025         # RTF control
-  EM_CANPASTE* = 1074
-  EM_CANUNDO* = 198
-  EM_CHARFROMPOS* = 215
-  EM_DISPLAYBAND* = 1075
-  EM_EMPTYUNDOBUFFER* = 205
-  EM_EXGETSEL* = 1076
-  EM_EXLIMITTEXT* = 1077
-  EM_EXLINEFROMCHAR* = 1078
-  EM_EXSETSEL* = 1079
-  EM_FINDTEXT* = 1080
-  EM_FINDTEXTEX* = 1103
-  EM_FINDWORDBREAK* = 1100
-  EM_FMTLINES* = 200
-  EM_FORMATRANGE* = 1081
-  EM_GETCHARFORMAT* = 1082
-  EM_GETEVENTMASK* = 1083
-  EM_GETFIRSTVISIBLELINE* = 206
-  EM_GETHANDLE* = 189
-  EM_GETLIMITTEXT* = 213
-  EM_GETLINE* = 196
-  EM_GETLINECOUNT* = 186
-  EM_GETMARGINS* = 212
-  EM_GETMODIFY* = 184
-  EM_GETIMECOLOR* = 1129
-  EM_GETIMEOPTIONS* = 1131
-  EM_GETOPTIONS* = 1102
-  EM_GETOLEINTERFACE* = 1084
-  EM_GETPARAFORMAT* = 1085
-  EM_GETPASSWORDCHAR* = 210
-  EM_GETPUNCTUATION* = 1125
-  EM_GETRECT* = 178
-  EM_GETSEL* = 176
-  EM_GETSELTEXT* = 1086
-  EM_GETTEXTRANGE* = 1099
-  EM_GETTHUMB* = 190
-  EM_GETWORDBREAKPROC* = 209
-  EM_GETWORDBREAKPROCEX* = 1104
-  EM_GETWORDWRAPMODE* = 1127
-  EM_HIDESELECTION* = 1087
-  EM_LIMITTEXT* = 197
-  EM_LINEFROMCHAR* = 201
-  EM_LINEINDEX* = 187
-  EM_LINELENGTH* = 193
-  EM_LINESCROLL* = 182
-  EM_PASTESPECIAL* = 1088
-  EM_POSFROMCHAR* = 214
-  EM_REPLACESEL* = 194
-  EM_REQUESTRESIZE* = 1089
-  EM_SCROLL* = 181
-  EM_SCROLLCARET* = 183
-  EM_SELECTIONTYPE* = 1090
-  EM_SETBKGNDCOLOR* = 1091
-  EM_SETCHARFORMAT* = 1092
-  EM_SETEVENTMASK* = 1093
-  EM_SETHANDLE* = 188
-  EM_SETIMECOLOR* = 1128
-  EM_SETIMEOPTIONS* = 1130
-  EM_SETLIMITTEXT* = 197
-  EM_SETMARGINS* = 211
-  EM_SETMODIFY* = 185
-  EM_SETOLECALLBACK* = 1094
-  EM_SETOPTIONS* = 1101
-  EM_SETPARAFORMAT* = 1095
-  EM_SETPASSWORDCHAR* = 204
-  EM_SETPUNCTUATION* = 1124
-  EM_SETREADONLY* = 207
-  EM_SETRECT* = 179
-  EM_SETRECTNP* = 180
-  EM_SETSEL* = 177
-  EM_SETTABSTOPS* = 203
-  EM_SETTARGETDEVICE* = 1096
-  EM_SETWORDBREAKPROC* = 208
-  EM_SETWORDBREAKPROCEX* = 1105
-  EM_SETWORDWRAPMODE* = 1126
-  EM_STREAMIN* = 1097
-  EM_STREAMOUT* = 1098
-  EM_UNDO* = 199              # Edit control
-  EN_CHANGE* = 768
-  EN_CORRECTTEXT* = 1797
-  EN_DROPFILES* = 1795
-  EN_ERRSPACE* = 1280
-  EN_HSCROLL* = 1537
-  EN_IMECHANGE* = 1799
-  EN_KILLFOCUS* = 512
-  EN_MAXTEXT* = 1281
-  EN_MSGFILTER* = 1792
-  EN_OLEOPFAILED* = 1801
-  EN_PROTECTED* = 1796
-  EN_REQUESTRESIZE* = 1793
-  EN_SAVECLIPBOARD* = 1800
-  EN_SELCHANGE* = 1794
-  EN_SETFOCUS* = 256
-  EN_STOPNOUNDO* = 1798
-  EN_UPDATE* = 1024
-  EN_VSCROLL* = 1538          # File Manager extensions
-                              # File Manager extensions DLL events
-                              # Header control
-  HDM_DELETEITEM* = 4610
-  HDM_GETITEMW* = 4619
-  HDM_INSERTITEMW* = 4618
-  HDM_SETITEMW* = 4620
-  HDM_GETITEMA* = 4611
-  HDM_INSERTITEMA* = 4609
-  HDM_SETITEMA* = 4612
-
-when defined(winUnicode):
-  const
-    HDM_GETITEM* = HDM_GETITEMW
-    HDM_INSERTITEM* = HDM_INSERTITEMW
-    HDM_SETITEM* = HDM_SETITEMW
-else:
-  const
-    HDM_GETITEM* = HDM_GETITEMA
-    HDM_INSERTITEM* = HDM_INSERTITEMA
-    HDM_SETITEM* = HDM_SETITEMA
-# UNICODE
-
-const
-  HDM_GETITEMCOUNT* = 4608
-  HDM_HITTEST* = 4614
-  HDM_LAYOUT* = 4613          # Header control notifications
-  HDN_BEGINTRACKW* = - (326)
-  HDN_DIVIDERDBLCLICKW* = - (325)
-  HDN_ENDTRACKW* = - (327)
-  HDN_ITEMCHANGEDW* = - (321)
-  HDN_ITEMCHANGINGW* = - (320)
-  HDN_ITEMCLICKW* = - (322)
-  HDN_ITEMDBLCLICKW* = - (323)
-  HDN_TRACKW* = - (328)
-  HDN_BEGINTRACKA* = - (306)
-  HDN_DIVIDERDBLCLICKA* = - (305)
-  HDN_ENDTRACKA* = - (307)
-  HDN_ITEMCHANGEDA* = - (301)
-  HDN_ITEMCHANGINGA* = - (300)
-  HDN_ITEMCLICKA* = - (302)
-  HDN_ITEMDBLCLICKA* = - (303)
-  HDN_TRACKA* = - (308)
-
-when defined(winUnicode):
-  const
-    HDN_BEGINTRACK* = HDN_BEGINTRACKW
-    HDN_DIVIDERDBLCLICK* = HDN_DIVIDERDBLCLICKW
-    HDN_ENDTRACK* = HDN_ENDTRACKW
-    HDN_ITEMCHANGED* = HDN_ITEMCHANGEDW
-    HDN_ITEMCHANGING* = HDN_ITEMCHANGINGW
-    HDN_ITEMCLICK* = HDN_ITEMCLICKW
-    HDN_ITEMDBLCLICK* = HDN_ITEMDBLCLICKW
-    HDN_TRACK* = HDN_TRACKW
-else:
-  const
-    HDN_BEGINTRACK* = HDN_BEGINTRACKA
-    HDN_DIVIDERDBLCLICK* = HDN_DIVIDERDBLCLICKA
-    HDN_ENDTRACK* = HDN_ENDTRACKA
-    HDN_ITEMCHANGED* = HDN_ITEMCHANGEDA
-    HDN_ITEMCHANGING* = HDN_ITEMCHANGINGA
-    HDN_ITEMCLICK* = HDN_ITEMCLICKA
-    HDN_ITEMDBLCLICK* = HDN_ITEMDBLCLICKA
-    HDN_TRACK* = HDN_TRACKA
-# UNICODE
-# Hot key control
-
-const
-  HKM_GETHOTKEY* = 1026
-  HKM_SETHOTKEY* = 1025
-  HKM_SETRULES* = 1027        # List box
-  LB_ADDFILE* = 406
-  LB_ADDSTRING* = 384
-  LB_DELETESTRING* = 386
-  LB_DIR* = 397
-  LB_FINDSTRING* = 399
-  LB_FINDSTRINGEXACT* = 418
-  LB_GETANCHORINDEX* = 413
-  LB_GETCARETINDEX* = 415
-  LB_GETCOUNT* = 395
-  LB_GETCURSEL* = 392
-  LB_GETHORIZONTALEXTENT* = 403
-  LB_GETITEMDATA* = 409
-  LB_GETITEMHEIGHT* = 417
-  LB_GETITEMRECT* = 408
-  LB_GETLOCALE* = 422
-  LB_GETSEL* = 391
-  LB_GETSELCOUNT* = 400
-  LB_GETSELITEMS* = 401
-  LB_GETTEXT* = 393
-  LB_GETTEXTLEN* = 394
-  LB_GETTOPINDEX* = 398
-  LB_INITSTORAGE* = 424
-  LB_INSERTSTRING* = 385
-  LB_ITEMFROMPOINT* = 425
-  LB_RESETCONTENT* = 388
-  LB_SELECTSTRING* = 396
-  LB_SELITEMRANGE* = 411
-  LB_SELITEMRANGEEX* = 387
-  LB_SETANCHORINDEX* = 412
-  LB_SETCARETINDEX* = 414
-  LB_SETCOLUMNWIDTH* = 405
-  LB_SETCOUNT* = 423
-  LB_SETCURSEL* = 390
-  LB_SETHORIZONTALEXTENT* = 404
-  LB_SETITEMDATA* = 410
-  LB_SETITEMHEIGHT* = 416
-  LB_SETLOCALE* = 421
-  LB_SETSEL* = 389
-  LB_SETTABSTOPS* = 402
-  LB_SETTOPINDEX* = 407       # List box notifications
-  LBN_DBLCLK* = 2
-  LBN_ERRSPACE* = - (2)
-  LBN_KILLFOCUS* = 5
-  LBN_SELCANCEL* = 3
-  LBN_SELCHANGE* = 1
-  LBN_SETFOCUS* = 4           # List view control
-  LVM_ARRANGE* = 4118
-  LVM_CREATEDRAGIMAGE* = 4129
-  LVM_DELETEALLITEMS* = 4105
-  LVM_DELETECOLUMN* = 4124
-  LVM_DELETEITEM* = 4104
-  LVM_ENSUREVISIBLE* = 4115
-  LVM_GETBKCOLOR* = 4096
-  LVM_GETCALLBACKMASK* = 4106
-  LVM_GETCOLUMNWIDTH* = 4125
-  LVM_GETCOUNTPERPAGE* = 4136
-  LVM_GETEDITCONTROL* = 4120
-  LVM_GETIMAGELIST* = 4098
-  LVM_EDITLABELW* = 4214
-  LVM_FINDITEMW* = 4179
-  LVM_GETCOLUMNW* = 4191
-  LVM_GETISEARCHSTRINGW* = 4213
-  LVM_GETITEMW* = 4171
-  LVM_GETITEMTEXTW* = 4211
-  LVM_GETSTRINGWIDTHW* = 4183
-  LVM_INSERTCOLUMNW* = 4193
-  LVM_INSERTITEMW* = 4173
-  LVM_SETCOLUMNW* = 4192
-  LVM_SETITEMW* = 4172
-  LVM_SETITEMTEXTW* = 4212
-  LVM_EDITLABELA* = 4119
-  LVM_FINDITEMA* = 4109
-  LVM_GETCOLUMNA* = 4121
-  LVM_GETISEARCHSTRINGA* = 4148
-  LVM_GETITEMA* = 4101
-  LVM_GETITEMTEXTA* = 4141
-  LVM_GETSTRINGWIDTHA* = 4113
-  LVM_INSERTCOLUMNA* = 4123
-  LVM_INSERTITEMA* = 4103
-  LVM_SETCOLUMNA* = 4122
-  LVM_SETITEMA* = 4102
-  LVM_SETITEMTEXTA* = 4142
-
-when defined(winUnicode):
-  const
-    LVM_EDITLABEL* = LVM_EDITLABELW
-    LVM_FINDITEM* = LVM_FINDITEMW
-    LVM_GETCOLUMN* = LVM_GETCOLUMNW
-    LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGW
-    LVM_GETITEM* = LVM_GETITEMW
-    LVM_GETITEMTEXT* = LVM_GETITEMTEXTW
-    LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHW
-    LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNW
-    LVM_INSERTITEM* = LVM_INSERTITEMW
-    LVM_SETCOLUMN* = LVM_SETCOLUMNW
-    LVM_SETITEM* = LVM_SETITEMW
-    LVM_SETITEMTEXT* = LVM_SETITEMTEXTW
-else:
-  const
-    LVM_EDITLABEL* = LVM_EDITLABELA
-    LVM_FINDITEM* = LVM_FINDITEMA
-    LVM_GETCOLUMN* = LVM_GETCOLUMNA
-    LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGA
-    LVM_GETITEM* = LVM_GETITEMA
-    LVM_GETITEMTEXT* = LVM_GETITEMTEXTA
-    LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHA
-    LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNA
-    LVM_INSERTITEM* = LVM_INSERTITEMA
-    LVM_SETCOLUMN* = LVM_SETCOLUMNA
-    LVM_SETITEM* = LVM_SETITEMA
-    LVM_SETITEMTEXT* = LVM_SETITEMTEXTA
-# UNICODE
-
-const
-  LVM_GETITEMCOUNT* = 4100
-  LVM_GETITEMPOSITION* = 4112
-  LVM_GETITEMRECT* = 4110
-  LVM_GETITEMSPACING* = 4147
-  LVM_GETITEMSTATE* = 4140
-  LVM_GETNEXTITEM* = 4108
-  LVM_GETORIGIN* = 4137
-  LVM_GETSELECTEDCOUNT* = 4146
-  LVM_GETTEXTBKCOLOR* = 4133
-  LVM_GETTEXTCOLOR* = 4131
-  LVM_GETTOPINDEX* = 4135
-  LVM_GETVIEWRECT* = 4130
-  LVM_HITTEST* = 4114
-  LVM_REDRAWITEMS* = 4117
-  LVM_SCROLL* = 4116
-  LVM_SETBKCOLOR* = 4097
-  LVM_SETCALLBACKMASK* = 4107
-  LVM_SETCOLUMNWIDTH* = 4126
-  LVM_SETIMAGELIST* = 4099
-  LVM_SETITEMCOUNT* = 4143
-  LVM_SETITEMPOSITION* = 4111
-  LVM_SETITEMPOSITION32* = 4145
-  LVM_SETITEMSTATE* = 4139
-  LVM_SETTEXTBKCOLOR* = 4134
-  LVM_SETTEXTCOLOR* = 4132
-  LVM_SORTITEMS* = 4144
-  LVM_UPDATE* = 4138          # List view control notifications
-  LVN_BEGINDRAG* = - (109)
-  LVN_BEGINRDRAG* = - (111)
-  LVN_COLUMNCLICK* = - (108)
-  LVN_DELETEALLITEMS* = - (104)
-  LVN_DELETEITEM* = - (103)
-  LVN_BEGINLABELEDITW* = - (175)
-  LVN_ENDLABELEDITW* = - (176)
-  LVN_GETDISPINFOW* = - (177)
-  LVN_SETDISPINFOW* = - (178)
-  LVN_BEGINLABELEDITA* = - (105)
-  LVN_ENDLABELEDITA* = - (106)
-  LVN_GETDISPINFOA* = - (150)
-  LVN_SETDISPINFOA* = - (151)
-
-when defined(winUnicode):
-  const
-    LVN_BEGINLABELEDIT* = LVN_BEGINLABELEDITW
-    LVN_ENDLABELEDIT* = LVN_ENDLABELEDITW
-    LVN_GETDISPINFO* = LVN_GETDISPINFOW
-    LVN_SETDISPINFO* = LVN_SETDISPINFOW
-else:
-  const
-    LVN_BEGINLABELEDIT* = LVN_BEGINLABELEDITA
-    LVN_ENDLABELEDIT* = LVN_ENDLABELEDITA
-    LVN_GETDISPINFO* = LVN_GETDISPINFOA
-    LVN_SETDISPINFO* = LVN_SETDISPINFOA
-# UNICODE
-
-const
-  LVN_INSERTITEM* = - (102)
-  LVN_ITEMCHANGED* = - (101)
-  LVN_ITEMCHANGING* = - (100)
-  LVN_KEYDOWN* = - (155)      # Control notification
-  NM_CLICK* = - (2)
-  NM_DBLCLK* = - (3)
-  NM_KILLFOCUS* = - (8)
-  NM_OUTOFMEMORY* = - (1)
-  NM_RCLICK* = - (5)
-  NM_RDBLCLK* = - (6)
-  NM_RETURN* = - (4)
-  NM_SETFOCUS* = - (7)        # Power status
-                              # Progress bar control
-  PBM_DELTAPOS* = 1027
-  PBM_SETPOS* = 1026
-  PBM_SETRANGE* = 1025
-  PBM_SETRANGE32* = 1030
-  PBM_SETSTEP* = 1028
-  PBM_STEPIT* = 1029          # Property sheets
-  PSM_ADDPAGE* = 1127
-  PSM_APPLY* = 1134
-  PSM_CANCELTOCLOSE* = 1131
-  PSM_CHANGED* = 1128
-  PSM_GETTABCONTROL* = 1140
-  PSM_GETCURRENTPAGEHWND* = 1142
-  PSM_ISDIALOGMESSAGE* = 1141
-  PSM_PRESSBUTTON* = 1137
-  PSM_QUERYSIBLINGS* = 1132
-  PSM_REBOOTSYSTEM* = 1130
-  PSM_REMOVEPAGE* = 1126
-  PSM_RESTARTWINDOWS* = 1129
-  PSM_SETCURSEL* = 1125
-  PSM_SETCURSELID* = 1138
-  PSM_SETFINISHTEXTW* = 1145
-  PSM_SETTITLEW* = 1144
-  PSM_SETFINISHTEXTA* = 1139
-  PSM_SETTITLEA* = 1135
-
-when defined(winUnicode):
-  const
-    PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTW
-    PSM_SETTITLE* = PSM_SETTITLEW
-else:
-  const
-    PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTA
-    PSM_SETTITLE* = PSM_SETTITLEA
-# UNICODE
-
-const
-  PSM_SETWIZBUTTONS* = 1136
-  PSM_UNCHANGED* = 1133       # Property sheet notifications
-  PSN_APPLY* = - (202)
-  PSN_HELP* = - (205)
-  PSN_KILLACTIVE* = - (201)
-  PSN_QUERYCANCEL* = - (209)
-  PSN_RESET* = - (203)
-  PSN_SETACTIVE* = - (200)
-  PSN_WIZBACK* = - (206)
-  PSN_WIZFINISH* = - (208)
-  PSN_WIZNEXT* = - (207)      # Status window
-  SB_GETBORDERS* = 1031
-  SB_GETPARTS* = 1030
-  SB_GETRECT* = 1034
-  SB_GETTEXTW* = 1037
-  SB_GETTEXTLENGTHW* = 1036
-  SB_SETTEXTW* = 1035
-  SB_GETTEXTA* = 1026
-  SB_GETTEXTLENGTHA* = 1027
-  SB_SETTEXTA* = 1025
-
-when defined(winUnicode):
-  const
-    SB_GETTEXT* = SB_GETTEXTW
-    SB_GETTEXTLENGTH* = SB_GETTEXTLENGTHW
-    SB_SETTEXT* = SB_SETTEXTW
-else:
-  const
-    SB_GETTEXT* = SB_GETTEXTA
-    SB_GETTEXTLENGTH* = SB_GETTEXTLENGTHA
-    SB_SETTEXT* = SB_SETTEXTA
-# UNICODE
-
-const
-  SB_SETMINHEIGHT* = 1032
-  SB_SETPARTS* = 1028
-  SB_SIMPLE* = 1033           # Scroll bar control
-  SBM_ENABLE_ARROWS* = 228
-  SBM_GETPOS* = 225
-  SBM_GETRANGE* = 227
-  SBM_GETSCROLLINFO* = 234
-  SBM_SETPOS* = 224
-  SBM_SETRANGE* = 226
-  SBM_SETRANGEREDRAW* = 230
-  SBM_SETSCROLLINFO* = 233    # Static control
-  STM_GETICON* = 369
-  STM_GETIMAGE* = 371
-  STM_SETICON* = 368
-  STM_SETIMAGE* = 370         # Static control notifications
-  STN_CLICKED* = 0
-  STN_DBLCLK* = 1
-  STN_DISABLE* = 3
-  STN_ENABLE* = 2             # Toolbar control
-  TB_ADDBITMAP* = 1043
-  TB_ADDBUTTONS* = 1044
-  TB_AUTOSIZE* = 1057
-  TB_BUTTONCOUNT* = 1048
-  TB_BUTTONSTRUCTSIZE* = 1054
-  TB_CHANGEBITMAP* = 1067
-  TB_CHECKBUTTON* = 1026
-  TB_COMMANDTOINDEX* = 1049
-  TB_CUSTOMIZE* = 1051
-  TB_DELETEBUTTON* = 1046
-  TB_ENABLEBUTTON* = 1025
-  TB_GETBITMAP* = 1068
-  TB_GETBITMAPFLAGS* = 1065
-  TB_GETBUTTON* = 1047
-  TB_ADDSTRINGW* = 1101
-  TB_GETBUTTONTEXTW* = 1099
-  TB_SAVERESTOREW* = 1100
-  TB_ADDSTRINGA* = 1052
-  TB_GETBUTTONTEXTA* = 1069
-  TB_SAVERESTOREA* = 1050
-
-when defined(winUnicode):
-  const
-    TB_ADDSTRING* = TB_ADDSTRINGW
-    TB_GETBUTTONTEXT* = TB_GETBUTTONTEXTW
-    TB_SAVERESTORE* = TB_SAVERESTOREW
-else:
-  const
-    TB_ADDSTRING* = TB_ADDSTRINGA
-    TB_GETBUTTONTEXT* = TB_GETBUTTONTEXTA
-    TB_SAVERESTORE* = TB_SAVERESTOREA
-# UNICODE
-
-const
-  TB_GETITEMRECT* = 1053
-  TB_GETROWS* = 1064
-  TB_GETSTATE* = 1042
-  TB_GETTOOLTIPS* = 1059
-  TB_HIDEBUTTON* = 1028
-  TB_INDETERMINATE* = 1029
-  TB_INSERTBUTTON* = 1045
-  TB_ISBUTTONCHECKED* = 1034
-  TB_ISBUTTONENABLED* = 1033
-  TB_ISBUTTONHIDDEN* = 1036
-  TB_ISBUTTONINDETERMINATE* = 1037
-  TB_ISBUTTONPRESSED* = 1035
-  TB_PRESSBUTTON* = 1027
-  TB_SETBITMAPSIZE* = 1056
-  TB_SETBUTTONSIZE* = 1055
-  TB_SETCMDID* = 1066
-  TB_SETPARENT* = 1061
-  TB_SETROWS* = 1063
-  TB_SETSTATE* = 1041
-  TB_SETTOOLTIPS* = 1060      # Track bar control
-  TBM_CLEARSEL* = 1043
-  TBM_CLEARTICS* = 1033
-  TBM_GETCHANNELRECT* = 1050
-  TBM_GETLINESIZE* = 1048
-  TBM_GETNUMTICS* = 1040
-  TBM_GETPAGESIZE* = 1046
-  TBM_GETPOS* = 1024
-  TBM_GETPTICS* = 1038
-  TBM_GETRANGEMAX* = 1026
-  TBM_GETRANGEMIN* = 1025
-  TBM_GETSELEND* = 1042
-  TBM_GETSELSTART* = 1041
-  TBM_GETTHUMBLENGTH* = 1052
-  TBM_GETTHUMBRECT* = 1049
-  TBM_GETTIC* = 1027
-  TBM_GETTICPOS* = 1039
-  TBM_SETLINESIZE* = 1047
-  TBM_SETPAGESIZE* = 1045
-  TBM_SETPOS* = 1029
-  TBM_SETRANGE* = 1030
-  TBM_SETRANGEMAX* = 1032
-  TBM_SETRANGEMIN* = 1031
-  TBM_SETSEL* = 1034
-  TBM_SETSELEND* = 1036
-  TBM_SETSELSTART* = 1035
-  TBM_SETTHUMBLENGTH* = 1051
-  TBM_SETTIC* = 1028
-  TBM_SETTICFREQ* = 1044      # Tool bar control notifications
-  TBN_BEGINADJUST* = - (703)
-  TBN_BEGINDRAG* = - (701)
-  TBN_CUSTHELP* = - (709)
-  TBN_ENDADJUST* = - (704)
-  TBN_ENDDRAG* = - (702)
-  TBN_GETBUTTONINFOW* = - (720)
-  TBN_GETBUTTONINFOA* = - (700)
-
-when defined(winUnicode):
-  const
-    TBN_GETBUTTONINFO* = TBN_GETBUTTONINFOW
-else:
-  const
-    TBN_GETBUTTONINFO* = TBN_GETBUTTONINFOA
-# UNICODE
-
-const
-  TBN_QUERYDELETE* = - (707)
-  TBN_QUERYINSERT* = - (706)
-  TBN_RESET* = - (705)
-  TBN_TOOLBARCHANGE* = - (708) # Tab control
-  TCM_ADJUSTRECT* = 4904
-  TCM_DELETEALLITEMS* = 4873
-  TCM_DELETEITEM* = 4872
-  TCM_GETCURFOCUS* = 4911
-  TCM_GETCURSEL* = 4875
-  TCM_GETIMAGELIST* = 4866
-  TCM_GETITEMW* = 4924
-  TCM_INSERTITEMW* = 4926
-  TCM_SETITEMW* = 4925
-  TCM_GETITEMA* = 4869
-  TCM_INSERTITEMA* = 4871
-  TCM_SETITEMA* = 4870
-
-when defined(winUnicode):
-  const
-    TCM_GETITEM* = TCM_GETITEM
-    TCM_INSERTITEM* = TCM_INSERTITEMW
-    TCM_SETITEM* = TCM_SETITEMW
-else:
-  const
-    TCM_GETITEM* = TCM_GETITEMA
-    TCM_INSERTITEM* = TCM_INSERTITEMA
-    TCM_SETITEM* = TCM_SETITEMA
-# UNICODE
-
-const
-  TCM_GETITEMCOUNT* = 4868
-  TCM_GETITEMRECT* = 4874
-  TCM_GETROWCOUNT* = 4908
-  TCM_GETTOOLTIPS* = 4909
-  TCM_HITTEST* = 4877
-  TCM_REMOVEIMAGE* = 4906
-  TCM_SETCURFOCUS* = 4912
-  TCM_SETCURSEL* = 4876
-  TCM_SETIMAGELIST* = 4867
-  TCM_SETITEMEXTRA* = 4878
-  TCM_SETITEMSIZE* = 4905
-  TCM_SETPADDING* = 4907
-  TCM_SETTOOLTIPS* = 4910     # Tab control notifications
-  TCN_KEYDOWN* = - (550)
-  TCN_SELCHANGE* = - (551)
-  TCN_SELCHANGING* = - (552)  # Tool tip control
-  TTM_ACTIVATE* = 1025
-  TTM_ADDTOOLW* = 1074
-  TTM_DELTOOLW* = 1075
-  TTM_ENUMTOOLSW* = 1082
-  TTM_GETCURRENTTOOLW* = 1083
-  TTM_GETTEXTW* = 1080
-  TTM_GETTOOLINFOW* = 1077
-  TTM_HITTESTW* = 1079
-  TTM_NEWTOOLRECTW* = 1076
-  TTM_SETTOOLINFOW* = 1078
-  TTM_UPDATETIPTEXTW* = 1081
-  TTM_ADDTOOLA* = 1028
-  TTM_DELTOOLA* = 1029
-  TTM_ENUMTOOLSA* = 1038
-  TTM_GETCURRENTTOOLA* = 1039
-  TTM_GETTEXTA* = 1035
-  TTM_GETTOOLINFOA* = 1032
-  TTM_HITTESTA* = 1034
-  TTM_NEWTOOLRECTA* = 1030
-  TTM_SETTOOLINFOA* = 1033
-  TTM_UPDATETIPTEXTA* = 1036
-
-when defined(winUnicode):
-  const
-    TTM_ADDTOOL* = TTM_ADDTOOLW
-    TTM_DELTOOL* = TTM_DELTOOLW
-    TTM_ENUMTOOLS* = TTM_ENUMTOOLSW
-    TTM_GETCURRENTTOOL* = TTM_GETCURRENTTOOLW
-    TTM_GETTEXT* = TTM_GETTEXTW
-    TTM_GETTOOLINFO* = TTM_GETTOOLINFOW
-    TTM_HITTEST* = TTM_HITTESTW
-    TTM_NEWTOOLRECT* = TTM_NEWTOOLRECTW
-    TTM_SETTOOLINFO* = TTM_SETTOOLINFOW
-    TTM_UPDATETIPTEXT* = TTM_UPDATETIPTEXTW
-else:
-  const
-    TTM_ADDTOOL* = TTM_ADDTOOLA
-    TTM_DELTOOL* = TTM_DELTOOLA
-    TTM_ENUMTOOLS* = TTM_ENUMTOOLSA
-    TTM_GETCURRENTTOOL* = TTM_GETCURRENTTOOLA
-    TTM_GETTEXT* = TTM_GETTEXTA
-    TTM_GETTOOLINFO* = TTM_GETTOOLINFOA
-    TTM_HITTEST* = TTM_HITTESTA
-    TTM_NEWTOOLRECT* = TTM_NEWTOOLRECTA
-    TTM_SETTOOLINFO* = TTM_SETTOOLINFOA
-    TTM_UPDATETIPTEXT* = TTM_UPDATETIPTEXTA
-# UNICODE
-
-const
-  TTM_GETTOOLCOUNT* = 1037
-  TTM_RELAYEVENT* = 1031
-  TTM_SETDELAYTIME* = 1027
-  TTM_WINDOWFROMPOINT* = 1040 # Tool tip control notification
-  TTN_NEEDTEXTW* = - (530)
-  TTN_NEEDTEXTA* = - (520)
-
-when defined(winUnicode):
-  const
-    TTN_NEEDTEXT* = TTN_NEEDTEXTW
-else:
-  const
-    TTN_NEEDTEXT* = TTN_NEEDTEXTA
-# UNICODE
-
-const
-  TTN_POP* = - (522)
-  TTN_SHOW* = - (521)         # Tree view control
-  TVM_CREATEDRAGIMAGE* = 4370
-  TVM_DELETEITEM* = 4353
-  TVM_ENDEDITLABELNOW* = 4374
-  TVM_ENSUREVISIBLE* = 4372
-  TVM_EXPAND* = 4354
-  TVM_GETCOUNT* = 4357
-  TVM_GETEDITCONTROL* = 4367
-  TVM_GETIMAGELIST* = 4360
-  TVM_GETINDENT* = 4358
-  TVM_GETITEMRECT* = 4356
-  TVM_GETNEXTITEM* = 4362
-  TVM_GETVISIBLECOUNT* = 4368
-  TVM_HITTEST* = 4369
-  TVM_EDITLABELW* = 4417
-  TVM_GETISEARCHSTRINGW* = 4416
-  TVM_GETITEMW* = 4414
-  TVM_INSERTITEMW* = 4402
-  TVM_SETITEMW* = 4415
-  TVM_EDITLABELA* = 4366
-  TVM_GETISEARCHSTRINGA* = 4375
-  TVM_GETITEMA* = 4364
-  TVM_INSERTITEMA* = 4352
-  TVM_SETITEMA* = 4365
-
-when defined(winUnicode):
-  const
-    TVM_EDITLABEL* = TVM_EDITLABELW
-    TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGW
-    TVM_GETITEM* = TVM_GETITEMW
-    TVM_INSERTITEM* = TVM_INSERTITEMW
-    TVM_SETITEM* = TVM_SETITEMW
-else:
-  const
-    TVM_EDITLABEL* = TVM_EDITLABELA
-    TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGA
-    TVM_GETITEM* = TVM_GETITEMA
-    TVM_INSERTITEM* = TVM_INSERTITEMA
-    TVM_SETITEM* = TVM_SETITEMA
-# UNICODE
-
-const
-  TVM_SELECTITEM* = 4363
-  TVM_SETIMAGELIST* = 4361
-  TVM_SETINDENT* = 4359
-  TVM_SORTCHILDREN* = 4371
-  TVM_SORTCHILDRENCB* = 4373  # Tree view control notification
-  TVN_KEYDOWN* = - (412)
-  TVN_BEGINDRAGW* = - (456)
-  TVN_BEGINLABELEDITW* = - (459)
-  TVN_BEGINRDRAGW* = - (457)
-  TVN_DELETEITEMW* = - (458)
-  TVN_ENDLABELEDITW* = - (460)
-  TVN_GETDISPINFOW* = - (452)
-  TVN_ITEMEXPANDEDW* = - (455)
-  TVN_ITEMEXPANDINGW* = - (454)
-  TVN_SELCHANGEDW* = - (451)
-  TVN_SELCHANGINGW* = - (450)
-  TVN_SETDISPINFOW* = - (453)
-  TVN_BEGINDRAGA* = - (407)
-  TVN_BEGINLABELEDITA* = - (410)
-  TVN_BEGINRDRAGA* = - (408)
-  TVN_DELETEITEMA* = - (409)
-  TVN_ENDLABELEDITA* = - (411)
-  TVN_GETDISPINFOA* = - (403)
-  TVN_ITEMEXPANDEDA* = - (406)
-  TVN_ITEMEXPANDINGA* = - (405)
-  TVN_SELCHANGEDA* = - (402)
-  TVN_SELCHANGINGA* = - (401)
-  TVN_SETDISPINFOA* = - (404)
-
-when defined(winUnicode):
-  const
-    TVN_BEGINDRAG* = TVN_BEGINDRAGW
-    TVN_BEGINLABELEDIT* = TVN_BEGINLABELEDITW
-    TVN_BEGINRDRAG* = TVN_BEGINRDRAGW
-    TVN_DELETEITEM* = TVN_DELETEITEMW
-    TVN_ENDLABELEDIT* = TVN_ENDLABELEDITW
-    TVN_GETDISPINFO* = TVN_GETDISPINFOW
-    TVN_ITEMEXPANDED* = TVN_ITEMEXPANDEDW
-    TVN_ITEMEXPANDING* = TVN_ITEMEXPANDINGW
-    TVN_SELCHANGED* = TVN_SELCHANGEDW
-    TVN_SELCHANGING* = TVN_SELCHANGINGW
-    TVN_SETDISPINFO* = TVN_SETDISPINFOW
-else:
-  const
-    TVN_BEGINDRAG* = TVN_BEGINDRAGA
-    TVN_BEGINLABELEDIT* = TVN_BEGINLABELEDITA
-    TVN_BEGINRDRAG* = TVN_BEGINRDRAGA
-    TVN_DELETEITEM* = TVN_DELETEITEMA
-    TVN_ENDLABELEDIT* = TVN_ENDLABELEDITA
-    TVN_GETDISPINFO* = TVN_GETDISPINFOA
-    TVN_ITEMEXPANDED* = TVN_ITEMEXPANDEDA
-    TVN_ITEMEXPANDING* = TVN_ITEMEXPANDINGA
-    TVN_SELCHANGED* = TVN_SELCHANGEDA
-    TVN_SELCHANGING* = TVN_SELCHANGINGA
-    TVN_SETDISPINFO* = TVN_SETDISPINFOA
-# UNICODE
-# Up/down control
-
-const
-  UDM_GETACCEL* = 1132
-  UDM_GETBASE* = 1134
-  UDM_GETBUDDY* = 1130
-  UDM_GETPOS* = 1128
-  UDM_GETPOS32* = 1138
-  UDM_GETRANGE* = 1126
-  UDM_GETRANGE32* = 1136
-  UDM_SETACCEL* = 1131
-  UDM_SETBASE* = 1133
-  UDM_SETBUDDY* = 1129
-  UDM_SETPOS* = 1127
-  UDM_SETPOS32* = 1137
-  UDM_SETRANGE* = 1125
-  UDM_SETRANGE32* = 1135      # Up/down control notification
-  UDN_DELTAPOS* = - (722)     # Window messages
-  WM_ACTIVATE* = 6
-  WM_ACTIVATEAPP* = 28
-  WM_ASKCBFORMATNAME* = 780
-  WM_CANCELJOURNAL* = 75
-  WM_CANCELMODE* = 31
-  WM_CAPTURECHANGED* = 533
-  WM_CHANGECBCHAIN* = 781
-  WM_CHAR* = 258
-  WM_CHARTOITEM* = 47
-  WM_CHILDACTIVATE* = 34
-  WM_CHOOSEFONT_GETLOGFONT* = 1025
-  WM_CHOOSEFONT_SETLOGFONT* = 1125
-  WM_CHOOSEFONT_SETFLAGS* = 1126
-  WM_CLEAR* = 771
-  WM_CLOSE* = 16
-  WM_COMMAND* = 273
-  WM_COMPACTING* = 65
-  WM_COMPAREITEM* = 57
-  WM_CONTEXTMENU* = 123
-  WM_COPY* = 769
-  WM_COPYDATA* = 74
-  WM_CREATE* = 1
-  WM_CTLCOLORBTN* = 309
-  WM_CTLCOLORDLG* = 310
-  WM_CTLCOLOREDIT* = 307
-  WM_CTLCOLORLISTBOX* = 308
-  WM_CTLCOLORMSGBOX* = 306
-  WM_CTLCOLORSCROLLBAR* = 311
-  WM_CTLCOLORSTATIC* = 312
-  WM_CUT* = 768
-  WM_DEADCHAR* = 259
-  WM_DELETEITEM* = 45
-  WM_DESTROY* = 2
-  WM_DESTROYCLIPBOARD* = 775
-  WM_DEVICECHANGE* = 537
-  WM_DEVMODECHANGE* = 27
-  WM_DISPLAYCHANGE* = 126
-  WM_DRAWCLIPBOARD* = 776
-  WM_DRAWITEM* = 43
-  WM_DROPFILES* = 563
-  WM_ENABLE* = 10
-  WM_ENDSESSION* = 22
-  WM_ENTERIDLE* = 289
-  WM_ENTERMENULOOP* = 529
-  WM_ENTERSIZEMOVE* = 561
-  WM_ERASEBKGND* = 20
-  WM_EXITMENULOOP* = 530
-  WM_EXITSIZEMOVE* = 562
-  WM_FONTCHANGE* = 29
-  WM_GETDLGCODE* = 135
-  WM_GETFONT* = 49
-  WM_GETHOTKEY* = 51
-  WM_GETICON* = 127
-  WM_GETMINMAXINFO* = 36
-  WM_GETTEXT* = 13
-  WM_GETTEXTLENGTH* = 14
-  WM_HELP* = 83
-  WM_HOTKEY* = 786
-  WM_HSCROLL* = 276
-  WM_HSCROLLCLIPBOARD* = 782
-  WM_ICONERASEBKGND* = 39
-  WM_IME_CHAR* = 646
-  WM_IME_COMPOSITION* = 271
-  WM_IME_COMPOSITIONFULL* = 644
-  WM_IME_CONTROL* = 643
-  WM_IME_ENDCOMPOSITION* = 270
-  WM_IME_KEYDOWN* = 656
-  WM_IME_KEYUP* = 657
-  WM_IME_NOTIFY* = 642
-  WM_IME_SELECT* = 645
-  WM_IME_SETCONTEXT* = 641
-  WM_IME_STARTCOMPOSITION* = 269
-  WM_INITDIALOG* = 272
-  WM_INITMENU* = 278
-  WM_INITMENUPOPUP* = 279
-  WM_INPUTLANGCHANGE* = 81
-  WM_INPUTLANGCHANGEREQUEST* = 80
-  WM_KEYDOWN* = 256
-  WM_KEYUP* = 257
-  WM_KILLFOCUS* = 8
-  WM_LBUTTONDBLCLK* = 515
-  WM_LBUTTONDOWN* = 513
-  WM_LBUTTONUP* = 514
-  WM_MBUTTONDBLCLK* = 521
-  WM_MBUTTONDOWN* = 519
-  WM_MBUTTONUP* = 520
-  WM_MDIACTIVATE* = 546
-  WM_MDICASCADE* = 551
-  WM_MDICREATE* = 544
-  WM_MDIDESTROY* = 545
-  WM_MDIGETACTIVE* = 553
-  WM_MDIICONARRANGE* = 552
-  WM_MDIMAXIMIZE* = 549
-  WM_MDINEXT* = 548
-  WM_MDIREFRESHMENU* = 564
-  WM_MDIRESTORE* = 547
-  WM_MDISETMENU* = 560
-  WM_MDITILE* = 550
-  WM_MEASUREITEM* = 44
-  WM_MENUCHAR* = 288
-  WM_MENUSELECT* = 287
-  WM_MOUSEACTIVATE* = 33
-  WM_MOUSEMOVE* = 512
-  WM_MOUSEWHEEL* = 522
-  WM_MOUSEHOVER* = 673
-  WM_MOUSELEAVE* = 675
-  WM_MOVE* = 3
-  WM_MOVING* = 534
-  WM_NCACTIVATE* = 134
-  WM_NCCALCSIZE* = 131
-  WM_NCCREATE* = 129
-  WM_NCDESTROY* = 130
-  WM_NCHITTEST* = 132
-  WM_NCLBUTTONDBLCLK* = 163
-  WM_NCLBUTTONDOWN* = 161
-  WM_NCLBUTTONUP* = 162
-  WM_NCMBUTTONDBLCLK* = 169
-  WM_NCMBUTTONDOWN* = 167
-  WM_NCMBUTTONUP* = 168
-  WM_NCMOUSEMOVE* = 160
-  WM_NCPAINT* = 133
-  WM_NCRBUTTONDBLCLK* = 166
-  WM_NCRBUTTONDOWN* = 164
-  WM_NCRBUTTONUP* = 165
-  WM_NEXTDLGCTL* = 40
-  WM_NOTIFY* = 78
-  WM_NOTIFYFORMAT* = 85
-  WM_NULL* = 0
-  WM_PAINT* = 15
-  WM_PAINTCLIPBOARD* = 777
-  WM_PAINTICON* = 38
-  WM_PALETTECHANGED* = 785
-  WM_PALETTEISCHANGING* = 784
-  WM_PARENTNOTIFY* = 528
-  WM_PASTE* = 770
-  WM_PENWINFIRST* = 896
-  WM_PENWINLAST* = 911
-  WM_POWER* = 72
-  WM_POWERBROADCAST* = 536
-  WM_PRINT* = 791
-  WM_PRINTCLIENT* = 792
-  WM_PSD_ENVSTAMPRECT* = 1029
-  WM_PSD_FULLPAGERECT* = 1025
-  WM_PSD_GREEKTEXTRECT* = 1028
-  WM_PSD_MARGINRECT* = 1027
-  WM_PSD_MINMARGINRECT* = 1026
-  WM_PSD_PAGESETUPDLG* = 1024
-  WM_PSD_YAFULLPAGERECT* = 1030
-  WM_QUERYDRAGICON* = 55
-  WM_QUERYENDSESSION* = 17
-  WM_QUERYNEWPALETTE* = 783
-  WM_QUERYOPEN* = 19
-  WM_QUEUESYNC* = 35
-  WM_QUIT* = 18
-  WM_RBUTTONDBLCLK* = 518
-  WM_RBUTTONDOWN* = 516
-  WM_RBUTTONUP* = 517
-  WM_RENDERALLFORMATS* = 774
-  WM_RENDERFORMAT* = 773
-  WM_SETCURSOR* = 32
-  WM_SETFOCUS* = 7
-  WM_SETFONT* = 48
-  WM_SETHOTKEY* = 50
-  WM_SETICON* = 128
-  WM_SETREDRAW* = 11
-  WM_SETTEXT* = 12
-  WM_SETTINGCHANGE* = 26
-  WM_SHOWWINDOW* = 24
-  WM_SIZE* = 5
-  WM_SIZECLIPBOARD* = 779
-  WM_SIZING* = 532
-  WM_SPOOLERSTATUS* = 42
-  WM_STYLECHANGED* = 125
-  WM_STYLECHANGING* = 124
-  WM_SYSCHAR* = 262
-  WM_SYSCOLORCHANGE* = 21
-  WM_SYSCOMMAND* = 274
-  WM_SYSDEADCHAR* = 263
-  WM_SYSKEYDOWN* = 260
-  WM_SYSKEYUP* = 261
-  WM_TCARD* = 82
-  WM_TIMECHANGE* = 30
-  WM_TIMER* = 275
-  WM_UNDO* = 772
-  WM_USER* = 1024
-  WM_USERCHANGED* = 84
-  WM_VKEYTOITEM* = 46
-  WM_VSCROLL* = 277
-  WM_VSCROLLCLIPBOARD* = 778
-  WM_WINDOWPOSCHANGED* = 71
-  WM_WINDOWPOSCHANGING* = 70
-  WM_WININICHANGE* = 26       # Window message ranges
-  WM_KEYFIRST* = 256
-  WM_KEYLAST* = 264
-  WM_MOUSEFIRST* = 512
-  WM_MOUSELAST* = 525
-  WM_XBUTTONDOWN* = 523
-  WM_XBUTTONUP* = 524
-  WM_XBUTTONDBLCLK* = 525
-
-when defined(cpu64):
-  type
-    HALFLRESULT* = DWORD
-    HALFPARAM* = DWORD
-    HALFPARAMBOOL* = WINBOOL
-else:
-  type
-    HALFLRESULT* = int16
-    HALFPARAM* = int16
-    HALFPARAMBOOL* = WORDBOOL
-type
-  MSG* {.final, pure.} = object
-    hwnd*: HWND
-    message*: UINT
-    wParam*: WPARAM
-    lParam*: LPARAM
-    time*: DWORD
-    pt*: POINT
-
-  LPMSG* = ptr MSG
-  TMSG* = MSG
-  PMSG* = ptr MSG
-  PMessage* = ptr TMessage
-  TMessage* {.final, pure.} = object          #fields according to ICS
-    msg*: UINT
-    wParam*: WPARAM
-    lParam*: LPARAM
-    Result*: LRESULT
-
-  TWMSize* {.final, pure.} = object
-    Msg*: UINT
-    SizeType*: WPARAM
-    Width*: HALFPARAM
-    Height*: HALFPARAM
-    Result*: LRESULT
-
-  TWMNoParams* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: array[0..3, HALFPARAM]
-    Result*: LRESULT
-
-  TWMCancelMode* = TWMNoParams
-  TWMNCDestroy* = TWMNoParams
-  TWMDestroy* = TWMNoParams
-  TWMClose* = TWMNoParams
-  TWMQueryUIState* = TWMNoParams
-  TWMUIState* {.final, pure.} = object
-    Msg*: UINT
-    Action*: int16
-    Flags*: int16
-    Unused*: HRESULT
-
-  TWMChangeUIState* = TWMUIState
-  TWMUpdateUIState* = TWMUIState
-  TWMKey* {.final, pure.} = object
-    Msg*: UINT
-    CharCode*: int16
-    Unused*: int16
-    KeyData*: int32
-    Result*: LRESULT
-
-  TWMKeyDown* = TWMKey
-  TWMKeyUp* = TWMKey
-  TWMChar* = TWMKey
-  TWMSysChar* = TWMKey
-  TWMSysKeyDown* = TWMKey
-  TWMSysKeyUp* = TWMKey
-  TWMMenuChar* {.final, pure.} = object
-    Msg*: UINT
-    User*: Char
-    MenuFlag*: int16
-    Menu*: HMENU
-    Result*: LRESULT
-
-  TWMGetDlgCode* = TWMNoParams
-  TWMFontChange* = TWMNoParams
-  TWMGetFont* = TWMNoParams
-  TWMSysColorChange* = TWMNoParams
-  TWMQueryDragIcon* = TWMNoParams
-  TWMScroll* {.final, pure.} = object
-    Msg*: UINT
-    ScrollCode*: HALFPARAM
-    Pos*: HALFPARAM
-    ScrollBar*: HWND
-    Result*: LRESULT
-
-  TWMHScroll* = TWMScroll
-  TWMVScroll* = TWMScroll
-  TWMGetText* {.final, pure.} = object
-    Msg*: UINT
-    TextMax*: LPARAM
-    Text*: cstring
-    Result*: LRESULT
-
-  TWMGetTextLength* = TWMNoParams
-  TWMKillFocus* {.final, pure.} = object
-    Msg*: UINT
-    FocusedWnd*: HWND
-    UnUsed*: WPARAM
-    Result*: LRESULT
-
-  TWMSetCursor* {.final, pure.} = object
-    Msg*: UINT
-    CursorWnd*: HWND
-    HitTest*: HALFPARAM
-    MouseMsg*: HALFPARAM
-    Result*: LRESULT
-
-  TWMSetFocus* {.final, pure.} = object
-    Msg*: UINT
-    FocusedWnd*: HWND
-    Unused*: WPARAM
-    Result*: LRESULT
-
-  TWMSetFont* {.final, pure.} = object
-    Msg*: UINT
-    Font*: HFONT
-    Redraw*: HALFPARAMBOOL
-    Unused*: HALFPARAM
-    Result*: LRESULT
-
-  TWMShowWindow* {.final, pure.} = object
-    Msg*: UINT
-    Show*: HALFPARAMBOOL
-    Unused*: HALFPARAM
-    Status*: WPARAM
-    Result*: LRESULT
-
-  TWMEraseBkgnd* {.final, pure.} = object
-    Msg*: UINT
-    DC*: HDC
-    Unused*: LPARAM
-    Result*: LRESULT
-
-  TWMNCHitTest* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int32
-    Pos*: TSmallPoint
-    Result*: LRESULT
-
-  TWMMouse* {.final, pure.} = object
-    Msg*: UINT
-    Keys*: int32
-    Pos*: TSmallPoint
-    Result*: LRESULT
-
-  TWMLButtonDblClk* = TWMMouse
-  TWMLButtonDown* = TWMMouse
-  TWMLButtonUp* = TWMMouse
-  TWMMButtonDblClk* = TWMMouse
-  TWMMButtonDown* = TWMMouse
-  TWMMButtonUp* = TWMMouse
-  TWMMouseWheel* {.final, pure.} = object
-    Msg*: UINT
-    Keys*: int16
-    WheelDelta*: int16
-    Pos*: TSmallPoint
-    Result*: LRESULT
-
-  TWMNCHitMessage* {.final, pure.} = object
-    Msg*: UINT
-    HitTest*: int32
-    XCursor*: int16
-    YCursor*: int16
-    Result*: LRESULT
-
-  TWMNCLButtonDblClk* = TWMNCHitMessage
-  TWMNCLButtonDown* = TWMNCHitMessage
-  TWMNCLButtonUp* = TWMNCHitMessage
-  TWMNCMButtonDblClk* = TWMNCHitMessage
-  TWMNCMButtonDown* = TWMNCHitMessage
-  TWMNCMButtonUp* = TWMNCHitMessage
-  TWMNCMouseMove* = TWMNCHitMessage
-  TWMRButtonDblClk* = TWMMouse
-  TWMRButtonDown* = TWMMouse
-  TWMRButtonUp* = TWMMouse
-  TWMMouseMove* = TWMMouse
-  TWMPaint* {.final, pure.} = object
-    Msg*: UINT
-    DC*: HDC
-    Unused*: int32
-    Result*: LRESULT
-
-  TWMCommand* {.final, pure.} = object
-    Msg*: UINT
-    ItemID*: int16
-    NotifyCode*: int16
-    Ctl*: HWND
-    Result*: LRESULT
-
-  TWMNotify* {.final, pure.} = object
-    Msg*: UINT
-    IDCtrl*: int32
-    NMHdr*: PNMHdr
-    Result*: LRESULT
-
-  TWMPrint* {.final, pure.} = object
-    Msg*: UINT
-    DC*: HDC
-    Flags*: int
-    Result*: LRESULT
-
-  TWMPrintClient* = TWMPrint
-  TWMWinIniChange* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    Section*: cstring
-    Result*: LRESULT
-
-  TWMContextMenu* {.final, pure.} = object
-    Msg*: UINT
-    hWnd*: HWND
-    Pos*: TSmallPoint
-    Result*: LRESULT
-
-  TWMNCCalcSize* {.final, pure.} = object
-    Msg*: UINT
-    CalcValidRects*: WINBOOL
-    CalcSize_Params*: PNCCalcSizeParams
-    Result*: LRESULT
-
-  TWMCharToItem* {.final, pure.} = object
-    Msg*: UINT
-    Key*: int16
-    CaretPos*: int16
-    ListBox*: HWND
-    Result*: LRESULT
-
-  TWMVKeyToItem* = TWMCharToItem
-  TMyEventRange = range[0'i16..16000'i16]
-  TWMParentNotify* {.final, pure.} = object
-    Msg*: UINT
-    case Event*: TMyEventRange
-    of TMyEventRange(WM_CREATE), TMyEventRange(WM_DESTROY):
-        ChildID*: int16
-        ChildWnd*: HWnd
-
-    of TMyEventRange(WM_LBUTTONDOWN),
-      TMyEventRange(WM_MBUTTONDOWN),
-      TMyEventRange(WM_RBUTTONDOWN):
-        Value*: int16
-        XPos*: int16
-        YPos*: int16
-
-    else:
-        Value1*: int16
-        Value2*: int32
-        Result*: LRESULT
-
-  TWMSysCommand* {.final, pure.} = object
-    Msg*: UINT
-    CmdType*: int32
-    XPos*: int16
-    YPos*: int16
-    Result*: LRESULT
-  #  case CmdType*: int32
-  #  of SC_HOTKEY:
-  #      ActivateWnd*: HWND
-  #  of SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE,
-  #     SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE,
-  #     SC_TASKLIST, SC_VSCROLL:
-  #      XPos*: int16
-  #      YPos*: int16
-  #      Result*: LRESULT
-  #  else: # of SC_KEYMENU:
-  #      Key*: int16
-
-  TWMMove* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    Pos*: TSmallPoint
-    Result*: LRESULT
-
-  TWMWindowPosMsg* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    WindowPos*: PWindowPos
-    Result*: LRESULT
-
-  TWMWindowPosChanged* = TWMWindowPosMsg
-  TWMWindowPosChanging* = TWMWindowPosMsg
-  TWMCompareItem* {.final, pure.} = object
-    Msg*: UINT
-    Ctl*: HWnd
-    CompareItemStruct*: PCompareItemStruct
-    Result*: LRESULT
-
-  TWMDeleteItem* {.final, pure.} = object
-    Msg*: UINT
-    Ctl*: HWND
-    DeleteItemStruct*: PDeleteItemStruct
-    Result*: LRESULT
-
-  TWMDrawItem* {.final, pure.} = object
-    Msg*: UINT
-    Ctl*: HWND
-    DrawItemStruct*: PDrawItemStruct
-    Result*: LRESULT
-
-  TWMMeasureItem* {.final, pure.} = object
-    Msg*: UINT
-    IDCtl*: HWnd
-    MeasureItemStruct*: PMeasureItemStruct
-    Result*: LRESULT
-
-  TWMNCCreate* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    CreateStruct*: PCreateStruct
-    Result*: LRESULT
-
-  TWMInitMenuPopup* {.final, pure.} = object
-    Msg*: UINT
-    MenuPopup*: HMENU
-    Pos*: int16
-    SystemMenu*: WordBool
-    Result*: LRESULT
-
-  TWMMenuSelect* {.final, pure.} = object
-    Msg*: UINT
-    IDItem*: int16
-    MenuFlag*: int16
-    Menu*: HMENU
-    Result*: LRESULT
-
-  TWMActivate* {.final, pure.} = object
-    Msg*: UINT
-    Active*: int16
-    Minimized*: WordBool
-    ActiveWindow*: HWND
-    Result*: LRESULT
-
-  TWMQueryEndSession* {.final, pure.} = object
-    Msg*: UINT
-    Source*: int32
-    Unused*: int32
-    Result*: LRESULT
-
-  TWMMDIActivate* {.final, pure.} = object
-    Msg*: UINT
-    DeactiveWnd*: HWND
-    ActiveWnd*: HWND
-    Result*: LRESULT
-
-  TWMNextDlgCtl* {.final, pure.} = object
-    Msg*: UINT
-    CtlFocus*: int32
-    Handle*: WordBool
-    Unused*: int16
-    Result*: LRESULT
-
-  TWMHelp* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    HelpInfo*: PHelpInfo
-    Result*: LRESULT
-
-  TWMGetMinMaxInfo* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    MinMaxInfo*: PMinMaxInfo
-    Result*: LRESULT
-
-  TWMSettingChange* {.final, pure.} = object
-    Msg*: UINT
-    Flag*: int
-    Section*: cstring
-    Result*: LRESULT
-
-  TWMCreate* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int
-    CreateStruct*: PCreateStruct
-    Result*: LRESULT
-
-  TWMCtlColor* {.final, pure.} = object
-    Msg*: UINT
-    ChildDC*: HDC
-    ChildWnd*: HWND
-    Result*: LRESULT
-
-  TWMCtlColorScrollbar* = TWMCtlColor
-  TWMCtlColorStatic* = TWMCtlColor
-  TWMCtlColorBtn* = TWMCtlColor
-  TWMCtlColorListbox* = TWMCtlColor
-  TWMCtlColorMsgbox* = TWMCtlColor
-  TWMCtlColorDlg* = TWMCtlColor
-  TWMCtlColorEdit* = TWMCtlColor
-  TWMInitDialog* {.final, pure.} = object
-    Msg*: UINT
-    Focus*: HWND
-    InitParam*: int32
-    Result*: LRESULT
-
-  TWMNCPaint* {.final, pure.} = object
-    Msg*: UINT
-    RGN*: HRGN
-    Unused*: int32
-    Result*: LRESULT
-
-  TWMSetText* {.final, pure.} = object
-    Msg*: UINT
-    Unused*: int32
-    Text*: cstring
-    Result*: LRESULT
-
-  TWMSizeClipboard* {.final, pure.} = object
-    Msg*: UINT
-    Viewer*: HWND
-    RC*: THandle
-    Result*: LRESULT
-
-  TWMSpoolerStatus* {.final, pure.} = object
-    Msg*: UINT
-    JobStatus*: LPARAM
-    JobsLeft*: WPARAM
-    Unused*: WPARAM
-    Result*: LRESULT
-
-  TWMStyleChange* {.final, pure.} = object
-    Msg*: UINT
-    StyleType*: LPARAM
-    StyleStruct*: PStyleStruct
-    Result*: LRESULT
-
-  TWMStyleChanged* = TWMStyleChange
-  TWMStyleChanging* = TWMStyleChange
-  TWMSysDeadChar* {.final, pure.} = object
-    Msg*: UINT
-    CharCode*: WPARAM
-    Unused*: WPARAM
-    KeyData*: LPARAM
-    Result*: LRESULT
-
-  TWMSystemError* {.final, pure.} = object
-    Msg*: UINT
-    ErrSpec*: WPARAM
-    Unused*: LPARAM
-    Result*: LRESULT
-
-  TWMTimeChange* = TWMNoParams
-  TWMTimer* {.final, pure.} = object
-    Msg*: UINT
-    TimerID*: LPARAM
-    TimerProc*: TFarProc
-    Result*: LRESULT
-
-  TWMUndo* = TWMNoParams
-  TWMVScrollClipboard* {.final, pure.} = object
-    Msg*: UINT
-    Viewer*: HWND
-    ScollCode*: WPARAM
-    ThumbPos*: WPARAM
-    Result*: LRESULT
-
-  TWMDisplayChange* {.final, pure.} = object
-    Msg*: UINT
-    BitsPerPixel*: int
-    Width*: WPARAM
-    Height*: WPARAM
-    Result*: LRESULT
-
-  TWMDropFiles* {.final, pure.} = object
-    Msg*: UINT
-    Drop*: THANDLE
-    Unused*: LPARAM
-    Result*: LRESULT
-
-  TWMEnable* {.final, pure.} = object
-    Msg*: int
-    Enabled*: WINBOOL
-    Unused*: int32
-    Result*: int32
-
-  TWMMouseActivate* {.final, pure.} = object
-    Msg*: int
-    TopLevel*: HWND
-    HitTestCode*: int16
-    MouseMsg*: int16
-    Result*: int32
-
-
-proc GetBinaryTypeA*(lpApplicationName: LPCSTR, lpBinaryType: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}
-
-proc GetShortPathNameA*(lpszLongPath: LPCSTR, lpszShortPath: LPSTR,
-                        cchBuffer: DWORD): DWORD{.stdcall,
-                        dynlib: "kernel32", importc.}
-proc GetEnvironmentStringsA*(): LPSTR{.stdcall, dynlib: "kernel32", importc.}
-proc FreeEnvironmentStringsA*(para1: LPSTR): WINBOOL{.stdcall, dynlib: "kernel32", importc.}
-proc FormatMessageA*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,
-                     dwLanguageId: DWORD, lpBuffer: LPSTR, nSize: DWORD,
-                     Arguments: va_list): DWORD{.stdcall,dynlib: "kernel32", importc.}
-proc CreateMailslotA*(lpName: LPCSTR, nMaxMessageSize: DWORD,
-                      lReadTimeout: DWORD,
-                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-    stdcall, dynlib: "kernel32", importc.}
-proc lstrcmpA*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall,
-  dynlib: "kernel32", importc.}
-proc lstrcmpiA*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall, dynlib: "kernel32", importc.}
-proc lstrcpynA*(lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32): LPSTR{.
-    stdcall, dynlib: "kernel32", importc.}
-proc CreateMutexA*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,
-                   bInitialOwner: WINBOOL, lpName: LPCSTR): HANDLE{.stdcall,
-                   dynlib: "kernel32", importc.}
-proc OpenMutexA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc.}
-proc CreateEventA*(lpEventAttributes: LPSECURITY_ATTRIBUTES,
-                   bManualReset: WINBOOL, bInitialState: WINBOOL, lpName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc.}
-proc OpenEventA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc.}
-proc CreateSemaphoreA*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
-                       lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc.}
-proc OpenSemaphoreA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                     lpName: LPCSTR): HANDLE{.stdcall,
-                     dynlib: "kernel32", importc.}
-proc CreateFileMappingA*(hFile: HANDLE,
-                         lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
-                         flProtect: DWORD, dwMaximumSizeHigh: DWORD,
-                         dwMaximumSizeLow: DWORD, lpName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc.}
-proc OpenFileMappingA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                       lpName: LPCSTR): HANDLE{.stdcall,
-                       dynlib: "kernel32", importc.}
-proc GetLogicalDriveStringsA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc.}
-proc LoadLibraryA*(lpLibFileName: LPCSTR): HINST{.stdcall,
-  dynlib: "kernel32", importc.}
-proc LoadLibraryExA*(lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.
-    stdcall, dynlib: "kernel32", importc.}
-proc GetModuleFileNameA*(hModule: HINST, lpFilename: LPSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc.}
-proc GetModuleHandleA*(lpModuleName: LPCSTR): HMODULE{.stdcall,
-     dynlib: "kernel32", importc.}
-proc FatalAppExitA*(uAction: UINT, lpMessageText: LPCSTR){.stdcall,
-     dynlib: "kernel32", importc.}
-proc GetCommandLineA*(): LPSTR{.stdcall, dynlib: "kernel32", importc.}
-proc GetEnvironmentVariableA*(lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc.}
-proc SetEnvironmentVariableA*(lpName: LPCSTR, lpValue: LPCSTR): WINBOOL{.stdcall,
-  dynlib: "kernel32", importc.}
-proc ExpandEnvironmentStringsA*(lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc.}
-proc OutputDebugStringA*(lpOutputString: LPCSTR){.stdcall,
-   dynlib: "kernel32", importc.}
-proc FindResourceA*(hModule: HINST, lpName: LPCSTR, lpType: LPCSTR): HRSRC{.
-    stdcall, dynlib: "kernel32", importc.}
-proc FindResourceExA*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,
-                      wLanguage: int16): HRSRC{.stdcall,
-                      dynlib: "kernel32", importc.}
-proc EnumResourceTypesA*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,
-                         lParam: LONG): WINBOOL{.stdcall,
-                         dynlib: "kernel32", importc.}
-proc EnumResourceNamesA*(hModule: HINST, lpType: LPCSTR,
-                         lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc.}
-proc EnumResourceLanguagesA*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,
-                             lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesA".}
-
-proc BeginUpdateResourceA*(pFileName: LPCSTR, bDeleteExistingResources: WINBOOL): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceA".}
-
-proc UpdateResourceA*(hUpdate: HANDLE, lpType: LPCSTR, lpName: LPCSTR,
-                      wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "UpdateResourceA".}
-proc EndUpdateResourceA*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "EndUpdateResourceA".}
-proc GlobalAddAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "GlobalAddAtomA".}
-proc GlobalFindAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "GlobalFindAtomA".}
-proc GlobalGetAtomNameA*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.
-    stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameA".}
-proc AddAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-                                        importc: "AddAtomA".}
-proc FindAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "FindAtomA".}
-proc GetAtomNameA*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetAtomNameA".}
-proc GetProfileIntA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: WINT): UINT{.
-    stdcall, dynlib: "kernel32", importc: "GetProfileIntA".}
-proc GetProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpDefault: LPCSTR,
-                        lpReturnedString: LPSTR, nSize: DWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetProfileStringA".}
-proc WriteProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteProfileStringA".}
-proc GetProfileSectionA*(lpAppName: LPCSTR, lpReturnedString: LPSTR,
-                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetProfileSectionA".}
-proc WriteProfileSectionA*(lpAppName: LPCSTR, lpString: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteProfileSectionA".}
-proc GetPrivateProfileIntA*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                            nDefault: WINT, lpFileName: LPCSTR): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetPrivateProfileIntA".}
-proc GetPrivateProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                               lpDefault: LPCSTR, lpReturnedString: LPSTR,
-                               nSize: DWORD, lpFileName: LPCSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringA".}
-proc WritePrivateProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                                 lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringA".}
-proc GetPrivateProfileSectionA*(lpAppName: LPCSTR, lpReturnedString: LPSTR,
-                                nSize: DWORD, lpFileName: LPCSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionA".}
-proc WritePrivateProfileSectionA*(lpAppName: LPCSTR, lpString: LPCSTR,
-                                  lpFileName: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WritePrivateProfileSectionA".}
-proc GetDriveTypeA*(lpRootPathName: LPCSTR): UINT{.stdcall, dynlib: "kernel32",
-    importc: "GetDriveTypeA".}
-proc GetSystemDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetSystemDirectoryA".}
-proc GetTempPathA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetTempPathA".}
-proc GetTempFileNameA*(lpPathName: LPCSTR, lpPrefixString: LPCSTR,
-                       uUnique: UINT, lpTempFileName: LPSTR): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetTempFileNameA".}
-proc GetWindowsDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetWindowsDirectoryA".}
-proc SetCurrentDirectoryA*(lpPathName: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetCurrentDirectoryA".}
-proc GetCurrentDirectoryA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryA".}
-proc GetDiskFreeSpaceA*(lpRootPathName: LPCSTR, lpSectorsPerCluster: LPDWORD,
-                        lpBytesPerSector: LPDWORD,
-                        lpNumberOfFreeClusters: LPDWORD,
-                        lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}
-proc CreateDirectoryA*(lpPathName: LPCSTR,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateDirectoryA".}
-proc CreateDirectoryExA*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR,
-                         lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateDirectoryExA".}
-proc RemoveDirectoryA*(lpPathName: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "RemoveDirectoryA".}
-proc GetFullPathNameA*(lpFileName: LPCSTR, nBufferLength: DWORD,
-                       lpBuffer: LPSTR, lpFilePart: var LPSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetFullPathNameA".}
-proc DefineDosDeviceA*(dwFlags: DWORD, lpDeviceName: LPCSTR,
-                       lpTargetPath: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "DefineDosDeviceA".}
-proc QueryDosDeviceA*(lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "QueryDosDeviceA".}
-proc CreateFileA*(lpFileName: LPCSTR, dwDesiredAccess: DWORD,
-                  dwShareMode: DWORD,
-                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                  dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,
-                  hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "CreateFileA".}
-proc SetFileAttributesA*(lpFileName: LPCSTR, dwFileAttributes: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetFileAttributesA".}
-proc GetFileAttributesA*(lpFileName: LPCSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetFileAttributesA".}
-proc GetCompressedFileSizeA*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeA".}
-proc DeleteFileA*(lpFileName: LPCSTR): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "DeleteFileA".}
-proc SearchPathA*(lpPath: LPCSTR, lpFileName: LPCSTR, lpExtension: LPCSTR,
-                  nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: LPSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "SearchPathA".}
-proc CopyFileA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,
-                bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CopyFileA".}
-proc MoveFileA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "MoveFileA".}
-proc MoveFileExA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,
-                  dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "MoveFileExA".}
-proc CreateNamedPipeA*(lpName: LPCSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,
-                       nMaxInstances: DWORD, nOutBufferSize: DWORD,
-                       nInBufferSize: DWORD, nDefaultTimeOut: DWORD,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "CreateNamedPipeA".}
-proc GetNamedPipeHandleStateA*(hNamedPipe: HANDLE, lpState: LPDWORD,
-                               lpCurInstances: LPDWORD,
-                               lpMaxCollectionCount: LPDWORD,
-                               lpCollectDataTimeout: LPDWORD, lpUserName: LPSTR,
-                               nMaxUserNameSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetNamedPipeHandleStateA".}
-proc CallNamedPipeA*(lpNamedPipeName: LPCSTR, lpInBuffer: LPVOID,
-                     nInBufferSize: DWORD, lpOutBuffer: LPVOID,
-                     nOutBufferSize: DWORD, lpBytesRead: LPDWORD,
-                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CallNamedPipeA".}
-proc WaitNamedPipeA*(lpNamedPipeName: LPCSTR, nTimeOut: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WaitNamedPipeA".}
-proc SetVolumeLabelA*(lpRootPathName: LPCSTR, lpVolumeName: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetVolumeLabelA".}
-proc GetVolumeInformationA*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPSTR,
-                            nVolumeNameSize: DWORD,
-                            lpVolumeSerialNumber: LPDWORD,
-                            lpMaximumComponentLength: LPDWORD,
-                            lpFileSystemFlags: LPDWORD,
-                            lpFileSystemNameBuffer: LPSTR,
-                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVolumeInformationA".}
-proc ClearEventLogA*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ClearEventLogA".}
-proc BackupEventLogA*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "BackupEventLogA".}
-proc OpenEventLogA*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "OpenEventLogA".}
-proc RegisterEventSourceA*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "RegisterEventSourceA".}
-proc OpenBackupEventLogA*(lpUNCServerName: LPCSTR, lpFileName: LPCSTR): HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogA".}
-proc ReadEventLogA*(hEventLog: HANDLE, dwReadFlags: DWORD,
-                    dwRecordOffset: DWORD, lpBuffer: LPVOID,
-                    nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,
-                    pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ReadEventLogA".}
-proc ReportEventA*(hEventLog: HANDLE, wType: int16, wCategory: int16,
-                   dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,
-                   dwDataSize: DWORD, lpStrings: LPPCSTR, lpRawData: LPVOID): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ReportEventA".}
-proc AccessCheckAndAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                                ObjectTypeName: LPSTR, ObjectName: LPSTR,
-                                SecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                DesiredAccess: DWORD,
-                                GenericMapping: PGENERIC_MAPPING,
-                                ObjectCreation: WINBOOL, GrantedAccess: LPDWORD,
-                                AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmA".}
-proc ObjectOpenAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                            ObjectTypeName: LPSTR, ObjectName: LPSTR,
-                            pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                            ClientToken: HANDLE, DesiredAccess: DWORD,
-                            GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,
-                            ObjectCreation: WINBOOL, AccessGranted: WINBOOL,
-                            GenerateOnClose: LPBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}
-proc ObjectPrivilegeAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                                 ClientToken: HANDLE, DesiredAccess: DWORD,
-                                 Privileges: PPRIVILEGE_SET,
-                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}
-proc ObjectCloseAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                             GenerateOnClose: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectCloseAuditAlarmA".}
-proc PrivilegedServiceAuditAlarmA*(SubsystemName: LPCSTR, ServiceName: LPCSTR,
-                                   ClientToken: HANDLE,
-                                   Privileges: PPRIVILEGE_SET,
-                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}
-proc SetFileSecurityA*(lpFileName: LPCSTR,
-                       SecurityInformation: SECURITY_INFORMATION,
-                       pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetFileSecurityA".}
-proc GetFileSecurityA*(lpFileName: LPCSTR,
-                       RequestedInformation: SECURITY_INFORMATION,
-                       pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                       nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetFileSecurityA".}
-proc FindFirstChangeNotificationA*(lpPathName: LPCSTR, bWatchSubtree: WINBOOL,
-                                   dwNotifyFilter: DWORD): HANDLE{.stdcall,
-    dynlib: "kernel32", importc: "FindFirstChangeNotificationA".}
-proc IsBadStringPtrA*(lpsz: LPCSTR, ucchMax: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsBadStringPtrA".}
-proc LookupAccountSidA*(lpSystemName: LPCSTR, Sid: PSID, Name: LPSTR,
-                        cbName: LPDWORD, ReferencedDomainName: LPSTR,
-                        cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupAccountSidA".}
-proc LookupAccountNameA*(lpSystemName: LPCSTR, lpAccountName: LPCSTR, Sid: PSID,
-                         cbSid: LPDWORD, ReferencedDomainName: LPSTR,
-                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupAccountNameA".}
-proc LookupPrivilegeValueA*(lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueA".}
-proc LookupPrivilegeNameA*(lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR,
-                           cbName: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeNameA".}
-proc LookupPrivilegeDisplayNameA*(lpSystemName: LPCSTR, lpName: LPCSTR,
-                                  lpDisplayName: LPSTR, cbDisplayName: LPDWORD,
-                                  lpLanguageId: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}
-proc BuildCommDCBA*(lpDef: LPCSTR, lpDCB: LPDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "BuildCommDCBA".}
-proc BuildCommDCBAndTimeoutsA*(lpDef: LPCSTR, lpDCB: LPDCB,
-                               lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}
-proc CommConfigDialogA*(lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}
-proc GetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG,
-                            lpdwSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDefaultCommConfigA".}
-proc SetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigA".}
-proc GetComputerNameA*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetComputerNameA".}
-proc SetComputerNameA*(lpComputerName: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetComputerNameA".}
-proc GetUserNameA*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetUserNameA".}
-proc LoadKeyboardLayoutA*(pwszKLID: LPCSTR, Flags: UINT): HKL{.stdcall,
-    dynlib: "user32", importc: "LoadKeyboardLayoutA".}
-proc GetKeyboardLayoutNameA*(pwszKLID: LPSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetKeyboardLayoutNameA".}
-proc CreateDesktopA*(lpszDesktop: LPSTR, lpszDevice: LPSTR, pDevmode: LPDEVMODE,
-                     dwFlags: DWORD, dwDesiredAccess: DWORD,
-                     lpsa: LPSECURITY_ATTRIBUTES): HDESK{.stdcall,
-    dynlib: "user32", importc: "CreateDesktopA".}
-proc OpenDesktopA*(lpszDesktop: LPSTR, dwFlags: DWORD, fInherit: WINBOOL,
-                   dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",
-    importc: "OpenDesktopA".}
-proc EnumDesktopsA*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,
-                    lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "EnumDesktopsA".}
-proc CreateWindowStationA*(lpwinsta: LPSTR, dwReserved: DWORD,
-                           dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.
-    stdcall, dynlib: "user32", importc: "CreateWindowStationA".}
-proc OpenWindowStationA*(lpszWinSta: LPSTR, fInherit: WINBOOL,
-                         dwDesiredAccess: DWORD): HWINSTA{.stdcall,
-    dynlib: "user32", importc: "OpenWindowStationA".}
-proc EnumWindowStationsA*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnumWindowStationsA".}
-proc GetUserObjectInformationA*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}
-proc SetUserObjectInformationA*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                nLength: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetUserObjectInformationA".}
-proc RegisterWindowMessageA*(lpString: LPCSTR): UINT{.stdcall, dynlib: "user32",
-    importc: "RegisterWindowMessageA".}
-proc GetMessageA*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                  wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetMessageA".}
-proc DispatchMessageA*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",
-    importc: "DispatchMessageA".}
-proc PeekMessageA*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                   wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "PeekMessageA".}
-proc SendMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageA".}
-proc SendMessageTimeoutA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,
-                          fuFlags: UINT, uTimeout: UINT, lpdwResult: LPDWORD): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}
-proc SendNotifyMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SendNotifyMessageA".}
-proc SendMessageCallbackA*(hWnd: HWND, Msg: UINT, wParam: WPARAM,
-                           lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,
-                           dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SendMessageCallbackA".}
-proc PostMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "PostMessageA".}
-proc PostThreadMessageA*(idThread: DWORD, Msg: UINT, wParam: WPARAM,
-                         lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "PostThreadMessageA".}
-proc DefWindowProcA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "DefWindowProcA".}
-proc CallWindowProcA*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,
-                      wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,
-    dynlib: "user32", importc: "CallWindowProcA".}
-proc RegisterClassA*(lpWndClass: LPWNDCLASS): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassA".}
-proc UnregisterClassA*(lpClassName: LPCSTR, hInstance: HINST): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "UnregisterClassA".}
-proc GetClassInfoA*(hInstance: HINST, lpClassName: LPCSTR,
-                    lpWndClass: LPWNDCLASS): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetClassInfoA".}
-proc RegisterClassExA*(para1: LPWNDCLASSEX): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassExA".}
-proc GetClassInfoExA*(para1: HINST, para2: LPCSTR, para3: LPWNDCLASSEX): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetClassInfoExA".}
-proc CreateWindowExA*(dwExStyle: DWORD, lpClassName: LPCSTR,
-                      lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32,
-                      nWidth: int32, nHeight: int32, hWndParent: HWND,
-                      hMenu: HMENU, hInstance: HINST, lpParam: LPVOID): HWND{.
-    stdcall, dynlib: "user32", importc: "CreateWindowExA".}
-proc CreateDialogParamA*(hInstance: HINST, lpTemplateName: LPCSTR,
-                         hWndParent: HWND, lpDialogFunc: DLGPROC,
-                         dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",
-    importc: "CreateDialogParamA".}
-proc CreateDialogIndirectParamA*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                                 hWndParent: HWND, lpDialogFunc: DLGPROC,
-                                 dwInitParam: LPARAM): HWND{.stdcall,
-    dynlib: "user32", importc: "CreateDialogIndirectParamA".}
-proc DialogBoxParamA*(hInstance: HINST, lpTemplateName: LPCSTR,
-                      hWndParent: HWND, lpDialogFunc: DLGPROC,
-                      dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",
-    importc: "DialogBoxParamA".}
-proc DialogBoxIndirectParamA*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,
-                              hWndParent: HWND, lpDialogFunc: DLGPROC,
-                              dwInitParam: LPARAM): int32{.stdcall,
-    dynlib: "user32", importc: "DialogBoxIndirectParamA".}
-proc SetDlgItemTextA*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetDlgItemTextA".}
-proc GetDlgItemTextA*(hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR,
-                      nMaxCount: int32): UINT{.stdcall, dynlib: "user32",
-    importc: "GetDlgItemTextA".}
-proc SendDlgItemMessageA*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,
-                          wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,
-    dynlib: "user32", importc: "SendDlgItemMessageA".}
-proc DefDlgProcA*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "DefDlgProcA".}
-proc CallMsgFilterA*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CallMsgFilterA".}
-proc RegisterClipboardFormatA*(lpszFormat: LPCSTR): UINT{.stdcall,
-    dynlib: "user32", importc: "RegisterClipboardFormatA".}
-proc GetClipboardFormatNameA*(format: UINT, lpszFormatName: LPSTR,
-                              cchMaxCount: int32): int32{.stdcall,
-    dynlib: "user32", importc: "GetClipboardFormatNameA".}
-proc CharToOemA*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CharToOemA".}
-proc OemToCharA*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "OemToCharA".}
-proc CharToOemBuffA*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
-proc OemToCharBuffA*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
-proc CharUpperA*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",
-                                      importc: "CharUpperA".}
-proc CharUpperBuffA*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "CharUpperBuffA".}
-proc CharLowerA*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",
-                                      importc: "CharLowerA".}
-proc CharLowerBuffA*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "CharLowerBuffA".}
-proc CharNextA*(lpsz: LPCSTR): LPSTR{.stdcall, dynlib: "user32",
-                                      importc: "CharNextA".}
-proc CharPrevA*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR{.stdcall,
-    dynlib: "user32", importc: "CharPrevA".}
-proc IsCharAlphaA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                       importc: "IsCharAlphaA".}
-proc IsCharAlphaNumericA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsCharAlphaNumericA".}
-proc IsCharUpperA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                       importc: "IsCharUpperA".}
-proc IsCharLowerA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                       importc: "IsCharLowerA".}
-proc GetKeyNameTextA*(lParam: LONG, lpString: LPSTR, nSize: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetKeyNameTextA".}
-proc VkKeyScanA*(ch: CHAR): SHORT{.stdcall, dynlib: "user32",
-                                   importc: "VkKeyScanA".}
-proc VkKeyScanExA*(ch: CHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",
-    importc: "VkKeyScanExA".}
-proc MapVirtualKeyA*(uCode: UINT, uMapType: UINT): UINT{.stdcall,
-    dynlib: "user32", importc: "MapVirtualKeyA".}
-proc MapVirtualKeyExA*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,
-    dynlib: "user32", importc: "MapVirtualKeyExA".}
-proc LoadAcceleratorsA*(hInstance: HINST, lpTableName: LPCSTR): HACCEL{.stdcall,
-    dynlib: "user32", importc: "LoadAcceleratorsA".}
-proc CreateAcceleratorTableA*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,
-    dynlib: "user32", importc: "CreateAcceleratorTableA".}
-proc CopyAcceleratorTableA*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,
-                            cAccelEntries: int32): int32{.stdcall,
-    dynlib: "user32", importc: "CopyAcceleratorTableA".}
-proc TranslateAcceleratorA*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.
-    stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
-proc LoadMenuA*(hInstance: HINST, lpMenuName: LPCSTR): HMENU{.stdcall,
-    dynlib: "user32", importc: "LoadMenuA".}
-proc LoadMenuIndirectA*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,
-    dynlib: "user32", importc: "LoadMenuIndirectA".}
-proc ChangeMenuA*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT,
-                  flags: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ChangeMenuA".}
-proc GetMenuStringA*(hMenu: HMENU, uIDItem: UINT, lpString: LPSTR,
-                     nMaxCount: int32, uFlag: UINT): int32{.stdcall,
-    dynlib: "user32", importc: "GetMenuStringA".}
-proc InsertMenuA*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,
-                  lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "InsertMenuA".}
-proc AppendMenuA*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,
-                  lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "AppendMenuA".}
-proc ModifyMenuA*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,
-                  lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ModifyMenuA".}
-proc InsertMenuItemA*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                      para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "InsertMenuItemA".}
-proc GetMenuItemInfoA*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                       para4: LPMENUITEMINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetMenuItemInfoA".}
-proc SetMenuItemInfoA*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetMenuItemInfoA".}
-proc DrawTextA*(hDC: HDC, lpString: LPCSTR, nCount: int32, lpRect: LPRECT,
-                uFormat: UINT): int32{.stdcall, dynlib: "user32",
-                                       importc: "DrawTextA".}
-proc DrawTextExA*(para1: HDC, para2: LPSTR, para3: int32, para4: LPRECT,
-                  para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,
-    dynlib: "user32", importc: "DrawTextExA".}
-proc GrayStringA*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,
-                  lpData: LPARAM, nCount: int32, X: int32, Y: int32,
-                  nWidth: int32, nHeight: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GrayStringA".}
-proc DrawStateA*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC, para4: LPARAM,
-                 para5: WPARAM, para6: int32, para7: int32, para8: int32,
-                 para9: int32, para10: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DrawStateA".}
-proc TabbedTextOutA*(hDC: HDC, X: int32, Y: int32, lpString: LPCSTR,
-                     nCount: int32, nTabPositions: int32,
-                     lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.
-    stdcall, dynlib: "user32", importc: "TabbedTextOutA".}
-proc GetTabbedTextExtentA*(hDC: HDC, lpString: LPCSTR, nCount: int32,
-                           nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.
-    stdcall, dynlib: "user32", importc: "GetTabbedTextExtentA".}
-proc SetPropA*(hWnd: HWND, lpString: LPCSTR, hData: HANDLE): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetPropA".}
-proc GetPropA*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall, dynlib: "user32",
-    importc: "GetPropA".}
-proc RemovePropA*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall,
-    dynlib: "user32", importc: "RemovePropA".}
-proc EnumPropsExA*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.
-    stdcall, dynlib: "user32", importc: "EnumPropsExA".}
-proc EnumPropsA*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,
-    dynlib: "user32", importc: "EnumPropsA".}
-proc SetWindowTextA*(hWnd: HWND, lpString: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetWindowTextA".}
-proc GetWindowTextA*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetWindowTextA".}
-proc GetWindowTextLengthA*(hWnd: HWND): int32{.stdcall, dynlib: "user32",
-    importc: "GetWindowTextLengthA".}
-proc MessageBoxA*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32{.
-    stdcall, dynlib: "user32", importc: "MessageBoxA".}
-proc MessageBoxExA*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT,
-                    wLanguageId: int16): int32{.stdcall, dynlib: "user32",
-    importc: "MessageBoxExA".}
-proc MessageBoxIndirectA*(para1: LPMSGBOXPARAMS): int32{.stdcall,
-    dynlib: "user32", importc: "MessageBoxIndirectA".}
-proc GetWindowLongA*(hWnd: HWND, nIndex: int32): LONG{.stdcall,
-    dynlib: "user32", importc: "GetWindowLongA".}
-proc SetWindowLongA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.stdcall,
-    dynlib: "user32", importc: "SetWindowLongA".}
-proc GetClassLongA*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,
-    dynlib: "user32", importc: "GetClassLongA".}
-proc SetClassLongA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.stdcall,
-    dynlib: "user32", importc: "SetClassLongA".}
-when defined(cpu64):
-  proc GetWindowLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetWindowLongPtrA".}
-  proc SetWindowLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}
-  proc GetClassLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetClassLongPtrA".}
-  proc SetClassLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetClassLongPtrA".}
-else:
-  proc GetWindowLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetWindowLongA".}
-  proc SetWindowLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetWindowLongA".}
-  proc GetClassLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetClassLongA".}
-  proc SetClassLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetClassLongA".}
-proc FindWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND{.stdcall,
-    dynlib: "user32", importc: "FindWindowA".}
-proc FindWindowExA*(para1: HWND, para2: HWND, para3: LPCSTR, para4: LPCSTR): HWND{.
-    stdcall, dynlib: "user32", importc: "FindWindowExA".}
-proc GetClassNameA*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetClassNameA".}
-proc SetWindowsHookExA*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,
-                        dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",
-    importc: "SetWindowsHookExA".}
-proc LoadBitmapA*(hInstance: HINST, lpBitmapName: LPCSTR): HBITMAP{.stdcall,
-    dynlib: "user32", importc: "LoadBitmapA".}
-proc LoadCursorA*(hInstance: HINST, lpCursorName: LPCSTR): HCURSOR{.stdcall,
-    dynlib: "user32", importc: "LoadCursorA".}
-proc LoadCursorFromFileA*(lpFileName: LPCSTR): HCURSOR{.stdcall,
-    dynlib: "user32", importc: "LoadCursorFromFileA".}
-proc LoadIconA*(hInstance: HINST, lpIconName: LPCSTR): HICON{.stdcall,
-    dynlib: "user32", importc: "LoadIconA".}
-proc LoadImageA*(para1: HINST, para2: LPCSTR, para3: UINT, para4: int32,
-                 para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",
-    importc: "LoadImageA".}
-proc LoadStringA*(hInstance: HINST, uID: UINT, lpBuffer: LPSTR,
-                  nBufferMax: int32): int32{.stdcall, dynlib: "user32",
-    importc: "LoadStringA".}
-proc IsDialogMessageA*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "IsDialogMessageA".}
-proc DlgDirListA*(hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: int32,
-                  nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,
-    dynlib: "user32", importc: "DlgDirListA".}
-proc DlgDirSelectExA*(hDlg: HWND, lpString: LPSTR, nCount: int32,
-                      nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DlgDirSelectExA".}
-proc DlgDirListComboBoxA*(hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: int32,
-                          nIDStaticPath: int32, uFiletype: UINT): int32{.
-    stdcall, dynlib: "user32", importc: "DlgDirListComboBoxA".}
-proc DlgDirSelectComboBoxExA*(hDlg: HWND, lpString: LPSTR, nCount: int32,
-                              nIDComboBox: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DlgDirSelectComboBoxExA".}
-proc DefFrameProcA*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM,
-                    lParam: LPARAM): LRESULT{.stdcall, dynlib: "user32",
-    importc: "DefFrameProcA".}
-proc DefMDIChildProcA*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "DefMDIChildProcA".}
-proc CreateMDIWindowA*(lpClassName: LPSTR, lpWindowName: LPSTR, dwStyle: DWORD,
-                       X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                       hWndParent: HWND, hInstance: HINST, lParam: LPARAM): HWND{.
-    stdcall, dynlib: "user32", importc: "CreateMDIWindowA".}
-proc WinHelpA*(hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "WinHelpA".}
-proc ChangeDisplaySettingsA*(lpDevMode: LPDEVMODE, dwFlags: DWORD): LONG{.
-    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}
-proc EnumDisplaySettingsA*(lpszDeviceName: LPCSTR, iModeNum: DWORD,
-                           lpDevMode: LPDEVMODE): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EnumDisplaySettingsA".}
-proc SystemParametersInfoA*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,
-                            fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SystemParametersInfoA".}
-proc AddFontResourceA*(para1: LPCSTR): int32{.stdcall, dynlib: "gdi32",
-    importc: "AddFontResourceA".}
-proc CopyMetaFileA*(para1: HMETAFILE, para2: LPCSTR): HMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "CopyMetaFileA".}
-proc CreateFontA*(para1: int32, para2: int32, para3: int32, para4: int32,
-                  para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,
-                  para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,
-                  para13: DWORD, para14: LPCSTR): HFONT{.stdcall,
-    dynlib: "gdi32", importc: "CreateFontA".}
-proc CreateFontIndirectA*(para1: LPLOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-    importc: "CreateFontIndirectA".}
-proc CreateFontIndirectA*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-    importc: "CreateFontIndirectA".}
-proc CreateICA*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: LPDEVMODE): HDC{.
-    stdcall, dynlib: "gdi32", importc: "CreateICA".}
-proc CreateMetaFileA*(para1: LPCSTR): HDC{.stdcall, dynlib: "gdi32",
-    importc: "CreateMetaFileA".}
-proc CreateScalableFontResourceA*(para1: DWORD, para2: LPCSTR, para3: LPCSTR,
-                                  para4: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "CreateScalableFontResourceA".}
-proc EnumFontFamiliesExA*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,
-                          para4: LPARAM, para5: DWORD): int32{.stdcall,
-    dynlib: "gdi32", importc: "EnumFontFamiliesExA".}
-proc EnumFontFamiliesA*(para1: HDC, para2: LPCSTR, para3: FONTENUMPROC,
-                        para4: LPARAM): int32{.stdcall, dynlib: "gdi32",
-    importc: "EnumFontFamiliesA".}
-proc EnumFontsA*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC, para4: LPARAM): int32{.
-    stdcall, dynlib: "gdi32", importc: "EnumFontsA".}
-proc EnumFontsA*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC, para4: pointer): int32{.
-    stdcall, dynlib: "gdi32", importc: "EnumFontsA".}
-proc GetCharWidthA*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}
-proc GetCharWidth32A*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidth32A".}
-proc GetCharWidthFloatA*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}
-proc GetCharABCWidthsA*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}
-proc GetCharABCWidthsFloatA*(para1: HDC, para2: UINT, para3: UINT,
-                             para4: LPABCFLOAT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}
-proc GetGlyphOutlineA*(para1: HDC, para2: UINT, para3: UINT,
-                       para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,
-                       para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GetGlyphOutlineA".}
-proc GetMetaFileA*(para1: LPCSTR): HMETAFILE{.stdcall, dynlib: "gdi32",
-    importc: "GetMetaFileA".}
-proc GetOutlineTextMetricsA*(para1: HDC, para2: UINT, para3: LPOUTLINETEXTMETRIC): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsA".}
-proc GetTextExtentPointA*(para1: HDC, para2: LPCSTR, para3: int32, para4: LPSIZE): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}
-proc GetTextExtentPoint32A*(para1: HDC, para2: LPCSTR, para3: int32,
-                            para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentPoint32A".}
-proc GetTextExtentExPointA*(para1: HDC, para2: LPCSTR, para3: int32,
-                            para4: int32, para5: LPINT, para6: LPINT,
-                            para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentExPointA".}
-proc GetCharacterPlacementA*(para1: HDC, para2: LPCSTR, para3: int32,
-                             para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.
-    stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementA".}
-proc ResetDCA*(para1: HDC, para2: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",
-    importc: "ResetDCA".}
-proc RemoveFontResourceA*(para1: LPCSTR): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "RemoveFontResourceA".}
-proc CopyEnhMetaFileA*(para1: HENHMETAFILE, para2: LPCSTR): HENHMETAFILE{.
-    stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileA".}
-proc CreateEnhMetaFileA*(para1: HDC, para2: LPCSTR, para3: LPRECT, para4: LPCSTR): HDC{.
-    stdcall, dynlib: "gdi32", importc: "CreateEnhMetaFileA".}
-proc GetEnhMetaFileA*(para1: LPCSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",
-    importc: "GetEnhMetaFileA".}
-proc GetEnhMetaFileDescriptionA*(para1: HENHMETAFILE, para2: UINT, para3: LPSTR): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionA".}
-proc GetTextMetricsA*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetTextMetricsA".}
-proc StartDocA*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",
-    importc: "StartDocA".}
-proc GetObjectA*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,
-    dynlib: "gdi32", importc: "GetObjectA".}
-proc TextOutA*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,
-               para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-                                       importc: "TextOutA".}
-proc ExtTextOutA*(para1: HDC, para2: int32, para3: int32, para4: UINT,
-                  para5: LPRECT, para6: LPCSTR, para7: UINT, para8: LPINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}
-proc PolyTextOutA*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}
-proc GetTextFaceA*(para1: HDC, para2: int32, para3: LPSTR): int32{.stdcall,
-    dynlib: "gdi32", importc: "GetTextFaceA".}
-proc GetKerningPairsA*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.
-    stdcall, dynlib: "gdi32", importc: "GetKerningPairsA".}
-proc CreateColorSpaceA*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,
-    dynlib: "gdi32", importc: "CreateColorSpaceA".}
-proc GetLogColorSpaceA*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE, para3: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceA".}
-proc GetICMProfileA*(para1: HDC, para2: DWORD, para3: LPSTR): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetICMProfileA".}
-proc SetICMProfileA*(para1: HDC, para2: LPSTR): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SetICMProfileA".}
-proc UpdateICMRegKeyA*(para1: DWORD, para2: DWORD, para3: LPSTR, para4: UINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyA".}
-proc EnumICMProfilesA*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.
-    stdcall, dynlib: "gdi32", importc: "EnumICMProfilesA".}
-proc PropertySheetA*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,
-    dynlib: "comctl32", importc: "PropertySheetA".}
-proc ImageList_LoadImageA*(hi: HINST, lpbmp: LPCSTR, cx: int32, cGrow: int32,
-                           crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageA".}
-proc CreateStatusWindowA*(style: LONG, lpszText: LPCSTR, hwndParent: HWND,
-                          wID: UINT): HWND{.stdcall, dynlib: "comctl32",
-    importc: "CreateStatusWindowA".}
-proc DrawStatusTextA*(hDC: HDC, lprc: LPRECT, pszText: LPCSTR, uFlags: UINT){.
-    stdcall, dynlib: "comctl32", importc: "DrawStatusTextA".}
-proc GetOpenFileNameA*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-    dynlib: "comdlg32", importc: "GetOpenFileNameA".}
-proc GetSaveFileNameA*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-    dynlib: "comdlg32", importc: "GetSaveFileNameA".}
-proc GetFileTitleA*(para1: LPCSTR, para2: LPSTR, para3: int16): int{.stdcall,
-    dynlib: "comdlg32", importc: "GetFileTitleA".}
-proc ChooseColorA*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",
-    importc: "ChooseColorA".}
-proc FindTextA*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-    importc: "FindTextA".}
-proc ReplaceTextA*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-    importc: "ReplaceTextA".}
-proc ChooseFontA*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",
-    importc: "ChooseFontA".}
-proc PrintDlgA*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",
-    importc: "PrintDlgA".}
-proc PageSetupDlgA*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,
-    dynlib: "comdlg32", importc: "PageSetupDlgA".}
-proc CreateProcessA*(lpApplicationName: LPCSTR, lpCommandLine: LPSTR,
-                     lpProcessAttributes: LPSECURITY_ATTRIBUTES,
-                     lpThreadAttributes: LPSECURITY_ATTRIBUTES,
-                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                     lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR,
-                     lpStartupInfo: LPSTARTUPINFO,
-                     lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateProcessA".}
-proc GetStartupInfoA*(lpStartupInfo: LPSTARTUPINFO){.stdcall,
-    dynlib: "kernel32", importc: "GetStartupInfoA".}
-proc FindFirstFileA*(lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATA): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}
-proc FindNextFileA*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATA): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FindNextFileA".}
-proc GetVersionExA*(VersionInformation: LPOSVERSIONINFO): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVersionExA".}
-proc CreateWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,
-                    X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                    lpParam: LPVOID): HWND
-proc CreateDialogA*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                    lpDialogFunc: DLGPROC): HWND
-proc CreateDialogIndirectA*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND
-proc DialogBoxA*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                 lpDialogFunc: DLGPROC): int32
-proc DialogBoxIndirectA*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,
-                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32
-proc CreateDCA*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: pDEVMODE): HDC{.
-    stdcall, dynlib: "gdi32", importc: "CreateDCA".}
-proc VerInstallFileA*(uFlags: DWORD, szSrcFileName: LPSTR,
-                      szDestFileName: LPSTR, szSrcDir: LPSTR, szDestDir: LPSTR,
-                      szCurDir: LPSTR, szTmpFile: LPSTR, lpuTmpFileLen: PUINT): DWORD{.
-    stdcall, dynlib: "version", importc: "VerInstallFileA".}
-proc GetFileVersionInfoSizeA*(lptstrFilename: LPSTR, lpdwHandle: LPDWORD): DWORD{.
-    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}
-proc GetFileVersionInfoA*(lptstrFilename: LPSTR, dwHandle: DWORD, dwLen: DWORD,
-                          lpData: LPVOID): WINBOOL{.stdcall, dynlib: "version",
-    importc: "GetFileVersionInfoA".}
-proc VerLanguageNameA*(wLang: DWORD, szLang: LPSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "VerLanguageNameA".}
-proc VerQueryValueA*(pBlock: LPVOID, lpSubBlock: LPSTR, lplpBuffer: LPVOID,
-                     puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",
-    importc: "VerQueryValueA".}
-proc VerFindFileA*(uFlags: DWORD, szFileName: LPSTR, szWinDir: LPSTR,
-                   szAppDir: LPSTR, szCurDir: LPSTR, lpuCurDirLen: PUINT,
-                   szDestDir: LPSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,
-    dynlib: "version", importc: "VerFindFileA".}
-proc RegConnectRegistryA*(lpMachineName: LPSTR, hKey: HKEY, phkResult: PHKEY): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}
-proc RegCreateKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}
-proc RegCreateKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD,
-                      lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM,
-                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                      phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
-proc RegDeleteKeyA*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegDeleteKeyA".}
-proc RegDeleteValueA*(hKey: HKEY, lpValueName: LPCSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegDeleteValueA".}
-proc RegEnumKeyA*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cbName: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyA".}
-proc RegEnumKeyExA*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR,
-                    lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR,
-                    lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}
-proc RegEnumValueA*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR,
-                    lpcbValueName: LPDWORD, lpReserved: LPDWORD,
-                    lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}
-proc RegLoadKeyA*(hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegLoadKeyA".}
-proc RegOpenKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}
-proc RegOpenKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD,
-                    samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegOpenKeyExA".}
-proc RegQueryInfoKeyA*(hKey: HKEY, lpClass: LPSTR, lpcbClass: LPDWORD,
-                       lpReserved: LPDWORD, lpcSubKeys: LPDWORD,
-                       lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,
-                       lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,
-                       lpcbMaxValueLen: LPDWORD,
-                       lpcbSecurityDescriptor: LPDWORD,
-                       lpftLastWriteTime: PFILETIME): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegQueryInfoKeyA".}
-proc RegQueryValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpValue: LPSTR,
-                     lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",
-    importc: "RegQueryValueA".}
-proc RegQueryMultipleValuesA*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,
-                              lpValueBuf: LPSTR, ldwTotsize: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}
-proc RegQueryValueExA*(hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD,
-                       lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryValueExA".}
-proc RegReplaceKeyA*(hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR,
-                     lpOldFile: LPCSTR): LONG{.stdcall, dynlib: "advapi32",
-    importc: "RegReplaceKeyA".}
-proc RegRestoreKeyA*(hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegRestoreKeyA".}
-proc RegSaveKeyA*(hKey: HKEY, lpFile: LPCSTR,
-                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegSaveKeyA".}
-proc RegSetValueA*(hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR,
-                   cbData: DWORD): LONG{.stdcall, dynlib: "advapi32",
-    importc: "RegSetValueA".}
-proc RegSetValueExA*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,
-                     dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
-proc RegUnLoadKeyA*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegUnLoadKeyA".}
-proc InitiateSystemShutdownA*(lpMachineName: LPSTR, lpMessage: LPSTR,
-                              dwTimeout: DWORD, bForceAppsClosed: WINBOOL,
-                              bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "InitiateSystemShutdownA".}
-proc AbortSystemShutdownA*(lpMachineName: LPSTR): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AbortSystemShutdownA".}
-proc CompareStringA*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCSTR,
-                     cchCount1: int32, lpString2: LPCSTR, cchCount2: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "CompareStringA".}
-proc LCMapStringA*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR,
-                   cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "LCMapStringA".}
-proc GetLocaleInfoA*(Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR,
-                     cchData: int32): int32{.stdcall, dynlib: "kernel32",
-    importc: "GetLocaleInfoA".}
-proc SetLocaleInfoA*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetLocaleInfoA".}
-proc GetTimeFormatA*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,
-                     lpFormat: LPCSTR, lpTimeStr: LPSTR, cchTime: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "GetTimeFormatA".}
-proc GetDateFormatA*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,
-                     lpFormat: LPCSTR, lpDateStr: LPSTR, cchDate: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "GetDateFormatA".}
-proc GetNumberFormatA*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,
-                       lpFormat: PNUMBERFMT, lpNumberStr: LPSTR,
-                       cchNumber: int32): int32{.stdcall, dynlib: "kernel32",
-    importc: "GetNumberFormatA".}
-proc GetCurrencyFormatA*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,
-                         lpFormat: PCURRENCYFMT, lpCurrencyStr: LPSTR,
-                         cchCurrency: int32): int32{.stdcall,
-    dynlib: "kernel32", importc: "GetCurrencyFormatA".}
-proc EnumCalendarInfoA*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,
-                        Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "EnumCalendarInfoA".}
-proc EnumTimeFormatsA*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,
-                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "EnumTimeFormatsA".}
-proc EnumDateFormatsA*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,
-                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "EnumDateFormatsA".}
-proc GetStringTypeExA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,
-                       cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeExA".}
-proc GetStringTypeA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,
-                     cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeA".}
-proc FoldStringA*(dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32,
-                  lpDestStr: LPSTR, cchDest: int32): int32{.stdcall,
-    dynlib: "kernel32", importc: "FoldStringA".}
-proc EnumSystemLocalesA*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesA".}
-proc EnumSystemCodePagesA*(lpCodePageEnumProc: CODEPAGE_ENUMPROC, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesA".}
-proc PeekConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}
-proc ReadConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}
-proc WriteConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                         nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}
-proc ReadConsoleOutputA*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                         dwBufferSize: COORD, dwBufferCoord: COORD,
-                         lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadConsoleOutputA".}
-proc WriteConsoleOutputA*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                          dwBufferSize: COORD, dwBufferCoord: COORD,
-                          lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteConsoleOutputA".}
-proc ReadConsoleOutputCharacterA*(hConsoleOutput: HANDLE, lpCharacter: LPSTR,
-                                  nLength: DWORD, dwReadCoord: COORD,
-                                  lpNumberOfCharsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}
-proc WriteConsoleOutputCharacterA*(hConsoleOutput: HANDLE, lpCharacter: LPCSTR,
-                                   nLength: DWORD, dwWriteCoord: COORD,
-                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}
-proc FillConsoleOutputCharacterA*(hConsoleOutput: HANDLE, cCharacter: CHAR,
-                                  nLength: DWORD, dwWriteCoord: COORD,
-                                  lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}
-proc ScrollConsoleScreenBufferA*(hConsoleOutput: HANDLE,
-                                 lpScrollRectangle: PSMALL_RECT,
-                                 lpClipRectangle: PSMALL_RECT,
-                                 dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}
-proc GetConsoleTitleA*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetConsoleTitleA".}
-proc SetConsoleTitleA*(lpConsoleTitle: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetConsoleTitleA".}
-proc ReadConsoleA*(hConsoleInput: HANDLE, lpBuffer: LPVOID,
-                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,
-                   lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ReadConsoleA".}
-proc WriteConsoleA*(hConsoleOutput: HANDLE, lpBuffer: pointer,
-                    nNumberOfCharsToWrite: DWORD,
-                    lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}
-proc WNetAddConnectionA*(lpRemoteName: LPCSTR, lpPassword: LPCSTR,
-                         lpLocalName: LPCSTR): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetAddConnectionA".}
-proc WNetAddConnection2A*(lpNetResource: LPNETRESOURCE, lpPassword: LPCSTR,
-                          lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetAddConnection2A".}
-proc WNetAddConnection3A*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                          lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}
-proc WNetCancelConnectionA*(lpName: LPCSTR, fForce: WINBOOL): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetCancelConnectionA".}
-proc WNetCancelConnection2A*(lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetCancelConnection2A".}
-proc WNetGetConnectionA*(lpLocalName: LPCSTR, lpRemoteName: LPSTR,
-                         lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetConnectionA".}
-proc WNetUseConnectionA*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                         lpUserID: LPCSTR, lpPassword: LPCSTR, dwFlags: DWORD,
-                         lpAccessName: LPSTR, lpBufferSize: LPDWORD,
-                         lpResult: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetUseConnectionA".}
-proc WNetSetConnectionA*(lpName: LPCSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetSetConnectionA".}
-proc WNetConnectionDialog1A*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}
-proc WNetDisconnectDialog1A*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetDisconnectDialog1A".}
-proc WNetOpenEnumA*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,
-                    lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}
-proc WNetEnumResourceA*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,
-                        lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetEnumResourceA".}
-proc WNetGetUniversalNameA*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD,
-                            lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}
-proc WNetGetUserA*(lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUserA".}
-proc WNetGetProviderNameA*(dwNetType: DWORD, lpProviderName: LPSTR,
-                           lpBufferSize: LPDWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetGetProviderNameA".}
-proc WNetGetNetworkInformationA*(lpProvider: LPCSTR,
-                                 lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}
-proc WNetGetLastErrorA*(lpError: LPDWORD, lpErrorBuf: LPSTR,
-                        nErrorBufSize: DWORD, lpNameBuf: LPSTR,
-                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetLastErrorA".}
-proc MultinetGetConnectionPerformanceA*(lpNetResource: LPNETRESOURCE,
-    lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,
-    dynlib: "mpr", importc: "MultinetGetConnectionPerformanceA".}
-proc ChangeServiceConfigA*(hService: SC_HANDLE, dwServiceType: DWORD,
-                           dwStartType: DWORD, dwErrorControl: DWORD,
-                           lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR,
-                           lpdwTagId: LPDWORD, lpDependencies: LPCSTR,
-                           lpServiceStartName: LPCSTR, lpPassword: LPCSTR,
-                           lpDisplayName: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ChangeServiceConfigA".}
-proc CreateServiceA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,
-                     lpDisplayName: LPCSTR, dwDesiredAccess: DWORD,
-                     dwServiceType: DWORD, dwStartType: DWORD,
-                     dwErrorControl: DWORD, lpBinaryPathName: LPCSTR,
-                     lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD,
-                     lpDependencies: LPCSTR, lpServiceStartName: LPCSTR,
-                     lpPassword: LPCSTR): SC_HANDLE{.stdcall,
-    dynlib: "advapi32", importc: "CreateServiceA".}
-proc EnumDependentServicesA*(hService: SC_HANDLE, dwServiceState: DWORD,
-                             lpServices: LPENUM_SERVICE_STATUS,
-                             cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,
-                             lpServicesReturned: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "EnumDependentServicesA".}
-proc EnumServicesStatusA*(hSCManager: SC_HANDLE, dwServiceType: DWORD,
-                          dwServiceState: DWORD,
-                          lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,
-                          pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,
-                          lpResumeHandle: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "EnumServicesStatusA".}
-proc GetServiceKeyNameA*(hSCManager: SC_HANDLE, lpDisplayName: LPCSTR,
-                         lpServiceName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameA".}
-proc GetServiceDisplayNameA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,
-                             lpDisplayName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameA".}
-proc OpenSCManagerA*(lpMachineName: LPCSTR, lpDatabaseName: LPCSTR,
-                     dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-    dynlib: "advapi32", importc: "OpenSCManagerA".}
-proc OpenServiceA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,
-                   dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-    dynlib: "advapi32", importc: "OpenServiceA".}
-proc QueryServiceConfigA*(hService: SC_HANDLE,
-                          lpServiceConfig: LPQUERY_SERVICE_CONFIG,
-                          cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "QueryServiceConfigA".}
-proc QueryServiceLockStatusA*(hSCManager: SC_HANDLE,
-                              lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,
-                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusA".}
-proc RegisterServiceCtrlHandlerA*(lpServiceName: LPCSTR,
-                                  lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerA".}
-proc StartServiceCtrlDispatcherA*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherA".}
-proc StartServiceA*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,
-                    lpServiceArgVectors: LPCSTR): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "StartServiceA".}
-proc DragQueryFileA*(para1: HDROP, para2: int, para3: cstring, para4: int): int{.
-    stdcall, dynlib: "shell32", importc: "DragQueryFileA".}
-proc ExtractAssociatedIconA*(para1: HINST, para2: cstring, para3: LPWORD): HICON{.
-    stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconA".}
-proc ExtractIconA*(para1: HINST, para2: cstring, para3: int): HICON{.stdcall,
-    dynlib: "shell32", importc: "ExtractIconA".}
-proc FindExecutableA*(para1: cstring, para2: cstring, para3: cstring): HINST{.
-    stdcall, dynlib: "shell32", importc: "FindExecutableA".}
-proc ShellAboutA*(para1: HWND, para2: cstring, para3: cstring, para4: HICON): int32{.
-    stdcall, dynlib: "shell32", importc: "ShellAboutA".}
-proc ShellExecuteA*(para1: HWND, para2: cstring, para3: cstring, para4: cstring,
-                    para5: cstring, para6: int32): HINST{.stdcall,
-    dynlib: "shell32", importc: "ShellExecuteA".}
-proc Shell_NotifyIconA*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.
-    stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}
-proc DdeCreateStringHandleA*(para1: DWORD, para2: cstring, para3: int32): HSZ{.
-    stdcall, dynlib: "user32", importc: "DdeCreateStringHandleA".}
-proc DdeInitializeA*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,
-                     para4: DWORD): UINT{.stdcall, dynlib: "user32",
-    importc: "DdeInitializeA".}
-proc DdeQueryStringA*(para1: DWORD, para2: HSZ, para3: cstring, para4: DWORD,
-                      para5: int32): DWORD{.stdcall, dynlib: "user32",
-    importc: "DdeQueryStringA".}
-proc LogonUserA*(para1: LPSTR, para2: LPSTR, para3: LPSTR, para4: DWORD,
-                 para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LogonUserA".}
-proc CreateProcessAsUserA*(para1: HANDLE, para2: LPCTSTR, para3: LPTSTR,
-                           para4: LPSECURITY_ATTRIBUTES,
-                           para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,
-                           para7: DWORD, para8: LPVOID, para9: LPCTSTR,
-                           para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserA".}
-proc GetBinaryTypeW*(lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}
-proc GetShortPathNameW*(lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR,
-                        cchBuffer: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetShortPathNameW".}
-proc GetEnvironmentStringsW*(): LPWSTR{.stdcall, dynlib: "kernel32",
-                                        importc: "GetEnvironmentStringsW".}
-proc FreeEnvironmentStringsW*(para1: LPWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}
-proc FormatMessageW*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,
-                     dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD,
-                     Arguments: va_list): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "FormatMessageW".}
-proc CreateMailslotW*(lpName: LPCWSTR, nMaxMessageSize: DWORD,
-                      lReadTimeout: DWORD,
-                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "CreateMailslotW".}
-proc lstrcmpW*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,
-    dynlib: "kernel32", importc: "lstrcmpW".}
-proc lstrcmpiW*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,
-    dynlib: "kernel32", importc: "lstrcmpiW".}
-proc lstrcpynW*(lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32): LPWSTR{.
-    stdcall, dynlib: "kernel32", importc: "lstrcpynW".}
-proc lstrcpyW*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,
-    dynlib: "kernel32", importc: "lstrcpyW".}
-proc lstrcatW*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,
-    dynlib: "kernel32", importc: "lstrcatW".}
-proc lstrlenW*(lpString: LPCWSTR): int32{.stdcall, dynlib: "kernel32",
-    importc: "lstrlenW".}
-proc CreateMutexW*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,
-                   bInitialOwner: WINBOOL, lpName: LPCWSTR): HANDLE{.stdcall,
-    dynlib: "kernel32", importc: "CreateMutexW".}
-proc OpenMutexW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                 lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "OpenMutexW".}
-proc CreateEventW*(lpEventAttributes: LPSECURITY_ATTRIBUTES,
-                   bManualReset: WINBOOL, bInitialState: WINBOOL,
-                   lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "CreateEventW".}
-proc OpenEventW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                 lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "OpenEventW".}
-proc CreateSemaphoreW*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
-                       lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "CreateSemaphoreW".}
-proc OpenSemaphoreW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                     lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "OpenSemaphoreW".}
-proc CreateFileMappingW*(hFile: HANDLE,
-                         lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
-                         flProtect: DWORD, dwMaximumSizeHigh: DWORD,
-                         dwMaximumSizeLow: DWORD, lpName: LPCWSTR): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "CreateFileMappingW".}
-proc OpenFileMappingW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                       lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "OpenFileMappingW".}
-proc GetLogicalDriveStringsW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsW".}
-proc LoadLibraryW*(lpLibFileName: LPCWSTR): HINST{.stdcall, dynlib: "kernel32",
-    importc: "LoadLibraryW".}
-proc LoadLibraryExW*(lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.
-    stdcall, dynlib: "kernel32", importc: "LoadLibraryExW".}
-proc GetModuleFileNameW*(hModule: HINST, lpFilename: LPWSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetModuleFileNameW".}
-proc GetModuleHandleW*(lpModuleName: LPCWSTR): HMODULE{.stdcall,
-    dynlib: "kernel32", importc: "GetModuleHandleW".}
-proc FatalAppExitW*(uAction: UINT, lpMessageText: LPCWSTR){.stdcall,
-    dynlib: "kernel32", importc: "FatalAppExitW".}
-proc GetCommandLineW*(): LPWSTR{.stdcall, dynlib: "kernel32",
-                                 importc: "GetCommandLineW".}
-proc GetEnvironmentVariableW*(lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableW".}
-proc SetEnvironmentVariableW*(lpName: LPCWSTR, lpValue: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableW".}
-proc ExpandEnvironmentStringsW*(lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsW".}
-proc OutputDebugStringW*(lpOutputString: LPCWSTR){.stdcall, dynlib: "kernel32",
-    importc: "OutputDebugStringW".}
-proc FindResourceW*(hModule: HINST, lpName: LPCWSTR, lpType: LPCWSTR): HRSRC{.
-    stdcall, dynlib: "kernel32", importc: "FindResourceW".}
-proc FindResourceExW*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,
-                      wLanguage: int16): HRSRC{.stdcall, dynlib: "kernel32",
-    importc: "FindResourceExW".}
-proc EnumResourceTypesW*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,
-                         lParam: LONG): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "EnumResourceTypesW".}
-proc EnumResourceNamesW*(hModule: HINST, lpType: LPCWSTR,
-                         lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumResourceNamesW".}
-proc EnumResourceLanguagesW*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,
-                             lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesW".}
-proc BeginUpdateResourceW*(pFileName: LPCWSTR, bDeleteExistingResources: WINBOOL): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceW".}
-proc UpdateResourceW*(hUpdate: HANDLE, lpType: LPCWSTR, lpName: LPCWSTR,
-                      wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "UpdateResourceW".}
-proc EndUpdateResourceW*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "EndUpdateResourceW".}
-proc GlobalAddAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "GlobalAddAtomW".}
-proc GlobalFindAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "GlobalFindAtomW".}
-proc GlobalGetAtomNameW*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.
-    stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameW".}
-proc AddAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "AddAtomW".}
-proc FindAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "FindAtomW".}
-proc GetAtomNameW*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetAtomNameW".}
-proc GetProfileIntW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: WINT): UINT{.
-    stdcall, dynlib: "kernel32", importc: "GetProfileIntW".}
-proc GetProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                        lpDefault: LPCWSTR, lpReturnedString: LPWSTR,
-                        nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetProfileStringW".}
-proc WriteProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                          lpString: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteProfileStringW".}
-proc GetProfileSectionW*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,
-                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetProfileSectionW".}
-proc WriteProfileSectionW*(lpAppName: LPCWSTR, lpString: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteProfileSectionW".}
-proc GetPrivateProfileIntW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                            nDefault: WINT, lpFileName: LPCWSTR): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetPrivateProfileIntW".}
-proc GetPrivateProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                               lpDefault: LPCWSTR, lpReturnedString: LPWSTR,
-                               nSize: DWORD, lpFileName: LPCWSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringW".}
-proc WritePrivateProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                                 lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringW".}
-proc GetPrivateProfileSectionW*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,
-                                nSize: DWORD, lpFileName: LPCWSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionW".}
-proc WritePrivateProfileSectionW*(lpAppName: LPCWSTR, lpString: LPCWSTR,
-                                  lpFileName: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WritePrivateProfileSectionW".}
-proc GetDriveTypeW*(lpRootPathName: LPCWSTR): UINT{.stdcall, dynlib: "kernel32",
-    importc: "GetDriveTypeW".}
-proc GetSystemDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetSystemDirectoryW".}
-proc GetTempPathW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetTempPathW".}
-proc GetTempFileNameW*(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR,
-                       uUnique: UINT, lpTempFileName: LPWSTR): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetTempFileNameW".}
-proc GetWindowsDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "GetWindowsDirectoryW".}
-proc SetCurrentDirectoryW*(lpPathName: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetCurrentDirectoryW".}
-proc GetCurrentDirectoryW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryW".}
-proc GetDiskFreeSpaceW*(lpRootPathName: LPCWSTR, lpSectorsPerCluster: LPDWORD,
-                        lpBytesPerSector: LPDWORD,
-                        lpNumberOfFreeClusters: LPDWORD,
-                        lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}
-proc CreateDirectoryW*(lpPathName: LPCWSTR,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateDirectoryW".}
-proc CreateDirectoryExW*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR,
-                         lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateDirectoryExW".}
-proc RemoveDirectoryW*(lpPathName: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "RemoveDirectoryW".}
-proc GetFullPathNameW*(lpFileName: LPCWSTR, nBufferLength: DWORD,
-                       lpBuffer: LPWSTR, lpFilePart: var LPWSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}
-proc DefineDosDeviceW*(dwFlags: DWORD, lpDeviceName: LPCWSTR,
-                       lpTargetPath: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "DefineDosDeviceW".}
-proc QueryDosDeviceW*(lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR,
-                      ucchMax: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "QueryDosDeviceW".}
-proc CreateFileW*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD,
-                  dwShareMode: DWORD,
-                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                  dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,
-                  hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "CreateFileW".}
-proc SetFileAttributesW*(lpFileName: LPCWSTR, dwFileAttributes: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}
-proc GetFileAttributesW*(lpFileName: LPCWSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetFileAttributesW".}
-proc GetCompressedFileSizeW*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeW".}
-proc DeleteFileW*(lpFileName: LPCWSTR): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "DeleteFileW".}
-proc SearchPathW*(lpPath: LPCWSTR, lpFileName: LPCWSTR, lpExtension: LPCWSTR,
-                  nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: LPWSTR): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "SearchPathW".}
-proc CopyFileW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,
-                bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CopyFileW".}
-proc MoveFileW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "MoveFileW".}
-proc MoveFileExW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,
-                  dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "MoveFileExW".}
-proc CreateNamedPipeW*(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,
-                       nMaxInstances: DWORD, nOutBufferSize: DWORD,
-                       nInBufferSize: DWORD, nDefaultTimeOut: DWORD,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}
-proc GetNamedPipeHandleStateW*(hNamedPipe: HANDLE, lpState: LPDWORD,
-                               lpCurInstances: LPDWORD,
-                               lpMaxCollectionCount: LPDWORD,
-                               lpCollectDataTimeout: LPDWORD,
-                               lpUserName: LPWSTR, nMaxUserNameSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateW".}
-proc CallNamedPipeW*(lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID,
-                     nInBufferSize: DWORD, lpOutBuffer: LPVOID,
-                     nOutBufferSize: DWORD, lpBytesRead: LPDWORD,
-                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CallNamedPipeW".}
-proc WaitNamedPipeW*(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WaitNamedPipeW".}
-proc SetVolumeLabelW*(lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetVolumeLabelW".}
-proc GetVolumeInformationW*(lpRootPathName: LPCWSTR, lpVolumeNameBuffer: LPWSTR,
-                            nVolumeNameSize: DWORD,
-                            lpVolumeSerialNumber: LPDWORD,
-                            lpMaximumComponentLength: LPDWORD,
-                            lpFileSystemFlags: LPDWORD,
-                            lpFileSystemNameBuffer: LPWSTR,
-                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVolumeInformationW".}
-proc ClearEventLogW*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ClearEventLogW".}
-proc BackupEventLogW*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "BackupEventLogW".}
-proc OpenEventLogW*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "OpenEventLogW".}
-proc RegisterEventSourceW*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "RegisterEventSourceW".}
-proc OpenBackupEventLogW*(lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR): HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogW".}
-proc ReadEventLogW*(hEventLog: HANDLE, dwReadFlags: DWORD,
-                    dwRecordOffset: DWORD, lpBuffer: LPVOID,
-                    nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,
-                    pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ReadEventLogW".}
-proc ReportEventW*(hEventLog: HANDLE, wType: int16, wCategory: int16,
-                   dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,
-                   dwDataSize: DWORD, lpStrings: LPPCWSTR, lpRawData: LPVOID): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ReportEventW".}
-proc AccessCheckAndAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                                ObjectTypeName: LPWSTR, ObjectName: LPWSTR,
-                                SecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                DesiredAccess: DWORD,
-                                GenericMapping: PGENERIC_MAPPING,
-                                ObjectCreation: WINBOOL, GrantedAccess: LPDWORD,
-                                AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmW".}
-proc ObjectOpenAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                            ObjectTypeName: LPWSTR, ObjectName: LPWSTR,
-                            pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                            ClientToken: HANDLE, DesiredAccess: DWORD,
-                            GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,
-                            ObjectCreation: WINBOOL, AccessGranted: WINBOOL,
-                            GenerateOnClose: LPBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}
-proc ObjectPrivilegeAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                                 ClientToken: HANDLE, DesiredAccess: DWORD,
-                                 Privileges: PPRIVILEGE_SET,
-                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}
-proc ObjectCloseAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                             GenerateOnClose: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectCloseAuditAlarmW".}
-proc PrivilegedServiceAuditAlarmW*(SubsystemName: LPCWSTR, ServiceName: LPCWSTR,
-                                   ClientToken: HANDLE,
-                                   Privileges: PPRIVILEGE_SET,
-                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}
-proc SetFileSecurityW*(lpFileName: LPCWSTR,
-                       SecurityInformation: SECURITY_INFORMATION,
-                       pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetFileSecurityW".}
-proc GetFileSecurityW*(lpFileName: LPCWSTR,
-                       RequestedInformation: SECURITY_INFORMATION,
-                       pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                       nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetFileSecurityW".}
-proc FindFirstChangeNotificationW*(lpPathName: LPCWSTR, bWatchSubtree: WINBOOL,
-                                   dwNotifyFilter: DWORD): HANDLE{.stdcall,
-    dynlib: "kernel32", importc: "FindFirstChangeNotificationW".}
-proc IsBadStringPtrW*(lpsz: LPCWSTR, ucchMax: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsBadStringPtrW".}
-proc LookupAccountSidW*(lpSystemName: LPCWSTR, Sid: PSID, Name: LPWSTR,
-                        cbName: LPDWORD, ReferencedDomainName: LPWSTR,
-                        cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupAccountSidW".}
-proc LookupAccountNameW*(lpSystemName: LPCWSTR, lpAccountName: LPCWSTR,
-                         Sid: PSID, cbSid: LPDWORD,
-                         ReferencedDomainName: LPWSTR,
-                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupAccountNameW".}
-proc LookupPrivilegeValueW*(lpSystemName: LPCWSTR, lpName: LPCWSTR,
-                            lpLuid: PLUID): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeValueW".}
-proc LookupPrivilegeNameW*(lpSystemName: LPCWSTR, lpLuid: PLUID, lpName: LPWSTR,
-                           cbName: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeNameW".}
-proc LookupPrivilegeDisplayNameW*(lpSystemName: LPCWSTR, lpName: LPCWSTR,
-                                  lpDisplayName: LPWSTR, cbDisplayName: LPDWORD,
-                                  lpLanguageId: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}
-proc BuildCommDCBW*(lpDef: LPCWSTR, lpDCB: LPDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "BuildCommDCBW".}
-proc BuildCommDCBAndTimeoutsW*(lpDef: LPCWSTR, lpDCB: LPDCB,
-                               lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}
-proc CommConfigDialogW*(lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}
-proc GetDefaultCommConfigW*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG,
-                            lpdwSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDefaultCommConfigW".}
-proc SetDefaultCommConfigW*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigW".}
-proc GetComputerNameW*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetComputerNameW".}
-proc SetComputerNameW*(lpComputerName: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetComputerNameW".}
-proc GetUserNameW*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetUserNameW".}
-proc LoadKeyboardLayoutW*(pwszKLID: LPCWSTR, Flags: UINT): HKL{.stdcall,
-    dynlib: "user32", importc: "LoadKeyboardLayoutW".}
-proc GetKeyboardLayoutNameW*(pwszKLID: LPWSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetKeyboardLayoutNameW".}
-proc CreateDesktopW*(lpszDesktop: LPWSTR, lpszDevice: LPWSTR,
-                     pDevmodew: LPDEVMODEw, dwFlags: DWORD,
-                     dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HDESK{.
-    stdcall, dynlib: "user32", importc: "CreateDesktopW".}
-proc OpenDesktopW*(lpszDesktop: LPWSTR, dwFlags: DWORD, fInherit: WINBOOL,
-                   dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",
-    importc: "OpenDesktopW".}
-proc EnumDesktopsW*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,
-                    lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "EnumDesktopsW".}
-proc CreateWindowStationW*(lpwinsta: LPWSTR, dwReserved: DWORD,
-                           dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.
-    stdcall, dynlib: "user32", importc: "CreateWindowStationW".}
-proc OpenWindowStationW*(lpszWinSta: LPWSTR, fInherit: WINBOOL,
-                         dwDesiredAccess: DWORD): HWINSTA{.stdcall,
-    dynlib: "user32", importc: "OpenWindowStationW".}
-proc EnumWindowStationsW*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnumWindowStationsW".}
-proc GetUserObjectInformationW*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}
-proc SetUserObjectInformationW*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                nLength: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetUserObjectInformationW".}
-proc RegisterWindowMessageW*(lpString: LPCWSTR): UINT{.stdcall,
-    dynlib: "user32", importc: "RegisterWindowMessageW".}
-proc GetMessageW*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                  wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetMessageW".}
-proc DispatchMessageW*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",
-    importc: "DispatchMessageW".}
-proc PeekMessageW*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                   wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "PeekMessageW".}
-proc SendMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageW".}
-proc SendMessageTimeoutW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,
-                          fuFlags: UINT, uTimeout: UINT, lpdwResult: LPDWORD): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageTimeoutW".}
-proc SendNotifyMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SendNotifyMessageW".}
-proc SendMessageCallbackW*(hWnd: HWND, Msg: UINT, wParam: WPARAM,
-                           lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,
-                           dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SendMessageCallbackW".}
-proc PostMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "PostMessageW".}
-proc PostThreadMessageW*(idThread: DWORD, Msg: UINT, wParam: WPARAM,
-                         lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "PostThreadMessageW".}
-proc DefWindowProcW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "DefWindowProcW".}
-proc CallWindowProcW*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,
-                      wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,
-    dynlib: "user32", importc: "CallWindowProcW".}
-proc RegisterClassW*(lpWndClass: LPWNDCLASSW): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassW".}
-proc UnregisterClassW*(lpClassName: LPCWSTR, hInstance: HINST): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "UnregisterClassW".}
-proc GetClassInfoW*(hInstance: HINST, lpClassName: LPCWSTR,
-                    lpWndClass: LPWNDCLASS): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetClassInfoW".}
-proc RegisterClassExW*(para1: LPWNDCLASSEXW): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassExW".}
-proc GetClassInfoExW*(para1: HINST, para2: LPCWSTR, para3: LPWNDCLASSEX): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetClassInfoExW".}
-proc CreateWindowExW*(dwExStyle: DWORD, lpClassName: LPCWSTR,
-                      lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32,
-                      nWidth: int32, nHeight: int32, hWndParent: HWND,
-                      hMenu: HMENU, hInstance: HINST, lpParam: LPVOID): HWND{.
-    stdcall, dynlib: "user32", importc: "CreateWindowExW".}
-proc CreateDialogParamW*(hInstance: HINST, lpTemplateName: LPCWSTR,
-                         hWndParent: HWND, lpDialogFunc: DLGPROC,
-                         dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",
-    importc: "CreateDialogParamW".}
-proc CreateDialogIndirectParamW*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                                 hWndParent: HWND, lpDialogFunc: DLGPROC,
-                                 dwInitParam: LPARAM): HWND{.stdcall,
-    dynlib: "user32", importc: "CreateDialogIndirectParamW".}
-proc DialogBoxParamW*(hInstance: HINST, lpTemplateName: LPCWSTR,
-                      hWndParent: HWND, lpDialogFunc: DLGPROC,
-                      dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",
-    importc: "DialogBoxParamW".}
-proc DialogBoxIndirectParamW*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,
-                              hWndParent: HWND, lpDialogFunc: DLGPROC,
-                              dwInitParam: LPARAM): int32{.stdcall,
-    dynlib: "user32", importc: "DialogBoxIndirectParamW".}
-proc SetDlgItemTextW*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetDlgItemTextW".}
-proc GetDlgItemTextW*(hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR,
-                      nMaxCount: int32): UINT{.stdcall, dynlib: "user32",
-    importc: "GetDlgItemTextW".}
-proc SendDlgItemMessageW*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,
-                          wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,
-    dynlib: "user32", importc: "SendDlgItemMessageW".}
-proc DefDlgProcW*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "DefDlgProcW".}
-proc CallMsgFilterW*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CallMsgFilterW".}
-proc RegisterClipboardFormatW*(lpszFormat: LPCWSTR): UINT{.stdcall,
-    dynlib: "user32", importc: "RegisterClipboardFormatW".}
-proc GetClipboardFormatNameW*(format: UINT, lpszFormatName: LPWSTR,
-                              cchMaxCount: int32): int32{.stdcall,
-    dynlib: "user32", importc: "GetClipboardFormatNameW".}
-proc CharToOemW*(lpszSrc: LPCWSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CharToOemW".}
-proc OemToCharW*(lpszSrc: LPCSTR, lpszDst: LPWSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "OemToCharW".}
-proc CharToOemBuffW*(lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "CharToOemBuffW".}
-proc OemToCharBuffW*(lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "OemToCharBuffW".}
-proc CharUpperW*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",
-                                        importc: "CharUpperW".}
-proc CharUpperBuffW*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "CharUpperBuffW".}
-proc CharLowerW*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",
-                                        importc: "CharLowerW".}
-proc CharLowerBuffW*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "CharLowerBuffW".}
-proc CharNextW*(lpsz: LPCWSTR): LPWSTR{.stdcall, dynlib: "user32",
-                                        importc: "CharNextW".}
-proc CharPrevW*(lpszStart: LPCWSTR, lpszCurrent: LPCWSTR): LPWSTR{.stdcall,
-    dynlib: "user32", importc: "CharPrevW".}
-proc IsCharAlphaW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "IsCharAlphaW".}
-proc IsCharAlphaNumericW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsCharAlphaNumericW".}
-proc IsCharUpperW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "IsCharUpperW".}
-proc IsCharLowerW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "IsCharLowerW".}
-proc GetKeyNameTextW*(lParam: LONG, lpString: LPWSTR, nSize: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetKeyNameTextW".}
-proc VkKeyScanW*(ch: WCHAR): SHORT{.stdcall, dynlib: "user32",
-                                    importc: "VkKeyScanW".}
-proc VkKeyScanExW*(ch: WCHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",
-    importc: "VkKeyScanExW".}
-proc MapVirtualKeyW*(uCode: UINT, uMapType: UINT): UINT{.stdcall,
-    dynlib: "user32", importc: "MapVirtualKeyW".}
-proc MapVirtualKeyExW*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,
-    dynlib: "user32", importc: "MapVirtualKeyExW".}
-proc LoadAcceleratorsW*(hInstance: HINST, lpTableName: LPCWSTR): HACCEL{.
-    stdcall, dynlib: "user32", importc: "LoadAcceleratorsW".}
-proc CreateAcceleratorTableW*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,
-    dynlib: "user32", importc: "CreateAcceleratorTableW".}
-proc CopyAcceleratorTableW*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,
-                            cAccelEntries: int32): int32{.stdcall,
-    dynlib: "user32", importc: "CopyAcceleratorTableW".}
-proc TranslateAcceleratorW*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.
-    stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}
-proc LoadMenuW*(hInstance: HINST, lpMenuName: LPCWSTR): HMENU{.stdcall,
-    dynlib: "user32", importc: "LoadMenuW".}
-proc LoadMenuIndirectW*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,
-    dynlib: "user32", importc: "LoadMenuIndirectW".}
-proc ChangeMenuW*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR,
-                  cmdInsert: UINT, flags: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ChangeMenuW".}
-proc GetMenuStringW*(hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR,
-                     nMaxCount: int32, uFlag: UINT): int32{.stdcall,
-    dynlib: "user32", importc: "GetMenuStringW".}
-proc InsertMenuW*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,
-                  lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "InsertMenuW".}
-proc AppendMenuW*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,
-                  lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "AppendMenuW".}
-proc ModifyMenuW*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,
-                  lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ModifyMenuW".}
-proc InsertMenuItemW*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                      para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "InsertMenuItemW".}
-proc GetMenuItemInfoW*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                       para4: LPMENUITEMINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetMenuItemInfoW".}
-proc SetMenuItemInfoW*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetMenuItemInfoW".}
-proc DrawTextW*(hDC: HDC, lpString: LPCWSTR, nCount: int32, lpRect: LPRECT,
-                uFormat: UINT): int32{.stdcall, dynlib: "user32",
-                                       importc: "DrawTextW".}
-proc DrawTextExW*(para1: HDC, para2: LPWSTR, para3: int32, para4: LPRECT,
-                  para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,
-    dynlib: "user32", importc: "DrawTextExW".}
-proc GrayStringW*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,
-                  lpData: LPARAM, nCount: int32, X: int32, Y: int32,
-                  nWidth: int32, nHeight: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GrayStringW".}
-proc DrawStateW*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC, para4: LPARAM,
-                 para5: WPARAM, para6: int32, para7: int32, para8: int32,
-                 para9: int32, para10: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DrawStateW".}
-proc TabbedTextOutW*(hDC: HDC, X: int32, Y: int32, lpString: LPCWSTR,
-                     nCount: int32, nTabPositions: int32,
-                     lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.
-    stdcall, dynlib: "user32", importc: "TabbedTextOutW".}
-proc GetTabbedTextExtentW*(hDC: HDC, lpString: LPCWSTR, nCount: int32,
-                           nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.
-    stdcall, dynlib: "user32", importc: "GetTabbedTextExtentW".}
-proc SetPropW*(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetPropW".}
-proc GetPropW*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,
-    dynlib: "user32", importc: "GetPropW".}
-proc RemovePropW*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,
-    dynlib: "user32", importc: "RemovePropW".}
-proc EnumPropsExW*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.
-    stdcall, dynlib: "user32", importc: "EnumPropsExW".}
-proc EnumPropsW*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,
-    dynlib: "user32", importc: "EnumPropsW".}
-proc SetWindowTextW*(hWnd: HWND, lpString: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetWindowTextW".}
-proc GetWindowTextW*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetWindowTextW".}
-proc GetWindowTextLengthW*(hWnd: HWND): int32{.stdcall, dynlib: "user32",
-    importc: "GetWindowTextLengthW".}
-proc MessageBoxW*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32{.
-    stdcall, dynlib: "user32", importc: "MessageBoxW".}
-proc MessageBoxExW*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR,
-                    uType: UINT, wLanguageId: int16): int32{.stdcall,
-    dynlib: "user32", importc: "MessageBoxExW".}
-proc MessageBoxIndirectW*(para1: LPMSGBOXPARAMS): int32{.stdcall,
-    dynlib: "user32", importc: "MessageBoxIndirectW".}
-proc GetWindowLongW*(hWnd: HWND, nIndex: int32): LONG{.stdcall,
-    dynlib: "user32", importc: "GetWindowLongW".}
-proc SetWindowLongW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.stdcall,
-    dynlib: "user32", importc: "SetWindowLongW".}
-proc GetClassLongW*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,
-    dynlib: "user32", importc: "GetClassLongW".}
-proc SetClassLongW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.stdcall,
-    dynlib: "user32", importc: "SetClassLongW".}
-when defined(cpu64):
-  proc GetWindowLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetWindowLongPtrW".}
-  proc SetWindowLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}
-  proc GetClassLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetClassLongPtrW".}
-  proc SetClassLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetClassLongPtrW".}
-else:
-  proc GetWindowLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetWindowLongW".}
-  proc SetWindowLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetWindowLongW".}
-  proc GetClassLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-      dynlib: "user32", importc: "GetClassLongW".}
-  proc SetClassLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-      stdcall, dynlib: "user32", importc: "SetClassLongW".}
-proc FindWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND{.stdcall,
-    dynlib: "user32", importc: "FindWindowW".}
-proc FindWindowExW*(para1: HWND, para2: HWND, para3: LPCWSTR, para4: LPCWSTR): HWND{.
-    stdcall, dynlib: "user32", importc: "FindWindowExW".}
-proc GetClassNameW*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetClassNameW".}
-proc SetWindowsHookExW*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,
-                        dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",
-    importc: "SetWindowsHookExW".}
-proc LoadBitmapW*(hInstance: HINST, lpBitmapName: LPCWSTR): HBITMAP{.stdcall,
-    dynlib: "user32", importc: "LoadBitmapW".}
-proc LoadCursorW*(hInstance: HINST, lpCursorName: LPCWSTR): HCURSOR{.stdcall,
-    dynlib: "user32", importc: "LoadCursorW".}
-proc LoadCursorFromFileW*(lpFileName: LPCWSTR): HCURSOR{.stdcall,
-    dynlib: "user32", importc: "LoadCursorFromFileW".}
-proc LoadIconW*(hInstance: HINST, lpIconName: LPCWSTR): HICON{.stdcall,
-    dynlib: "user32", importc: "LoadIconW".}
-proc LoadImageW*(para1: HINST, para2: LPCWSTR, para3: UINT, para4: int32,
-                 para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",
-    importc: "LoadImageW".}
-proc LoadStringW*(hInstance: HINST, uID: UINT, lpBuffer: LPWSTR,
-                  nBufferMax: int32): int32{.stdcall, dynlib: "user32",
-    importc: "LoadStringW".}
-proc IsDialogMessageW*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "IsDialogMessageW".}
-proc DlgDirListW*(hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: int32,
-                  nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,
-    dynlib: "user32", importc: "DlgDirListW".}
-proc DlgDirSelectExW*(hDlg: HWND, lpString: LPWSTR, nCount: int32,
-                      nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DlgDirSelectExW".}
-proc DlgDirListComboBoxW*(hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: int32,
-                          nIDStaticPath: int32, uFiletype: UINT): int32{.
-    stdcall, dynlib: "user32", importc: "DlgDirListComboBoxW".}
-proc DlgDirSelectComboBoxExW*(hDlg: HWND, lpString: LPWSTR, nCount: int32,
-                              nIDComboBox: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DlgDirSelectComboBoxExW".}
-proc DefFrameProcW*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM,
-                    lParam: LPARAM): LRESULT{.stdcall, dynlib: "user32",
-    importc: "DefFrameProcW".}
-proc DefMDIChildProcW*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "DefMDIChildProcW".}
-proc CreateMDIWindowW*(lpClassName: LPWSTR, lpWindowName: LPWSTR,
-                       dwStyle: DWORD, X: int32, Y: int32, nWidth: int32,
-                       nHeight: int32, hWndParent: HWND, hInstance: HINST,
-                       lParam: LPARAM): HWND{.stdcall, dynlib: "user32",
-    importc: "CreateMDIWindowW".}
-proc WinHelpW*(hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "WinHelpW".}
-proc ChangeDisplaySettingsW*(lpDevMode: LPDEVMODEW, dwFlags: DWORD): LONG{.
-    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}
-proc EnumDisplaySettingsW*(lpszDeviceName: LPCWSTR, iModeNum: DWORD,
-                           lpDevMode: LPDEVMODEW): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EnumDisplaySettingsW".}
-proc SystemParametersInfoW*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,
-                            fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SystemParametersInfoW".}
-proc AddFontResourceW*(para1: LPCWSTR): int32{.stdcall, dynlib: "gdi32",
-    importc: "AddFontResourceW".}
-proc CopyMetaFileW*(para1: HMETAFILE, para2: LPCWSTR): HMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "CopyMetaFileW".}
-proc CreateFontIndirectW*(para1: PLOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-    importc: "CreateFontIndirectW".}
-proc CreateFontIndirectW*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-    importc: "CreateFontIndirectW".}
-proc CreateFontW*(para1: int32, para2: int32, para3: int32, para4: int32,
-                  para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,
-                  para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,
-                  para13: DWORD, para14: LPCWSTR): HFONT{.stdcall,
-    dynlib: "gdi32", importc: "CreateFontW".}
-proc CreateICW*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR,
-                para4: LPDEVMODEw): HDC{.stdcall, dynlib: "gdi32",
-    importc: "CreateICW".}
-proc CreateMetaFileW*(para1: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",
-    importc: "CreateMetaFileW".}
-proc CreateScalableFontResourceW*(para1: DWORD, para2: LPCWSTR, para3: LPCWSTR,
-                                  para4: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "CreateScalableFontResourceW".}
-proc EnumFontFamiliesExW*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,
-                          para4: LPARAM, para5: DWORD): int32{.stdcall,
-    dynlib: "gdi32", importc: "EnumFontFamiliesExW".}
-proc EnumFontFamiliesW*(para1: HDC, para2: LPCWSTR, para3: FONTENUMPROC,
-                        para4: LPARAM): int32{.stdcall, dynlib: "gdi32",
-    importc: "EnumFontFamiliesW".}
-proc EnumFontsW*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC, para4: LPARAM): int32{.
-    stdcall, dynlib: "gdi32", importc: "EnumFontsW".}
-proc EnumFontsW*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC,
-                 para4: pointer): int32{.stdcall, dynlib: "gdi32",
-    importc: "EnumFontsW".}
-proc GetCharWidthW*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}
-proc GetCharWidth32W*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidth32W".}
-proc GetCharWidthFloatW*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}
-proc GetCharABCWidthsW*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}
-proc GetCharABCWidthsFloatW*(para1: HDC, para2: UINT, para3: UINT,
-                             para4: LPABCFLOAT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}
-proc GetGlyphOutlineW*(para1: HDC, para2: UINT, para3: UINT,
-                       para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,
-                       para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GetGlyphOutlineW".}
-proc GetMetaFileW*(para1: LPCWSTR): HMETAFILE{.stdcall, dynlib: "gdi32",
-    importc: "GetMetaFileW".}
-proc GetOutlineTextMetricsW*(para1: HDC, para2: UINT, para3: LPOUTLINETEXTMETRIC): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsW".}
-proc GetTextExtentPointW*(para1: HDC, para2: LPCWSTR, para3: int32,
-                          para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentPointW".}
-proc GetTextExtentPoint32W*(para1: HDC, para2: LPCWSTR, para3: int32,
-                            para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentPoint32W".}
-proc GetTextExtentExPointW*(para1: HDC, para2: LPCWSTR, para3: int32,
-                            para4: int32, para5: LPINT, para6: LPINT,
-                            para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentExPointW".}
-proc GetCharacterPlacementW*(para1: HDC, para2: LPCWSTR, para3: int32,
-                             para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.
-    stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementW".}
-proc ResetDCW*(para1: HDC, para2: LPDEVMODEW): HDC{.stdcall, dynlib: "gdi32",
-    importc: "ResetDCW".}
-proc RemoveFontResourceW*(para1: LPCWSTR): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "RemoveFontResourceW".}
-proc CopyEnhMetaFileW*(para1: HENHMETAFILE, para2: LPCWSTR): HENHMETAFILE{.
-    stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileW".}
-proc CreateEnhMetaFileW*(para1: HDC, para2: LPCWSTR, para3: LPRECT,
-                         para4: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",
-    importc: "CreateEnhMetaFileW".}
-proc GetEnhMetaFileW*(para1: LPCWSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",
-    importc: "GetEnhMetaFileW".}
-proc GetEnhMetaFileDescriptionW*(para1: HENHMETAFILE, para2: UINT, para3: LPWSTR): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionW".}
-proc GetTextMetricsW*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetTextMetricsW".}
-proc StartDocW*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",
-    importc: "StartDocW".}
-proc GetObjectW*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,
-    dynlib: "gdi32", importc: "GetObjectW".}
-proc TextOutW*(para1: HDC, para2: int32, para3: int32, para4: LPCWSTR,
-               para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-                                       importc: "TextOutW".}
-proc ExtTextOutW*(para1: HDC, para2: int32, para3: int32, para4: UINT,
-                  para5: LPRECT, para6: LPCWSTR, para7: UINT, para8: LPINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}
-proc PolyTextOutW*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}
-proc GetTextFaceW*(para1: HDC, para2: int32, para3: LPWSTR): int32{.stdcall,
-    dynlib: "gdi32", importc: "GetTextFaceW".}
-proc GetKerningPairsW*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.
-    stdcall, dynlib: "gdi32", importc: "GetKerningPairsW".}
-proc GetLogColorSpaceW*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE, para3: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceW".}
-proc CreateColorSpaceW*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,
-    dynlib: "gdi32", importc: "CreateColorSpaceW".}
-proc GetICMProfileW*(para1: HDC, para2: DWORD, para3: LPWSTR): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetICMProfileW".}
-proc SetICMProfileW*(para1: HDC, para2: LPWSTR): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SetICMProfileW".}
-proc UpdateICMRegKeyW*(para1: DWORD, para2: DWORD, para3: LPWSTR, para4: UINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyW".}
-proc EnumICMProfilesW*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.
-    stdcall, dynlib: "gdi32", importc: "EnumICMProfilesW".}
-proc CreatePropertySheetPageW*(lppsp: LPCPROPSHEETPAGE): HPROPSHEETPAGE{.
-    stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageW".}
-proc PropertySheetW*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,
-    dynlib: "comctl32", importc: "PropertySheetW".}
-proc ImageList_LoadImageW*(hi: HINST, lpbmp: LPCWSTR, cx: int32, cGrow: int32,
-                           crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageW".}
-proc CreateStatusWindowW*(style: LONG, lpszText: LPCWSTR, hwndParent: HWND,
-                          wID: UINT): HWND{.stdcall, dynlib: "comctl32",
-    importc: "CreateStatusWindowW".}
-proc DrawStatusTextW*(hDC: HDC, lprc: LPRECT, pszText: LPCWSTR, uFlags: UINT){.
-    stdcall, dynlib: "comctl32", importc: "DrawStatusTextW".}
-proc GetOpenFileNameW*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-    dynlib: "comdlg32", importc: "GetOpenFileNameW".}
-proc GetSaveFileNameW*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-    dynlib: "comdlg32", importc: "GetSaveFileNameW".}
-proc GetFileTitleW*(para1: LPCWSTR, para2: LPWSTR, para3: int16): int{.stdcall,
-    dynlib: "comdlg32", importc: "GetFileTitleW".}
-proc ChooseColorW*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",
-    importc: "ChooseColorW".}
-proc ReplaceTextW*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-    importc: "ReplaceTextW".}
-proc ChooseFontW*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",
-    importc: "ChooseFontW".}
-proc FindTextW*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-    importc: "FindTextW".}
-proc PrintDlgW*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",
-    importc: "PrintDlgW".}
-proc PageSetupDlgW*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,
-    dynlib: "comdlg32", importc: "PageSetupDlgW".}
-proc CreateProcessW*(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR,
-                     lpProcessAttributes: LPSECURITY_ATTRIBUTES,
-                     lpThreadAttributes: LPSECURITY_ATTRIBUTES,
-                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                     lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR,
-                     lpStartupInfo: LPSTARTUPINFO,
-                     lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateProcessW".}
-proc GetStartupInfoW*(lpStartupInfo: LPSTARTUPINFO){.stdcall,
-    dynlib: "kernel32", importc: "GetStartupInfoW".}
-proc FindFirstFileW*(lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}
-proc FindNextFileW*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FindNextFileW".}
-proc GetVersionExW*(VersionInformation: LPOSVERSIONINFOW): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVersionExW".}
-proc CreateWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD,
-                    X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                    lpParam: LPVOID): HWND
-proc CreateDialogW*(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,
-                    lpDialogFunc: DLGPROC): HWND
-proc CreateDialogIndirectW*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND
-proc DialogBoxW*(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,
-                 lpDialogFunc: DLGPROC): int32
-proc DialogBoxIndirectW*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32
-proc CreateDCW*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR, para4: pDEVMODEW): HDC{.
-    stdcall, dynlib: "gdi32", importc: "CreateDCW".}
-proc VerInstallFileW*(uFlags: DWORD, szSrcFileName: LPWSTR,
-                      szDestFileName: LPWSTR, szSrcDir: LPWSTR,
-                      szDestDir: LPWSTR, szCurDir: LPWSTR, szTmpFile: LPWSTR,
-                      lpuTmpFileLen: PUINT): DWORD{.stdcall, dynlib: "version",
-    importc: "VerInstallFileW".}
-proc GetFileVersionInfoSizeW*(lptstrFilename: LPWSTR, lpdwHandle: LPDWORD): DWORD{.
-    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}
-proc GetFileVersionInfoW*(lptstrFilename: LPWSTR, dwHandle: DWORD, dwLen: DWORD,
-                          lpData: LPVOID): WINBOOL{.stdcall, dynlib: "version",
-    importc: "GetFileVersionInfoW".}
-proc VerLanguageNameW*(wLang: DWORD, szLang: LPWSTR, nSize: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "VerLanguageNameW".}
-proc VerQueryValueW*(pBlock: LPVOID, lpSubBlock: LPWSTR, lplpBuffer: LPVOID,
-                     puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",
-    importc: "VerQueryValueW".}
-proc VerFindFileW*(uFlags: DWORD, szFileName: LPWSTR, szWinDir: LPWSTR,
-                   szAppDir: LPWSTR, szCurDir: LPWSTR, lpuCurDirLen: PUINT,
-                   szDestDir: LPWSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,
-    dynlib: "version", importc: "VerFindFileW".}
-proc RegSetValueExW*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD,
-                     dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}
-proc RegUnLoadKeyW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegUnLoadKeyW".}
-proc InitiateSystemShutdownW*(lpMachineName: LPWSTR, lpMessage: LPWSTR,
-                              dwTimeout: DWORD, bForceAppsClosed: WINBOOL,
-                              bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "InitiateSystemShutdownW".}
-proc AbortSystemShutdownW*(lpMachineName: LPWSTR): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AbortSystemShutdownW".}
-proc RegRestoreKeyW*(hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegRestoreKeyW".}
-proc RegSaveKeyW*(hKey: HKEY, lpFile: LPCWSTR,
-                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegSaveKeyW".}
-proc RegSetValueW*(hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD,
-                   lpData: LPCWSTR, cbData: DWORD): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegSetValueW".}
-proc RegQueryValueW*(hKey: HKEY, lpSubKey: LPCWSTR, lpValue: LPWSTR,
-                     lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",
-    importc: "RegQueryValueW".}
-proc RegQueryMultipleValuesW*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,
-                              lpValueBuf: LPWSTR, ldwTotsize: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}
-proc RegQueryValueExW*(hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD,
-                       lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryValueExW".}
-proc RegReplaceKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR,
-                     lpOldFile: LPCWSTR): LONG{.stdcall, dynlib: "advapi32",
-    importc: "RegReplaceKeyW".}
-proc RegConnectRegistryW*(lpMachineName: LPWSTR, hKey: HKEY, phkResult: PHKEY): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}
-proc RegCreateKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}
-proc RegCreateKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD,
-                      lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM,
-                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                      phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}
-proc RegDeleteKeyW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegDeleteKeyW".}
-proc RegDeleteValueW*(hKey: HKEY, lpValueName: LPCWSTR): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegDeleteValueW".}
-proc RegEnumKeyW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cbName: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyW".}
-proc RegEnumKeyExW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR,
-                    lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR,
-                    lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}
-proc RegEnumValueW*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR,
-                    lpcbValueName: LPDWORD, lpReserved: LPDWORD,
-                    lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}
-proc RegLoadKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegLoadKeyW".}
-proc RegOpenKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}
-proc RegOpenKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD,
-                    samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegOpenKeyExW".}
-proc RegQueryInfoKeyW*(hKey: HKEY, lpClass: LPWSTR, lpcbClass: LPDWORD,
-                       lpReserved: LPDWORD, lpcSubKeys: LPDWORD,
-                       lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,
-                       lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,
-                       lpcbMaxValueLen: LPDWORD,
-                       lpcbSecurityDescriptor: LPDWORD,
-                       lpftLastWriteTime: PFILETIME): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegQueryInfoKeyW".}
-proc CompareStringW*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCWSTR,
-                     cchCount1: int32, lpString2: LPCWSTR, cchCount2: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "CompareStringW".}
-proc LCMapStringW*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR,
-                   cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "LCMapStringW".}
-proc GetLocaleInfoW*(Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR,
-                     cchData: int32): int32{.stdcall, dynlib: "kernel32",
-    importc: "GetLocaleInfoW".}
-proc SetLocaleInfoW*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetLocaleInfoW".}
-proc GetTimeFormatW*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,
-                     lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "GetTimeFormatW".}
-proc GetDateFormatW*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,
-                     lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "GetDateFormatW".}
-proc GetNumberFormatW*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,
-                       lpFormat: PNUMBERFMT, lpNumberStr: LPWSTR,
-                       cchNumber: int32): int32{.stdcall, dynlib: "kernel32",
-    importc: "GetNumberFormatW".}
-proc GetCurrencyFormatW*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,
-                         lpFormat: PCURRENCYFMT, lpCurrencyStr: LPWSTR,
-                         cchCurrency: int32): int32{.stdcall,
-    dynlib: "kernel32", importc: "GetCurrencyFormatW".}
-proc EnumCalendarInfoW*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,
-                        Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "EnumCalendarInfoW".}
-proc EnumTimeFormatsW*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,
-                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "EnumTimeFormatsW".}
-proc EnumDateFormatsW*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,
-                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "EnumDateFormatsW".}
-proc GetStringTypeExW*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWSTR,
-                       cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeExW".}
-proc GetStringTypeW*(dwInfoType: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,
-                     lpCharType: LPWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "GetStringTypeW".}
-proc FoldStringW*(dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,
-                  lpDestStr: LPWSTR, cchDest: int32): int32{.stdcall,
-    dynlib: "kernel32", importc: "FoldStringW".}
-proc EnumSystemLocalesW*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesW".}
-proc EnumSystemCodePagesW*(lpCodePageEnumProc: CODEPAGE_ENUMPROC, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesW".}
-proc PeekConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}
-proc ReadConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}
-proc WriteConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                         nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}
-proc ReadConsoleOutputW*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                         dwBufferSize: COORD, dwBufferCoord: COORD,
-                         lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadConsoleOutputW".}
-proc WriteConsoleOutputW*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                          dwBufferSize: COORD, dwBufferCoord: COORD,
-                          lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteConsoleOutputW".}
-proc ReadConsoleOutputCharacterW*(hConsoleOutput: HANDLE, lpCharacter: LPWSTR,
-                                  nLength: DWORD, dwReadCoord: COORD,
-                                  lpNumberOfCharsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}
-proc WriteConsoleOutputCharacterW*(hConsoleOutput: HANDLE, lpCharacter: LPCWSTR,
-                                   nLength: DWORD, dwWriteCoord: COORD,
-                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}
-proc FillConsoleOutputCharacterW*(hConsoleOutput: HANDLE, cCharacter: WCHAR,
-                                  nLength: DWORD, dwWriteCoord: COORD,
-                                  lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}
-proc ScrollConsoleScreenBufferW*(hConsoleOutput: HANDLE,
-                                 lpScrollRectangle: PSMALL_RECT,
-                                 lpClipRectangle: PSMALL_RECT,
-                                 dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}
-proc GetConsoleTitleW*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetConsoleTitleW".}
-proc SetConsoleTitleW*(lpConsoleTitle: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetConsoleTitleW".}
-proc ReadConsoleW*(hConsoleInput: HANDLE, lpBuffer: LPVOID,
-                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,
-                   lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ReadConsoleW".}
-proc WriteConsoleW*(hConsoleOutput: HANDLE, lpBuffer: pointer,
-                    nNumberOfCharsToWrite: DWORD,
-                    lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}
-proc WNetAddConnectionW*(lpRemoteName: LPCWSTR, lpPassword: LPCWSTR,
-                         lpLocalName: LPCWSTR): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetAddConnectionW".}
-proc WNetAddConnection2W*(lpNetResource: LPNETRESOURCE, lpPassword: LPCWSTR,
-                          lpUserName: LPCWSTR, dwFlags: DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetAddConnection2W".}
-proc WNetAddConnection3W*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                          lpPassword: LPCWSTR, lpUserName: LPCWSTR,
-                          dwFlags: DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetAddConnection3W".}
-proc WNetCancelConnectionW*(lpName: LPCWSTR, fForce: WINBOOL): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetCancelConnectionW".}
-proc WNetCancelConnection2W*(lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetCancelConnection2W".}
-proc WNetGetConnectionW*(lpLocalName: LPCWSTR, lpRemoteName: LPWSTR,
-                         lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetConnectionW".}
-proc WNetUseConnectionW*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                         lpUserID: LPCWSTR, lpPassword: LPCWSTR, dwFlags: DWORD,
-                         lpAccessName: LPWSTR, lpBufferSize: LPDWORD,
-                         lpResult: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetUseConnectionW".}
-proc WNetSetConnectionW*(lpName: LPCWSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetSetConnectionW".}
-proc WNetConnectionDialog1W*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1W".}
-proc WNetDisconnectDialog1W*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetDisconnectDialog1W".}
-proc WNetOpenEnumW*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,
-                    lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetOpenEnumW".}
-proc WNetEnumResourceW*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,
-                        lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetEnumResourceW".}
-proc WNetGetUniversalNameW*(lpLocalPath: LPCWSTR, dwInfoLevel: DWORD,
-                            lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}
-proc WNetGetUserW*(lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUserW".}
-proc WNetGetProviderNameW*(dwNetType: DWORD, lpProviderName: LPWSTR,
-                           lpBufferSize: LPDWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetGetProviderNameW".}
-proc WNetGetNetworkInformationW*(lpProvider: LPCWSTR,
-                                 lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}
-proc WNetGetLastErrorW*(lpError: LPDWORD, lpErrorBuf: LPWSTR,
-                        nErrorBufSize: DWORD, lpNameBuf: LPWSTR,
-                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetLastErrorW".}
-proc MultinetGetConnectionPerformanceW*(lpNetResource: LPNETRESOURCE,
-    lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,
-    dynlib: "mpr", importc: "MultinetGetConnectionPerformanceW".}
-proc ChangeServiceConfigW*(hService: SC_HANDLE, dwServiceType: DWORD,
-                           dwStartType: DWORD, dwErrorControl: DWORD,
-                           lpBinaryPathName: LPCWSTR, lpLoadOrderGroup: LPCWSTR,
-                           lpdwTagId: LPDWORD, lpDependencies: LPCWSTR,
-                           lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR,
-                           lpDisplayName: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ChangeServiceConfigW".}
-proc CreateServiceW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,
-                     lpDisplayName: LPCWSTR, dwDesiredAccess: DWORD,
-                     dwServiceType: DWORD, dwStartType: DWORD,
-                     dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR,
-                     lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD,
-                     lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR,
-                     lpPassword: LPCWSTR): SC_HANDLE{.stdcall,
-    dynlib: "advapi32", importc: "CreateServiceW".}
-proc EnumDependentServicesW*(hService: SC_HANDLE, dwServiceState: DWORD,
-                             lpServices: LPENUM_SERVICE_STATUS,
-                             cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,
-                             lpServicesReturned: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "EnumDependentServicesW".}
-proc EnumServicesStatusW*(hSCManager: SC_HANDLE, dwServiceType: DWORD,
-                          dwServiceState: DWORD,
-                          lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,
-                          pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,
-                          lpResumeHandle: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "EnumServicesStatusW".}
-proc GetServiceKeyNameW*(hSCManager: SC_HANDLE, lpDisplayName: LPCWSTR,
-                         lpServiceName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameW".}
-proc GetServiceDisplayNameW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,
-                             lpDisplayName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameW".}
-proc OpenSCManagerW*(lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR,
-                     dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-    dynlib: "advapi32", importc: "OpenSCManagerW".}
-proc OpenServiceW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,
-                   dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-    dynlib: "advapi32", importc: "OpenServiceW".}
-proc QueryServiceConfigW*(hService: SC_HANDLE,
-                          lpServiceConfig: LPQUERY_SERVICE_CONFIG,
-                          cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "QueryServiceConfigW".}
-proc QueryServiceLockStatusW*(hSCManager: SC_HANDLE,
-                              lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,
-                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusW".}
-proc RegisterServiceCtrlHandlerW*(lpServiceName: LPCWSTR,
-                                  lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.
-    stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerW".}
-proc StartServiceCtrlDispatcherW*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherW".}
-proc StartServiceW*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,
-                    lpServiceArgVectors: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "StartServiceW".}
-proc DragQueryFileW*(para1: HDROP, para2: int, para3: LPCWSTR, para4: int): int{.
-    stdcall, dynlib: "shell32", importc: "DragQueryFileW".}
-proc ExtractAssociatedIconW*(para1: HINST, para2: LPCWSTR, para3: LPWORD): HICON{.
-    stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconW".}
-proc ExtractIconW*(para1: HINST, para2: LPCWSTR, para3: int): HICON{.stdcall,
-    dynlib: "shell32", importc: "ExtractIconW".}
-proc FindExecutableW*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR): HINST{.
-    stdcall, dynlib: "shell32", importc: "FindExecutableW".}
-proc ShellAboutW*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR, para4: HICON): int32{.
-    stdcall, dynlib: "shell32", importc: "ShellAboutW".}
-proc ShellExecuteW*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR, para4: LPCWSTR,
-                    para5: LPCWSTR, para6: int32): HINST{.stdcall,
-    dynlib: "shell32", importc: "ShellExecuteW".}
-proc Shell_NotifyIconW*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.
-    stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}
-proc DdeCreateStringHandleW*(para1: DWORD, para2: LPCWSTR, para3: int32): HSZ{.
-    stdcall, dynlib: "user32", importc: "DdeCreateStringHandleW".}
-proc DdeInitializeW*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,
-                     para4: DWORD): UINT{.stdcall, dynlib: "user32",
-    importc: "DdeInitializeW".}
-proc DdeQueryStringW*(para1: DWORD, para2: HSZ, para3: LPCWSTR, para4: DWORD,
-                      para5: int32): DWORD{.stdcall, dynlib: "user32",
-    importc: "DdeQueryStringW".}
-proc LogonUserW*(para1: LPWSTR, para2: LPWSTR, para3: LPWSTR, para4: DWORD,
-                 para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LogonUserW".}
-proc CreateProcessAsUserW*(para1: HANDLE, para2: LPCWSTR, para3: LPWSTR,
-                           para4: LPSECURITY_ATTRIBUTES,
-                           para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,
-                           para7: DWORD, para8: LPVOID, para9: LPCWSTR,
-                           para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserW".}
-when defined(winUnicode):
-  proc GetBinaryType*(lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}
-  proc GetShortPathName*(lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR,
-                         cchBuffer: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "GetShortPathNameW".}
-  proc GetEnvironmentStrings*(): LPWSTR{.stdcall, dynlib: "kernel32",
-      importc: "GetEnvironmentStringsW".}
-  proc FreeEnvironmentStrings*(para1: LPWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}
-  proc FormatMessage*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,
-                      dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD,
-                      Arguments: va_list): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "FormatMessageW".}
-  proc CreateMailslot*(lpName: LPCWSTR, nMaxMessageSize: DWORD,
-                       lReadTimeout: DWORD,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateMailslotW".}
-  proc lstrcmp*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,
-      dynlib: "kernel32", importc: "lstrcmpW".}
-  proc lstrcmpi*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,
-      dynlib: "kernel32", importc: "lstrcmpiW".}
-  proc lstrcpyn*(lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32): LPWSTR{.
-      stdcall, dynlib: "kernel32", importc: "lstrcpynW".}
-  proc lstrcpy*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,
-      dynlib: "kernel32", importc: "lstrcpyW".}
-  proc lstrcat*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,
-      dynlib: "kernel32", importc: "lstrcatW".}
-  proc lstrlen*(lpString: LPCWSTR): int32{.stdcall, dynlib: "kernel32",
-      importc: "lstrlenW".}
-  proc CreateMutex*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,
-                    bInitialOwner: WINBOOL, lpName: LPCWSTR): HANDLE{.stdcall,
-      dynlib: "kernel32", importc: "CreateMutexW".}
-  proc OpenMutex*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                  lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenMutexW".}
-  proc CreateEvent*(lpEventAttributes: LPSECURITY_ATTRIBUTES,
-                    bManualReset: WINBOOL, bInitialState: WINBOOL,
-                    lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "CreateEventW".}
-  proc OpenEvent*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                  lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenEventW".}
-  proc CreateSemaphore*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
-                        lInitialCount: LONG, lMaximumCount: LONG,
-                        lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "CreateSemaphoreW".}
-  proc OpenSemaphore*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                      lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenSemaphoreW".}
-  proc CreateFileMapping*(hFile: HANDLE,
-                          lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
-                          flProtect: DWORD, dwMaximumSizeHigh: DWORD,
-                          dwMaximumSizeLow: DWORD, lpName: LPCWSTR): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateFileMappingW".}
-  proc OpenFileMapping*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                        lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenFileMappingW".}
-  proc GetLogicalDriveStrings*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsW".}
-  proc LoadLibrary*(lpLibFileName: LPCWSTR): HINST{.stdcall, dynlib: "kernel32",
-      importc: "LoadLibraryW".}
-  proc LoadLibraryEx*(lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.
-      stdcall, dynlib: "kernel32", importc: "LoadLibraryExW".}
-  proc GetModuleFileName*(hModule: HINST, lpFilename: LPWSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetModuleFileNameW".}
-  proc GetModuleHandle*(lpModuleName: LPCWSTR): HMODULE{.stdcall,
-      dynlib: "kernel32", importc: "GetModuleHandleW".}
-  proc FatalAppExit*(uAction: UINT, lpMessageText: LPCWSTR){.stdcall,
-      dynlib: "kernel32", importc: "FatalAppExitW".}
-  proc GetCommandLine*(): LPWSTR{.stdcall, dynlib: "kernel32",
-                                  importc: "GetCommandLineW".}
-  proc GetEnvironmentVariable*(lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableW".}
-  proc SetEnvironmentVariable*(lpName: LPCWSTR, lpValue: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableW".}
-  proc ExpandEnvironmentStrings*(lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsW".}
-  proc OutputDebugString*(lpOutputString: LPCWSTR){.stdcall, dynlib: "kernel32",
-      importc: "OutputDebugStringW".}
-  proc FindResource*(hModule: HINST, lpName: LPCWSTR, lpType: LPCWSTR): HRSRC{.
-      stdcall, dynlib: "kernel32", importc: "FindResourceW".}
-  proc FindResourceEx*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,
-                       wLanguage: int16): HRSRC{.stdcall, dynlib: "kernel32",
-      importc: "FindResourceExW".}
-  proc EnumResourceTypes*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,
-                          lParam: LONG): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "EnumResourceTypesW".}
-  proc EnumResourceNames*(hModule: HINST, lpType: LPCWSTR,
-                          lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "EnumResourceNamesW".}
-  proc EnumResourceLanguages*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,
-                              lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesW".}
-  proc BeginUpdateResource*(pFileName: LPCWSTR,
-                            bDeleteExistingResources: WINBOOL): HANDLE{.stdcall,
-      dynlib: "kernel32", importc: "BeginUpdateResourceW".}
-  proc UpdateResource*(hUpdate: HANDLE, lpType: LPCWSTR, lpName: LPCWSTR,
-                       wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "UpdateResourceW".}
-  proc EndUpdateResource*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "EndUpdateResourceW".}
-  proc GlobalAddAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "GlobalAddAtomW".}
-  proc GlobalFindAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "GlobalFindAtomW".}
-  proc GlobalGetAtomName*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.
-      stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameW".}
-  proc AddAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "AddAtomW".}
-  proc FindAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "FindAtomW".}
-  proc GetAtomName*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetAtomNameW".}
-  proc GetProfileInt*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: WINT): UINT{.
-      stdcall, dynlib: "kernel32", importc: "GetProfileIntW".}
-  proc GetProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                         lpDefault: LPCWSTR, lpReturnedString: LPWSTR,
-                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "GetProfileStringW".}
-  proc WriteProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                           lpString: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "WriteProfileStringW".}
-  proc GetProfileSection*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,
-                          nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "GetProfileSectionW".}
-  proc WriteProfileSection*(lpAppName: LPCWSTR, lpString: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteProfileSectionW".}
-  proc GetPrivateProfileInt*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                             nDefault: WINT, lpFileName: LPCWSTR): UINT{.
-      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileIntW".}
-  proc GetPrivateProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                                lpDefault: LPCWSTR, lpReturnedString: LPWSTR,
-                                nSize: DWORD, lpFileName: LPCWSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringW".}
-  proc WritePrivateProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,
-                                  lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringW".}
-  proc GetPrivateProfileSection*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,
-                                 nSize: DWORD, lpFileName: LPCWSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionW".}
-  proc WritePrivateProfileSection*(lpAppName: LPCWSTR, lpString: LPCWSTR,
-                                   lpFileName: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "WritePrivateProfileSectionW".}
-  proc GetDriveType*(lpRootPathName: LPCWSTR): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetDriveTypeW".}
-  proc GetSystemDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetSystemDirectoryW".}
-  proc GetTempPath*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetTempPathW".}
-  proc GetTempFileName*(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR,
-                        uUnique: UINT, lpTempFileName: LPWSTR): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetTempFileNameW".}
-  proc GetWindowsDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetWindowsDirectoryW".}
-  proc SetCurrentDirectory*(lpPathName: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetCurrentDirectoryW".}
-  proc GetCurrentDirectory*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryW".}
-  proc GetDiskFreeSpace*(lpRootPathName: LPCWSTR, lpSectorsPerCluster: LPDWORD,
-                         lpBytesPerSector: LPDWORD,
-                         lpNumberOfFreeClusters: LPDWORD,
-                         lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}
-  proc CreateDirectory*(lpPathName: LPCWSTR,
-                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CreateDirectoryW".}
-  proc CreateDirectoryEx*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR,
-                          lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CreateDirectoryExW".}
-  proc RemoveDirectory*(lpPathName: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "RemoveDirectoryW".}
-  proc GetFullPathName*(lpFileName: LPCWSTR, nBufferLength: DWORD,
-                        lpBuffer: LPWSTR, lpFilePart: var LPWSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}
-  proc DefineDosDevice*(dwFlags: DWORD, lpDeviceName: LPCWSTR,
-                        lpTargetPath: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "DefineDosDeviceW".}
-  proc QueryDosDevice*(lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR,
-                       ucchMax: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "QueryDosDeviceW".}
-  proc CreateFile*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD,
-                   dwShareMode: DWORD,
-                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                   dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,
-                   hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "CreateFileW".}
-  proc SetFileAttributes*(lpFileName: LPCWSTR, dwFileAttributes: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}
-  proc GetFileAttributes*(lpFileName: LPCWSTR): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetFileAttributesW".}
-  proc GetCompressedFileSize*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeW".}
-  proc DeleteFile*(lpFileName: LPCWSTR): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "DeleteFileW".}
-  proc SearchPath*(lpPath: LPCWSTR, lpFileName: LPCWSTR, lpExtension: LPCWSTR,
-                   nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: LPWSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "SearchPathW".}
-  proc CopyFile*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,
-                 bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "CopyFileW".}
-  proc MoveFile*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "MoveFileW".}
-  proc MoveFileEx*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,
-                   dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "MoveFileExW".}
-  proc CreateNamedPipe*(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,
-                        nMaxInstances: DWORD, nOutBufferSize: DWORD,
-                        nInBufferSize: DWORD, nDefaultTimeOut: DWORD,
-                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}
-  proc GetNamedPipeHandleState*(hNamedPipe: HANDLE, lpState: LPDWORD,
-                                lpCurInstances: LPDWORD,
-                                lpMaxCollectionCount: LPDWORD,
-                                lpCollectDataTimeout: LPDWORD,
-                                lpUserName: LPWSTR, nMaxUserNameSize: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateW".}
-  proc CallNamedPipe*(lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID,
-                      nInBufferSize: DWORD, lpOutBuffer: LPVOID,
-                      nOutBufferSize: DWORD, lpBytesRead: LPDWORD,
-                      nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "CallNamedPipeW".}
-  proc WaitNamedPipe*(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WaitNamedPipeW".}
-  proc SetVolumeLabel*(lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetVolumeLabelW".}
-  proc GetVolumeInformation*(lpRootPathName: LPCWSTR,
-                             lpVolumeNameBuffer: LPWSTR, nVolumeNameSize: DWORD,
-                             lpVolumeSerialNumber: LPDWORD,
-                             lpMaximumComponentLength: LPDWORD,
-                             lpFileSystemFlags: LPDWORD,
-                             lpFileSystemNameBuffer: LPWSTR,
-                             nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetVolumeInformationW".}
-  proc ClearEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "ClearEventLogW".}
-  proc BackupEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "BackupEventLogW".}
-  proc OpenEventLog*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "OpenEventLogW".}
-  proc RegisterEventSource*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "RegisterEventSourceW".}
-  proc OpenBackupEventLog*(lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR): HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogW".}
-  proc ReadEventLog*(hEventLog: HANDLE, dwReadFlags: DWORD,
-                     dwRecordOffset: DWORD, lpBuffer: LPVOID,
-                     nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,
-                     pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ReadEventLogW".}
-  proc ReportEvent*(hEventLog: HANDLE, wType: int16, wCategory: int16,
-                    dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,
-                    dwDataSize: DWORD, lpStrings: LPPCWSTR, lpRawData: LPVOID): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "ReportEventW".}
-  proc AccessCheckAndAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                                 ObjectTypeName: LPWSTR, ObjectName: LPWSTR,
-                                 SecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 DesiredAccess: DWORD,
-                                 GenericMapping: PGENERIC_MAPPING,
-                                 ObjectCreation: WINBOOL,
-                                 GrantedAccess: LPDWORD, AccessStatus: LPBOOL,
-                                 pfGenerateOnClose: LPBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmW".}
-  proc ObjectOpenAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                             ObjectTypeName: LPWSTR, ObjectName: LPWSTR,
-                             pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                             ClientToken: HANDLE, DesiredAccess: DWORD,
-                             GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,
-                             ObjectCreation: WINBOOL, AccessGranted: WINBOOL,
-                             GenerateOnClose: LPBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}
-  proc ObjectPrivilegeAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                                  ClientToken: HANDLE, DesiredAccess: DWORD,
-                                  Privileges: PPRIVILEGE_SET,
-                                  AccessGranted: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}
-  proc ObjectCloseAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,
-                              GenerateOnClose: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ObjectCloseAuditAlarmW".}
-  proc PrivilegedServiceAuditAlarm*(SubsystemName: LPCWSTR,
-                                    ServiceName: LPCWSTR, ClientToken: HANDLE,
-                                    Privileges: PPRIVILEGE_SET,
-                                    AccessGranted: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}
-  proc SetFileSecurity*(lpFileName: LPCWSTR,
-                        SecurityInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "SetFileSecurityW".}
-  proc GetFileSecurity*(lpFileName: LPCWSTR,
-                        RequestedInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                        nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "GetFileSecurityW".}
-  proc FindFirstChangeNotification*(lpPathName: LPCWSTR, bWatchSubtree: WINBOOL,
-                                    dwNotifyFilter: DWORD): HANDLE{.stdcall,
-      dynlib: "kernel32", importc: "FindFirstChangeNotificationW".}
-  proc IsBadStringPtr*(lpsz: LPCWSTR, ucchMax: UINT): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "IsBadStringPtrW".}
-  proc LookupAccountSid*(lpSystemName: LPCWSTR, Sid: PSID, Name: LPWSTR,
-                         cbName: LPDWORD, ReferencedDomainName: LPWSTR,
-                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "LookupAccountSidW".}
-  proc LookupAccountName*(lpSystemName: LPCWSTR, lpAccountName: LPCWSTR,
-                          Sid: PSID, cbSid: LPDWORD,
-                          ReferencedDomainName: LPWSTR,
-                          cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "LookupAccountNameW".}
-  proc LookupPrivilegeValue*(lpSystemName: LPCWSTR, lpName: LPCWSTR,
-                             lpLuid: PLUID): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "LookupPrivilegeValueW".}
-  proc LookupPrivilegeName*(lpSystemName: LPCWSTR, lpLuid: PLUID,
-                            lpName: LPWSTR, cbName: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "LookupPrivilegeNameW".}
-  proc LookupPrivilegeDisplayName*(lpSystemName: LPCWSTR, lpName: LPCWSTR,
-                                   lpDisplayName: LPWSTR,
-                                   cbDisplayName: LPDWORD, lpLanguageId: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}
-  proc BuildCommDCB*(lpDef: LPCWSTR, lpDCB: LPDCB): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "BuildCommDCBW".}
-  proc BuildCommDCBAndTimeouts*(lpDef: LPCWSTR, lpDCB: LPDCB,
-                                lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}
-  proc CommConfigDialog*(lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}
-  proc GetDefaultCommConfig*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG,
-                             lpdwSize: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetDefaultCommConfigW".}
-  proc SetDefaultCommConfig*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG,
-                             dwSize: DWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetDefaultCommConfigW".}
-  proc GetComputerName*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetComputerNameW".}
-  proc SetComputerName*(lpComputerName: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetComputerNameW".}
-  proc GetUserName*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "GetUserNameW".}
-  proc LoadKeyboardLayout*(pwszKLID: LPCWSTR, Flags: UINT): HKL{.stdcall,
-      dynlib: "user32", importc: "LoadKeyboardLayoutW".}
-  proc GetKeyboardLayoutName*(pwszKLID: LPWSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GetKeyboardLayoutNameW".}
-  proc CreateDesktop*(lpszDesktop: LPWSTR, lpszDevice: LPWSTR,
-                      pDevmode: LPDEVMODE, dwFlags: DWORD,
-                      dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HDESK{.
-      stdcall, dynlib: "user32", importc: "CreateDesktopW".}
-  proc OpenDesktop*(lpszDesktop: LPWSTR, dwFlags: DWORD, fInherit: WINBOOL,
-                    dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",
-      importc: "OpenDesktopW".}
-  proc EnumDesktops*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,
-                     lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "EnumDesktopsW".}
-  proc CreateWindowStation*(lpwinsta: LPWSTR, dwReserved: DWORD,
-                            dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.
-      stdcall, dynlib: "user32", importc: "CreateWindowStationW".}
-  proc OpenWindowStation*(lpszWinSta: LPWSTR, fInherit: WINBOOL,
-                          dwDesiredAccess: DWORD): HWINSTA{.stdcall,
-      dynlib: "user32", importc: "OpenWindowStationW".}
-  proc EnumWindowStations*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "EnumWindowStationsW".}
-  proc GetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                 nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}
-  proc SetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                 nLength: DWORD): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetUserObjectInformationW".}
-  proc RegisterWindowMessage*(lpString: LPCWSTR): UINT{.stdcall,
-      dynlib: "user32", importc: "RegisterWindowMessageW".}
-  proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                   wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "GetMessageW".}
-  proc DispatchMessage*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",
-      importc: "DispatchMessageW".}
-  proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                    wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "PeekMessageW".}
-  proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "SendMessageW".}
-  proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM,
-                           lParam: LPARAM, fuFlags: UINT, uTimeout: UINT,
-                           lpdwResult: LPDWORD): LRESULT{.stdcall,
-      dynlib: "user32", importc: "SendMessageTimeoutW".}
-  proc SendNotifyMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "SendNotifyMessageW".}
-  proc SendMessageCallback*(hWnd: HWND, Msg: UINT, wParam: WPARAM,
-                            lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,
-                            dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "SendMessageCallbackW".}
-  proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "PostMessageW".}
-  proc PostThreadMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM,
-                          lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "PostThreadMessageW".}
-  proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "DefWindowProcW".}
-  proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,
-                       wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,
-      dynlib: "user32", importc: "CallWindowProcW".}
-  proc RegisterClass*(lpWndClass: LPWNDCLASS): ATOM{.stdcall, dynlib: "user32",
-      importc: "RegisterClassW".}
-  proc UnregisterClass*(lpClassName: LPCWSTR, hInstance: HINST): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "UnregisterClassW".}
-  proc GetClassInfo*(hInstance: HINST, lpClassName: LPCWSTR,
-                     lpWndClass: LPWNDCLASS): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GetClassInfoW".}
-  proc RegisterClassEx*(para1: LPWNDCLASSEXW): ATOM{.stdcall, dynlib: "user32",
-      importc: "RegisterClassExW".}
-  proc GetClassInfoEx*(para1: HINST, para2: LPCWSTR, para3: LPWNDCLASSEX): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "GetClassInfoExW".}
-  proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCWSTR,
-                       lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32,
-                       Y: int32, nWidth: int32, nHeight: int32,
-                       hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                       lpParam: LPVOID): HWND{.stdcall, dynlib: "user32",
-      importc: "CreateWindowExW".}
-  proc CreateDialogParam*(hInstance: HINST, lpTemplateName: LPCWSTR,
-                          hWndParent: HWND, lpDialogFunc: DLGPROC,
-                          dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",
-      importc: "CreateDialogParamW".}
-  proc CreateDialogIndirectParam*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                                  hWndParent: HWND, lpDialogFunc: DLGPROC,
-                                  dwInitParam: LPARAM): HWND{.stdcall,
-      dynlib: "user32", importc: "CreateDialogIndirectParamW".}
-  proc DialogBoxParam*(hInstance: HINST, lpTemplateName: LPCWSTR,
-                       hWndParent: HWND, lpDialogFunc: DLGPROC,
-                       dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",
-      importc: "DialogBoxParamW".}
-  proc DialogBoxIndirectParam*(hInstance: HINST,
-                               hDialogTemplate: LPCDLGTEMPLATE,
-                               hWndParent: HWND, lpDialogFunc: DLGPROC,
-                               dwInitParam: LPARAM): int32{.stdcall,
-      dynlib: "user32", importc: "DialogBoxIndirectParamW".}
-  proc SetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "SetDlgItemTextW".}
-  proc GetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR,
-                       nMaxCount: int32): UINT{.stdcall, dynlib: "user32",
-      importc: "GetDlgItemTextW".}
-  proc SendDlgItemMessage*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,
-                           wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,
-      dynlib: "user32", importc: "SendDlgItemMessageW".}
-  proc DefDlgProc*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "DefDlgProcW".}
-  proc CallMsgFilter*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "CallMsgFilterW".}
-  proc RegisterClipboardFormat*(lpszFormat: LPCWSTR): UINT{.stdcall,
-      dynlib: "user32", importc: "RegisterClipboardFormatW".}
-  proc GetClipboardFormatName*(format: UINT, lpszFormatName: LPWSTR,
-                               cchMaxCount: int32): int32{.stdcall,
-      dynlib: "user32", importc: "GetClipboardFormatNameW".}
-  proc CharToOem*(lpszSrc: LPCWSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "CharToOemW".}
-  proc OemToChar*(lpszSrc: LPCSTR, lpszDst: LPWSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "OemToCharW".}
-  proc CharToOemBuff*(lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "CharToOemBuffW".}
-  proc OemToCharBuff*(lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "OemToCharBuffW".}
-  proc CharUpper*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",
-      importc: "CharUpperW".}
-  proc CharUpperBuff*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,
-      dynlib: "user32", importc: "CharUpperBuffW".}
-  proc CharLower*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",
-      importc: "CharLowerW".}
-  proc CharLowerBuff*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,
-      dynlib: "user32", importc: "CharLowerBuffW".}
-  proc CharNext*(lpsz: LPCWSTR): LPWSTR{.stdcall, dynlib: "user32",
-      importc: "CharNextW".}
-  proc CharPrev*(lpszStart: LPCWSTR, lpszCurrent: LPCWSTR): LPWSTR{.stdcall,
-      dynlib: "user32", importc: "CharPrevW".}
-  proc IsCharAlpha*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "IsCharAlphaW".}
-  proc IsCharAlphaNumeric*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "IsCharAlphaNumericW".}
-  proc IsCharUpper*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "IsCharUpperW".}
-  proc IsCharLower*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "IsCharLowerW".}
-  proc GetKeyNameText*(lParam: LONG, lpString: LPWSTR, nSize: int32): int32{.
-      stdcall, dynlib: "user32", importc: "GetKeyNameTextW".}
-  proc VkKeyScan*(ch: WCHAR): SHORT{.stdcall, dynlib: "user32",
-                                     importc: "VkKeyScanW".}
-  proc VkKeyScanEx*(ch: WCHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",
-      importc: "VkKeyScanExW".}
-  proc MapVirtualKey*(uCode: UINT, uMapType: UINT): UINT{.stdcall,
-      dynlib: "user32", importc: "MapVirtualKeyW".}
-  proc MapVirtualKeyEx*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,
-      dynlib: "user32", importc: "MapVirtualKeyExW".}
-  proc LoadAccelerators*(hInstance: HINST, lpTableName: LPCWSTR): HACCEL{.
-      stdcall, dynlib: "user32", importc: "LoadAcceleratorsW".}
-  proc CreateAcceleratorTable*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,
-      dynlib: "user32", importc: "CreateAcceleratorTableW".}
-  proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,
-                             cAccelEntries: int32): int32{.stdcall,
-      dynlib: "user32", importc: "CopyAcceleratorTableW".}
-  proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.
-      stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}
-  proc LoadMenu*(hInstance: HINST, lpMenuName: LPCWSTR): HMENU{.stdcall,
-      dynlib: "user32", importc: "LoadMenuW".}
-  proc LoadMenuIndirect*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,
-      dynlib: "user32", importc: "LoadMenuIndirectW".}
-  proc ChangeMenu*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR,
-                   cmdInsert: UINT, flags: UINT): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "ChangeMenuW".}
-  proc GetMenuString*(hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR,
-                      nMaxCount: int32, uFlag: UINT): int32{.stdcall,
-      dynlib: "user32", importc: "GetMenuStringW".}
-  proc InsertMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT,
-                   uIDNewItem: UINT, lpNewItem: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "InsertMenuW".}
-  proc AppendMenu*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,
-                   lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "AppendMenuW".}
-  proc ModifyMenu*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,
-                   lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "ModifyMenuW".}
-  proc InsertMenuItem*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "InsertMenuItemW".}
-  proc GetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                        para4: LPMENUITEMINFO): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GetMenuItemInfoW".}
-  proc SetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                        para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetMenuItemInfoW".}
-  proc DrawText*(hDC: HDC, lpString: LPCWSTR, nCount: int32, lpRect: LPRECT,
-                 uFormat: UINT): int32{.stdcall, dynlib: "user32",
-                                        importc: "DrawTextW".}
-  proc DrawTextEx*(para1: HDC, para2: LPWSTR, para3: int32, para4: LPRECT,
-                   para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,
-      dynlib: "user32", importc: "DrawTextExW".}
-  proc GrayString*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,
-                   lpData: LPARAM, nCount: int32, X: int32, Y: int32,
-                   nWidth: int32, nHeight: int32): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GrayStringW".}
-  proc DrawState*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC,
-                  para4: LPARAM, para5: WPARAM, para6: int32, para7: int32,
-                  para8: int32, para9: int32, para10: UINT): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "DrawStateW".}
-  proc TabbedTextOut*(hDC: HDC, X: int32, Y: int32, lpString: LPCWSTR,
-                      nCount: int32, nTabPositions: int32,
-                      lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.
-      stdcall, dynlib: "user32", importc: "TabbedTextOutW".}
-  proc GetTabbedTextExtent*(hDC: HDC, lpString: LPCWSTR, nCount: int32,
-                            nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.
-      stdcall, dynlib: "user32", importc: "GetTabbedTextExtentW".}
-  proc SetProp*(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetPropW".}
-  proc GetProp*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,
-      dynlib: "user32", importc: "GetPropW".}
-  proc RemoveProp*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,
-      dynlib: "user32", importc: "RemovePropW".}
-  proc EnumPropsEx*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.
-      stdcall, dynlib: "user32", importc: "EnumPropsExW".}
-  proc EnumProps*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,
-      dynlib: "user32", importc: "EnumPropsW".}
-  proc SetWindowText*(hWnd: HWND, lpString: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetWindowTextW".}
-  proc GetWindowText*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32{.
-      stdcall, dynlib: "user32", importc: "GetWindowTextW".}
-  proc GetWindowTextLength*(hWnd: HWND): int32{.stdcall, dynlib: "user32",
-      importc: "GetWindowTextLengthW".}
-  proc MessageBox*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32{.
-      stdcall, dynlib: "user32", importc: "MessageBoxW".}
-  proc MessageBoxEx*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR,
-                     uType: UINT, wLanguageId: int16): int32{.stdcall,
-      dynlib: "user32", importc: "MessageBoxExW".}
-  proc MessageBoxIndirect*(para1: LPMSGBOXPARAMS): int32{.stdcall,
-      dynlib: "user32", importc: "MessageBoxIndirectW".}
-  proc GetWindowLong*(hWnd: HWND, nIndex: int32): LONG{.stdcall,
-      dynlib: "user32", importc: "GetWindowLongW".}
-  proc SetWindowLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.
-      stdcall, dynlib: "user32", importc: "SetWindowLongW".}
-  proc GetClassLong*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,
-      dynlib: "user32", importc: "GetClassLongW".}
-  proc SetClassLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.
-      stdcall, dynlib: "user32", importc: "SetClassLongW".}
-  when defined(cpu64):
-    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetWindowLongPtrW".}
-    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}
-    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetClassLongPtrW".}
-    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetClassLongPtrW".}
-  else:
-    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetWindowLongW".}
-    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetWindowLongW".}
-    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetClassLongW".}
-    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetClassLongW".}
-  proc FindWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND{.stdcall,
-      dynlib: "user32", importc: "FindWindowW".}
-  proc FindWindowEx*(para1: HWND, para2: HWND, para3: LPCWSTR, para4: LPCWSTR): HWND{.
-      stdcall, dynlib: "user32", importc: "FindWindowExW".}
-  proc GetClassName*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32{.
-      stdcall, dynlib: "user32", importc: "GetClassNameW".}
-  proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,
-                         dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",
-      importc: "SetWindowsHookExW".}
-  proc LoadBitmap*(hInstance: HINST, lpBitmapName: LPCWSTR): HBITMAP{.stdcall,
-      dynlib: "user32", importc: "LoadBitmapW".}
-  proc LoadCursor*(hInstance: HINST, lpCursorName: LPCWSTR): HCURSOR{.stdcall,
-      dynlib: "user32", importc: "LoadCursorW".}
-  proc LoadCursorFromFile*(lpFileName: LPCWSTR): HCURSOR{.stdcall,
-      dynlib: "user32", importc: "LoadCursorFromFileW".}
-  proc LoadIcon*(hInstance: HINST, lpIconName: LPCWSTR): HICON{.stdcall,
-      dynlib: "user32", importc: "LoadIconW".}
-  proc LoadImage*(para1: HINST, para2: LPCWSTR, para3: UINT, para4: int32,
-                  para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",
-      importc: "LoadImageW".}
-  proc LoadString*(hInstance: HINST, uID: UINT, lpBuffer: LPWSTR,
-                   nBufferMax: int32): int32{.stdcall, dynlib: "user32",
-      importc: "LoadStringW".}
-  proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "IsDialogMessageW".}
-  proc DlgDirList*(hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: int32,
-                   nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,
-      dynlib: "user32", importc: "DlgDirListW".}
-  proc DlgDirSelectEx*(hDlg: HWND, lpString: LPWSTR, nCount: int32,
-                       nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "DlgDirSelectExW".}
-  proc DlgDirListComboBox*(hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: int32,
-                           nIDStaticPath: int32, uFiletype: UINT): int32{.
-      stdcall, dynlib: "user32", importc: "DlgDirListComboBoxW".}
-  proc DlgDirSelectComboBoxEx*(hDlg: HWND, lpString: LPWSTR, nCount: int32,
-                               nIDComboBox: int32): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "DlgDirSelectComboBoxExW".}
-  proc DefFrameProc*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT,
-                     wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,
-      dynlib: "user32", importc: "DefFrameProcW".}
-  proc DefMDIChildProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "DefMDIChildProcW".}
-  proc CreateMDIWindow*(lpClassName: LPWSTR, lpWindowName: LPWSTR,
-                        dwStyle: DWORD, X: int32, Y: int32, nWidth: int32,
-                        nHeight: int32, hWndParent: HWND, hInstance: HINST,
-                        lParam: LPARAM): HWND{.stdcall, dynlib: "user32",
-      importc: "CreateMDIWindowW".}
-  proc WinHelp*(hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "WinHelpW".}
-  proc ChangeDisplaySettings*(lpDevMode: LPDEVMODE, dwFlags: DWORD): LONG{.
-      stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}
-  proc EnumDisplaySettings*(lpszDeviceName: LPCWSTR, iModeNum: DWORD,
-                            lpDevMode: LPDEVMODEW): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "EnumDisplaySettingsW".}
-  proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,
-                             fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "SystemParametersInfoW".}
-  proc AddFontResource*(para1: LPCWSTR): int32{.stdcall, dynlib: "gdi32",
-      importc: "AddFontResourceW".}
-  proc CopyMetaFile*(para1: HMETAFILE, para2: LPCWSTR): HMETAFILE{.stdcall,
-      dynlib: "gdi32", importc: "CopyMetaFileW".}
-  proc CreateFontIndirect*(para1: PLOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-      importc: "CreateFontIndirectW".}
-  proc CreateFontIndirect*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-      importc: "CreateFontIndirectW".}
-  proc CreateFont*(para1: int32, para2: int32, para3: int32, para4: int32,
-                   para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,
-                   para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,
-                   para13: DWORD, para14: LPCWSTR): HFONT{.stdcall,
-      dynlib: "gdi32", importc: "CreateFontW".}
-  proc CreateIC*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR,
-                 para4: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",
-      importc: "CreateICW".}
-  proc CreateMetaFile*(para1: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",
-      importc: "CreateMetaFileW".}
-  proc CreateScalableFontResource*(para1: DWORD, para2: LPCWSTR, para3: LPCWSTR,
-                                   para4: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "CreateScalableFontResourceW".}
-  proc EnumFontFamiliesEx*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,
-                           para4: LPARAM, para5: DWORD): int32{.stdcall,
-      dynlib: "gdi32", importc: "EnumFontFamiliesExW".}
-  proc EnumFontFamilies*(para1: HDC, para2: LPCWSTR, para3: FONTENUMPROC,
-                         para4: LPARAM): int32{.stdcall, dynlib: "gdi32",
-      importc: "EnumFontFamiliesW".}
-  proc EnumFonts*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC,
-                  para4: LPARAM): int32{.stdcall, dynlib: "gdi32",
-      importc: "EnumFontsW".}
-  proc EnumFonts*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC,
-                  para4: pointer): int32{.stdcall, dynlib: "gdi32",
-      importc: "EnumFontsW".}
-  proc GetCharWidth*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}
-  proc GetCharWidth32*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharWidth32W".}
-  proc GetCharWidthFloat*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}
-  proc GetCharABCWidths*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}
-  proc GetCharABCWidthsFloat*(para1: HDC, para2: UINT, para3: UINT,
-                              para4: LPABCFLOAT): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}
-  proc GetGlyphOutline*(para1: HDC, para2: UINT, para3: UINT,
-                        para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,
-                        para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",
-      importc: "GetGlyphOutlineW".}
-  proc GetMetaFile*(para1: LPCWSTR): HMETAFILE{.stdcall, dynlib: "gdi32",
-      importc: "GetMetaFileW".}
-  proc GetOutlineTextMetrics*(para1: HDC, para2: UINT,
-                              para3: LPOUTLINETEXTMETRIC): UINT{.stdcall,
-      dynlib: "gdi32", importc: "GetOutlineTextMetricsW".}
-  proc GetTextExtentPoint*(para1: HDC, para2: LPCWSTR, para3: int32,
-                           para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetTextExtentPointW".}
-  proc GetTextExtentPoint32*(para1: HDC, para2: LPCWSTR, para3: int32,
-                             para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetTextExtentPoint32W".}
-  proc GetTextExtentExPoint*(para1: HDC, para2: LPCWSTR, para3: int32,
-                             para4: int32, para5: LPINT, para6: LPINT,
-                             para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetTextExtentExPointW".}
-  proc GetCharacterPlacement*(para1: HDC, para2: LPCWSTR, para3: int32,
-                              para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.
-      stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementW".}
-  proc ResetDC*(para1: HDC, para2: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",
-      importc: "ResetDCW".}
-  proc RemoveFontResource*(para1: LPCWSTR): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "RemoveFontResourceW".}
-  proc CopyEnhMetaFile*(para1: HENHMETAFILE, para2: LPCWSTR): HENHMETAFILE{.
-      stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileW".}
-  proc CreateEnhMetaFile*(para1: HDC, para2: LPCWSTR, para3: LPRECT,
-                          para4: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",
-      importc: "CreateEnhMetaFileW".}
-  proc GetEnhMetaFile*(para1: LPCWSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",
-      importc: "GetEnhMetaFileW".}
-  proc GetEnhMetaFileDescription*(para1: HENHMETAFILE, para2: UINT,
-                                  para3: LPWSTR): UINT{.stdcall,
-      dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionW".}
-  proc GetTextMetrics*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "GetTextMetricsW".}
-  proc StartDoc*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",
-      importc: "StartDocW".}
-  proc GetObject*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,
-      dynlib: "gdi32", importc: "GetObjectW".}
-  proc TextOut*(para1: HDC, para2: int32, para3: int32, para4: LPCWSTR,
-                para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-                                        importc: "TextOutW".}
-  proc ExtTextOut*(para1: HDC, para2: int32, para3: int32, para4: UINT,
-                   para5: LPRECT, para6: LPCWSTR, para7: UINT, para8: LPINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}
-  proc PolyTextOut*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}
-  proc GetTextFace*(para1: HDC, para2: int32, para3: LPWSTR): int32{.stdcall,
-      dynlib: "gdi32", importc: "GetTextFaceW".}
-  proc GetKerningPairs*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.
-      stdcall, dynlib: "gdi32", importc: "GetKerningPairsW".}
-  proc GetLogColorSpace*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE,
-                         para3: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetLogColorSpaceW".}
-  proc CreateColorSpace*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,
-      dynlib: "gdi32", importc: "CreateColorSpaceW".}
-  proc GetICMProfile*(para1: HDC, para2: DWORD, para3: LPWSTR): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetICMProfileW".}
-  proc SetICMProfile*(para1: HDC, para2: LPWSTR): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "SetICMProfileW".}
-  proc UpdateICMRegKey*(para1: DWORD, para2: DWORD, para3: LPWSTR, para4: UINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyW".}
-  proc EnumICMProfiles*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.
-      stdcall, dynlib: "gdi32", importc: "EnumICMProfilesW".}
-  proc CreatePropertySheetPage*(lppsp: LPCPROPSHEETPAGE): HPROPSHEETPAGE{.
-      stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageW".}
-  proc PropertySheet*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,
-      dynlib: "comctl32", importc: "PropertySheetW".}
-  proc ImageList_LoadImage*(hi: HINST, lpbmp: LPCWSTR, cx: int32, cGrow: int32,
-                            crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.
-      stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageW".}
-  proc CreateStatusWindow*(style: LONG, lpszText: LPCWSTR, hwndParent: HWND,
-                           wID: UINT): HWND{.stdcall, dynlib: "comctl32",
-      importc: "CreateStatusWindowW".}
-  proc DrawStatusText*(hDC: HDC, lprc: LPRECT, pszText: LPCWSTR, uFlags: UINT){.
-      stdcall, dynlib: "comctl32", importc: "DrawStatusTextW".}
-  proc GetOpenFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-      dynlib: "comdlg32", importc: "GetOpenFileNameW".}
-  proc GetSaveFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-      dynlib: "comdlg32", importc: "GetSaveFileNameW".}
-  proc GetFileTitle*(para1: LPCWSTR, para2: LPWSTR, para3: int16): int{.stdcall,
-      dynlib: "comdlg32", importc: "GetFileTitleW".}
-  proc ChooseColor*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",
-      importc: "ChooseColorW".}
-  proc ReplaceText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-      importc: "ReplaceTextW".}
-  proc ChooseFont*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",
-      importc: "ChooseFontW".}
-  proc FindText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-      importc: "FindTextW".}
-  proc PrintDlg*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",
-      importc: "PrintDlgW".}
-  proc PageSetupDlg*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,
-      dynlib: "comdlg32", importc: "PageSetupDlgW".}
-  proc CreateProcess*(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR,
-                      lpProcessAttributes: LPSECURITY_ATTRIBUTES,
-                      lpThreadAttributes: LPSECURITY_ATTRIBUTES,
-                      bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                      lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR,
-                      lpStartupInfo: LPSTARTUPINFO,
-                      lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CreateProcessW".}
-  proc GetStartupInfo*(lpStartupInfo: LPSTARTUPINFO){.stdcall,
-      dynlib: "kernel32", importc: "GetStartupInfoW".}
-  proc FindFirstFile*(lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATA): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}
-  proc FindNextFile*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATA): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "FindNextFileW".}
-  proc GetVersionEx*(VersionInformation: LPOSVERSIONINFOW): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetVersionExW".}
-  proc GetVersionExW*(VersionInformation: LPOSVERSIONINFOW): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetVersionExW".}
-  proc CreateWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR,
-                     dwStyle: DWORD, X: int32, Y: int32, nWidth: int32,
-                     nHeight: int32, hWndParent: HWND, hMenu: HMENU,
-                     hInstance: HINST, lpParam: LPVOID): HWND
-  proc CreateDialog*(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,
-                     lpDialogFunc: DLGPROC): HWND
-  proc CreateDialogIndirect*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                             hWndParent: HWND, lpDialogFunc: DLGPROC): HWND
-  proc DialogBox*(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,
-                  lpDialogFunc: DLGPROC): int32
-  proc DialogBoxIndirect*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                          hWndParent: HWND, lpDialogFunc: DLGPROC): int32
-  proc CreateDC*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR, para4: pDEVMODE): HDC{.
-      stdcall, dynlib: "gdi32", importc: "CreateDCW".}
-  proc VerInstallFile*(uFlags: DWORD, szSrcFileName: LPWSTR,
-                       szDestFileName: LPWSTR, szSrcDir: LPWSTR,
-                       szDestDir: LPWSTR, szCurDir: LPWSTR, szTmpFile: LPWSTR,
-                       lpuTmpFileLen: PUINT): DWORD{.stdcall, dynlib: "version",
-      importc: "VerInstallFileW".}
-  proc GetFileVersionInfoSize*(lptstrFilename: LPWSTR, lpdwHandle: LPDWORD): DWORD{.
-      stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}
-  proc GetFileVersionInfo*(lptstrFilename: LPWSTR, dwHandle: DWORD,
-                           dwLen: DWORD, lpData: LPVOID): WINBOOL{.stdcall,
-      dynlib: "version", importc: "GetFileVersionInfoW".}
-  proc VerLanguageName*(wLang: DWORD, szLang: LPWSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "VerLanguageNameW".}
-  proc VerQueryValue*(pBlock: LPVOID, lpSubBlock: LPWSTR, lplpBuffer: LPVOID,
-                      puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",
-      importc: "VerQueryValueW".}
-  proc VerFindFile*(uFlags: DWORD, szFileName: LPWSTR, szWinDir: LPWSTR,
-                    szAppDir: LPWSTR, szCurDir: LPWSTR, lpuCurDirLen: PUINT,
-                    szDestDir: LPWSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,
-      dynlib: "version", importc: "VerFindFileW".}
-  proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD,
-                      dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}
-  proc RegUnLoadKey*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegUnLoadKeyW".}
-  proc InitiateSystemShutdown*(lpMachineName: LPWSTR, lpMessage: LPWSTR,
-                               dwTimeout: DWORD, bForceAppsClosed: WINBOOL,
-                               bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "InitiateSystemShutdownW".}
-  proc AbortSystemShutdown*(lpMachineName: LPWSTR): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "AbortSystemShutdownW".}
-  proc RegRestoreKey*(hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegRestoreKeyW".}
-  proc RegSaveKey*(hKey: HKEY, lpFile: LPCWSTR,
-                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegSaveKeyW".}
-  proc RegSetValue*(hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD,
-                    lpData: LPCWSTR, cbData: DWORD): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegSetValueW".}
-  proc RegQueryValue*(hKey: HKEY, lpSubKey: LPCWSTR, lpValue: LPWSTR,
-                      lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",
-      importc: "RegQueryValueW".}
-  proc RegQueryMultipleValues*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,
-                               lpValueBuf: LPWSTR, ldwTotsize: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}
-  proc RegQueryValueEx*(hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD,
-                        lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegQueryValueExW".}
-  proc RegReplaceKey*(hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR,
-                      lpOldFile: LPCWSTR): LONG{.stdcall, dynlib: "advapi32",
-      importc: "RegReplaceKeyW".}
-  proc RegConnectRegistry*(lpMachineName: LPWSTR, hKey: HKEY, phkResult: PHKEY): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}
-  proc RegCreateKey*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}
-  proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD,
-                       lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                       phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}
-  proc RegDeleteKey*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegDeleteKeyW".}
-  proc RegDeleteValue*(hKey: HKEY, lpValueName: LPCWSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegDeleteValueW".}
-  proc RegEnumKey*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cbName: DWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegEnumKeyW".}
-  proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR,
-                     lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR,
-                     lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}
-  proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR,
-                     lpcbValueName: LPDWORD, lpReserved: LPDWORD,
-                     lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}
-  proc RegLoadKey*(hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegLoadKeyW".}
-  proc RegOpenKey*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}
-  proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD,
-                     samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegOpenKeyExW".}
-  proc RegQueryInfoKey*(hKey: HKEY, lpClass: LPWSTR, lpcbClass: LPDWORD,
-                        lpReserved: LPDWORD, lpcSubKeys: LPDWORD,
-                        lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,
-                        lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,
-                        lpcbMaxValueLen: LPDWORD,
-                        lpcbSecurityDescriptor: LPDWORD,
-                        lpftLastWriteTime: PFILETIME): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegQueryInfoKeyW".}
-  proc CompareString*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCWSTR,
-                      cchCount1: int32, lpString2: LPCWSTR, cchCount2: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "CompareStringW".}
-  proc LCMapString*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR,
-                    cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "LCMapStringW".}
-  proc GetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR,
-                      cchData: int32): int32{.stdcall, dynlib: "kernel32",
-      importc: "GetLocaleInfoW".}
-  proc SetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetLocaleInfoW".}
-  proc GetTimeFormat*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,
-                      lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "GetTimeFormatW".}
-  proc GetDateFormat*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,
-                      lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "GetDateFormatW".}
-  proc GetNumberFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,
-                        lpFormat: PNUMBERFMT, lpNumberStr: LPWSTR,
-                        cchNumber: int32): int32{.stdcall, dynlib: "kernel32",
-      importc: "GetNumberFormatW".}
-  proc GetCurrencyFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,
-                          lpFormat: PCURRENCYFMT, lpCurrencyStr: LPWSTR,
-                          cchCurrency: int32): int32{.stdcall,
-      dynlib: "kernel32", importc: "GetCurrencyFormatW".}
-  proc EnumCalendarInfo*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,
-                         Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "EnumCalendarInfoW".}
-  proc EnumTimeFormats*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,
-                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "EnumTimeFormatsW".}
-  proc EnumDateFormats*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,
-                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "EnumDateFormatsW".}
-  proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWSTR,
-                        cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetStringTypeExW".}
-  proc GetStringType*(dwInfoType: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,
-                      lpCharType: LPWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "GetStringTypeW".}
-  proc FoldString*(dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,
-                   lpDestStr: LPWSTR, cchDest: int32): int32{.stdcall,
-      dynlib: "kernel32", importc: "FoldStringW".}
-  proc EnumSystemLocales*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesW".}
-  proc EnumSystemCodePages*(lpCodePageEnumProc: CODEPAGE_ENUMPROC,
-                            dwFlags: DWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "EnumSystemCodePagesW".}
-  proc PeekConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}
-  proc ReadConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}
-  proc WriteConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                          nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}
-  proc ReadConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                          dwBufferSize: COORD, dwBufferCoord: COORD,
-                          lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "ReadConsoleOutputW".}
-  proc WriteConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                           dwBufferSize: COORD, dwBufferCoord: COORD,
-                           lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "WriteConsoleOutputW".}
-  proc ReadConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPWSTR,
-                                   nLength: DWORD, dwReadCoord: COORD,
-                                   lpNumberOfCharsRead: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}
-  proc WriteConsoleOutputCharacter*(hConsoleOutput: HANDLE,
-                                    lpCharacter: LPCWSTR, nLength: DWORD,
-                                    dwWriteCoord: COORD,
-                                    lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}
-  proc FillConsoleOutputCharacter*(hConsoleOutput: HANDLE, cCharacter: WCHAR,
-                                   nLength: DWORD, dwWriteCoord: COORD,
-                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}
-  proc ScrollConsoleScreenBuffer*(hConsoleOutput: HANDLE,
-                                  lpScrollRectangle: PSMALL_RECT,
-                                  lpClipRectangle: PSMALL_RECT,
-                                  dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}
-  proc GetConsoleTitle*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetConsoleTitleW".}
-  proc SetConsoleTitle*(lpConsoleTitle: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetConsoleTitleW".}
-  proc ReadConsole*(hConsoleInput: HANDLE, lpBuffer: LPVOID,
-                    nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,
-                    lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "ReadConsoleW".}
-  proc WriteConsole*(hConsoleOutput: HANDLE, lpBuffer: pointer,
-                     nNumberOfCharsToWrite: DWORD,
-                     lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}
-  proc WNetAddConnection*(lpRemoteName: LPCWSTR, lpPassword: LPCWSTR,
-                          lpLocalName: LPCWSTR): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetAddConnectionW".}
-  proc WNetAddConnection2*(lpNetResource: LPNETRESOURCE, lpPassword: LPCWSTR,
-                           lpUserName: LPCWSTR, dwFlags: DWORD): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetAddConnection2W".}
-  proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                           lpPassword: LPCWSTR, lpUserName: LPCWSTR,
-                           dwFlags: DWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetAddConnection3W".}
-  proc WNetCancelConnection*(lpName: LPCWSTR, fForce: WINBOOL): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetCancelConnectionW".}
-  proc WNetCancelConnection2*(lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetCancelConnection2W".}
-  proc WNetGetConnection*(lpLocalName: LPCWSTR, lpRemoteName: LPWSTR,
-                          lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetGetConnectionW".}
-  proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                          lpUserID: LPCWSTR, lpPassword: LPCWSTR,
-                          dwFlags: DWORD, lpAccessName: LPWSTR,
-                          lpBufferSize: LPDWORD, lpResult: LPDWORD): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetUseConnectionW".}
-  proc WNetSetConnection*(lpName: LPCWSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetSetConnectionW".}
-  proc WNetConnectionDialog1*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1W".}
-  proc WNetDisconnectDialog1*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetDisconnectDialog1W".}
-  proc WNetOpenEnum*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,
-                     lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetOpenEnumW".}
-  proc WNetEnumResource*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,
-                         lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetEnumResourceW".}
-  proc WNetGetUniversalName*(lpLocalPath: LPCWSTR, dwInfoLevel: DWORD,
-                             lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}
-  proc WNetGetUser*(lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetGetUserW".}
-  proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: LPWSTR,
-                            lpBufferSize: LPDWORD): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetGetProviderNameW".}
-  proc WNetGetNetworkInformation*(lpProvider: LPCWSTR,
-                                  lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}
-  proc WNetGetLastError*(lpError: LPDWORD, lpErrorBuf: LPWSTR,
-                         nErrorBufSize: DWORD, lpNameBuf: LPWSTR,
-                         nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetGetLastErrorW".}
-  proc MultinetGetConnectionPerformance*(lpNetResource: LPNETRESOURCE,
-      lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,
-      dynlib: "mpr", importc: "MultinetGetConnectionPerformanceW".}
-  proc ChangeServiceConfig*(hService: SC_HANDLE, dwServiceType: DWORD,
-                            dwStartType: DWORD, dwErrorControl: DWORD,
-                            lpBinaryPathName: LPCWSTR,
-                            lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD,
-                            lpDependencies: LPCWSTR,
-                            lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR,
-                            lpDisplayName: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ChangeServiceConfigW".}
-  proc CreateService*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,
-                      lpDisplayName: LPCWSTR, dwDesiredAccess: DWORD,
-                      dwServiceType: DWORD, dwStartType: DWORD,
-                      dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR,
-                      lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD,
-                      lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR,
-                      lpPassword: LPCWSTR): SC_HANDLE{.stdcall,
-      dynlib: "advapi32", importc: "CreateServiceW".}
-  proc EnumDependentServices*(hService: SC_HANDLE, dwServiceState: DWORD,
-                              lpServices: LPENUM_SERVICE_STATUS,
-                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,
-                              lpServicesReturned: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "EnumDependentServicesW".}
-  proc EnumServicesStatus*(hSCManager: SC_HANDLE, dwServiceType: DWORD,
-                           dwServiceState: DWORD,
-                           lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,
-                           pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,
-                           lpResumeHandle: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "EnumServicesStatusW".}
-  proc GetServiceKeyName*(hSCManager: SC_HANDLE, lpDisplayName: LPCWSTR,
-                          lpServiceName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameW".}
-  proc GetServiceDisplayName*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,
-                              lpDisplayName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameW".}
-  proc OpenSCManager*(lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR,
-                      dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-      dynlib: "advapi32", importc: "OpenSCManagerW".}
-  proc OpenService*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,
-                    dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-      dynlib: "advapi32", importc: "OpenServiceW".}
-  proc QueryServiceConfig*(hService: SC_HANDLE,
-                           lpServiceConfig: LPQUERY_SERVICE_CONFIG,
-                           cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "QueryServiceConfigW".}
-  proc QueryServiceLockStatus*(hSCManager: SC_HANDLE,
-                               lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,
-                               cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusW".}
-  proc RegisterServiceCtrlHandler*(lpServiceName: LPCWSTR,
-                                   lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerW".}
-  proc StartServiceCtrlDispatcher*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherW".}
-  proc StartService*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,
-                     lpServiceArgVectors: LPCWSTR): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "StartServiceW".}
-  proc DragQueryFile*(para1: HDROP, para2: int, para3: LPCWSTR, para4: int): int{.
-      stdcall, dynlib: "shell32", importc: "DragQueryFileW".}
-  proc ExtractAssociatedIcon*(para1: HINST, para2: LPCWSTR, para3: LPWORD): HICON{.
-      stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconW".}
-  proc ExtractIcon*(para1: HINST, para2: LPCWSTR, para3: int): HICON{.stdcall,
-      dynlib: "shell32", importc: "ExtractIconW".}
-  proc FindExecutable*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR): HINST{.
-      stdcall, dynlib: "shell32", importc: "FindExecutableW".}
-  proc ShellAbout*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR, para4: HICON): int32{.
-      stdcall, dynlib: "shell32", importc: "ShellAboutW".}
-  proc ShellExecute*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR,
-                     para4: LPCWSTR, para5: LPCWSTR, para6: int32): HINST{.
-      stdcall, dynlib: "shell32", importc: "ShellExecuteW".}
-  proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.
-      stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}
-  proc DdeCreateStringHandle*(para1: DWORD, para2: LPCWSTR, para3: int32): HSZ{.
-      stdcall, dynlib: "user32", importc: "DdeCreateStringHandleW".}
-  proc DdeInitialize*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,
-                      para4: DWORD): UINT{.stdcall, dynlib: "user32",
-      importc: "DdeInitializeW".}
-  proc DdeQueryString*(para1: DWORD, para2: HSZ, para3: LPCWSTR, para4: DWORD,
-                       para5: int32): DWORD{.stdcall, dynlib: "user32",
-      importc: "DdeQueryStringW".}
-  proc LogonUser*(para1: LPWSTR, para2: LPWSTR, para3: LPWSTR, para4: DWORD,
-                  para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "LogonUserW".}
-  proc CreateProcessAsUser*(para1: HANDLE, para2: LPCWSTR, para3: LPWSTR,
-                            para4: LPSECURITY_ATTRIBUTES,
-                            para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,
-                            para7: DWORD, para8: LPVOID, para9: LPCWSTR,
-                            para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserW".}
-else:
-  proc GetBinaryType*(lpApplicationName: LPCSTR, lpBinaryType: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}
-  proc GetShortPathName*(lpszLongPath: LPCSTR, lpszShortPath: LPSTR,
-                         cchBuffer: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "GetShortPathNameA".}
-  proc GetEnvironmentStrings*(): LPSTR{.stdcall, dynlib: "kernel32",
-                                        importc: "GetEnvironmentStringsA".}
-  proc FreeEnvironmentStrings*(para1: LPSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "FreeEnvironmentStringsA".}
-  proc FormatMessage*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,
-                      dwLanguageId: DWORD, lpBuffer: LPSTR, nSize: DWORD,
-                      Arguments: va_list): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "FormatMessageA".}
-  proc CreateMailslot*(lpName: LPCSTR, nMaxMessageSize: DWORD,
-                       lReadTimeout: DWORD,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateMailslotA".}
-  proc lstrcmp*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall,
-      dynlib: "kernel32", importc: "lstrcmpA".}
-  proc lstrcmpi*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall,
-      dynlib: "kernel32", importc: "lstrcmpiA".}
-  proc lstrcpyn*(lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32): LPSTR{.
-      stdcall, dynlib: "kernel32", importc: "lstrcpynA".}
-  proc lstrcpy*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR{.stdcall,
-      dynlib: "kernel32", importc: "lstrcpyA".}
-  proc lstrcat*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR{.stdcall,
-      dynlib: "kernel32", importc: "lstrcatA".}
-  proc lstrlen*(lpString: LPCSTR): int32{.stdcall, dynlib: "kernel32",
-      importc: "lstrlenA".}
-  proc CreateMutex*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,
-                    bInitialOwner: WINBOOL, lpName: LPCSTR): HANDLE{.stdcall,
-      dynlib: "kernel32", importc: "CreateMutexA".}
-  proc OpenMutex*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                  lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenMutexA".}
-  proc CreateEvent*(lpEventAttributes: LPSECURITY_ATTRIBUTES,
-                    bManualReset: WINBOOL, bInitialState: WINBOOL,
-                    lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "CreateEventA".}
-  proc OpenEvent*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                  lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenEventA".}
-  proc CreateSemaphore*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,
-                        lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateSemaphoreA".}
-  proc OpenSemaphore*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                      lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenSemaphoreA".}
-  proc CreateFileMapping*(hFile: HANDLE,
-                          lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,
-                          flProtect: DWORD, dwMaximumSizeHigh: DWORD,
-                          dwMaximumSizeLow: DWORD, lpName: LPCSTR): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateFileMappingA".}
-  proc OpenFileMapping*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                        lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "OpenFileMappingA".}
-  proc GetLogicalDriveStrings*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsA".}
-  proc LoadLibrary*(lpLibFileName: LPCSTR): HINST{.stdcall, dynlib: "kernel32",
-      importc: "LoadLibraryA".}
-  proc LoadLibraryEx*(lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.
-      stdcall, dynlib: "kernel32", importc: "LoadLibraryExA".}
-  proc GetModuleFileName*(hModule: HINST, lpFilename: LPSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetModuleFileNameA".}
-  proc GetModuleHandle*(lpModuleName: LPCSTR): HMODULE{.stdcall,
-      dynlib: "kernel32", importc: "GetModuleHandleA".}
-  proc FatalAppExit*(uAction: UINT, lpMessageText: LPCSTR){.stdcall,
-      dynlib: "kernel32", importc: "FatalAppExitA".}
-  proc GetCommandLine*(): LPSTR{.stdcall, dynlib: "kernel32",
-                                 importc: "GetCommandLineA".}
-  proc GetEnvironmentVariable*(lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableA".}
-  proc SetEnvironmentVariable*(lpName: LPCSTR, lpValue: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableA".}
-  proc ExpandEnvironmentStrings*(lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsA".}
-  proc OutputDebugString*(lpOutputString: LPCSTR){.stdcall, dynlib: "kernel32",
-      importc: "OutputDebugStringA".}
-  proc FindResource*(hModule: HINST, lpName: LPCSTR, lpType: LPCSTR): HRSRC{.
-      stdcall, dynlib: "kernel32", importc: "FindResourceA".}
-  proc FindResourceEx*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,
-                       wLanguage: int16): HRSRC{.stdcall, dynlib: "kernel32",
-      importc: "FindResourceExA".}
-  proc EnumResourceTypes*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,
-                          lParam: LONG): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "EnumResourceTypesA".}
-  proc EnumResourceNames*(hModule: HINST, lpType: LPCSTR,
-                          lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "EnumResourceNamesA".}
-  proc EnumResourceLanguages*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,
-                              lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesA".}
-  proc BeginUpdateResource*(pFileName: LPCSTR, bDeleteExistingResources: WINBOOL): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceA".}
-  proc UpdateResource*(hUpdate: HANDLE, lpType: LPCSTR, lpName: LPCSTR,
-                       wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "UpdateResourceA".}
-  proc EndUpdateResource*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "EndUpdateResourceA".}
-  proc GlobalAddAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "GlobalAddAtomA".}
-  proc GlobalFindAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "GlobalFindAtomA".}
-  proc GlobalGetAtomName*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.
-      stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameA".}
-  proc AddAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "AddAtomA".}
-  proc FindAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",
-      importc: "FindAtomA".}
-  proc GetAtomName*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetAtomNameA".}
-  proc GetProfileInt*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: WINT): UINT{.
-      stdcall, dynlib: "kernel32", importc: "GetProfileIntA".}
-  proc GetProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                         lpDefault: LPCSTR, lpReturnedString: LPSTR,
-                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "GetProfileStringA".}
-  proc WriteProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                           lpString: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "WriteProfileStringA".}
-  proc GetProfileSection*(lpAppName: LPCSTR, lpReturnedString: LPSTR,
-                          nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-      importc: "GetProfileSectionA".}
-  proc WriteProfileSection*(lpAppName: LPCSTR, lpString: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteProfileSectionA".}
-  proc GetPrivateProfileInt*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                             nDefault: WINT, lpFileName: LPCSTR): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetPrivateProfileIntA".}
-  proc GetPrivateProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                                lpDefault: LPCSTR, lpReturnedString: LPSTR,
-                                nSize: DWORD, lpFileName: LPCSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringA".}
-  proc WritePrivateProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,
-                                  lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringA".}
-  proc GetPrivateProfileSection*(lpAppName: LPCSTR, lpReturnedString: LPSTR,
-                                 nSize: DWORD, lpFileName: LPCSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionA".}
-  proc WritePrivateProfileSection*(lpAppName: LPCSTR, lpString: LPCSTR,
-                                   lpFileName: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "WritePrivateProfileSectionA".}
-  proc GetDriveType*(lpRootPathName: LPCSTR): UINT{.stdcall, dynlib: "kernel32",
-      importc: "GetDriveTypeA".}
-  proc GetSystemDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetSystemDirectoryA".}
-  proc GetTempPath*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetTempPathA".}
-  proc GetTempFileName*(lpPathName: LPCSTR, lpPrefixString: LPCSTR,
-                        uUnique: UINT, lpTempFileName: LPSTR): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetTempFileNameA".}
-  proc GetWindowsDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,
-      dynlib: "kernel32", importc: "GetWindowsDirectoryA".}
-  proc SetCurrentDirectory*(lpPathName: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetCurrentDirectoryA".}
-  proc GetCurrentDirectory*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryA".}
-  proc GetDiskFreeSpace*(lpRootPathName: LPCSTR, lpSectorsPerCluster: LPDWORD,
-                         lpBytesPerSector: LPDWORD,
-                         lpNumberOfFreeClusters: LPDWORD,
-                         lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}
-  proc CreateDirectory*(lpPathName: LPCSTR,
-                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CreateDirectoryA".}
-  proc CreateDirectoryEx*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR,
-                          lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CreateDirectoryExA".}
-  proc RemoveDirectory*(lpPathName: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "RemoveDirectoryA".}
-  proc GetFullPathName*(lpFileName: LPCSTR, nBufferLength: DWORD,
-                        lpBuffer: LPSTR, lpFilePart: var LPSTR): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetFullPathNameA".}
-  proc DefineDosDevice*(dwFlags: DWORD, lpDeviceName: LPCSTR,
-                        lpTargetPath: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "DefineDosDeviceA".}
-  proc QueryDosDevice*(lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "QueryDosDeviceA".}
-  proc CreateFile*(lpFileName: LPCSTR, dwDesiredAccess: DWORD,
-                   dwShareMode: DWORD,
-                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                   dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,
-                   hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",
-      importc: "CreateFileA".}
-  proc SetFileAttributes*(lpFileName: LPCSTR, dwFileAttributes: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetFileAttributesA".}
-  proc GetFileAttributes*(lpFileName: LPCSTR): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetFileAttributesA".}
-  proc GetCompressedFileSize*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeA".}
-  proc DeleteFile*(lpFileName: LPCSTR): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "DeleteFileA".}
-  proc SearchPath*(lpPath: LPCSTR, lpFileName: LPCSTR, lpExtension: LPCSTR,
-                   nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: LPSTR): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "SearchPathA".}
-  proc CopyFile*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,
-                 bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "CopyFileA".}
-  proc MoveFile*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "MoveFileA".}
-  proc MoveFileEx*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,
-                   dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "MoveFileExA".}
-  proc CreateNamedPipe*(lpName: LPCSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,
-                        nMaxInstances: DWORD, nOutBufferSize: DWORD,
-                        nInBufferSize: DWORD, nDefaultTimeOut: DWORD,
-                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "CreateNamedPipeA".}
-  proc GetNamedPipeHandleState*(hNamedPipe: HANDLE, lpState: LPDWORD,
-                                lpCurInstances: LPDWORD,
-                                lpMaxCollectionCount: LPDWORD,
-                                lpCollectDataTimeout: LPDWORD,
-                                lpUserName: LPSTR, nMaxUserNameSize: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateA".}
-  proc CallNamedPipe*(lpNamedPipeName: LPCSTR, lpInBuffer: LPVOID,
-                      nInBufferSize: DWORD, lpOutBuffer: LPVOID,
-                      nOutBufferSize: DWORD, lpBytesRead: LPDWORD,
-                      nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "CallNamedPipeA".}
-  proc WaitNamedPipe*(lpNamedPipeName: LPCSTR, nTimeOut: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WaitNamedPipeA".}
-  proc SetVolumeLabel*(lpRootPathName: LPCSTR, lpVolumeName: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetVolumeLabelA".}
-  proc GetVolumeInformation*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPSTR,
-                             nVolumeNameSize: DWORD,
-                             lpVolumeSerialNumber: LPDWORD,
-                             lpMaximumComponentLength: LPDWORD,
-                             lpFileSystemFlags: LPDWORD,
-                             lpFileSystemNameBuffer: LPSTR,
-                             nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetVolumeInformationA".}
-  proc ClearEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "ClearEventLogA".}
-  proc BackupEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "BackupEventLogA".}
-  proc OpenEventLog*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "OpenEventLogA".}
-  proc RegisterEventSource*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "RegisterEventSourceA".}
-  proc OpenBackupEventLog*(lpUNCServerName: LPCSTR, lpFileName: LPCSTR): HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogA".}
-  proc ReadEventLog*(hEventLog: HANDLE, dwReadFlags: DWORD,
-                     dwRecordOffset: DWORD, lpBuffer: LPVOID,
-                     nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,
-                     pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ReadEventLogA".}
-  proc ReportEvent*(hEventLog: HANDLE, wType: int16, wCategory: int16,
-                    dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,
-                    dwDataSize: DWORD, lpStrings: LPPCSTR, lpRawData: LPVOID): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "ReportEventA".}
-  proc AccessCheckAndAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                                 ObjectTypeName: LPSTR, ObjectName: LPSTR,
-                                 SecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 DesiredAccess: DWORD,
-                                 GenericMapping: PGENERIC_MAPPING,
-                                 ObjectCreation: WINBOOL,
-                                 GrantedAccess: LPDWORD, AccessStatus: LPBOOL,
-                                 pfGenerateOnClose: LPBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmA".}
-  proc ObjectOpenAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                             ObjectTypeName: LPSTR, ObjectName: LPSTR,
-                             pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                             ClientToken: HANDLE, DesiredAccess: DWORD,
-                             GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,
-                             ObjectCreation: WINBOOL, AccessGranted: WINBOOL,
-                             GenerateOnClose: LPBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}
-  proc ObjectPrivilegeAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                                  ClientToken: HANDLE, DesiredAccess: DWORD,
-                                  Privileges: PPRIVILEGE_SET,
-                                  AccessGranted: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}
-  proc ObjectCloseAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,
-                              GenerateOnClose: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ObjectCloseAuditAlarmA".}
-  proc PrivilegedServiceAuditAlarm*(SubsystemName: LPCSTR, ServiceName: LPCSTR,
-                                    ClientToken: HANDLE,
-                                    Privileges: PPRIVILEGE_SET,
-                                    AccessGranted: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}
-  proc SetFileSecurity*(lpFileName: LPCSTR,
-                        SecurityInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "SetFileSecurityA".}
-  proc GetFileSecurity*(lpFileName: LPCSTR,
-                        RequestedInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                        nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "GetFileSecurityA".}
-  proc FindFirstChangeNotification*(lpPathName: LPCSTR, bWatchSubtree: WINBOOL,
-                                    dwNotifyFilter: DWORD): HANDLE{.stdcall,
-      dynlib: "kernel32", importc: "FindFirstChangeNotificationA".}
-  proc IsBadStringPtr*(lpsz: LPCSTR, ucchMax: UINT): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "IsBadStringPtrA".}
-  proc LookupAccountSid*(lpSystemName: LPCSTR, Sid: PSID, Name: LPSTR,
-                         cbName: LPDWORD, ReferencedDomainName: LPSTR,
-                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "LookupAccountSidA".}
-  proc LookupAccountName*(lpSystemName: LPCSTR, lpAccountName: LPCSTR,
-                          Sid: PSID, cbSid: LPDWORD,
-                          ReferencedDomainName: LPSTR,
-                          cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "LookupAccountNameA".}
-  proc LookupPrivilegeValue*(lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueA".}
-  proc LookupPrivilegeName*(lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR,
-                            cbName: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "LookupPrivilegeNameA".}
-  proc LookupPrivilegeDisplayName*(lpSystemName: LPCSTR, lpName: LPCSTR,
-                                   lpDisplayName: LPSTR, cbDisplayName: LPDWORD,
-                                   lpLanguageId: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}
-  proc BuildCommDCB*(lpDef: LPCSTR, lpDCB: LPDCB): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "BuildCommDCBA".}
-  proc BuildCommDCBAndTimeouts*(lpDef: LPCSTR, lpDCB: LPDCB,
-                                lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}
-  proc CommConfigDialog*(lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}
-  proc GetDefaultCommConfig*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG,
-                             lpdwSize: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetDefaultCommConfigA".}
-  proc SetDefaultCommConfig*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigA".}
-  proc GetComputerName*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetComputerNameA".}
-  proc SetComputerName*(lpComputerName: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetComputerNameA".}
-  proc GetUserName*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "GetUserNameA".}
-  proc wvsprintf*(para1: LPSTR, para2: LPCSTR, arglist: va_list): int32{.
-      stdcall, dynlib: "user32", importc: "wvsprintfA".}
-  proc LoadKeyboardLayout*(pwszKLID: LPCSTR, Flags: UINT): HKL{.stdcall,
-      dynlib: "user32", importc: "LoadKeyboardLayoutA".}
-  proc GetKeyboardLayoutName*(pwszKLID: LPSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GetKeyboardLayoutNameA".}
-  proc CreateDesktop*(lpszDesktop: LPSTR, lpszDevice: LPSTR,
-                      pDevmode: LPDEVMODE, dwFlags: DWORD,
-                      dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HDESK{.
-      stdcall, dynlib: "user32", importc: "CreateDesktopA".}
-  proc OpenDesktop*(lpszDesktop: LPSTR, dwFlags: DWORD, fInherit: WINBOOL,
-                    dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",
-      importc: "OpenDesktopA".}
-  proc EnumDesktops*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,
-                     lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "EnumDesktopsA".}
-  proc CreateWindowStation*(lpwinsta: LPSTR, dwReserved: DWORD,
-                            dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.
-      stdcall, dynlib: "user32", importc: "CreateWindowStationA".}
-  proc OpenWindowStation*(lpszWinSta: LPSTR, fInherit: WINBOOL,
-                          dwDesiredAccess: DWORD): HWINSTA{.stdcall,
-      dynlib: "user32", importc: "OpenWindowStationA".}
-  proc EnumWindowStations*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "EnumWindowStationsA".}
-  proc GetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                 nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}
-  proc SetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,
-                                 nLength: DWORD): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetUserObjectInformationA".}
-  proc RegisterWindowMessage*(lpString: LPCSTR): UINT{.stdcall,
-      dynlib: "user32", importc: "RegisterWindowMessageA".}
-  proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                   wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "GetMessageA".}
-  proc DispatchMessage*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",
-      importc: "DispatchMessageA".}
-  proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,
-                    wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "PeekMessageA".}
-  proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "SendMessageA".}
-  proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM,
-                           lParam: LPARAM, fuFlags: UINT, uTimeout: UINT,
-                           lpdwResult: LPDWORD): LRESULT{.stdcall,
-      dynlib: "user32", importc: "SendMessageTimeoutA".}
-  proc SendNotifyMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "SendNotifyMessageA".}
-  proc SendMessageCallback*(hWnd: HWND, Msg: UINT, wParam: WPARAM,
-                            lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,
-                            dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "SendMessageCallbackA".}
-  proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "PostMessageA".}
-  proc PostThreadMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM,
-                          lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "PostThreadMessageA".}
-  proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "DefWindowProcA".}
-  proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,
-                       wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,
-      dynlib: "user32", importc: "CallWindowProcA".}
-  proc RegisterClass*(lpWndClass: LPWNDCLASS): ATOM{.stdcall, dynlib: "user32",
-      importc: "RegisterClassA".}
-  proc UnregisterClass*(lpClassName: LPCSTR, hInstance: HINST): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "UnregisterClassA".}
-  proc GetClassInfo*(hInstance: HINST, lpClassName: LPCSTR,
-                     lpWndClass: LPWNDCLASS): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GetClassInfoA".}
-  proc RegisterClassEx*(para1: LPWNDCLASSEX): ATOM{.stdcall, dynlib: "user32",
-      importc: "RegisterClassExA".}
-  proc GetClassInfoEx*(para1: HINST, para2: LPCSTR, para3: LPWNDCLASSEX): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "GetClassInfoExA".}
-  proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCSTR,
-                       lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32,
-                       nWidth: int32, nHeight: int32, hWndParent: HWND,
-                       hMenu: HMENU, hInstance: HINST, lpParam: LPVOID): HWND{.
-      stdcall, dynlib: "user32", importc: "CreateWindowExA".}
-  proc CreateDialogParam*(hInstance: HINST, lpTemplateName: LPCSTR,
-                          hWndParent: HWND, lpDialogFunc: DLGPROC,
-                          dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",
-      importc: "CreateDialogParamA".}
-  proc CreateDialogIndirectParam*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                                  hWndParent: HWND, lpDialogFunc: DLGPROC,
-                                  dwInitParam: LPARAM): HWND{.stdcall,
-      dynlib: "user32", importc: "CreateDialogIndirectParamA".}
-  proc DialogBoxParam*(hInstance: HINST, lpTemplateName: LPCSTR,
-                       hWndParent: HWND, lpDialogFunc: DLGPROC,
-                       dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",
-      importc: "DialogBoxParamA".}
-  proc DialogBoxIndirectParam*(hInstance: HINST,
-                               hDialogTemplate: LPCDLGTEMPLATE,
-                               hWndParent: HWND, lpDialogFunc: DLGPROC,
-                               dwInitParam: LPARAM): int32{.stdcall,
-      dynlib: "user32", importc: "DialogBoxIndirectParamA".}
-  proc SetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "SetDlgItemTextA".}
-  proc GetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR,
-                       nMaxCount: int32): UINT{.stdcall, dynlib: "user32",
-      importc: "GetDlgItemTextA".}
-  proc SendDlgItemMessage*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,
-                           wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,
-      dynlib: "user32", importc: "SendDlgItemMessageA".}
-  proc DefDlgProc*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "DefDlgProcA".}
-  proc CallMsgFilter*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "CallMsgFilterA".}
-  proc RegisterClipboardFormat*(lpszFormat: LPCSTR): UINT{.stdcall,
-      dynlib: "user32", importc: "RegisterClipboardFormatA".}
-  proc GetClipboardFormatName*(format: UINT, lpszFormatName: LPSTR,
-                               cchMaxCount: int32): int32{.stdcall,
-      dynlib: "user32", importc: "GetClipboardFormatNameA".}
-  proc CharToOem*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "CharToOemA".}
-  proc OemToChar*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "OemToCharA".}
-  proc CharToOemBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
-  proc OemToCharBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
-  proc CharUpper*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",
-                                       importc: "CharUpperA".}
-  proc CharUpperBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
-      dynlib: "user32", importc: "CharUpperBuffA".}
-  proc CharLower*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",
-                                       importc: "CharLowerA".}
-  proc CharLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
-      dynlib: "user32", importc: "CharLowerBuffA".}
-  proc CharNext*(lpsz: LPCSTR): LPSTR{.stdcall, dynlib: "user32",
-                                       importc: "CharNextA".}
-  proc CharPrev*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR{.stdcall,
-      dynlib: "user32", importc: "CharPrevA".}
-  proc IsCharAlpha*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "IsCharAlphaA".}
-  proc IsCharAlphaNumeric*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "IsCharAlphaNumericA".}
-  proc IsCharUpper*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "IsCharUpperA".}
-  proc IsCharLower*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "IsCharLowerA".}
-  proc GetKeyNameText*(lParam: LONG, lpString: LPSTR, nSize: int32): int32{.
-      stdcall, dynlib: "user32", importc: "GetKeyNameTextA".}
-  proc VkKeyScan*(ch: CHAR): SHORT{.stdcall, dynlib: "user32",
-                                    importc: "VkKeyScanA".}
-  proc VkKeyScanEx*(ch: CHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",
-      importc: "VkKeyScanExA".}
-  proc MapVirtualKey*(uCode: UINT, uMapType: UINT): UINT{.stdcall,
-      dynlib: "user32", importc: "MapVirtualKeyA".}
-  proc MapVirtualKeyEx*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,
-      dynlib: "user32", importc: "MapVirtualKeyExA".}
-  proc LoadAccelerators*(hInstance: HINST, lpTableName: LPCSTR): HACCEL{.
-      stdcall, dynlib: "user32", importc: "LoadAcceleratorsA".}
-  proc CreateAcceleratorTable*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,
-      dynlib: "user32", importc: "CreateAcceleratorTableA".}
-  proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,
-                             cAccelEntries: int32): int32{.stdcall,
-      dynlib: "user32", importc: "CopyAcceleratorTableA".}
-  proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.
-      stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
-  proc LoadMenu*(hInstance: HINST, lpMenuName: LPCSTR): HMENU{.stdcall,
-      dynlib: "user32", importc: "LoadMenuA".}
-  proc LoadMenuIndirect*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,
-      dynlib: "user32", importc: "LoadMenuIndirectA".}
-  proc ChangeMenu*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR,
-                   cmdInsert: UINT, flags: UINT): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "ChangeMenuA".}
-  proc GetMenuString*(hMenu: HMENU, uIDItem: UINT, lpString: LPSTR,
-                      nMaxCount: int32, uFlag: UINT): int32{.stdcall,
-      dynlib: "user32", importc: "GetMenuStringA".}
-  proc InsertMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT,
-                   uIDNewItem: UINT, lpNewItem: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "InsertMenuA".}
-  proc AppendMenu*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,
-                   lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "AppendMenuA".}
-  proc ModifyMenu*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,
-                   lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "ModifyMenuA".}
-  proc InsertMenuItem*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "InsertMenuItemA".}
-  proc GetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                        para4: LPMENUITEMINFO): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GetMenuItemInfoA".}
-  proc SetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,
-                        para4: LPCMENUITEMINFO): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetMenuItemInfoA".}
-  proc DrawText*(hDC: HDC, lpString: LPCSTR, nCount: int32, lpRect: LPRECT,
-                 uFormat: UINT): int32{.stdcall, dynlib: "user32",
-                                        importc: "DrawTextA".}
-  proc DrawTextEx*(para1: HDC, para2: LPSTR, para3: int32, para4: LPRECT,
-                   para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,
-      dynlib: "user32", importc: "DrawTextExA".}
-  proc GrayString*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,
-                   lpData: LPARAM, nCount: int32, X: int32, Y: int32,
-                   nWidth: int32, nHeight: int32): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "GrayStringA".}
-  proc DrawState*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC,
-                  para4: LPARAM, para5: WPARAM, para6: int32, para7: int32,
-                  para8: int32, para9: int32, para10: UINT): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "DrawStateA".}
-  proc TabbedTextOut*(hDC: HDC, X: int32, Y: int32, lpString: LPCSTR,
-                      nCount: int32, nTabPositions: int32,
-                      lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.
-      stdcall, dynlib: "user32", importc: "TabbedTextOutA".}
-  proc GetTabbedTextExtent*(hDC: HDC, lpString: LPCSTR, nCount: int32,
-                            nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.
-      stdcall, dynlib: "user32", importc: "GetTabbedTextExtentA".}
-  proc SetProp*(hWnd: HWND, lpString: LPCSTR, hData: HANDLE): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetPropA".}
-  proc GetProp*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall,
-      dynlib: "user32", importc: "GetPropA".}
-  proc RemoveProp*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall,
-      dynlib: "user32", importc: "RemovePropA".}
-  proc EnumPropsEx*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.
-      stdcall, dynlib: "user32", importc: "EnumPropsExA".}
-  proc EnumProps*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,
-      dynlib: "user32", importc: "EnumPropsA".}
-  proc SetWindowText*(hWnd: HWND, lpString: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "SetWindowTextA".}
-  proc GetWindowText*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32{.
-      stdcall, dynlib: "user32", importc: "GetWindowTextA".}
-  proc GetWindowTextLength*(hWnd: HWND): int32{.stdcall, dynlib: "user32",
-      importc: "GetWindowTextLengthA".}
-  proc MessageBox*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32{.
-      stdcall, dynlib: "user32", importc: "MessageBoxA".}
-  proc MessageBoxEx*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT,
-                     wLanguageId: int16): int32{.stdcall, dynlib: "user32",
-      importc: "MessageBoxExA".}
-  proc MessageBoxIndirect*(para1: LPMSGBOXPARAMS): int32{.stdcall,
-      dynlib: "user32", importc: "MessageBoxIndirectA".}
-  proc GetWindowLong*(hWnd: HWND, nIndex: int32): LONG{.stdcall,
-      dynlib: "user32", importc: "GetWindowLongA".}
-  proc SetWindowLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.
-      stdcall, dynlib: "user32", importc: "SetWindowLongA".}
-  proc GetClassLong*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,
-      dynlib: "user32", importc: "GetClassLongA".}
-  proc SetClassLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.
-      stdcall, dynlib: "user32", importc: "SetClassLongA".}
-  when defined(cpu64):
-    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetWindowLongPtrA".}
-    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}
-    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetClassLongPtrA".}
-    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetClassLongPtrA".}
-  else:
-    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetWindowLongA".}
-    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetWindowLongA".}
-    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,
-        dynlib: "user32", importc: "GetClassLongA".}
-    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.
-        stdcall, dynlib: "user32", importc: "SetClassLongA".}
-  proc FindWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND{.stdcall,
-      dynlib: "user32", importc: "FindWindowA".}
-  proc FindWindowEx*(para1: HWND, para2: HWND, para3: LPCSTR, para4: LPCSTR): HWND{.
-      stdcall, dynlib: "user32", importc: "FindWindowExA".}
-  proc GetClassName*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32{.
-      stdcall, dynlib: "user32", importc: "GetClassNameA".}
-  proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,
-                         dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",
-      importc: "SetWindowsHookExA".}
-  proc LoadBitmap*(hInstance: HINST, lpBitmapName: LPCSTR): HBITMAP{.stdcall,
-      dynlib: "user32", importc: "LoadBitmapA".}
-  proc LoadCursor*(hInstance: HINST, lpCursorName: LPCSTR): HCURSOR{.stdcall,
-      dynlib: "user32", importc: "LoadCursorA".}
-  proc LoadCursorFromFile*(lpFileName: LPCSTR): HCURSOR{.stdcall,
-      dynlib: "user32", importc: "LoadCursorFromFileA".}
-  proc LoadIcon*(hInstance: HINST, lpIconName: LPCSTR): HICON{.stdcall,
-      dynlib: "user32", importc: "LoadIconA".}
-  proc LoadImage*(para1: HINST, para2: LPCSTR, para3: UINT, para4: int32,
-                  para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",
-      importc: "LoadImageA".}
-  proc LoadString*(hInstance: HINST, uID: UINT, lpBuffer: LPSTR,
-                   nBufferMax: int32): int32{.stdcall, dynlib: "user32",
-      importc: "LoadStringA".}
-  proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "IsDialogMessageA".}
-  proc DlgDirList*(hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: int32,
-                   nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,
-      dynlib: "user32", importc: "DlgDirListA".}
-  proc DlgDirSelectEx*(hDlg: HWND, lpString: LPSTR, nCount: int32,
-                       nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "DlgDirSelectExA".}
-  proc DlgDirListComboBox*(hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: int32,
-                           nIDStaticPath: int32, uFiletype: UINT): int32{.
-      stdcall, dynlib: "user32", importc: "DlgDirListComboBoxA".}
-  proc DlgDirSelectComboBoxEx*(hDlg: HWND, lpString: LPSTR, nCount: int32,
-                               nIDComboBox: int32): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "DlgDirSelectComboBoxExA".}
-  proc DefFrameProc*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT,
-                     wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,
-      dynlib: "user32", importc: "DefFrameProcA".}
-  proc DefMDIChildProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-      stdcall, dynlib: "user32", importc: "DefMDIChildProcA".}
-  proc CreateMDIWindow*(lpClassName: LPSTR, lpWindowName: LPSTR, dwStyle: DWORD,
-                        X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                        hWndParent: HWND, hInstance: HINST, lParam: LPARAM): HWND{.
-      stdcall, dynlib: "user32", importc: "CreateMDIWindowA".}
-  proc WinHelp*(hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.
-      stdcall, dynlib: "user32", importc: "WinHelpA".}
-  proc ChangeDisplaySettings*(lpDevMode: LPDEVMODE, dwFlags: DWORD): LONG{.
-      stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}
-  proc EnumDisplaySettings*(lpszDeviceName: LPCSTR, iModeNum: DWORD,
-                            lpDevMode: LPDEVMODE): WINBOOL{.stdcall,
-      dynlib: "user32", importc: "EnumDisplaySettingsA".}
-  proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,
-                             fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",
-      importc: "SystemParametersInfoA".}
-  proc AddFontResource*(para1: LPCSTR): int32{.stdcall, dynlib: "gdi32",
-      importc: "AddFontResourceA".}
-  proc CopyMetaFile*(para1: HMETAFILE, para2: LPCSTR): HMETAFILE{.stdcall,
-      dynlib: "gdi32", importc: "CopyMetaFileA".}
-  proc CreateFont*(para1: int32, para2: int32, para3: int32, para4: int32,
-                   para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,
-                   para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,
-                   para13: DWORD, para14: LPCSTR): HFONT{.stdcall,
-      dynlib: "gdi32", importc: "CreateFontA".}
-  proc CreateFontIndirect*(para1: LPLOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-      importc: "CreateFontIndirectA".}
-  proc CreateFontIndirect*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",
-      importc: "CreateFontIndirectA".}
-  proc CreateIC*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: LPDEVMODE): HDC{.
-      stdcall, dynlib: "gdi32", importc: "CreateICA".}
-  proc CreateMetaFile*(para1: LPCSTR): HDC{.stdcall, dynlib: "gdi32",
-      importc: "CreateMetaFileA".}
-  proc CreateScalableFontResource*(para1: DWORD, para2: LPCSTR, para3: LPCSTR,
-                                   para4: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "CreateScalableFontResourceA".}
-  proc EnumFontFamiliesEx*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,
-                           para4: LPARAM, para5: DWORD): int32{.stdcall,
-      dynlib: "gdi32", importc: "EnumFontFamiliesExA".}
-  proc EnumFontFamilies*(para1: HDC, para2: LPCSTR, para3: FONTENUMPROC,
-                         para4: LPARAM): int32{.stdcall, dynlib: "gdi32",
-      importc: "EnumFontFamiliesA".}
-  proc EnumFonts*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC, para4: LPARAM): int32{.
-      stdcall, dynlib: "gdi32", importc: "EnumFontsA".}
-  proc EnumFonts*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC,
-                  para4: pointer): int32{.stdcall, dynlib: "gdi32",
-      importc: "EnumFontsA".}
-  proc GetCharWidth*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}
-  proc GetCharWidth32*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharWidth32A".}
-  proc GetCharWidthFloat*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}
-  proc GetCharABCWidths*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}
-  proc GetCharABCWidthsFloat*(para1: HDC, para2: UINT, para3: UINT,
-                              para4: LPABCFLOAT): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}
-  proc GetGlyphOutline*(para1: HDC, para2: UINT, para3: UINT,
-                        para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,
-                        para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",
-      importc: "GetGlyphOutlineA".}
-  proc GetMetaFile*(para1: LPCSTR): HMETAFILE{.stdcall, dynlib: "gdi32",
-      importc: "GetMetaFileA".}
-  proc GetOutlineTextMetrics*(para1: HDC, para2: UINT,
-                              para3: LPOUTLINETEXTMETRIC): UINT{.stdcall,
-      dynlib: "gdi32", importc: "GetOutlineTextMetricsA".}
-  proc GetTextExtentPoint*(para1: HDC, para2: LPCSTR, para3: int32,
-                           para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetTextExtentPointA".}
-  proc GetTextExtentPoint32*(para1: HDC, para2: LPCSTR, para3: int32,
-                             para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetTextExtentPoint32A".}
-  proc GetTextExtentExPoint*(para1: HDC, para2: LPCSTR, para3: int32,
-                             para4: int32, para5: LPINT, para6: LPINT,
-                             para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetTextExtentExPointA".}
-  proc GetCharacterPlacement*(para1: HDC, para2: LPCSTR, para3: int32,
-                              para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.
-      stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementA".}
-  proc ResetDC*(para1: HDC, para2: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",
-      importc: "ResetDCA".}
-  proc RemoveFontResource*(para1: LPCSTR): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "RemoveFontResourceA".}
-  proc CopyEnhMetaFile*(para1: HENHMETAFILE, para2: LPCSTR): HENHMETAFILE{.
-      stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileA".}
-  proc CreateEnhMetaFile*(para1: HDC, para2: LPCSTR, para3: LPRECT,
-                          para4: LPCSTR): HDC{.stdcall, dynlib: "gdi32",
-      importc: "CreateEnhMetaFileA".}
-  proc GetEnhMetaFile*(para1: LPCSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",
-      importc: "GetEnhMetaFileA".}
-  proc GetEnhMetaFileDescription*(para1: HENHMETAFILE, para2: UINT, para3: LPSTR): UINT{.
-      stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionA".}
-  proc GetTextMetrics*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "GetTextMetricsA".}
-  proc StartDoc*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",
-      importc: "StartDocA".}
-  proc GetObject*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,
-      dynlib: "gdi32", importc: "GetObjectA".}
-  proc TextOut*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,
-                para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-                                        importc: "TextOutA".}
-  proc ExtTextOut*(para1: HDC, para2: int32, para3: int32, para4: UINT,
-                   para5: LPRECT, para6: LPCSTR, para7: UINT, para8: LPINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}
-  proc PolyTextOut*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}
-  proc GetTextFace*(para1: HDC, para2: int32, para3: LPSTR): int32{.stdcall,
-      dynlib: "gdi32", importc: "GetTextFaceA".}
-  proc GetKerningPairs*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.
-      stdcall, dynlib: "gdi32", importc: "GetKerningPairsA".}
-  proc CreateColorSpace*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,
-      dynlib: "gdi32", importc: "CreateColorSpaceA".}
-  proc GetLogColorSpace*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE,
-                         para3: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",
-      importc: "GetLogColorSpaceA".}
-  proc GetICMProfile*(para1: HDC, para2: DWORD, para3: LPSTR): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "GetICMProfileA".}
-  proc SetICMProfile*(para1: HDC, para2: LPSTR): WINBOOL{.stdcall,
-      dynlib: "gdi32", importc: "SetICMProfileA".}
-  proc UpdateICMRegKey*(para1: DWORD, para2: DWORD, para3: LPSTR, para4: UINT): WINBOOL{.
-      stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyA".}
-  proc EnumICMProfiles*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.
-      stdcall, dynlib: "gdi32", importc: "EnumICMProfilesA".}
-  proc PropertySheet*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,
-      dynlib: "comctl32", importc: "PropertySheetA".}
-  proc ImageList_LoadImage*(hi: HINST, lpbmp: LPCSTR, cx: int32, cGrow: int32,
-                            crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.
-      stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageA".}
-  proc CreateStatusWindow*(style: LONG, lpszText: LPCSTR, hwndParent: HWND,
-                           wID: UINT): HWND{.stdcall, dynlib: "comctl32",
-      importc: "CreateStatusWindowA".}
-  proc DrawStatusText*(hDC: HDC, lprc: LPRECT, pszText: LPCSTR, uFlags: UINT){.
-      stdcall, dynlib: "comctl32", importc: "DrawStatusTextA".}
-  proc GetOpenFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-      dynlib: "comdlg32", importc: "GetOpenFileNameA".}
-  proc GetSaveFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,
-      dynlib: "comdlg32", importc: "GetSaveFileNameA".}
-  proc GetFileTitle*(para1: LPCSTR, para2: LPSTR, para3: int16): int{.stdcall,
-      dynlib: "comdlg32", importc: "GetFileTitleA".}
-  proc ChooseColor*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",
-      importc: "ChooseColorA".}
-  proc FindText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-      importc: "FindTextA".}
-  proc ReplaceText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",
-      importc: "ReplaceTextA".}
-  proc ChooseFont*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",
-      importc: "ChooseFontA".}
-  proc PrintDlg*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",
-      importc: "PrintDlgA".}
-  proc PageSetupDlg*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,
-      dynlib: "comdlg32", importc: "PageSetupDlgA".}
-  proc CreateProcess*(lpApplicationName: LPCSTR, lpCommandLine: LPSTR,
-                      lpProcessAttributes: LPSECURITY_ATTRIBUTES,
-                      lpThreadAttributes: LPSECURITY_ATTRIBUTES,
-                      bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                      lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR,
-                      lpStartupInfo: LPSTARTUPINFO,
-                      lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "CreateProcessA".}
-  proc GetStartupInfo*(lpStartupInfo: LPSTARTUPINFO){.stdcall,
-      dynlib: "kernel32", importc: "GetStartupInfoA".}
-  proc FindFirstFile*(lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATA): HANDLE{.
-      stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}
-  proc FindNextFile*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATA): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "FindNextFileA".}
-  proc GetVersionEx*(VersionInformation: LPOSVERSIONINFO): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetVersionExA".}
-  proc CreateWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,
-                     X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                     hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                     lpParam: LPVOID): HWND
-  proc CreateDialog*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                     lpDialogFunc: DLGPROC): HWND
-  proc CreateDialogIndirect*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                             hWndParent: HWND, lpDialogFunc: DLGPROC): HWND
-  proc DialogBox*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                  lpDialogFunc: DLGPROC): int32
-  proc DialogBoxIndirect*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,
-                          hWndParent: HWND, lpDialogFunc: DLGPROC): int32
-  proc CreateDC*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: pDEVMODE): HDC{.
-      stdcall, dynlib: "gdi32", importc: "CreateDCA".}
-  proc VerInstallFile*(uFlags: DWORD, szSrcFileName: LPSTR,
-                       szDestFileName: LPSTR, szSrcDir: LPSTR, szDestDir: LPSTR,
-                       szCurDir: LPSTR, szTmpFile: LPSTR, lpuTmpFileLen: PUINT): DWORD{.
-      stdcall, dynlib: "version", importc: "VerInstallFileA".}
-  proc GetFileVersionInfoSize*(lptstrFilename: LPSTR, lpdwHandle: LPDWORD): DWORD{.
-      stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}
-  proc GetFileVersionInfo*(lptstrFilename: LPSTR, dwHandle: DWORD, dwLen: DWORD,
-                           lpData: LPVOID): WINBOOL{.stdcall, dynlib: "version",
-      importc: "GetFileVersionInfoA".}
-  proc VerLanguageName*(wLang: DWORD, szLang: LPSTR, nSize: DWORD): DWORD{.
-      stdcall, dynlib: "kernel32", importc: "VerLanguageNameA".}
-  proc VerQueryValue*(pBlock: LPVOID, lpSubBlock: LPSTR, lplpBuffer: LPVOID,
-                      puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",
-      importc: "VerQueryValueA".}
-  proc VerFindFile*(uFlags: DWORD, szFileName: LPSTR, szWinDir: LPSTR,
-                    szAppDir: LPSTR, szCurDir: LPSTR, lpuCurDirLen: PUINT,
-                    szDestDir: LPSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,
-      dynlib: "version", importc: "VerFindFileA".}
-  proc RegConnectRegistry*(lpMachineName: LPSTR, hKey: HKEY, phkResult: PHKEY): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}
-  proc RegCreateKey*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}
-  proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD,
-                       lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM,
-                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
-                       phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
-  proc RegDeleteKey*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegDeleteKeyA".}
-  proc RegDeleteValue*(hKey: HKEY, lpValueName: LPCSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegDeleteValueA".}
-  proc RegEnumKey*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cbName: DWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegEnumKeyA".}
-  proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR,
-                     lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR,
-                     lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}
-  proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR,
-                     lpcbValueName: LPDWORD, lpReserved: LPDWORD,
-                     lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}
-  proc RegLoadKey*(hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegLoadKeyA".}
-  proc RegOpenKey*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}
-  proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD,
-                     samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegOpenKeyExA".}
-  proc RegQueryInfoKey*(hKey: HKEY, lpClass: LPSTR, lpcbClass: LPDWORD,
-                        lpReserved: LPDWORD, lpcSubKeys: LPDWORD,
-                        lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,
-                        lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,
-                        lpcbMaxValueLen: LPDWORD,
-                        lpcbSecurityDescriptor: LPDWORD,
-                        lpftLastWriteTime: PFILETIME): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegQueryInfoKeyA".}
-  proc RegQueryValue*(hKey: HKEY, lpSubKey: LPCSTR, lpValue: LPSTR,
-                      lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",
-      importc: "RegQueryValueA".}
-  proc RegQueryMultipleValues*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,
-                               lpValueBuf: LPSTR, ldwTotsize: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}
-  proc RegQueryValueEx*(hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD,
-                        lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegQueryValueExA".}
-  proc RegReplaceKey*(hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR,
-                      lpOldFile: LPCSTR): LONG{.stdcall, dynlib: "advapi32",
-      importc: "RegReplaceKeyA".}
-  proc RegRestoreKey*(hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegRestoreKeyA".}
-  proc RegSaveKey*(hKey: HKEY, lpFile: LPCSTR,
-                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegSaveKeyA".}
-  proc RegSetValue*(hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR,
-                    cbData: DWORD): LONG{.stdcall, dynlib: "advapi32",
-      importc: "RegSetValueA".}
-  proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,
-                      dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.
-      stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
-  proc RegUnLoadKey*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,
-      dynlib: "advapi32", importc: "RegUnLoadKeyA".}
-  proc InitiateSystemShutdown*(lpMachineName: LPSTR, lpMessage: LPSTR,
-                               dwTimeout: DWORD, bForceAppsClosed: WINBOOL,
-                               bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "InitiateSystemShutdownA".}
-  proc AbortSystemShutdown*(lpMachineName: LPSTR): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "AbortSystemShutdownA".}
-  proc CompareString*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCSTR,
-                      cchCount1: int32, lpString2: LPCSTR, cchCount2: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "CompareStringA".}
-  proc LCMapString*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR,
-                    cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "LCMapStringA".}
-  proc GetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR,
-                      cchData: int32): int32{.stdcall, dynlib: "kernel32",
-      importc: "GetLocaleInfoA".}
-  proc SetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "SetLocaleInfoA".}
-  proc GetTimeFormat*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,
-                      lpFormat: LPCSTR, lpTimeStr: LPSTR, cchTime: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "GetTimeFormatA".}
-  proc GetDateFormat*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,
-                      lpFormat: LPCSTR, lpDateStr: LPSTR, cchDate: int32): int32{.
-      stdcall, dynlib: "kernel32", importc: "GetDateFormatA".}
-  proc GetNumberFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,
-                        lpFormat: PNUMBERFMT, lpNumberStr: LPSTR,
-                        cchNumber: int32): int32{.stdcall, dynlib: "kernel32",
-      importc: "GetNumberFormatA".}
-  proc GetCurrencyFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,
-                          lpFormat: PCURRENCYFMT, lpCurrencyStr: LPSTR,
-                          cchCurrency: int32): int32{.stdcall,
-      dynlib: "kernel32", importc: "GetCurrencyFormatA".}
-  proc EnumCalendarInfo*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,
-                         Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "EnumCalendarInfoA".}
-  proc EnumTimeFormats*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,
-                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "EnumTimeFormatsA".}
-  proc EnumDateFormats*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,
-                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "EnumDateFormatsA".}
-  proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,
-                        cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetStringTypeExA".}
-  proc GetStringType*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,
-                      cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "GetStringTypeA".}
-  proc FoldString*(dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32,
-                   lpDestStr: LPSTR, cchDest: int32): int32{.stdcall,
-      dynlib: "kernel32", importc: "FoldStringA".}
-  proc EnumSystemLocales*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesA".}
-  proc EnumSystemCodePages*(lpCodePageEnumProc: CODEPAGE_ENUMPROC,
-                            dwFlags: DWORD): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "EnumSystemCodePagesA".}
-  proc PeekConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}
-  proc ReadConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}
-  proc WriteConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,
-                          nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}
-  proc ReadConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                          dwBufferSize: COORD, dwBufferCoord: COORD,
-                          lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "ReadConsoleOutputA".}
-  proc WriteConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,
-                           dwBufferSize: COORD, dwBufferCoord: COORD,
-                           lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "WriteConsoleOutputA".}
-  proc ReadConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPSTR,
-                                   nLength: DWORD, dwReadCoord: COORD,
-                                   lpNumberOfCharsRead: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}
-  proc WriteConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPCSTR,
-                                    nLength: DWORD, dwWriteCoord: COORD,
-                                    lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}
-  proc FillConsoleOutputCharacter*(hConsoleOutput: HANDLE, cCharacter: CHAR,
-                                   nLength: DWORD, dwWriteCoord: COORD,
-                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}
-  proc ScrollConsoleScreenBuffer*(hConsoleOutput: HANDLE,
-                                  lpScrollRectangle: PSMALL_RECT,
-                                  lpClipRectangle: PSMALL_RECT,
-                                  dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}
-  proc GetConsoleTitle*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD{.stdcall,
-      dynlib: "kernel32", importc: "GetConsoleTitleA".}
-  proc SetConsoleTitle*(lpConsoleTitle: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "kernel32", importc: "SetConsoleTitleA".}
-  proc ReadConsole*(hConsoleInput: HANDLE, lpBuffer: LPVOID,
-                    nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,
-                    lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",
-      importc: "ReadConsoleA".}
-  proc WriteConsole*(hConsoleOutput: HANDLE, lpBuffer: pointer,
-                     nNumberOfCharsToWrite: DWORD,
-                     lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.
-      stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}
-  proc WNetAddConnection*(lpRemoteName: LPCSTR, lpPassword: LPCSTR,
-                          lpLocalName: LPCSTR): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetAddConnectionA".}
-  proc WNetAddConnection2*(lpNetResource: LPNETRESOURCE, lpPassword: LPCSTR,
-                           lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetAddConnection2A".}
-  proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                           lpPassword: LPCSTR, lpUserName: LPCSTR,
-                           dwFlags: DWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetAddConnection3A".}
-  proc WNetCancelConnection*(lpName: LPCSTR, fForce: WINBOOL): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetCancelConnectionA".}
-  proc WNetCancelConnection2*(lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetCancelConnection2A".}
-  proc WNetGetConnection*(lpLocalName: LPCSTR, lpRemoteName: LPSTR,
-                          lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetGetConnectionA".}
-  proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,
-                          lpUserID: LPCSTR, lpPassword: LPCSTR, dwFlags: DWORD,
-                          lpAccessName: LPSTR, lpBufferSize: LPDWORD,
-                          lpResult: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetUseConnectionA".}
-  proc WNetSetConnection*(lpName: LPCSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetSetConnectionA".}
-  proc WNetConnectionDialog1*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}
-  proc WNetDisconnectDialog1*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetDisconnectDialog1A".}
-  proc WNetOpenEnum*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,
-                     lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}
-  proc WNetEnumResource*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,
-                         lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetEnumResourceA".}
-  proc WNetGetUniversalName*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD,
-                             lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}
-  proc WNetGetUser*(lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetGetUserA".}
-  proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: LPSTR,
-                            lpBufferSize: LPDWORD): DWORD{.stdcall,
-      dynlib: "mpr", importc: "WNetGetProviderNameA".}
-  proc WNetGetNetworkInformation*(lpProvider: LPCSTR,
-                                  lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.
-      stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}
-  proc WNetGetLastError*(lpError: LPDWORD, lpErrorBuf: LPSTR,
-                         nErrorBufSize: DWORD, lpNameBuf: LPSTR,
-                         nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-      importc: "WNetGetLastErrorA".}
-  proc MultinetGetConnectionPerformance*(lpNetResource: LPNETRESOURCE,
-      lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,
-      dynlib: "mpr", importc: "MultinetGetConnectionPerformanceA".}
-  proc ChangeServiceConfig*(hService: SC_HANDLE, dwServiceType: DWORD,
-                            dwStartType: DWORD, dwErrorControl: DWORD,
-                            lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR,
-                            lpdwTagId: LPDWORD, lpDependencies: LPCSTR,
-                            lpServiceStartName: LPCSTR, lpPassword: LPCSTR,
-                            lpDisplayName: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "ChangeServiceConfigA".}
-  proc CreateService*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,
-                      lpDisplayName: LPCSTR, dwDesiredAccess: DWORD,
-                      dwServiceType: DWORD, dwStartType: DWORD,
-                      dwErrorControl: DWORD, lpBinaryPathName: LPCSTR,
-                      lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD,
-                      lpDependencies: LPCSTR, lpServiceStartName: LPCSTR,
-                      lpPassword: LPCSTR): SC_HANDLE{.stdcall,
-      dynlib: "advapi32", importc: "CreateServiceA".}
-  proc EnumDependentServices*(hService: SC_HANDLE, dwServiceState: DWORD,
-                              lpServices: LPENUM_SERVICE_STATUS,
-                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,
-                              lpServicesReturned: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "EnumDependentServicesA".}
-  proc EnumServicesStatus*(hSCManager: SC_HANDLE, dwServiceType: DWORD,
-                           dwServiceState: DWORD,
-                           lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,
-                           pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,
-                           lpResumeHandle: LPDWORD): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "EnumServicesStatusA".}
-  proc GetServiceKeyName*(hSCManager: SC_HANDLE, lpDisplayName: LPCSTR,
-                          lpServiceName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameA".}
-  proc GetServiceDisplayName*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,
-                              lpDisplayName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameA".}
-  proc OpenSCManager*(lpMachineName: LPCSTR, lpDatabaseName: LPCSTR,
-                      dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-      dynlib: "advapi32", importc: "OpenSCManagerA".}
-  proc OpenService*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,
-                    dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,
-      dynlib: "advapi32", importc: "OpenServiceA".}
-  proc QueryServiceConfig*(hService: SC_HANDLE,
-                           lpServiceConfig: LPQUERY_SERVICE_CONFIG,
-                           cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "QueryServiceConfigA".}
-  proc QueryServiceLockStatus*(hSCManager: SC_HANDLE,
-                               lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,
-                               cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusA".}
-  proc RegisterServiceCtrlHandler*(lpServiceName: LPCSTR,
-                                   lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.
-      stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerA".}
-  proc StartServiceCtrlDispatcher*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherA".}
-  proc StartService*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,
-                     lpServiceArgVectors: LPCSTR): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "StartServiceA".}
-  proc DragQueryFile*(para1: HDROP, para2: int, para3: cstring, para4: int): int{.
-      stdcall, dynlib: "shell32", importc: "DragQueryFileA".}
-  proc ExtractAssociatedIcon*(para1: HINST, para2: cstring, para3: LPWORD): HICON{.
-      stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconA".}
-  proc ExtractIcon*(para1: HINST, para2: cstring, para3: int): HICON{.stdcall,
-      dynlib: "shell32", importc: "ExtractIconA".}
-  proc FindExecutable*(para1: cstring, para2: cstring, para3: cstring): HINST{.
-      stdcall, dynlib: "shell32", importc: "FindExecutableA".}
-  proc ShellAbout*(para1: HWND, para2: cstring, para3: cstring, para4: HICON): int32{.
-      stdcall, dynlib: "shell32", importc: "ShellAboutA".}
-  proc ShellExecute*(para1: HWND, para2: cstring, para3: cstring,
-                     para4: cstring, para5: cstring, para6: int32): HINST{.
-      stdcall, dynlib: "shell32", importc: "ShellExecuteA".}
-  proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.
-      stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}
-  proc DdeCreateStringHandle*(para1: DWORD, para2: cstring, para3: int32): HSZ{.
-      stdcall, dynlib: "user32", importc: "DdeCreateStringHandleA".}
-  proc DdeInitialize*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,
-                      para4: DWORD): UINT{.stdcall, dynlib: "user32",
-      importc: "DdeInitializeA".}
-  proc DdeQueryString*(para1: DWORD, para2: HSZ, para3: cstring, para4: DWORD,
-                       para5: int32): DWORD{.stdcall, dynlib: "user32",
-      importc: "DdeQueryStringA".}
-  proc LogonUser*(para1: LPSTR, para2: LPSTR, para3: LPSTR, para4: DWORD,
-                  para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,
-      dynlib: "advapi32", importc: "LogonUserA".}
-  proc CreateProcessAsUser*(para1: HANDLE, para2: LPCTSTR, para3: LPTSTR,
-                            para4: LPSECURITY_ATTRIBUTES,
-                            para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,
-                            para7: DWORD, para8: LPVOID, para9: LPCTSTR,
-                            para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.
-      stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserA".}
-proc GetRandomRgn*(aHDC: HDC, aHRGN: HRGN, iNum: WINT): WINT{.stdcall,
-     importc, dynlib: "gdi32".}
-
-proc AccessCheck*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                  ClientToken: HANDLE, DesiredAccess: DWORD,
-                  GenericMapping: PGENERIC_MAPPING,
-                  PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD,
-                  GrantedAccess: LPDWORD, AccessStatus: LPBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AccessCheck".}
-proc FreeResource*(hResData: HGLOBAL): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "FreeResource".}
-proc LockResource*(hResData: HGLOBAL): LPVOID{.stdcall, dynlib: "kernel32",
-    importc: "LockResource".}
-proc FreeLibrary*(hLibModule: HINST): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "FreeLibrary".}
-proc FreeLibraryAndExitThread*(hLibModule: HMODULE, dwExitCode: DWORD){.stdcall,
-    dynlib: "kernel32", importc: "FreeLibraryAndExitThread".}
-proc DisableThreadLibraryCalls*(hLibModule: HMODULE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "DisableThreadLibraryCalls".}
-proc GetProcAddress*(hModule: HINST, lpProcName: LPCSTR): FARPROC{.stdcall,
-    dynlib: "kernel32", importc: "GetProcAddress".}
-proc GetVersion*(): DWORD{.stdcall, dynlib: "kernel32", importc: "GetVersion".}
-proc GlobalAlloc*(uFlags: UINT, dwBytes: DWORD): HGLOBAL{.stdcall,
-    dynlib: "kernel32", importc: "GlobalAlloc".}
-proc GlobalDiscard*(hglbMem: HGLOBAL): HGLOBAL
-proc GlobalReAlloc*(hMem: HGLOBAL, dwBytes: DWORD, uFlags: UINT): HGLOBAL{.
-    stdcall, dynlib: "kernel32", importc: "GlobalReAlloc".}
-proc GlobalSize*(hMem: HGLOBAL): DWORD{.stdcall, dynlib: "kernel32",
-                                        importc: "GlobalSize".}
-proc GlobalFlags*(hMem: HGLOBAL): UINT{.stdcall, dynlib: "kernel32",
-                                        importc: "GlobalFlags".}
-proc GlobalLock*(hMem: HGLOBAL): LPVOID{.stdcall, dynlib: "kernel32",
-    importc: "GlobalLock".}
-proc GlobalHandle*(pMem: LPCVOID): HGLOBAL{.stdcall, dynlib: "kernel32",
-    importc: "GlobalHandle".}
-proc GlobalUnlock*(hMem: HGLOBAL): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "GlobalUnlock".}
-proc GlobalFree*(hMem: HGLOBAL): HGLOBAL{.stdcall, dynlib: "kernel32",
-    importc: "GlobalFree".}
-proc GlobalCompact*(dwMinFree: DWORD): UINT{.stdcall, dynlib: "kernel32",
-    importc: "GlobalCompact".}
-proc GlobalFix*(hMem: HGLOBAL){.stdcall, dynlib: "kernel32",
-                                importc: "GlobalFix".}
-proc GlobalUnfix*(hMem: HGLOBAL){.stdcall, dynlib: "kernel32",
-                                  importc: "GlobalUnfix".}
-proc GlobalWire*(hMem: HGLOBAL): LPVOID{.stdcall, dynlib: "kernel32",
-    importc: "GlobalWire".}
-proc GlobalUnWire*(hMem: HGLOBAL): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "GlobalUnWire".}
-proc GlobalMemoryStatus*(lpBuffer: LPMEMORYSTATUS){.stdcall, dynlib: "kernel32",
-    importc: "GlobalMemoryStatus".}
-proc LocalAlloc*(uFlags: UINT, uBytes: UINT): HLOCAL{.stdcall,
-    dynlib: "kernel32", importc: "LocalAlloc".}
-proc LocalDiscard*(hlocMem: HLOCAL): HLOCAL
-proc LocalReAlloc*(hMem: HLOCAL, uBytes: UINT, uFlags: UINT): HLOCAL{.stdcall,
-    dynlib: "kernel32", importc: "LocalReAlloc".}
-proc LocalLock*(hMem: HLOCAL): LPVOID{.stdcall, dynlib: "kernel32",
-                                       importc: "LocalLock".}
-proc LocalHandle*(pMem: LPCVOID): HLOCAL{.stdcall, dynlib: "kernel32",
-    importc: "LocalHandle".}
-proc LocalUnlock*(hMem: HLOCAL): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "LocalUnlock".}
-proc LocalSize*(hMem: HLOCAL): UINT{.stdcall, dynlib: "kernel32",
-                                     importc: "LocalSize".}
-proc LocalFlags*(hMem: HLOCAL): UINT{.stdcall, dynlib: "kernel32",
-                                      importc: "LocalFlags".}
-proc LocalFree*(hMem: HLOCAL): HLOCAL{.stdcall, dynlib: "kernel32",
-                                       importc: "LocalFree".}
-proc LocalShrink*(hMem: HLOCAL, cbNewSize: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "LocalShrink".}
-proc LocalCompact*(uMinFree: UINT): UINT{.stdcall, dynlib: "kernel32",
-    importc: "LocalCompact".}
-proc FlushInstructionCache*(hProcess: HANDLE, lpBaseAddress: LPCVOID,
-                            dwSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FlushInstructionCache".}
-proc VirtualAlloc*(lpAddress: LPVOID, dwSize: DWORD, flAllocationType: DWORD,
-                   flProtect: DWORD): LPVOID{.stdcall, dynlib: "kernel32",
-    importc: "VirtualAlloc".}
-proc VirtualFree*(lpAddress: LPVOID, dwSize: DWORD, dwFreeType: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "VirtualFree".}
-proc VirtualProtect*(lpAddress: LPVOID, dwSize: DWORD, flNewProtect: DWORD,
-                     lpflOldProtect: PDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "VirtualProtect".}
-proc VirtualQuery*(lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION,
-                   dwLength: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "VirtualQuery".}
-proc VirtualProtectEx*(hProcess: HANDLE, lpAddress: LPVOID, dwSize: DWORD,
-                       flNewProtect: DWORD, lpflOldProtect: PDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "VirtualProtectEx".}
-proc VirtualQueryEx*(hProcess: HANDLE, lpAddress: LPCVOID,
-                     lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "VirtualQueryEx".}
-proc HeapCreate*(flOptions: DWORD, dwInitialSize: DWORD, dwMaximumSize: DWORD): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "HeapCreate".}
-proc HeapDestroy*(hHeap: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "HeapDestroy".}
-proc HeapAlloc*(hHeap: HANDLE, dwFlags: DWORD, dwBytes: DWORD): LPVOID{.stdcall,
-    dynlib: "kernel32", importc: "HeapAlloc".}
-proc HeapReAlloc*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: DWORD): LPVOID{.
-    stdcall, dynlib: "kernel32", importc: "HeapReAlloc".}
-proc HeapFree*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "HeapFree".}
-proc HeapSize*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "HeapSize".}
-proc HeapValidate*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "HeapValidate".}
-proc HeapCompact*(hHeap: HANDLE, dwFlags: DWORD): UINT{.stdcall,
-    dynlib: "kernel32", importc: "HeapCompact".}
-proc GetProcessHeap*(): HANDLE{.stdcall, dynlib: "kernel32",
-                                importc: "GetProcessHeap".}
-proc GetProcessHeaps*(NumberOfHeaps: DWORD, ProcessHeaps: PHANDLE): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetProcessHeaps".}
-proc HeapLock*(hHeap: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-                                        importc: "HeapLock".}
-proc HeapUnlock*(hHeap: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "HeapUnlock".}
-proc HeapWalk*(hHeap: HANDLE, lpEntry: LPPROCESS_HEAP_ENTRY): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "HeapWalk".}
-proc GetProcessAffinityMask*(hProcess: HANDLE, lpProcessAffinityMask: LPDWORD,
-                             lpSystemAffinityMask: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetProcessAffinityMask".}
-proc GetProcessTimes*(hProcess: HANDLE, lpCreationTime: LPFILETIME,
-                      lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME,
-                      lpUserTime: LPFILETIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetProcessTimes".}
-proc GetProcessWorkingSetSize*(hProcess: HANDLE,
-                               lpMinimumWorkingSetSize: LPDWORD,
-                               lpMaximumWorkingSetSize: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetProcessWorkingSetSize".}
-proc SetProcessWorkingSetSize*(hProcess: HANDLE, dwMinimumWorkingSetSize: DWORD,
-                               dwMaximumWorkingSetSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetProcessWorkingSetSize".}
-proc OpenProcess*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                  dwProcessId: DWORD): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "OpenProcess".}
-proc GetCurrentProcess*(): HANDLE{.stdcall, dynlib: "kernel32",
-                                   importc: "GetCurrentProcess".}
-proc GetCurrentProcessId*(): DWORD{.stdcall, dynlib: "kernel32",
-                                    importc: "GetCurrentProcessId".}
-proc ExitProcess*(uExitCode: UINT){.stdcall, dynlib: "kernel32",
-                                    importc: "ExitProcess".}
-proc TerminateProcess*(hProcess: HANDLE, uExitCode: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "TerminateProcess".}
-proc SetProcessAffinityMask*(hProcess: THandle, dwProcessAffinityMask: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetProcessAffinityMask".}
-proc GetExitCodeProcess*(hProcess: HANDLE, lpExitCode: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetExitCodeProcess".}
-proc FatalExit*(ExitCode: int32){.stdcall, dynlib: "kernel32",
-                                  importc: "FatalExit".}
-proc RaiseException*(dwExceptionCode: DWORD, dwExceptionFlags: DWORD,
-                     nNumberOfArguments: DWORD, lpArguments: LPDWORD){.stdcall,
-    dynlib: "kernel32", importc: "RaiseException".}
-proc UnhandledExceptionFilter*(ExceptionInfo: lpemptyrecord): LONG{.stdcall,
-    dynlib: "kernel32", importc: "UnhandledExceptionFilter".}
-proc CreateRemoteThread*(hProcess: HANDLE,
-                         lpThreadAttributes: LPSECURITY_ATTRIBUTES,
-                         dwStackSize: DWORD,
-                         lpStartAddress: LPTHREAD_START_ROUTINE,
-                         lpParameter: LPVOID, dwCreationFlags: DWORD,
-                         lpThreadId: LPDWORD): HANDLE{.stdcall,
-    dynlib: "kernel32", importc: "CreateRemoteThread".}
-proc GetCurrentThread*(): HANDLE{.stdcall, dynlib: "kernel32",
-                                  importc: "GetCurrentThread".}
-proc GetCurrentThreadId*(): DWORD{.stdcall, dynlib: "kernel32",
-                                   importc: "GetCurrentThreadId".}
-proc SetThreadAffinityMask*(hThread: HANDLE, dwThreadAffinityMask: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "SetThreadAffinityMask".}
-proc SetThreadPriority*(hThread: HANDLE, nPriority: int32): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetThreadPriority".}
-proc GetThreadPriority*(hThread: HANDLE): int32{.stdcall, dynlib: "kernel32",
-    importc: "GetThreadPriority".}
-proc GetThreadTimes*(hThread: HANDLE, lpCreationTime: LPFILETIME,
-                     lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME,
-                     lpUserTime: LPFILETIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetThreadTimes".}
-proc ExitThread*(dwExitCode: DWORD){.stdcall, dynlib: "kernel32",
-                                     importc: "ExitThread".}
-proc TerminateThread*(hThread: HANDLE, dwExitCode: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "TerminateThread".}
-proc GetExitCodeThread*(hThread: HANDLE, lpExitCode: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetExitCodeThread".}
-proc GetThreadSelectorEntry*(hThread: HANDLE, dwSelector: DWORD,
-                             lpSelectorEntry: LPLDT_ENTRY): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetThreadSelectorEntry".}
-proc GetLastError*(): DWORD{.stdcall, dynlib: "kernel32",
-                             importc: "GetLastError".}
-proc SetLastError*(dwErrCode: DWORD){.stdcall, dynlib: "kernel32",
-                                      importc: "SetLastError".}
-proc CreateIoCompletionPort*(FileHandle: HANDLE, ExistingCompletionPort: HANDLE,
-                             CompletionKey: DWORD,
-                             NumberOfConcurrentThreads: DWORD): HANDLE{.stdcall,
-    dynlib: "kernel32", importc: "CreateIoCompletionPort".}
-proc SetErrorMode*(uMode: UINT): UINT{.stdcall, dynlib: "kernel32",
-                                       importc: "SetErrorMode".}
-proc ReadProcessMemory*(hProcess: HANDLE, lpBaseAddress: LPCVOID,
-                        lpBuffer: LPVOID, nSize: DWORD,
-                        lpNumberOfBytesRead: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadProcessMemory".}
-proc WriteProcessMemory*(hProcess: HANDLE, lpBaseAddress: LPVOID,
-                         lpBuffer: LPVOID, nSize: DWORD,
-                         lpNumberOfBytesWritten: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteProcessMemory".}
-proc GetThreadContext*(hThread: HANDLE, lpContext: LPCONTEXT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetThreadContext".}
-proc SuspendThread*(hThread: HANDLE): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "SuspendThread".}
-proc ResumeThread*(hThread: HANDLE): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "ResumeThread".}
-proc DebugBreak*(){.stdcall, dynlib: "kernel32", importc: "DebugBreak".}
-proc WaitForDebugEvent*(lpDebugEvent: LPDEBUG_EVENT, dwMilliseconds: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WaitForDebugEvent".}
-proc ContinueDebugEvent*(dwProcessId: DWORD, dwThreadId: DWORD,
-                         dwContinueStatus: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ContinueDebugEvent".}
-proc DebugActiveProcess*(dwProcessId: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "DebugActiveProcess".}
-proc InitializeCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,
-    dynlib: "kernel32", importc: "InitializeCriticalSection".}
-proc EnterCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,
-    dynlib: "kernel32", importc: "EnterCriticalSection".}
-proc LeaveCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,
-    dynlib: "kernel32", importc: "LeaveCriticalSection".}
-proc DeleteCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,
-    dynlib: "kernel32", importc: "DeleteCriticalSection".}
-proc TryEnterCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "TryEnterCriticalSection".}
-proc SetEvent*(hEvent: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "SetEvent".}
-proc ResetEvent*(hEvent: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ResetEvent".}
-proc PulseEvent*(hEvent: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "PulseEvent".}
-proc ReleaseSemaphore*(hSemaphore: HANDLE, lReleaseCount: LONG,
-                       lpPreviousCount: LPLONG): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReleaseSemaphore".}
-proc ReleaseMutex*(hMutex: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ReleaseMutex".}
-proc WaitForSingleObject*(hHandle: HANDLE, dwMilliseconds: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "WaitForSingleObject".}
-proc WaitForMultipleObjects*(nCount: DWORD, lpHandles: PWOHandleArray,
-                             bWaitAll: WINBOOL, dwMilliseconds: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "WaitForMultipleObjects".}
-proc Sleep*(dwMilliseconds: DWORD){.stdcall, dynlib: "kernel32",
-                                    importc: "Sleep".}
-proc LoadResource*(hModule: HINST, hResInfo: HRSRC): HGLOBAL{.stdcall,
-    dynlib: "kernel32", importc: "LoadResource".}
-proc SizeofResource*(hModule: HINST, hResInfo: HRSRC): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "SizeofResource".}
-proc GlobalDeleteAtom*(nAtom: ATOM): ATOM{.stdcall, dynlib: "kernel32",
-    importc: "GlobalDeleteAtom".}
-proc InitAtomTable*(nSize: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "InitAtomTable".}
-proc DeleteAtom*(nAtom: ATOM): ATOM{.stdcall, dynlib: "kernel32",
-                                     importc: "DeleteAtom".}
-proc SetHandleCount*(uNumber: UINT): UINT{.stdcall, dynlib: "kernel32",
-    importc: "SetHandleCount".}
-proc GetLogicalDrives*(): DWORD{.stdcall, dynlib: "kernel32",
-                                 importc: "GetLogicalDrives".}
-proc LockFile*(hFile: HANDLE, dwFileOffsetLow: DWORD, dwFileOffsetHigh: DWORD,
-               nNumberOfBytesToLockLow: DWORD, nNumberOfBytesToLockHigh: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "LockFile".}
-proc UnlockFile*(hFile: HANDLE, dwFileOffsetLow: DWORD, dwFileOffsetHigh: DWORD,
-                 nNumberOfBytesToUnlockLow: DWORD,
-                 nNumberOfBytesToUnlockHigh: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "UnlockFile".}
-proc LockFileEx*(hFile: HANDLE, dwFlags: DWORD, dwReserved: DWORD,
-                 nNumberOfBytesToLockLow: DWORD,
-                 nNumberOfBytesToLockHigh: DWORD, lpOverlapped: LPOVERLAPPED): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "LockFileEx".}
-proc UnlockFileEx*(hFile: HANDLE, dwReserved: DWORD,
-                   nNumberOfBytesToUnlockLow: DWORD,
-                   nNumberOfBytesToUnlockHigh: DWORD, lpOverlapped: LPOVERLAPPED): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "UnlockFileEx".}
-proc GetFileInformationByHandle*(hFile: HANDLE, lpFileInformation: LPBY_HANDLE_FILE_INFORMATION): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetFileInformationByHandle".}
-proc GetFileType*(hFile: HANDLE): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetFileType".}
-proc GetFileSize*(hFile: HANDLE, lpFileSizeHigh: LPDWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetFileSize".}
-proc GetStdHandle*(nStdHandle: DWORD): HANDLE{.stdcall, dynlib: "kernel32",
-    importc: "GetStdHandle".}
-proc SetStdHandle*(nStdHandle: DWORD, hHandle: HANDLE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetStdHandle".}
-proc FlushFileBuffers*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "FlushFileBuffers".}
-proc DeviceIoControl*(hDevice: HANDLE, dwIoControlCode: DWORD,
-                      lpInBuffer: LPVOID, nInBufferSize: DWORD,
-                      lpOutBuffer: LPVOID, nOutBufferSize: DWORD,
-                      lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "DeviceIoControl".}
-proc SetEndOfFile*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "SetEndOfFile".}
-proc SetFilePointer*(hFile: HANDLE, lDistanceToMove: LONG,
-                     lpDistanceToMoveHigh: PLONG, dwMoveMethod: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "SetFilePointer".}
-proc FindClose*(hFindFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "FindClose".}
-proc GetFileTime*(hFile: HANDLE, lpCreationTime: LPFILETIME,
-                  lpLastAccessTime: LPFILETIME, lpLastWriteTime: LPFILETIME): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetFileTime".}
-proc SetFileTime*(hFile: HANDLE, lpCreationTime: LPFILETIME,
-                  lpLastAccessTime: LPFILETIME, lpLastWriteTime: LPFILETIME): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetFileTime".}
-proc CloseHandle*(hObject: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CloseHandle".}
-proc DuplicateHandle*(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE,
-                      hTargetProcessHandle: HANDLE, lpTargetHandle: LPHANDLE,
-                      dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,
-                      dwOptions: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "DuplicateHandle".}
-proc GetHandleInformation*(hObject: HANDLE, lpdwFlags: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetHandleInformation".}
-proc SetHandleInformation*(hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetHandleInformation".}
-proc LoadModule*(lpModuleName: LPCSTR, lpParameterBlock: LPVOID): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "LoadModule".}
-proc WinExec*(lpCmdLine: LPCSTR, uCmdShow: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "WinExec".}
-proc ClearCommBreak*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ClearCommBreak".}
-proc ClearCommError*(hFile: HANDLE, lpErrors: LPDWORD, lpStat: LPCOMSTAT): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ClearCommError".}
-proc SetupComm*(hFile: HANDLE, dwInQueue: DWORD, dwOutQueue: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetupComm".}
-proc EscapeCommFunction*(hFile: HANDLE, dwFunc: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "EscapeCommFunction".}
-proc GetCommConfig*(hCommDev: HANDLE, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetCommConfig".}
-proc GetCommProperties*(hFile: HANDLE, lpCommProp: LPCOMMPROP): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetCommProperties".}
-proc GetCommModemStatus*(hFile: HANDLE, lpModemStat: PDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetCommModemStatus".}
-proc GetCommState*(hFile: HANDLE, lpDCB: PDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetCommState".}
-proc GetCommTimeouts*(hFile: HANDLE, lpCommTimeouts: PCOMMTIMEOUTS): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetCommTimeouts".}
-proc PurgeComm*(hFile: HANDLE, dwFlags: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "PurgeComm".}
-proc SetCommBreak*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "SetCommBreak".}
-proc SetCommConfig*(hCommDev: HANDLE, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetCommConfig".}
-proc SetCommMask*(hFile: HANDLE, dwEvtMask: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetCommMask".}
-proc SetCommState*(hFile: HANDLE, lpDCB: LPDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetCommState".}
-proc SetCommTimeouts*(hFile: HANDLE, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetCommTimeouts".}
-proc TransmitCommChar*(hFile: HANDLE, cChar: char): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "TransmitCommChar".}
-proc WaitCommEvent*(hFile: HANDLE, lpEvtMask: LPDWORD,
-                    lpOverlapped: LPOVERLAPPED): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WaitCommEvent".}
-proc SetTapePosition*(hDevice: HANDLE, dwPositionMethod: DWORD,
-                      dwPartition: DWORD, dwOffsetLow: DWORD,
-                      dwOffsetHigh: DWORD, bImmediate: WINBOOL): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "SetTapePosition".}
-proc GetTapePosition*(hDevice: HANDLE, dwPositionType: DWORD,
-                      lpdwPartition: LPDWORD, lpdwOffsetLow: LPDWORD,
-                      lpdwOffsetHigh: LPDWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetTapePosition".}
-proc PrepareTape*(hDevice: HANDLE, dwOperation: DWORD, bImmediate: WINBOOL): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "PrepareTape".}
-proc EraseTape*(hDevice: HANDLE, dwEraseType: DWORD, bImmediate: WINBOOL): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "EraseTape".}
-proc CreateTapePartition*(hDevice: HANDLE, dwPartitionMethod: DWORD,
-                          dwCount: DWORD, dwSize: DWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "CreateTapePartition".}
-proc WriteTapemark*(hDevice: HANDLE, dwTapemarkType: DWORD,
-                    dwTapemarkCount: DWORD, bImmediate: WINBOOL): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "WriteTapemark".}
-proc GetTapeStatus*(hDevice: HANDLE): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetTapeStatus".}
-proc GetTapeParameters*(hDevice: HANDLE, dwOperation: DWORD, lpdwSize: LPDWORD,
-                        lpTapeInformation: LPVOID): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetTapeParameters".}
-proc SetTapeParameters*(hDevice: HANDLE, dwOperation: DWORD,
-                        lpTapeInformation: LPVOID): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "SetTapeParameters".}
-proc Beep*(dwFreq: DWORD, dwDuration: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "Beep".}
-proc MulDiv*(nNumber: int32, nNumerator: int32, nDenominator: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "MulDiv".}
-proc GetSystemTime*(lpSystemTime: LPSYSTEMTIME){.stdcall, dynlib: "kernel32",
-    importc: "GetSystemTime".}
-proc GetSystemTimeAsFileTime*(lpSystemTimeAsFileTime: LPFILETIME){.stdcall,
-    dynlib: "kernel32", importc: "GetSystemTimeAsFileTime".}
-proc SetSystemTime*(lpSystemTime: LPSYSTEMTIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetSystemTime".}
-proc GetLocalTime*(lpSystemTime: LPSYSTEMTIME){.stdcall, dynlib: "kernel32",
-    importc: "GetLocalTime".}
-proc SetLocalTime*(lpSystemTime: LPSYSTEMTIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetLocalTime".}
-proc GetSystemInfo*(lpSystemInfo: LPSYSTEM_INFO){.stdcall, dynlib: "kernel32",
-    importc: "GetSystemInfo".}
-proc SystemTimeToTzSpecificLocalTime*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION,
-                                      lpUniversalTime: LPSYSTEMTIME,
-                                      lpLocalTime: LPSYSTEMTIME): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SystemTimeToTzSpecificLocalTime".}
-proc GetTimeZoneInformation*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetTimeZoneInformation".}
-proc SetTimeZoneInformation*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetTimeZoneInformation".}
-proc SystemTimeToFileTime*(lpSystemTime: LPSYSTEMTIME, lpFileTime: LPFILETIME): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SystemTimeToFileTime".}
-proc FileTimeToLocalFileTime*(lpFileTime: LPFILETIME,
-                              lpLocalFileTime: LPFILETIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FileTimeToLocalFileTime".}
-proc LocalFileTimeToFileTime*(lpLocalFileTime: LPFILETIME,
-                              lpFileTime: LPFILETIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "LocalFileTimeToFileTime".}
-proc FileTimeToSystemTime*(lpFileTime: LPFILETIME, lpSystemTime: LPSYSTEMTIME): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FileTimeToSystemTime".}
-proc CompareFileTime*(lpFileTime1: LPFILETIME, lpFileTime2: LPFILETIME): LONG{.
-    stdcall, dynlib: "kernel32", importc: "CompareFileTime".}
-proc FileTimeToDosDateTime*(lpFileTime: LPFILETIME, lpFatDate: LPWORD,
-                            lpFatTime: LPWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FileTimeToDosDateTime".}
-proc DosDateTimeToFileTime*(wFatDate: int16, wFatTime: int16,
-                            lpFileTime: LPFILETIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "DosDateTimeToFileTime".}
-proc GetTickCount*(): DWORD{.stdcall, dynlib: "kernel32",
-                             importc: "GetTickCount".}
-proc SetSystemTimeAdjustment*(dwTimeAdjustment: DWORD,
-                              bTimeAdjustmentDisabled: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetSystemTimeAdjustment".}
-proc GetSystemTimeAdjustment*(lpTimeAdjustment: PDWORD, lpTimeIncrement: PDWORD,
-                              lpTimeAdjustmentDisabled: PWINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetSystemTimeAdjustment".}
-proc CreatePipe*(hReadPipe: PHANDLE, hWritePipe: PHANDLE,
-                 lpPipeAttributes: LPSECURITY_ATTRIBUTES, nSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreatePipe".}
-proc ConnectNamedPipe*(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ConnectNamedPipe".}
-proc DisconnectNamedPipe*(hNamedPipe: HANDLE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "DisconnectNamedPipe".}
-proc SetNamedPipeHandleState*(hNamedPipe: HANDLE, lpMode: LPDWORD,
-                              lpMaxCollectionCount: LPDWORD,
-                              lpCollectDataTimeout: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetNamedPipeHandleState".}
-proc GetNamedPipeInfo*(hNamedPipe: HANDLE, lpFlags: LPDWORD,
-                       lpOutBufferSize: LPDWORD, lpInBufferSize: LPDWORD,
-                       lpMaxInstances: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetNamedPipeInfo".}
-proc PeekNamedPipe*(hNamedPipe: HANDLE, lpBuffer: LPVOID, nBufferSize: DWORD,
-                    lpBytesRead: LPDWORD, lpTotalBytesAvail: LPDWORD,
-                    lpBytesLeftThisMessage: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "PeekNamedPipe".}
-proc TransactNamedPipe*(hNamedPipe: HANDLE, lpInBuffer: LPVOID,
-                        nInBufferSize: DWORD, lpOutBuffer: LPVOID,
-                        nOutBufferSize: DWORD, lpBytesRead: LPDWORD,
-                        lpOverlapped: LPOVERLAPPED): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "TransactNamedPipe".}
-proc GetMailslotInfo*(hMailslot: HANDLE, lpMaxMessageSize: LPDWORD,
-                      lpNextSize: LPDWORD, lpMessageCount: LPDWORD,
-                      lpReadTimeout: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetMailslotInfo".}
-proc SetMailslotInfo*(hMailslot: HANDLE, lReadTimeout: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetMailslotInfo".}
-proc MapViewOfFile*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD,
-                    dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD,
-                    dwNumberOfBytesToMap: DWORD): LPVOID{.stdcall,
-    dynlib: "kernel32", importc: "MapViewOfFile".}
-proc FlushViewOfFile*(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FlushViewOfFile".}
-proc UnmapViewOfFile*(lpBaseAddress: LPVOID): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "UnmapViewOfFile".}
-proc OpenFile*(lpFileName: LPCSTR, lpReOpenBuff: LPOFSTRUCT, uStyle: UINT): HFILE{.
-    stdcall, dynlib: "kernel32", importc: "OpenFile".}
-proc lopen*(lpPathName: LPCSTR, iReadWrite: int32): HFILE{.stdcall,
-    dynlib: "kernel32", importc: "_lopen".}
-proc lcreat*(lpPathName: LPCSTR, iAttribute: int32): HFILE{.stdcall,
-    dynlib: "kernel32", importc: "_lcreat".}
-proc lread*(hFile: HFILE, lpBuffer: LPVOID, uBytes: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "_lread".}
-proc lwrite*(hFile: HFILE, lpBuffer: LPCSTR, uBytes: UINT): UINT{.stdcall,
-    dynlib: "kernel32", importc: "_lwrite".}
-proc hread*(hFile: HFILE, lpBuffer: LPVOID, lBytes: int32): int32{.stdcall,
-    dynlib: "kernel32", importc: "_hread".}
-proc hwrite*(hFile: HFILE, lpBuffer: LPCSTR, lBytes: int32): int32{.stdcall,
-    dynlib: "kernel32", importc: "_hwrite".}
-proc lclose*(hFile: HFILE): HFILE{.stdcall, dynlib: "kernel32",
-                                   importc: "_lclose".}
-proc llseek*(hFile: HFILE, lOffset: LONG, iOrigin: int32): LONG{.stdcall,
-    dynlib: "kernel32", importc: "_llseek".}
-proc IsTextUnicode*(lpBuffer: LPVOID, cb: int32, lpi: LPINT): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "IsTextUnicode".}
-proc TlsAlloc*(): DWORD{.stdcall, dynlib: "kernel32", importc: "TlsAlloc".}
-proc TlsGetValue*(dwTlsIndex: DWORD): LPVOID{.stdcall, dynlib: "kernel32",
-    importc: "TlsGetValue".}
-proc TlsSetValue*(dwTlsIndex: DWORD, lpTlsValue: LPVOID): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "TlsSetValue".}
-proc TlsFree*(dwTlsIndex: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "TlsFree".}
-proc SleepEx*(dwMilliseconds: DWORD, bAlertable: WINBOOL): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "SleepEx".}
-proc WaitForSingleObjectEx*(hHandle: HANDLE, dwMilliseconds: DWORD,
-                            bAlertable: WINBOOL): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "WaitForSingleObjectEx".}
-proc WaitForMultipleObjectsEx*(nCount: DWORD, lpHandles: LPHANDLE,
-                               bWaitAll: WINBOOL, dwMilliseconds: DWORD,
-                               bAlertable: WINBOOL): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "WaitForMultipleObjectsEx".}
-proc ReadFileEx*(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD,
-                 lpOverlapped: LPOVERLAPPED,
-                 lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadFileEx".}
-proc WriteFileEx*(hFile: HANDLE, lpBuffer: LPCVOID,
-                  nNumberOfBytesToWrite: DWORD, lpOverlapped: LPOVERLAPPED,
-                  lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteFileEx".}
-proc BackupRead*(hFile: HANDLE, lpBuffer: LPBYTE, nNumberOfBytesToRead: DWORD,
-                 lpNumberOfBytesRead: LPDWORD, bAbort: WINBOOL,
-                 bProcessSecurity: WINBOOL, lpContext: var LPVOID): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BackupRead".}
-proc BackupSeek*(hFile: HANDLE, dwLowBytesToSeek: DWORD,
-                 dwHighBytesToSeek: DWORD, lpdwLowByteSeeked: LPDWORD,
-                 lpdwHighByteSeeked: LPDWORD, lpContext: var LPVOID): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BackupSeek".}
-proc BackupWrite*(hFile: HANDLE, lpBuffer: LPBYTE, nNumberOfBytesToWrite: DWORD,
-                  lpNumberOfBytesWritten: LPDWORD, bAbort: WINBOOL,
-                  bProcessSecurity: WINBOOL, lpContext: var LPVOID): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BackupWrite".}
-proc SetProcessShutdownParameters*(dwLevel: DWORD, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetProcessShutdownParameters".}
-proc GetProcessShutdownParameters*(lpdwLevel: LPDWORD, lpdwFlags: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetProcessShutdownParameters".}
-proc SetFileApisToOEM*(){.stdcall, dynlib: "kernel32",
-                          importc: "SetFileApisToOEM".}
-proc SetFileApisToANSI*(){.stdcall, dynlib: "kernel32",
-                           importc: "SetFileApisToANSI".}
-proc AreFileApisANSI*(): WINBOOL{.stdcall, dynlib: "kernel32",
-                                  importc: "AreFileApisANSI".}
-proc CloseEventLog*(hEventLog: HANDLE): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "CloseEventLog".}
-proc DeregisterEventSource*(hEventLog: HANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "DeregisterEventSource".}
-proc NotifyChangeEventLog*(hEventLog: HANDLE, hEvent: HANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "NotifyChangeEventLog".}
-proc GetNumberOfEventLogRecords*(hEventLog: HANDLE, NumberOfRecords: PDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetNumberOfEventLogRecords".}
-proc GetOldestEventLogRecord*(hEventLog: HANDLE, OldestRecord: PDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetOldestEventLogRecord".}
-proc DuplicateToken*(ExistingTokenHandle: HANDLE,
-                     ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
-                     DuplicateTokenHandle: PHANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "DuplicateToken".}
-proc GetKernelObjectSecurity*(Handle: HANDLE,
-                              RequestedInformation: SECURITY_INFORMATION,
-                              pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                              nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetKernelObjectSecurity".}
-proc ImpersonateNamedPipeClient*(hNamedPipe: HANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ImpersonateNamedPipeClient".}
-proc ImpersonateLoggedOnUser*(hToken: HANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ImpersonateLoggedOnUser".}
-proc ImpersonateSelf*(ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ImpersonateSelf".}
-proc RevertToSelf*(): WINBOOL{.stdcall, dynlib: "advapi32",
-                               importc: "RevertToSelf".}
-proc SetThreadToken*(Thread: PHANDLE, Token: HANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "SetThreadToken".}
-proc OpenProcessToken*(ProcessHandle: HANDLE, DesiredAccess: DWORD,
-                       TokenHandle: PHANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "OpenProcessToken".}
-proc OpenThreadToken*(ThreadHandle: HANDLE, DesiredAccess: DWORD,
-                      OpenAsSelf: WINBOOL, TokenHandle: PHANDLE): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "OpenThreadToken".}
-proc GetTokenInformation*(TokenHandle: HANDLE,
-                          TokenInformationClass: TOKEN_INFORMATION_CLASS,
-                          TokenInformation: LPVOID,
-                          TokenInformationLength: DWORD, ReturnLength: PDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetTokenInformation".}
-proc SetTokenInformation*(TokenHandle: HANDLE,
-                          TokenInformationClass: TOKEN_INFORMATION_CLASS,
-                          TokenInformation: LPVOID,
-                          TokenInformationLength: DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "SetTokenInformation".}
-proc AdjustTokenPrivileges*(TokenHandle: HANDLE, DisableAllPrivileges: WINBOOL,
-                            NewState: PTOKEN_PRIVILEGES, BufferLength: DWORD,
-                            PreviousState: PTOKEN_PRIVILEGES,
-                            ReturnLength: PDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AdjustTokenPrivileges".}
-proc AdjustTokenGroups*(TokenHandle: HANDLE, ResetToDefault: WINBOOL,
-                        NewState: PTOKEN_GROUPS, BufferLength: DWORD,
-                        PreviousState: PTOKEN_GROUPS, ReturnLength: PDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AdjustTokenGroups".}
-proc PrivilegeCheck*(ClientToken: HANDLE, RequiredPrivileges: PPRIVILEGE_SET,
-                     pfResult: LPBOOL): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "PrivilegeCheck".}
-proc IsValidSid*(pSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",
-                                       importc: "IsValidSid".}
-proc EqualSid*(pSid1: PSID, pSid2: PSID): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "EqualSid".}
-proc EqualPrefixSid*(pSid1: PSID, pSid2: PSID): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "EqualPrefixSid".}
-proc GetSidLengthRequired*(nSubAuthorityCount: UCHAR): DWORD{.stdcall,
-    dynlib: "advapi32", importc: "GetSidLengthRequired".}
-proc AllocateAndInitializeSid*(pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,
-                               nSubAuthorityCount: int8, nSubAuthority0: DWORD,
-                               nSubAuthority1: DWORD, nSubAuthority2: DWORD,
-                               nSubAuthority3: DWORD, nSubAuthority4: DWORD,
-                               nSubAuthority5: DWORD, nSubAuthority6: DWORD,
-                               nSubAuthority7: DWORD, pSid: var PSID): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AllocateAndInitializeSid".}
-proc FreeSid*(pSid: PSID): PVOID{.stdcall, dynlib: "advapi32",
-                                  importc: "FreeSid".}
-proc InitializeSid*(Sid: PSID, pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,
-                    nSubAuthorityCount: int8): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "InitializeSid".}
-proc GetSidIdentifierAuthority*(pSid: PSID): PSID_IDENTIFIER_AUTHORITY{.stdcall,
-    dynlib: "advapi32", importc: "GetSidIdentifierAuthority".}
-proc GetSidSubAuthority*(pSid: PSID, nSubAuthority: DWORD): PDWORD{.stdcall,
-    dynlib: "advapi32", importc: "GetSidSubAuthority".}
-proc GetSidSubAuthorityCount*(pSid: PSID): PUCHAR{.stdcall, dynlib: "advapi32",
-    importc: "GetSidSubAuthorityCount".}
-proc GetLengthSid*(pSid: PSID): DWORD{.stdcall, dynlib: "advapi32",
-                                       importc: "GetLengthSid".}
-proc CopySid*(nDestinationSidLength: DWORD, pDestinationSid: PSID,
-              pSourceSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "CopySid".}
-proc AreAllAccessesGranted*(GrantedAccess: DWORD, DesiredAccess: DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AreAllAccessesGranted".}
-proc AreAnyAccessesGranted*(GrantedAccess: DWORD, DesiredAccess: DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "AreAnyAccessesGranted".}
-proc MapGenericMask*(AccessMask: PDWORD, GenericMapping: PGENERIC_MAPPING){.
-    stdcall, dynlib: "advapi32", importc: "MapGenericMask".}
-proc IsValidAcl*(pAcl: PACL): WINBOOL{.stdcall, dynlib: "advapi32",
-                                       importc: "IsValidAcl".}
-proc InitializeAcl*(pAcl: PACL, nAclLength: DWORD, dwAclRevision: DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "InitializeAcl".}
-proc GetAclInformation*(pAcl: PACL, pAclInformation: LPVOID,
-                        nAclInformationLength: DWORD,
-                        dwAclInformationClass: ACL_INFORMATION_CLASS): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetAclInformation".}
-proc SetAclInformation*(pAcl: PACL, pAclInformation: LPVOID,
-                        nAclInformationLength: DWORD,
-                        dwAclInformationClass: ACL_INFORMATION_CLASS): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetAclInformation".}
-proc AddAce*(pAcl: PACL, dwAceRevision: DWORD, dwStartingAceIndex: DWORD,
-             pAceList: LPVOID, nAceListLength: DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AddAce".}
-proc DeleteAce*(pAcl: PACL, dwAceIndex: DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "DeleteAce".}
-proc GetAce*(pAcl: PACL, dwAceIndex: DWORD, pAce: var LPVOID): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetAce".}
-proc AddAccessAllowedAce*(pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD,
-                          pSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "AddAccessAllowedAce".}
-proc AddAccessDeniedAce*(pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD,
-                         pSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "AddAccessDeniedAce".}
-proc AddAuditAccessAce*(pAcl: PACL, dwAceRevision: DWORD, dwAccessMask: DWORD,
-                        pSid: PSID, bAuditSuccess: WINBOOL,
-                        bAuditFailure: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AddAuditAccessAce".}
-proc FindFirstFreeAce*(pAcl: PACL, pAce: var LPVOID): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "FindFirstFreeAce".}
-proc InitializeSecurityDescriptor*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                   dwRevision: DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "InitializeSecurityDescriptor".}
-proc IsValidSecurityDescriptor*(pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "IsValidSecurityDescriptor".}
-proc GetSecurityDescriptorLength*(pSecurityDescriptor: PSECURITY_DESCRIPTOR): DWORD{.
-    stdcall, dynlib: "advapi32", importc: "GetSecurityDescriptorLength".}
-proc GetSecurityDescriptorControl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                   pControl: PSECURITY_DESCRIPTOR_CONTROL,
-                                   lpdwRevision: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetSecurityDescriptorControl".}
-proc SetSecurityDescriptorDacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                bDaclPresent: WINBOOL, pDacl: PACL,
-                                bDaclDefaulted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "SetSecurityDescriptorDacl".}
-proc GetSecurityDescriptorDacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                lpbDaclPresent: LPBOOL, pDacl: var PACL,
-                                lpbDaclDefaulted: LPBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetSecurityDescriptorDacl".}
-proc SetSecurityDescriptorSacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                bSaclPresent: WINBOOL, pSacl: PACL,
-                                bSaclDefaulted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "SetSecurityDescriptorSacl".}
-proc GetSecurityDescriptorSacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                lpbSaclPresent: LPBOOL, pSacl: var PACL,
-                                lpbSaclDefaulted: LPBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetSecurityDescriptorSacl".}
-proc SetSecurityDescriptorOwner*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 pOwner: PSID, bOwnerDefaulted: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetSecurityDescriptorOwner".}
-proc GetSecurityDescriptorOwner*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 pOwner: var PSID, lpbOwnerDefaulted: LPBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetSecurityDescriptorOwner".}
-proc SetSecurityDescriptorGroup*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 pGroup: PSID, bGroupDefaulted: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetSecurityDescriptorGroup".}
-proc GetSecurityDescriptorGroup*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 pGroup: var PSID, lpbGroupDefaulted: LPBOOL): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetSecurityDescriptorGroup".}
-proc CreatePrivateObjectSecurity*(ParentDescriptor: PSECURITY_DESCRIPTOR,
-                                  CreatorDescriptor: PSECURITY_DESCRIPTOR,
-                                  NewDescriptor: var PSECURITY_DESCRIPTOR,
-                                  IsDirectoryObject: WINBOOL, Token: HANDLE,
-                                  GenericMapping: PGENERIC_MAPPING): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "CreatePrivateObjectSecurity".}
-proc SetPrivateObjectSecurity*(SecurityInformation: SECURITY_INFORMATION,
-                               ModificationDescriptor: PSECURITY_DESCRIPTOR,
-    ObjectsSecurityDescriptor: var PSECURITY_DESCRIPTOR,
-                               GenericMapping: PGENERIC_MAPPING, Token: HANDLE): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetPrivateObjectSecurity".}
-proc GetPrivateObjectSecurity*(ObjectDescriptor: PSECURITY_DESCRIPTOR,
-                               SecurityInformation: SECURITY_INFORMATION,
-                               ResultantDescriptor: PSECURITY_DESCRIPTOR,
-                               DescriptorLength: DWORD, ReturnLength: PDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "GetPrivateObjectSecurity".}
-proc DestroyPrivateObjectSecurity*(ObjectDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "DestroyPrivateObjectSecurity".}
-proc MakeSelfRelativeSD*(pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                         pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                         lpdwBufferLength: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "MakeSelfRelativeSD".}
-proc MakeAbsoluteSD*(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                     pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                     lpdwAbsoluteSecurityDescriptorSize: LPDWORD, pDacl: PACL,
-                     lpdwDaclSize: LPDWORD, pSacl: PACL, lpdwSaclSize: LPDWORD,
-                     pOwner: PSID, lpdwOwnerSize: LPDWORD, pPrimaryGroup: PSID,
-                     lpdwPrimaryGroupSize: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "MakeAbsoluteSD".}
-proc SetKernelObjectSecurity*(Handle: HANDLE,
-                              SecurityInformation: SECURITY_INFORMATION,
-                              SecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetKernelObjectSecurity".}
-proc FindNextChangeNotification*(hChangeHandle: HANDLE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FindNextChangeNotification".}
-proc FindCloseChangeNotification*(hChangeHandle: HANDLE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FindCloseChangeNotification".}
-proc VirtualLock*(lpAddress: LPVOID, dwSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "VirtualLock".}
-proc VirtualUnlock*(lpAddress: LPVOID, dwSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "VirtualUnlock".}
-proc MapViewOfFileEx*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD,
-                      dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD,
-                      dwNumberOfBytesToMap: DWORD, lpBaseAddress: LPVOID): LPVOID{.
-    stdcall, dynlib: "kernel32", importc: "MapViewOfFileEx".}
-proc SetPriorityClass*(hProcess: HANDLE, dwPriorityClass: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetPriorityClass".}
-proc GetPriorityClass*(hProcess: HANDLE): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "GetPriorityClass".}
-proc IsBadReadPtr*(lp: pointer, ucb: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsBadReadPtr".}
-proc IsBadWritePtr*(lp: LPVOID, ucb: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsBadWritePtr".}
-proc IsBadHugeReadPtr*(lp: pointer, ucb: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsBadHugeReadPtr".}
-proc IsBadHugeWritePtr*(lp: LPVOID, ucb: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsBadHugeWritePtr".}
-proc IsBadCodePtr*(lpfn: FARPROC): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "IsBadCodePtr".}
-proc AllocateLocallyUniqueId*(Luid: PLUID): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AllocateLocallyUniqueId".}
-proc QueryPerformanceCounter*(lpPerformanceCount: PLARGE_INTEGER): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "QueryPerformanceCounter".}
-proc QueryPerformanceFrequency*(lpFrequency: PLARGE_INTEGER): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "QueryPerformanceFrequency".}
-proc ActivateKeyboardLayout*(hkl: HKL, Flags: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ActivateKeyboardLayout".}
-proc UnloadKeyboardLayout*(hkl: HKL): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "UnloadKeyboardLayout".}
-proc GetKeyboardLayoutList*(nBuff: int32, lpList: var HKL): int32{.stdcall,
-    dynlib: "user32", importc: "GetKeyboardLayoutList".}
-proc GetKeyboardLayout*(dwLayout: DWORD): HKL{.stdcall, dynlib: "user32",
-    importc: "GetKeyboardLayout".}
-proc OpenInputDesktop*(dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: DWORD): HDESK{.
-    stdcall, dynlib: "user32", importc: "OpenInputDesktop".}
-proc EnumDesktopWindows*(hDesktop: HDESK, lpfn: ENUMWINDOWSPROC, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnumDesktopWindows".}
-proc SwitchDesktop*(hDesktop: HDESK): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SwitchDesktop".}
-proc SetThreadDesktop*(hDesktop: HDESK): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetThreadDesktop".}
-proc CloseDesktop*(hDesktop: HDESK): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "CloseDesktop".}
-proc GetThreadDesktop*(dwThreadId: DWORD): HDESK{.stdcall, dynlib: "user32",
-    importc: "GetThreadDesktop".}
-proc CloseWindowStation*(hWinSta: HWINSTA): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "CloseWindowStation".}
-proc SetProcessWindowStation*(hWinSta: HWINSTA): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetProcessWindowStation".}
-proc GetProcessWindowStation*(): HWINSTA{.stdcall, dynlib: "user32",
-    importc: "GetProcessWindowStation".}
-proc SetUserObjectSecurity*(hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION,
-                            pSID: PSECURITY_DESCRIPTOR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetUserObjectSecurity".}
-proc GetUserObjectSecurity*(hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION,
-                            pSID: PSECURITY_DESCRIPTOR, nLength: DWORD,
-                            lpnLengthNeeded: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetUserObjectSecurity".}
-proc TranslateMessage*(lpMsg: LPMSG): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "TranslateMessage".}
-proc SetMessageQueue*(cMessagesMax: int32): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetMessageQueue".}
-proc RegisterHotKey*(hWnd: HWND, anID: int32, fsModifiers: UINT, vk: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "RegisterHotKey".}
-proc UnregisterHotKey*(hWnd: HWND, anID: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "UnregisterHotKey".}
-proc ExitWindowsEx*(uFlags: UINT, dwReserved: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ExitWindowsEx".}
-proc SwapMouseButton*(fSwap: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SwapMouseButton".}
-proc GetMessagePos*(): DWORD{.stdcall, dynlib: "user32",
-                              importc: "GetMessagePos".}
-proc GetMessageTime*(): LONG{.stdcall, dynlib: "user32",
-                              importc: "GetMessageTime".}
-proc GetMessageExtraInfo*(): LONG{.stdcall, dynlib: "user32",
-                                   importc: "GetMessageExtraInfo".}
-proc SetMessageExtraInfo*(lParam: LPARAM): LPARAM{.stdcall, dynlib: "user32",
-    importc: "SetMessageExtraInfo".}
-proc BroadcastSystemMessage*(para1: DWORD, para2: LPDWORD, para3: UINT,
-                             para4: WPARAM, para5: LPARAM): int32{.stdcall,
-    dynlib: "user32", importc: "BroadcastSystemMessage".}
-proc AttachThreadInput*(idAttach: DWORD, idAttachTo: DWORD, fAttach: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "AttachThreadInput".}
-proc ReplyMessage*(lResult: LRESULT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ReplyMessage".}
-proc WaitMessage*(): WINBOOL{.stdcall, dynlib: "user32", importc: "WaitMessage".}
-proc WaitForInputIdle*(hProcess: HANDLE, dwMilliseconds: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "WaitForInputIdle".}
-proc PostQuitMessage*(nExitCode: int32){.stdcall, dynlib: "user32",
-    importc: "PostQuitMessage".}
-proc InSendMessage*(): WINBOOL{.stdcall, dynlib: "user32",
-                                importc: "InSendMessage".}
-proc GetDoubleClickTime*(): UINT{.stdcall, dynlib: "user32",
-                                  importc: "GetDoubleClickTime".}
-proc SetDoubleClickTime*(para1: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetDoubleClickTime".}
-proc IsWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                     importc: "IsWindow".}
-proc IsMenu*(hMenu: HMENU): WINBOOL{.stdcall, dynlib: "user32",
-                                     importc: "IsMenu".}
-proc IsChild*(hWndParent: HWND, hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsChild".}
-proc DestroyWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DestroyWindow".}
-proc ShowWindow*(hWnd: HWND, nCmdShow: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ShowWindow".}
-proc ShowWindowAsync*(hWnd: HWND, nCmdShow: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ShowWindowAsync".}
-proc FlashWindow*(hWnd: HWND, bInvert: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "FlashWindow".}
-proc ShowOwnedPopups*(hWnd: HWND, fShow: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ShowOwnedPopups".}
-proc OpenIcon*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                     importc: "OpenIcon".}
-proc CloseWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "CloseWindow".}
-proc MoveWindow*(hWnd: HWND, X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                 bRepaint: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "MoveWindow".}
-proc SetWindowPos*(hWnd: HWND, hWndInsertAfter: HWND, X: int32, Y: int32,
-                   cx: int32, cy: int32, uFlags: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetWindowPos".}
-proc GetWindowPlacement*(hWnd: HWND, lpwndpl: var WINDOWPLACEMENT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetWindowPlacement".}
-proc SetWindowPlacement*(hWnd: HWND, lpwndpl: var WINDOWPLACEMENT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetWindowPlacement".}
-proc GetWindowPlacement*(hWnd: HWND, lpwndpl: PWINDOWPLACEMENT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetWindowPlacement".}
-proc SetWindowPlacement*(hWnd: HWND, lpwndpl: PWINDOWPLACEMENT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetWindowPlacement".}
-proc BeginDeferWindowPos*(nNumWindows: int32): HDWP{.stdcall, dynlib: "user32",
-    importc: "BeginDeferWindowPos".}
-proc DeferWindowPos*(hWinPosInfo: HDWP, hWnd: HWND, hWndInsertAfter: HWND,
-                     x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): HDWP{.
-    stdcall, dynlib: "user32", importc: "DeferWindowPos".}
-proc EndDeferWindowPos*(hWinPosInfo: HDWP): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "EndDeferWindowPos".}
-proc IsWindowVisible*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsWindowVisible".}
-proc IsIconic*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                     importc: "IsIconic".}
-proc AnyPopup*(): WINBOOL{.stdcall, dynlib: "user32", importc: "AnyPopup".}
-proc BringWindowToTop*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "BringWindowToTop".}
-proc IsZoomed*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                     importc: "IsZoomed".}
-proc EndDialog*(hDlg: HWND, nResult: int32): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "EndDialog".}
-proc GetDlgItem*(hDlg: HWND, nIDDlgItem: int32): HWND{.stdcall,
-    dynlib: "user32", importc: "GetDlgItem".}
-proc SetDlgItemInt*(hDlg: HWND, nIDDlgItem: int32, uValue: UINT,
-                    bSigned: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetDlgItemInt".}
-proc GetDlgItemInt*(hDlg: HWND, nIDDlgItem: int32, lpTranslated: var WINBOOL,
-                    bSigned: WINBOOL): UINT{.stdcall, dynlib: "user32",
-    importc: "GetDlgItemInt".}
-proc CheckDlgButton*(hDlg: HWND, nIDButton: int32, uCheck: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "CheckDlgButton".}
-proc CheckRadioButton*(hDlg: HWND, nIDFirstButton: int32, nIDLastButton: int32,
-                       nIDCheckButton: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CheckRadioButton".}
-proc IsDlgButtonChecked*(hDlg: HWND, nIDButton: int32): UINT{.stdcall,
-    dynlib: "user32", importc: "IsDlgButtonChecked".}
-proc GetNextDlgGroupItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND{.
-    stdcall, dynlib: "user32", importc: "GetNextDlgGroupItem".}
-proc GetNextDlgTabItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND{.
-    stdcall, dynlib: "user32", importc: "GetNextDlgTabItem".}
-proc GetDlgCtrlID*(hWnd: HWND): int32{.stdcall, dynlib: "user32",
-                                       importc: "GetDlgCtrlID".}
-proc GetDialogBaseUnits*(): int32{.stdcall, dynlib: "user32",
-                                   importc: "GetDialogBaseUnits".}
-proc OpenClipboard*(hWndNewOwner: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "OpenClipboard".}
-proc CloseClipboard*(): WINBOOL{.stdcall, dynlib: "user32",
-                                 importc: "CloseClipboard".}
-proc GetClipboardOwner*(): HWND{.stdcall, dynlib: "user32",
-                                 importc: "GetClipboardOwner".}
-proc SetClipboardViewer*(hWndNewViewer: HWND): HWND{.stdcall, dynlib: "user32",
-    importc: "SetClipboardViewer".}
-proc GetClipboardViewer*(): HWND{.stdcall, dynlib: "user32",
-                                  importc: "GetClipboardViewer".}
-proc ChangeClipboardChain*(hWndRemove: HWND, hWndNewNext: HWND): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "ChangeClipboardChain".}
-proc SetClipboardData*(uFormat: UINT, hMem: HANDLE): HANDLE{.stdcall,
-    dynlib: "user32", importc: "SetClipboardData".}
-proc GetClipboardData*(uFormat: UINT): HANDLE{.stdcall, dynlib: "user32",
-    importc: "GetClipboardData".}
-proc CountClipboardFormats*(): int32{.stdcall, dynlib: "user32",
-                                      importc: "CountClipboardFormats".}
-proc EnumClipboardFormats*(format: UINT): UINT{.stdcall, dynlib: "user32",
-    importc: "EnumClipboardFormats".}
-proc EmptyClipboard*(): WINBOOL{.stdcall, dynlib: "user32",
-                                 importc: "EmptyClipboard".}
-proc IsClipboardFormatAvailable*(format: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "IsClipboardFormatAvailable".}
-proc GetPriorityClipboardFormat*(paFormatPriorityList: var UINT, cFormats: int32): int32{.
-    stdcall, dynlib: "user32", importc: "GetPriorityClipboardFormat".}
-proc GetOpenClipboardWindow*(): HWND{.stdcall, dynlib: "user32",
-                                      importc: "GetOpenClipboardWindow".}
-proc CharNextExA*(CodePage: int16, lpCurrentChar: LPCSTR, dwFlags: DWORD): LPSTR{.
-    stdcall, dynlib: "user32", importc: "CharNextExA".}
-proc CharPrevExA*(CodePage: int16, lpStart: LPCSTR, lpCurrentChar: LPCSTR,
-                  dwFlags: DWORD): LPSTR{.stdcall, dynlib: "user32",
-    importc: "CharPrevExA".}
-proc SetFocus*(hWnd: HWND): HWND{.stdcall, dynlib: "user32", importc: "SetFocus".}
-proc GetActiveWindow*(): HWND{.stdcall, dynlib: "user32",
-                               importc: "GetActiveWindow".}
-proc GetFocus*(): HWND{.stdcall, dynlib: "user32", importc: "GetFocus".}
-proc GetKBCodePage*(): UINT{.stdcall, dynlib: "user32", importc: "GetKBCodePage".}
-proc GetKeyState*(nVirtKey: int32): SHORT{.stdcall, dynlib: "user32",
-    importc: "GetKeyState".}
-proc GetAsyncKeyState*(vKey: int32): SHORT{.stdcall, dynlib: "user32",
-    importc: "GetAsyncKeyState".}
-proc GetKeyboardState*(lpKeyState: PBYTE): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetKeyboardState".}
-proc SetKeyboardState*(lpKeyState: LPBYTE): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetKeyboardState".}
-proc GetKeyboardType*(nTypeFlag: int32): int32{.stdcall, dynlib: "user32",
-    importc: "GetKeyboardType".}
-proc ToAscii*(uVirtKey: UINT, uScanCode: UINT, lpKeyState: PBYTE,
-              lpChar: LPWORD, uFlags: UINT): int32{.stdcall, dynlib: "user32",
-    importc: "ToAscii".}
-proc ToAsciiEx*(uVirtKey: UINT, uScanCode: UINT, lpKeyState: PBYTE,
-                lpChar: LPWORD, uFlags: UINT, dwhkl: HKL): int32{.stdcall,
-    dynlib: "user32", importc: "ToAsciiEx".}
-proc ToUnicode*(wVirtKey: UINT, wScanCode: UINT, lpKeyState: PBYTE,
-                pwszBuff: LPWSTR, cchBuff: int32, wFlags: UINT): int32{.stdcall,
-    dynlib: "user32", importc: "ToUnicode".}
-proc OemKeyScan*(wOemChar: int16): DWORD{.stdcall, dynlib: "user32",
-    importc: "OemKeyScan".}
-proc keybd_event*(bVk: int8, bScan: int8, dwFlags: DWORD, dwExtraInfo: DWORD){.
-    stdcall, dynlib: "user32", importc: "keybd_event".}
-proc mouse_event*(dwFlags: DWORD, dx: DWORD, dy: DWORD, cButtons: DWORD,
-                  dwExtraInfo: DWORD){.stdcall, dynlib: "user32",
-                                       importc: "mouse_event".}
-proc GetInputState*(): WINBOOL{.stdcall, dynlib: "user32",
-                                importc: "GetInputState".}
-proc GetQueueStatus*(flags: UINT): DWORD{.stdcall, dynlib: "user32",
-    importc: "GetQueueStatus".}
-proc GetCapture*(): HWND{.stdcall, dynlib: "user32", importc: "GetCapture".}
-proc SetCapture*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",
-                                    importc: "SetCapture".}
-proc ReleaseCapture*(): WINBOOL{.stdcall, dynlib: "user32",
-                                 importc: "ReleaseCapture".}
-proc MsgWaitForMultipleObjects*(nCount: DWORD, pHandles: LPHANDLE,
-                                fWaitAll: WINBOOL, dwMilliseconds: DWORD,
-                                dwWakeMask: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "MsgWaitForMultipleObjects".}
-proc SetTimer*(hWnd: HWND, nIDEvent: UINT, uElapse: UINT, lpTimerFunc: TIMERPROC): UINT{.
-    stdcall, dynlib: "user32", importc: "SetTimer".}
-proc KillTimer*(hWnd: HWND, uIDEvent: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "KillTimer".}
-proc IsWindowUnicode*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsWindowUnicode".}
-proc EnableWindow*(hWnd: HWND, bEnable: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EnableWindow".}
-proc IsWindowEnabled*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsWindowEnabled".}
-proc DestroyAcceleratorTable*(hAccel: HACCEL): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DestroyAcceleratorTable".}
-proc GetSystemMetrics*(nIndex: int32): int32{.stdcall, dynlib: "user32",
-    importc: "GetSystemMetrics".}
-proc GetMenu*(hWnd: HWND): HMENU{.stdcall, dynlib: "user32", importc: "GetMenu".}
-proc SetMenu*(hWnd: HWND, hMenu: HMENU): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetMenu".}
-proc HiliteMenuItem*(hWnd: HWND, hMenu: HMENU, uIDHiliteItem: UINT,
-                     uHilite: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "HiliteMenuItem".}
-proc GetMenuState*(hMenu: HMENU, uId: UINT, uFlags: UINT): UINT{.stdcall,
-    dynlib: "user32", importc: "GetMenuState".}
-proc DrawMenuBar*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "DrawMenuBar".}
-proc GetSystemMenu*(hWnd: HWND, bRevert: WINBOOL): HMENU{.stdcall,
-    dynlib: "user32", importc: "GetSystemMenu".}
-proc CreateMenu*(): HMENU{.stdcall, dynlib: "user32", importc: "CreateMenu".}
-proc CreatePopupMenu*(): HMENU{.stdcall, dynlib: "user32",
-                                importc: "CreatePopupMenu".}
-proc DestroyMenu*(hMenu: HMENU): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DestroyMenu".}
-proc CheckMenuItem*(hMenu: HMENU, uIDCheckItem: UINT, uCheck: UINT): DWORD{.
-    stdcall, dynlib: "user32", importc: "CheckMenuItem".}
-proc EnableMenuItem*(hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnableMenuItem".}
-proc GetSubMenu*(hMenu: HMENU, nPos: int32): HMENU{.stdcall, dynlib: "user32",
-    importc: "GetSubMenu".}
-proc GetMenuItemID*(hMenu: HMENU, nPos: int32): UINT{.stdcall, dynlib: "user32",
-    importc: "GetMenuItemID".}
-proc GetMenuItemCount*(hMenu: HMENU): int32{.stdcall, dynlib: "user32",
-    importc: "GetMenuItemCount".}
-proc RemoveMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "RemoveMenu".}
-proc DeleteMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DeleteMenu".}
-proc SetMenuItemBitmaps*(hMenu: HMENU, uPosition: UINT, uFlags: UINT,
-                         hBitmapUnchecked: HBITMAP, hBitmapChecked: HBITMAP): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetMenuItemBitmaps".}
-proc GetMenuCheckMarkDimensions*(): LONG{.stdcall, dynlib: "user32",
-    importc: "GetMenuCheckMarkDimensions".}
-proc TrackPopupMenu*(hMenu: HMENU, uFlags: UINT, x: int32, y: int32,
-                     nReserved: int32, hWnd: HWND, prcRect: var RECT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "TrackPopupMenu".}
-proc GetMenuDefaultItem*(hMenu: HMENU, fByPos: UINT, gmdiFlags: UINT): UINT{.
-    stdcall, dynlib: "user32", importc: "GetMenuDefaultItem".}
-proc SetMenuDefaultItem*(hMenu: HMENU, uItem: UINT, fByPos: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetMenuDefaultItem".}
-proc GetMenuItemRect*(hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: LPRECT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetMenuItemRect".}
-proc MenuItemFromPoint*(hWnd: HWND, hMenu: HMENU, ptScreen: POINT): int32{.
-    stdcall, dynlib: "user32", importc: "MenuItemFromPoint".}
-proc DragObject*(para1: HWND, para2: HWND, para3: UINT, para4: DWORD,
-                 para5: HCURSOR): DWORD{.stdcall, dynlib: "user32",
-    importc: "DragObject".}
-proc DragDetect*(hwnd: HWND, pt: POINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DragDetect".}
-proc DrawIcon*(hDC: HDC, X: int32, Y: int32, hIcon: HICON): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DrawIcon".}
-proc UpdateWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "UpdateWindow".}
-proc SetActiveWindow*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",
-    importc: "SetActiveWindow".}
-proc GetForegroundWindow*(): HWND{.stdcall, dynlib: "user32",
-                                   importc: "GetForegroundWindow".}
-proc PaintDesktop*(hdc: HDC): WINBOOL{.stdcall, dynlib: "user32",
-                                       importc: "PaintDesktop".}
-proc SetForegroundWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetForegroundWindow".}
-proc WindowFromDC*(hDC: HDC): HWND{.stdcall, dynlib: "user32",
-                                    importc: "WindowFromDC".}
-proc GetDC*(hWnd: HWND): HDC{.stdcall, dynlib: "user32", importc: "GetDC".}
-proc GetDCEx*(hWnd: HWND, hrgnClip: HRGN, flags: DWORD): HDC{.stdcall,
-    dynlib: "user32", importc: "GetDCEx".}
-proc GetWindowDC*(hWnd: HWND): HDC{.stdcall, dynlib: "user32",
-                                    importc: "GetWindowDC".}
-proc ReleaseDC*(hWnd: HWND, hDC: HDC): int32{.stdcall, dynlib: "user32",
-    importc: "ReleaseDC".}
-proc BeginPaint*(hWnd: HWND, lpPaint: LPPAINTSTRUCT): HDC{.stdcall,
-    dynlib: "user32", importc: "BeginPaint".}
-proc EndPaint*(hWnd: HWND, lpPaint: LPPAINTSTRUCT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EndPaint".}
-proc GetUpdateRect*(hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUpdateRect".}
-proc GetUpdateRgn*(hWnd: HWND, hRgn: HRGN, bErase: WINBOOL): int32{.stdcall,
-    dynlib: "user32", importc: "GetUpdateRgn".}
-proc SetWindowRgn*(hWnd: HWND, hRgn: HRGN, bRedraw: WINBOOL): int32{.stdcall,
-    dynlib: "user32", importc: "SetWindowRgn".}
-proc GetWindowRgn*(hWnd: HWND, hRgn: HRGN): int32{.stdcall, dynlib: "user32",
-    importc: "GetWindowRgn".}
-proc ExcludeUpdateRgn*(hDC: HDC, hWnd: HWND): int32{.stdcall, dynlib: "user32",
-    importc: "ExcludeUpdateRgn".}
-proc InvalidateRect*(hWnd: HWND, lpRect: var RECT, bErase: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "InvalidateRect".}
-proc InvalidateRect*(hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "InvalidateRect".}
-proc ValidateRect*(hWnd: HWND, lpRect: var RECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ValidateRect".}
-proc ValidateRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ValidateRect".}
-proc InvalidateRgn*(hWnd: HWND, hRgn: HRGN, bErase: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "InvalidateRgn".}
-proc ValidateRgn*(hWnd: HWND, hRgn: HRGN): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ValidateRgn".}
-proc RedrawWindow*(hWnd: HWND, lprcUpdate: var RECT, hrgnUpdate: HRGN,
-                   flags: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "RedrawWindow".}
-proc RedrawWindow*(hWnd: HWND, lprcUpdate: LPRECT, hrgnUpdate: HRGN, flags: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "RedrawWindow".}
-proc LockWindowUpdate*(hWndLock: HWND): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "LockWindowUpdate".}
-proc ScrollWindow*(hWnd: HWND, XAmount: int32, YAmount: int32, lpRect: var RECT,
-                   lpClipRect: var RECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ScrollWindow".}
-proc ScrollDC*(hDC: HDC, dx: int32, dy: int32, lprcScroll: var RECT,
-               lprcClip: var RECT, hrgnUpdate: HRGN, lprcUpdate: LPRECT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "ScrollDC".}
-proc ScrollWindowEx*(hWnd: HWND, dx: int32, dy: int32, prcScroll: var RECT,
-                     prcClip: var RECT, hrgnUpdate: HRGN, prcUpdate: LPRECT,
-                     flags: UINT): int32{.stdcall, dynlib: "user32",
-    importc: "ScrollWindowEx".}
-proc SetScrollPos*(hWnd: HWND, nBar: int32, nPos: int32, bRedraw: WINBOOL): int32{.
-    stdcall, dynlib: "user32", importc: "SetScrollPos".}
-proc GetScrollPos*(hWnd: HWND, nBar: int32): int32{.stdcall, dynlib: "user32",
-    importc: "GetScrollPos".}
-proc SetScrollRange*(hWnd: HWND, nBar: int32, nMinPos: int32, nMaxPos: int32,
-                     bRedraw: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetScrollRange".}
-proc GetScrollRange*(hWnd: HWND, nBar: int32, lpMinPos: LPINT, lpMaxPos: LPINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetScrollRange".}
-proc ShowScrollBar*(hWnd: HWND, wBar: int32, bShow: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ShowScrollBar".}
-proc EnableScrollBar*(hWnd: HWND, wSBflags: UINT, wArrows: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnableScrollBar".}
-proc GetClientRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetClientRect".}
-proc GetWindowRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetWindowRect".}
-proc AdjustWindowRect*(lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "AdjustWindowRect".}
-proc AdjustWindowRectEx*(lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL,
-                         dwExStyle: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "AdjustWindowRectEx".}
-proc SetWindowContextHelpId*(para1: HWND, para2: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetWindowContextHelpId".}
-proc GetWindowContextHelpId*(para1: HWND): DWORD{.stdcall, dynlib: "user32",
-    importc: "GetWindowContextHelpId".}
-proc SetMenuContextHelpId*(para1: HMENU, para2: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetMenuContextHelpId".}
-proc GetMenuContextHelpId*(para1: HMENU): DWORD{.stdcall, dynlib: "user32",
-    importc: "GetMenuContextHelpId".}
-proc MessageBeep*(uType: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "MessageBeep".}
-proc ShowCursor*(bShow: WINBOOL): int32{.stdcall, dynlib: "user32",
-    importc: "ShowCursor".}
-proc SetCursorPos*(X: int32, Y: int32): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetCursorPos".}
-proc SetCursor*(hCursor: HCURSOR): HCURSOR{.stdcall, dynlib: "user32",
-    importc: "SetCursor".}
-proc GetCursorPos*(lpPoint: LPPOINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetCursorPos".}
-proc ClipCursor*(lpRect: LPRECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ClipCursor".}
-proc GetClipCursor*(lpRect: LPRECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetClipCursor".}
-proc GetCursor*(): HCURSOR{.stdcall, dynlib: "user32", importc: "GetCursor".}
-proc CreateCaret*(hWnd: HWND, hBitmap: HBITMAP, nWidth: int32, nHeight: int32): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "CreateCaret".}
-proc GetCaretBlinkTime*(): UINT{.stdcall, dynlib: "user32",
-                                 importc: "GetCaretBlinkTime".}
-proc SetCaretBlinkTime*(uMSeconds: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetCaretBlinkTime".}
-proc DestroyCaret*(): WINBOOL{.stdcall, dynlib: "user32",
-                               importc: "DestroyCaret".}
-proc HideCaret*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                      importc: "HideCaret".}
-proc ShowCaret*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",
-                                      importc: "ShowCaret".}
-proc SetCaretPos*(X: int32, Y: int32): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetCaretPos".}
-proc GetCaretPos*(lpPoint: LPPOINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetCaretPos".}
-proc ClientToScreen*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ClientToScreen".}
-proc ScreenToClient*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ScreenToClient".}
-proc MapWindowPoints*(hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT,
-                      cPoints: UINT): int32{.stdcall, dynlib: "user32",
-    importc: "MapWindowPoints".}
-proc WindowFromPoint*(Point: POINT): HWND{.stdcall, dynlib: "user32",
-    importc: "WindowFromPoint".}
-proc ChildWindowFromPoint*(hWndParent: HWND, Point: POINT): HWND{.stdcall,
-    dynlib: "user32", importc: "ChildWindowFromPoint".}
-proc GetSysColor*(nIndex: int32): DWORD{.stdcall, dynlib: "user32",
-    importc: "GetSysColor".}
-proc GetSysColorBrush*(nIndex: int32): HBRUSH{.stdcall, dynlib: "user32",
-    importc: "GetSysColorBrush".}
-proc SetSysColors*(cElements: int32, lpaElements: var wINT,
-                   lpaRgbValues: var COLORREF): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetSysColors".}
-proc DrawFocusRect*(hDC: HDC, lprc: var RECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DrawFocusRect".}
-proc FillRect*(hDC: HDC, lprc: RECT, hbr: HBRUSH): int32{.stdcall,
-    dynlib: "user32", importc: "FillRect".}
-proc FrameRect*(hDC: HDC, lprc: var RECT, hbr: HBRUSH): int32{.stdcall,
-    dynlib: "user32", importc: "FrameRect".}
-proc InvertRect*(hDC: HDC, lprc: var RECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "InvertRect".}
-proc SetRect*(lprc: LPRECT, xLeft: int32, yTop: int32, xRight: int32,
-              yBottom: int32): WINBOOL{.stdcall, dynlib: "user32",
-                                        importc: "SetRect".}
-proc SetRectEmpty*(lprc: LPRECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetRectEmpty".}
-proc CopyRect*(lprcDst: LPRECT, lprcSrc: var RECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CopyRect".}
-proc InflateRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "InflateRect".}
-proc IntersectRect*(lprcDst: LPRECT, lprcSrc1: var RECT, lprcSrc2: var RECT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "IntersectRect".}
-proc UnionRect*(lprcDst: LPRECT, lprcSrc1: var RECT, lprcSrc2: var RECT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "UnionRect".}
-proc SubtractRect*(lprcDst: LPRECT, lprcSrc1: var RECT, lprcSrc2: var RECT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SubtractRect".}
-proc OffsetRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "OffsetRect".}
-proc IsRectEmpty*(lprc: var RECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "IsRectEmpty".}
-proc EqualRect*(lprc1: var RECT, lprc2: var RECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EqualRect".}
-proc PtInRect*(lprc: var RECT, pt: POINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "PtInRect".}
-proc PtInRect*(lprc: LPRECT, pt: POINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "PtInRect".}
-proc GetWindowWord*(hWnd: HWND, nIndex: int32): int16{.stdcall,
-    dynlib: "user32", importc: "GetWindowWord".}
-proc SetWindowWord*(hWnd: HWND, nIndex: int32, wNewWord: int16): int16{.stdcall,
-    dynlib: "user32", importc: "SetWindowWord".}
-proc GetClassWord*(hWnd: HWND, nIndex: int32): int16{.stdcall, dynlib: "user32",
-    importc: "GetClassWord".}
-proc SetClassWord*(hWnd: HWND, nIndex: int32, wNewWord: int16): int16{.stdcall,
-    dynlib: "user32", importc: "SetClassWord".}
-proc GetDesktopWindow*(): HWND{.stdcall, dynlib: "user32",
-                                importc: "GetDesktopWindow".}
-proc GetParent*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",
-                                   importc: "GetParent".}
-proc SetParent*(hWndChild: HWND, hWndNewParent: HWND): HWND{.stdcall,
-    dynlib: "user32", importc: "SetParent".}
-proc EnumChildWindows*(hWndParent: HWND, lpEnumFunc: ENUMWINDOWSPROC,
-                       lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "EnumChildWindows".}
-proc EnumWindows*(lpEnumFunc: ENUMWINDOWSPROC, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnumWindows".}
-proc EnumThreadWindows*(dwThreadId: DWORD, lpfn: ENUMWINDOWSPROC, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnumThreadWindows".}
-proc EnumTaskWindows*(hTask: HWND, lpfn: FARPROC, lParam: LPARAM): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "EnumThreadWindows".}
-proc GetTopWindow*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",
-                                      importc: "GetTopWindow".}
-proc GetWindowThreadProcessId*(hWnd: HWND, lpdwProcessId: LPDWORD): DWORD{.
-    stdcall, dynlib: "user32", importc: "GetWindowThreadProcessId".}
-proc GetLastActivePopup*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",
-    importc: "GetLastActivePopup".}
-proc GetWindow*(hWnd: HWND, uCmd: UINT): HWND{.stdcall, dynlib: "user32",
-    importc: "GetWindow".}
-proc UnhookWindowsHook*(nCode: int32, pfnFilterProc: HOOKPROC): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "UnhookWindowsHook".}
-proc UnhookWindowsHookEx*(hhk: HHOOK): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "UnhookWindowsHookEx".}
-proc CallNextHookEx*(hhk: HHOOK, nCode: int32, wParam: WPARAM, lParam: LPARAM): LRESULT{.
-    stdcall, dynlib: "user32", importc: "CallNextHookEx".}
-proc CheckMenuRadioItem*(para1: HMENU, para2: UINT, para3: UINT, para4: UINT,
-                         para5: UINT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "CheckMenuRadioItem".}
-proc CreateCursor*(hInst: HINST, xHotSpot: int32, yHotSpot: int32,
-                   nWidth: int32, nHeight: int32, pvANDPlane: pointer,
-                   pvXORPlane: pointer): HCURSOR{.stdcall, dynlib: "user32",
-    importc: "CreateCursor".}
-proc DestroyCursor*(hCursor: HCURSOR): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DestroyCursor".}
-proc SetSystemCursor*(hcur: HCURSOR, anID: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetSystemCursor".}
-proc CreateIcon*(hInstance: HINST, nWidth: int32, nHeight: int32, cPlanes: int8,
-                 cBitsPixel: int8, lpbANDbits: var int8, lpbXORbits: var int8): HICON{.
-    stdcall, dynlib: "user32", importc: "CreateIcon".}
-proc DestroyIcon*(hIcon: HICON): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DestroyIcon".}
-proc LookupIconIdFromDirectory*(presbits: PBYTE, fIcon: WINBOOL): int32{.
-    stdcall, dynlib: "user32", importc: "LookupIconIdFromDirectory".}
-proc LookupIconIdFromDirectoryEx*(presbits: PBYTE, fIcon: WINBOOL,
-                                  cxDesired: int32, cyDesired: int32,
-                                  Flags: UINT): int32{.stdcall,
-    dynlib: "user32", importc: "LookupIconIdFromDirectoryEx".}
-proc CreateIconFromResource*(presbits: PBYTE, dwResSize: DWORD, fIcon: WINBOOL,
-                             dwVer: DWORD): HICON{.stdcall, dynlib: "user32",
-    importc: "CreateIconFromResource".}
-proc CreateIconFromResourceEx*(presbits: PBYTE, dwResSize: DWORD,
-                               fIcon: WINBOOL, dwVer: DWORD, cxDesired: int32,
-                               cyDesired: int32, Flags: UINT): HICON{.stdcall,
-    dynlib: "user32", importc: "CreateIconFromResourceEx".}
-proc CopyImage*(para1: HANDLE, para2: UINT, para3: int32, para4: int32,
-                para5: UINT): HICON{.stdcall, dynlib: "user32",
-                                     importc: "CopyImage".}
-proc CreateIconIndirect*(piconinfo: PICONINFO): HICON{.stdcall,
-    dynlib: "user32", importc: "CreateIconIndirect".}
-proc CopyIcon*(hIcon: HICON): HICON{.stdcall, dynlib: "user32",
-                                     importc: "CopyIcon".}
-proc GetIconInfo*(hIcon: HICON, piconinfo: PICONINFO): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetIconInfo".}
-proc MapDialogRect*(hDlg: HWND, lpRect: LPRECT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "MapDialogRect".}
-proc SetScrollInfo*(para1: HWND, para2: int32, para3: LPCSCROLLINFO,
-                    para4: WINBOOL): int32{.stdcall, dynlib: "user32",
-    importc: "SetScrollInfo".}
-proc GetScrollInfo*(para1: HWND, para2: int32, para3: LPSCROLLINFO): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetScrollInfo".}
-proc TranslateMDISysAccel*(hWndClient: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "TranslateMDISysAccel".}
-proc ArrangeIconicWindows*(hWnd: HWND): UINT{.stdcall, dynlib: "user32",
-    importc: "ArrangeIconicWindows".}
-proc TileWindows*(hwndParent: HWND, wHow: UINT, lpRect: var RECT, cKids: UINT,
-                  lpKids: var HWND): int16{.stdcall, dynlib: "user32",
-    importc: "TileWindows".}
-proc CascadeWindows*(hwndParent: HWND, wHow: UINT, lpRect: var RECT,
-                     cKids: UINT, lpKids: var HWND): int16{.stdcall,
-    dynlib: "user32", importc: "CascadeWindows".}
-proc SetLastErrorEx*(dwErrCode: DWORD, dwType: DWORD){.stdcall,
-    dynlib: "user32", importc: "SetLastErrorEx".}
-proc SetDebugErrorLevel*(dwLevel: DWORD){.stdcall, dynlib: "user32",
-    importc: "SetDebugErrorLevel".}
-proc DrawEdge*(hdc: HDC, qrc: LPRECT, edge: UINT, grfFlags: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DrawEdge".}
-proc DrawFrameControl*(para1: HDC, para2: LPRECT, para3: UINT, para4: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DrawFrameControl".}
-proc DrawCaption*(para1: HWND, para2: HDC, para3: var RECT, para4: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DrawCaption".}
-proc DrawAnimatedRects*(hwnd: HWND, idAni: int32, lprcFrom: var RECT,
-                        lprcTo: var RECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DrawAnimatedRects".}
-proc TrackPopupMenuEx*(para1: HMENU, para2: UINT, para3: int32, para4: int32,
-                       para5: HWND, para6: LPTPMPARAMS): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "TrackPopupMenuEx".}
-proc ChildWindowFromPointEx*(para1: HWND, para2: POINT, para3: UINT): HWND{.
-    stdcall, dynlib: "user32", importc: "ChildWindowFromPointEx".}
-proc DrawIconEx*(hdc: HDC, xLeft: int32, yTop: int32, hIcon: HICON,
-                 cxWidth: int32, cyWidth: int32, istepIfAniCur: UINT,
-                 hbrFlickerFreeDraw: HBRUSH, diFlags: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DrawIconEx".}
-proc AnimatePalette*(para1: HPALETTE, para2: UINT, para3: UINT,
-                     para4: var PALETTEENTRY): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "AnimatePalette".}
-proc Arc*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,
-          para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "Arc".}
-proc BitBlt*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,
-             para6: HDC, para7: int32, para8: int32, para9: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "BitBlt".}
-proc CancelDC*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                     importc: "CancelDC".}
-proc Chord*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,
-            para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "Chord".}
-proc CloseMetaFile*(para1: HDC): HMETAFILE{.stdcall, dynlib: "gdi32",
-    importc: "CloseMetaFile".}
-proc CombineRgn*(para1: HRGN, para2: HRGN, para3: HRGN, para4: int32): int32{.
-    stdcall, dynlib: "gdi32", importc: "CombineRgn".}
-proc CreateBitmap*(para1: int32, para2: int32, para3: UINT, para4: UINT,
-                   para5: pointer): HBITMAP{.stdcall, dynlib: "gdi32",
-    importc: "CreateBitmap".}
-proc CreateBitmapIndirect*(para1: var BITMAP): HBITMAP{.stdcall,
-    dynlib: "gdi32", importc: "CreateBitmapIndirect".}
-proc CreateBrushIndirect*(para1: var LOGBRUSH): HBRUSH{.stdcall,
-    dynlib: "gdi32", importc: "CreateBrushIndirect".}
-proc CreateCompatibleBitmap*(para1: HDC, para2: int32, para3: int32): HBITMAP{.
-    stdcall, dynlib: "gdi32", importc: "CreateCompatibleBitmap".}
-proc CreateDiscardableBitmap*(para1: HDC, para2: int32, para3: int32): HBITMAP{.
-    stdcall, dynlib: "gdi32", importc: "CreateDiscardableBitmap".}
-proc CreateCompatibleDC*(para1: HDC): HDC{.stdcall, dynlib: "gdi32",
-    importc: "CreateCompatibleDC".}
-proc CreateDIBitmap*(para1: HDC, para2: var BITMAPINFOHEADER, para3: DWORD,
-                     para4: pointer, para5: var BITMAPINFO, para6: UINT): HBITMAP{.
-    stdcall, dynlib: "gdi32", importc: "CreateDIBitmap".}
-proc CreateDIBPatternBrush*(para1: HGLOBAL, para2: UINT): HBRUSH{.stdcall,
-    dynlib: "gdi32", importc: "CreateDIBPatternBrush".}
-proc CreateDIBPatternBrushPt*(para1: pointer, para2: UINT): HBRUSH{.stdcall,
-    dynlib: "gdi32", importc: "CreateDIBPatternBrushPt".}
-proc CreateEllipticRgn*(para1: int32, para2: int32, para3: int32, para4: int32): HRGN{.
-    stdcall, dynlib: "gdi32", importc: "CreateEllipticRgn".}
-proc CreateEllipticRgnIndirect*(para1: var RECT): HRGN{.stdcall,
-    dynlib: "gdi32", importc: "CreateEllipticRgnIndirect".}
-proc CreateHatchBrush*(para1: int32, para2: COLORREF): HBRUSH{.stdcall,
-    dynlib: "gdi32", importc: "CreateHatchBrush".}
-proc CreatePalette*(para1: var LOGPALETTE): HPALETTE{.stdcall, dynlib: "gdi32",
-    importc: "CreatePalette".}
-proc CreatePen*(para1: int32, para2: int32, para3: COLORREF): HPEN{.stdcall,
-    dynlib: "gdi32", importc: "CreatePen".}
-proc CreatePenIndirect*(para1: var LOGPEN): HPEN{.stdcall, dynlib: "gdi32",
-    importc: "CreatePenIndirect".}
-proc CreatePolyPolygonRgn*(para1: var POINT, para2: var wINT, para3: int32,
-                           para4: int32): HRGN{.stdcall, dynlib: "gdi32",
-    importc: "CreatePolyPolygonRgn".}
-proc CreatePatternBrush*(para1: HBITMAP): HBRUSH{.stdcall, dynlib: "gdi32",
-    importc: "CreatePatternBrush".}
-proc CreateRectRgn*(para1: int32, para2: int32, para3: int32, para4: int32): HRGN{.
-    stdcall, dynlib: "gdi32", importc: "CreateRectRgn".}
-proc CreateRectRgnIndirect*(para1: var RECT): HRGN{.stdcall, dynlib: "gdi32",
-    importc: "CreateRectRgnIndirect".}
-proc CreateRoundRectRgn*(para1: int32, para2: int32, para3: int32, para4: int32,
-                         para5: int32, para6: int32): HRGN{.stdcall,
-    dynlib: "gdi32", importc: "CreateRoundRectRgn".}
-proc CreateSolidBrush*(para1: COLORREF): HBRUSH{.stdcall, dynlib: "gdi32",
-    importc: "CreateSolidBrush".}
-proc DeleteDC*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                     importc: "DeleteDC".}
-proc DeleteMetaFile*(para1: HMETAFILE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "DeleteMetaFile".}
-proc DeleteObject*(para1: HGDIOBJ): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "DeleteObject".}
-proc DrawEscape*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR): int32{.
-    stdcall, dynlib: "gdi32", importc: "DrawEscape".}
-proc Ellipse*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "Ellipse".}
-proc EnumObjects*(para1: HDC, para2: int32, para3: ENUMOBJECTSPROC,
-                  para4: LPARAM): int32{.stdcall, dynlib: "gdi32",
-    importc: "EnumObjects".}
-proc EqualRgn*(para1: HRGN, para2: HRGN): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "EqualRgn".}
-proc Escape*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,
-             para5: LPVOID): int32{.stdcall, dynlib: "gdi32", importc: "Escape".}
-proc ExtEscape*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,
-                para5: int32, para6: LPSTR): int32{.stdcall, dynlib: "gdi32",
-    importc: "ExtEscape".}
-proc ExcludeClipRect*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                      para5: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "ExcludeClipRect".}
-proc ExtCreateRegion*(para1: var XFORM, para2: DWORD, para3: var RGNDATA): HRGN{.
-    stdcall, dynlib: "gdi32", importc: "ExtCreateRegion".}
-proc ExtFloodFill*(para1: HDC, para2: int32, para3: int32, para4: COLORREF,
-                   para5: UINT): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "ExtFloodFill".}
-proc FillRgn*(para1: HDC, para2: HRGN, para3: HBRUSH): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "FillRgn".}
-proc FloodFill*(para1: HDC, para2: int32, para3: int32, para4: COLORREF): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "FloodFill".}
-proc FrameRgn*(para1: HDC, para2: HRGN, para3: HBRUSH, para4: int32,
-               para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-                                       importc: "FrameRgn".}
-proc GetROP2*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "GetROP2".}
-proc GetAspectRatioFilterEx*(para1: HDC, para2: LPSIZE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetAspectRatioFilterEx".}
-proc GetBkColor*(para1: HDC): COLORREF{.stdcall, dynlib: "gdi32",
-                                        importc: "GetBkColor".}
-proc GetBkMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-                                    importc: "GetBkMode".}
-proc GetBitmapBits*(para1: HBITMAP, para2: LONG, para3: LPVOID): LONG{.stdcall,
-    dynlib: "gdi32", importc: "GetBitmapBits".}
-proc GetBitmapDimensionEx*(para1: HBITMAP, para2: LPSIZE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetBitmapDimensionEx".}
-proc GetBoundsRect*(para1: HDC, para2: LPRECT, para3: UINT): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetBoundsRect".}
-proc GetBrushOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetBrushOrgEx".}
-proc GetClipBox*(para1: HDC, para2: LPRECT): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetClipBox".}
-proc GetClipRgn*(para1: HDC, para2: HRGN): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetClipRgn".}
-proc GetMetaRgn*(para1: HDC, para2: HRGN): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetMetaRgn".}
-proc GetCurrentObject*(para1: HDC, para2: UINT): HGDIOBJ{.stdcall,
-    dynlib: "gdi32", importc: "GetCurrentObject".}
-proc GetCurrentPositionEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCurrentPositionEx".}
-proc GetDeviceCaps*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetDeviceCaps".}
-proc GetDIBits*(para1: HDC, para2: HBITMAP, para3: UINT, para4: UINT,
-                para5: LPVOID, para6: LPBITMAPINFO, para7: UINT): int32{.
-    stdcall, dynlib: "gdi32", importc: "GetDIBits".}
-proc GetFontData*(para1: HDC, para2: DWORD, para3: DWORD, para4: LPVOID,
-                  para5: DWORD): DWORD{.stdcall, dynlib: "gdi32",
-                                        importc: "GetFontData".}
-proc GetGraphicsMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetGraphicsMode".}
-proc GetMapMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-                                     importc: "GetMapMode".}
-proc GetMetaFileBitsEx*(para1: HMETAFILE, para2: UINT, para3: LPVOID): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetMetaFileBitsEx".}
-proc GetNearestColor*(para1: HDC, para2: COLORREF): COLORREF{.stdcall,
-    dynlib: "gdi32", importc: "GetNearestColor".}
-proc GetNearestPaletteIndex*(para1: HPALETTE, para2: COLORREF): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetNearestPaletteIndex".}
-proc GetObjectType*(h: HGDIOBJ): DWORD{.stdcall, dynlib: "gdi32",
-                                        importc: "GetObjectType".}
-proc GetPaletteEntries*(para1: HPALETTE, para2: UINT, para3: UINT,
-                        para4: LPPALETTEENTRY): UINT{.stdcall, dynlib: "gdi32",
-    importc: "GetPaletteEntries".}
-proc GetPixel*(para1: HDC, para2: int32, para3: int32): COLORREF{.stdcall,
-    dynlib: "gdi32", importc: "GetPixel".}
-proc GetPixelFormat*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetPixelFormat".}
-proc GetPolyFillMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetPolyFillMode".}
-proc GetRasterizerCaps*(para1: LPRASTERIZER_STATUS, para2: UINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetRasterizerCaps".}
-proc GetRegionData*(para1: HRGN, para2: DWORD, para3: LPRGNDATA): DWORD{.
-    stdcall, dynlib: "gdi32", importc: "GetRegionData".}
-proc GetRgnBox*(para1: HRGN, para2: LPRECT): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetRgnBox".}
-proc GetStockObject*(para1: int32): HGDIOBJ{.stdcall, dynlib: "gdi32",
-    importc: "GetStockObject".}
-proc GetStretchBltMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetStretchBltMode".}
-proc GetSystemPaletteEntries*(para1: HDC, para2: UINT, para3: UINT,
-                              para4: LPPALETTEENTRY): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetSystemPaletteEntries".}
-proc GetSystemPaletteUse*(para1: HDC): UINT{.stdcall, dynlib: "gdi32",
-    importc: "GetSystemPaletteUse".}
-proc GetTextCharacterExtra*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetTextCharacterExtra".}
-proc GetTextAlign*(para1: HDC): UINT{.stdcall, dynlib: "gdi32",
-                                      importc: "GetTextAlign".}
-proc GetTextColor*(para1: HDC): COLORREF{.stdcall, dynlib: "gdi32",
-    importc: "GetTextColor".}
-proc GetTextCharset*(hdc: HDC): int32{.stdcall, dynlib: "gdi32",
-                                       importc: "GetTextCharset".}
-proc GetTextCharsetInfo*(hdc: HDC, lpSig: LPFONTSIGNATURE, dwFlags: DWORD): int32{.
-    stdcall, dynlib: "gdi32", importc: "GetTextCharsetInfo".}
-proc TranslateCharsetInfo*(lpSrc: var DWORD, lpCs: LPCHARSETINFO, dwFlags: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "TranslateCharsetInfo".}
-proc GetFontLanguageInfo*(para1: HDC): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GetFontLanguageInfo".}
-proc GetViewportExtEx*(para1: HDC, para2: LPSIZE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetViewportExtEx".}
-proc GetViewportOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetViewportOrgEx".}
-proc GetWindowExtEx*(para1: HDC, para2: LPSIZE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetWindowExtEx".}
-proc GetWindowOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetWindowOrgEx".}
-proc IntersectClipRect*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                        para5: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "IntersectClipRect".}
-proc InvertRgn*(para1: HDC, para2: HRGN): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "InvertRgn".}
-proc LineDDA*(para1: int32, para2: int32, para3: int32, para4: int32,
-              para5: LINEDDAPROC, para6: LPARAM): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "LineDDA".}
-proc LineTo*(para1: HDC, para2: int32, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "LineTo".}
-proc MaskBlt*(para1: HDC, para2: int32, para3: int32, para4: int32,
-              para5: int32, para6: HDC, para7: int32, para8: int32,
-              para9: HBITMAP, para10: int32, para11: int32, para12: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "MaskBlt".}
-proc PlgBlt*(para1: HDC, para2: var POINT, para3: HDC, para4: int32,
-             para5: int32, para6: int32, para7: int32, para8: HBITMAP,
-             para9: int32, para10: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "PlgBlt".}
-proc OffsetClipRgn*(para1: HDC, para2: int32, para3: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "OffsetClipRgn".}
-proc OffsetRgn*(para1: HRGN, para2: int32, para3: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "OffsetRgn".}
-proc PatBlt*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,
-             para6: DWORD): WINBOOL{.stdcall, dynlib: "gdi32", importc: "PatBlt".}
-proc Pie*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,
-          para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "Pie".}
-proc PlayMetaFile*(para1: HDC, para2: HMETAFILE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PlayMetaFile".}
-proc PaintRgn*(para1: HDC, para2: HRGN): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "PaintRgn".}
-proc PolyPolygon*(para1: HDC, para2: var POINT, para3: var wINT, para4: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyPolygon".}
-proc PtInRegion*(para1: HRGN, para2: int32, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PtInRegion".}
-proc PtVisible*(para1: HDC, para2: int32, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PtVisible".}
-proc RectInRegion*(para1: HRGN, para2: var RECT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "RectInRegion".}
-proc RectVisible*(para1: HDC, para2: var RECT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "RectVisible".}
-proc Rectangle*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-                                        importc: "Rectangle".}
-proc RestoreDC*(para1: HDC, para2: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "RestoreDC".}
-proc RealizePalette*(para1: HDC): UINT{.stdcall, dynlib: "gdi32",
-                                        importc: "RealizePalette".}
-proc RoundRect*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                para5: int32, para6: int32, para7: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "RoundRect".}
-proc ResizePalette*(para1: HPALETTE, para2: UINT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "ResizePalette".}
-proc SaveDC*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "SaveDC".}
-proc SelectClipRgn*(para1: HDC, para2: HRGN): int32{.stdcall, dynlib: "gdi32",
-    importc: "SelectClipRgn".}
-proc ExtSelectClipRgn*(para1: HDC, para2: HRGN, para3: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "ExtSelectClipRgn".}
-proc SetMetaRgn*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-                                     importc: "SetMetaRgn".}
-proc SelectObject*(para1: HDC, para2: HGDIOBJ): HGDIOBJ{.stdcall,
-    dynlib: "gdi32", importc: "SelectObject".}
-proc SelectPalette*(para1: HDC, para2: HPALETTE, para3: WINBOOL): HPALETTE{.
-    stdcall, dynlib: "gdi32", importc: "SelectPalette".}
-proc SetBkColor*(para1: HDC, para2: COLORREF): COLORREF{.stdcall,
-    dynlib: "gdi32", importc: "SetBkColor".}
-proc SetBkMode*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "SetBkMode".}
-proc SetBitmapBits*(para1: HBITMAP, para2: DWORD, para3: pointer): LONG{.
-    stdcall, dynlib: "gdi32", importc: "SetBitmapBits".}
-proc SetBoundsRect*(para1: HDC, para2: var RECT, para3: UINT): UINT{.stdcall,
-    dynlib: "gdi32", importc: "SetBoundsRect".}
-proc SetDIBits*(para1: HDC, para2: HBITMAP, para3: UINT, para4: UINT,
-                para5: pointer, para6: PBITMAPINFO, para7: UINT): int32{.
-    stdcall, dynlib: "gdi32", importc: "SetDIBits".}
-proc SetDIBitsToDevice*(para1: HDC, para2: int32, para3: int32, para4: DWORD,
-                        para5: DWORD, para6: int32, para7: int32, para8: UINT,
-                        para9: UINT, para10: pointer, para11: var BITMAPINFO,
-                        para12: UINT): int32{.stdcall, dynlib: "gdi32",
-    importc: "SetDIBitsToDevice".}
-proc SetMapperFlags*(para1: HDC, para2: DWORD): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "SetMapperFlags".}
-proc SetGraphicsMode*(hdc: HDC, iMode: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "SetGraphicsMode".}
-proc SetMapMode*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "SetMapMode".}
-proc SetMetaFileBitsEx*(para1: UINT, para2: var int8): HMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "SetMetaFileBitsEx".}
-proc SetPaletteEntries*(para1: HPALETTE, para2: UINT, para3: UINT,
-                        para4: var PALETTEENTRY): UINT{.stdcall,
-    dynlib: "gdi32", importc: "SetPaletteEntries".}
-proc SetPixel*(para1: HDC, para2: int32, para3: int32, para4: COLORREF): COLORREF{.
-    stdcall, dynlib: "gdi32", importc: "SetPixel".}
-proc SetPixelV*(para1: HDC, para2: int32, para3: int32, para4: COLORREF): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetPixelV".}
-proc SetPolyFillMode*(para1: HDC, para2: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "SetPolyFillMode".}
-proc StretchBlt*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                 para5: int32, para6: HDC, para7: int32, para8: int32,
-                 para9: int32, para10: int32, para11: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "StretchBlt".}
-proc SetRectRgn*(para1: HRGN, para2: int32, para3: int32, para4: int32,
-                 para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "SetRectRgn".}
-proc StretchDIBits*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                    para5: int32, para6: int32, para7: int32, para8: int32,
-                    para9: int32, para10: pointer, para11: var BITMAPINFO,
-                    para12: UINT, para13: DWORD): int32{.stdcall,
-    dynlib: "gdi32", importc: "StretchDIBits".}
-proc SetROP2*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "SetROP2".}
-proc SetStretchBltMode*(para1: HDC, para2: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "SetStretchBltMode".}
-proc SetSystemPaletteUse*(para1: HDC, para2: UINT): UINT{.stdcall,
-    dynlib: "gdi32", importc: "SetSystemPaletteUse".}
-proc SetTextCharacterExtra*(para1: HDC, para2: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "SetTextCharacterExtra".}
-proc SetTextColor*(para1: HDC, para2: COLORREF): COLORREF{.stdcall,
-    dynlib: "gdi32", importc: "SetTextColor".}
-proc SetTextAlign*(para1: HDC, para2: UINT): UINT{.stdcall, dynlib: "gdi32",
-    importc: "SetTextAlign".}
-proc SetTextJustification*(para1: HDC, para2: int32, para3: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetTextJustification".}
-proc UpdateColors*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "UpdateColors".}
-proc PlayMetaFileRecord*(para1: HDC, para2: LPHANDLETABLE, para3: LPMETARECORD,
-                         para4: UINT): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "PlayMetaFileRecord".}
-proc EnumMetaFile*(para1: HDC, para2: HMETAFILE, para3: ENUMMETAFILEPROC,
-                   para4: LPARAM): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "EnumMetaFile".}
-proc CloseEnhMetaFile*(para1: HDC): HENHMETAFILE{.stdcall, dynlib: "gdi32",
-    importc: "CloseEnhMetaFile".}
-proc DeleteEnhMetaFile*(para1: HENHMETAFILE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "DeleteEnhMetaFile".}
-proc EnumEnhMetaFile*(para1: HDC, para2: HENHMETAFILE, para3: ENHMETAFILEPROC,
-                      para4: LPVOID, para5: var RECT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "EnumEnhMetaFile".}
-proc GetEnhMetaFileHeader*(para1: HENHMETAFILE, para2: UINT,
-                           para3: LPENHMETAHEADER): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetEnhMetaFileHeader".}
-proc GetEnhMetaFilePaletteEntries*(para1: HENHMETAFILE, para2: UINT,
-                                   para3: LPPALETTEENTRY): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetEnhMetaFilePaletteEntries".}
-proc GetEnhMetaFileBits*(para1: HENHMETAFILE, para2: UINT, para3: LPBYTE): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileBits".}
-proc GetWinMetaFileBits*(para1: HENHMETAFILE, para2: UINT, para3: LPBYTE,
-                         para4: wINT, para5: HDC): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetWinMetaFileBits".}
-proc PlayEnhMetaFile*(para1: HDC, para2: HENHMETAFILE, para3: RECT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PlayEnhMetaFile".}
-proc PlayEnhMetaFileRecord*(para1: HDC, para2: LPHANDLETABLE,
-                            para3: var TENHMETARECORD, para4: UINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PlayEnhMetaFileRecord".}
-proc SetEnhMetaFileBits*(para1: UINT, para2: var int8): HENHMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "SetEnhMetaFileBits".}
-proc SetWinMetaFileBits*(para1: UINT, para2: var int8, para3: HDC,
-                         para4: var METAFILEPICT): HENHMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "SetWinMetaFileBits".}
-proc GdiComment*(para1: HDC, para2: UINT, para3: var int8): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GdiComment".}
-proc AngleArc*(para1: HDC, para2: int32, para3: int32, para4: DWORD,
-               para5: float32, para6: float32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "AngleArc".}
-proc PolyPolyline*(para1: HDC, para2: var POINT, para3: var DWORD, para4: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyPolyline".}
-proc GetWorldTransform*(para1: HDC, para2: LPXFORM): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetWorldTransform".}
-proc SetWorldTransform*(para1: HDC, para2: var XFORM): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SetWorldTransform".}
-proc ModifyWorldTransform*(para1: HDC, para2: var XFORM, para3: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "ModifyWorldTransform".}
-proc CombineTransform*(para1: LPXFORM, para2: var XFORM, para3: var XFORM): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "CombineTransform".}
-proc CreateDIBSection*(para1: HDC, para2: var BITMAPINFO, para3: UINT,
-                       para4: var pointer, para5: HANDLE, para6: DWORD): HBITMAP{.
-    stdcall, dynlib: "gdi32", importc: "CreateDIBSection".}
-proc GetDIBColorTable*(para1: HDC, para2: UINT, para3: UINT, para4: var RGBQUAD): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetDIBColorTable".}
-proc SetDIBColorTable*(para1: HDC, para2: UINT, para3: UINT, para4: var RGBQUAD): UINT{.
-    stdcall, dynlib: "gdi32", importc: "SetDIBColorTable".}
-proc SetColorAdjustment*(para1: HDC, para2: var COLORADJUSTMENT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetColorAdjustment".}
-proc GetColorAdjustment*(para1: HDC, para2: LPCOLORADJUSTMENT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetColorAdjustment".}
-proc CreateHalftonePalette*(para1: HDC): HPALETTE{.stdcall, dynlib: "gdi32",
-    importc: "CreateHalftonePalette".}
-proc EndDoc*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "EndDoc".}
-proc StartPage*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-                                    importc: "StartPage".}
-proc EndPage*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "EndPage".}
-proc AbortDoc*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "AbortDoc".}
-proc SetAbortProc*(para1: HDC, para2: TABORTPROC): int32{.stdcall,
-    dynlib: "gdi32", importc: "SetAbortProc".}
-proc ArcTo*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,
-            para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "ArcTo".}
-proc BeginPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                      importc: "BeginPath".}
-proc CloseFigure*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                        importc: "CloseFigure".}
-proc EndPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32", importc: "EndPath".}
-proc FillPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                     importc: "FillPath".}
-proc FlattenPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                        importc: "FlattenPath".}
-proc GetPath*(para1: HDC, para2: LPPOINT, para3: LPBYTE, para4: int32): int32{.
-    stdcall, dynlib: "gdi32", importc: "GetPath".}
-proc PathToRegion*(para1: HDC): HRGN{.stdcall, dynlib: "gdi32",
-                                      importc: "PathToRegion".}
-proc PolyDraw*(para1: HDC, para2: var POINT, para3: var int8, para4: int32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyDraw".}
-proc SelectClipPath*(para1: HDC, para2: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SelectClipPath".}
-proc SetArcDirection*(para1: HDC, para2: int32): int32{.stdcall,
-    dynlib: "gdi32", importc: "SetArcDirection".}
-proc SetMiterLimit*(para1: HDC, para2: float32, para3: ptr float32): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetMiterLimit".}
-proc StrokeAndFillPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "StrokeAndFillPath".}
-proc StrokePath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                       importc: "StrokePath".}
-proc WidenPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                      importc: "WidenPath".}
-proc ExtCreatePen*(para1: DWORD, para2: DWORD, para3: var LOGBRUSH,
-                   para4: DWORD, para5: var DWORD): HPEN{.stdcall,
-    dynlib: "gdi32", importc: "ExtCreatePen".}
-proc GetMiterLimit*(para1: HDC, para2: ptr float32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetMiterLimit".}
-proc GetArcDirection*(para1: HDC): int32{.stdcall, dynlib: "gdi32",
-    importc: "GetArcDirection".}
-proc MoveToEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "MoveToEx".}
-proc CreatePolygonRgn*(para1: var POINT, para2: int32, para3: int32): HRGN{.
-    stdcall, dynlib: "gdi32", importc: "CreatePolygonRgn".}
-proc DPtoLP*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "DPtoLP".}
-proc LPtoDP*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "LPtoDP".}
-proc Polygon*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "Polygon".}
-proc Polyline*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "Polyline".}
-proc PolyBezier*(para1: HDC, para2: LPPOINT, para3: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolyBezier".}
-proc PolyBezierTo*(para1: HDC, para2: POINT, para3: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolyBezierTo".}
-proc PolylineTo*(para1: HDC, para2: LPPOINT, para3: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolylineTo".}
-proc SetViewportExtEx*(para1: HDC, para2: int32, para3: int32, para4: LPSIZE): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetViewportExtEx".}
-proc SetViewportOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetViewportOrgEx".}
-proc SetWindowExtEx*(para1: HDC, para2: int32, para3: int32, para4: LPSIZE): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetWindowExtEx".}
-proc SetWindowOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetWindowOrgEx".}
-proc OffsetViewportOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "OffsetViewportOrgEx".}
-proc OffsetWindowOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "OffsetWindowOrgEx".}
-proc ScaleViewportExtEx*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                         para5: int32, para6: LPSIZE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "ScaleViewportExtEx".}
-proc ScaleWindowExtEx*(para1: HDC, para2: int32, para3: int32, para4: int32,
-                       para5: int32, para6: LPSIZE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "ScaleWindowExtEx".}
-proc SetBitmapDimensionEx*(para1: HBITMAP, para2: int32, para3: int32,
-                           para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "SetBitmapDimensionEx".}
-proc SetBrushOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetBrushOrgEx".}
-proc GetDCOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetDCOrgEx".}
-proc FixBrushOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "FixBrushOrgEx".}
-proc UnrealizeObject*(para1: HGDIOBJ): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "UnrealizeObject".}
-proc GdiFlush*(): WINBOOL{.stdcall, dynlib: "gdi32", importc: "GdiFlush".}
-proc GdiSetBatchLimit*(para1: DWORD): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GdiSetBatchLimit".}
-proc GdiGetBatchLimit*(): DWORD{.stdcall, dynlib: "gdi32",
-                                 importc: "GdiGetBatchLimit".}
-proc SetICMMode*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",
-    importc: "SetICMMode".}
-proc CheckColorsInGamut*(para1: HDC, para2: LPVOID, para3: LPVOID, para4: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "CheckColorsInGamut".}
-proc GetColorSpace*(para1: HDC): HANDLE{.stdcall, dynlib: "gdi32",
-    importc: "GetColorSpace".}
-proc SetColorSpace*(para1: HDC, para2: HCOLORSPACE): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SetColorSpace".}
-proc DeleteColorSpace*(para1: HCOLORSPACE): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "DeleteColorSpace".}
-proc GetDeviceGammaRamp*(para1: HDC, para2: LPVOID): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetDeviceGammaRamp".}
-proc SetDeviceGammaRamp*(para1: HDC, para2: LPVOID): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SetDeviceGammaRamp".}
-proc ColorMatchToTarget*(para1: HDC, para2: HDC, para3: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "ColorMatchToTarget".}
-proc CreatePropertySheetPageA*(lppsp: LPCPROPSHEETPAGE): HPROPSHEETPAGE{.
-    stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageA".}
-proc DestroyPropertySheetPage*(hPSPage: HPROPSHEETPAGE): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "DestroyPropertySheetPage".}
-proc InitCommonControls*(){.stdcall, dynlib: "comctl32",
-                            importc: "InitCommonControls".}
-proc ImageList_AddIcon*(himl: HIMAGELIST, hicon: HICON): int32
-proc ImageList_Create*(cx: int32, cy: int32, flags: UINT, cInitial: int32,
-                       cGrow: int32): HIMAGELIST{.stdcall, dynlib: "comctl32",
-    importc: "ImageList_Create".}
-proc ImageList_Destroy*(himl: HIMAGELIST): WINBOOL{.stdcall, dynlib: "comctl32",
-    importc: "ImageList_Destroy".}
-proc ImageList_GetImageCount*(himl: HIMAGELIST): int32{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_GetImageCount".}
-proc ImageList_Add*(himl: HIMAGELIST, hbmImage: HBITMAP, hbmMask: HBITMAP): int32{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_Add".}
-proc ImageList_ReplaceIcon*(himl: HIMAGELIST, i: int32, hicon: HICON): int32{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_ReplaceIcon".}
-proc ImageList_SetBkColor*(himl: HIMAGELIST, clrBk: COLORREF): COLORREF{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_SetBkColor".}
-proc ImageList_GetBkColor*(himl: HIMAGELIST): COLORREF{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_GetBkColor".}
-proc ImageList_SetOverlayImage*(himl: HIMAGELIST, iImage: int32, iOverlay: int32): WINBOOL{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_SetOverlayImage".}
-proc ImageList_Draw*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32,
-                     y: int32, fStyle: UINT): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_Draw".}
-proc ImageList_Replace*(himl: HIMAGELIST, i: int32, hbmImage: HBITMAP,
-                        hbmMask: HBITMAP): WINBOOL{.stdcall, dynlib: "comctl32",
-    importc: "ImageList_Replace".}
-proc ImageList_AddMasked*(himl: HIMAGELIST, hbmImage: HBITMAP, crMask: COLORREF): int32{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_AddMasked".}
-proc ImageList_DrawEx*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32,
-                       y: int32, dx: int32, dy: int32, rgbBk: COLORREF,
-                       rgbFg: COLORREF, fStyle: UINT): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_DrawEx".}
-proc ImageList_Remove*(himl: HIMAGELIST, i: int32): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_Remove".}
-proc ImageList_GetIcon*(himl: HIMAGELIST, i: int32, flags: UINT): HICON{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_GetIcon".}
-proc ImageList_BeginDrag*(himlTrack: HIMAGELIST, iTrack: int32,
-                          dxHotspot: int32, dyHotspot: int32): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_BeginDrag".}
-proc ImageList_EndDrag*(){.stdcall, dynlib: "comctl32",
-                           importc: "ImageList_EndDrag".}
-proc ImageList_DragEnter*(hwndLock: HWND, x: int32, y: int32): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_DragEnter".}
-proc ImageList_DragLeave*(hwndLock: HWND): WINBOOL{.stdcall, dynlib: "comctl32",
-    importc: "ImageList_DragLeave".}
-proc ImageList_DragMove*(x: int32, y: int32): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_DragMove".}
-proc ImageList_SetDragCursorImage*(himlDrag: HIMAGELIST, iDrag: int32,
-                                   dxHotspot: int32, dyHotspot: int32): WINBOOL{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_SetDragCursorImage".}
-proc ImageList_DragShowNolock*(fShow: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_DragShowNolock".}
-proc ImageList_GetDragImage*(ppt: LPPOINT, pptHotspot: LPPOINT): HIMAGELIST{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_GetDragImage".}
-proc ImageList_GetIconSize*(himl: HIMAGELIST, cx: var int32, cy: var int32): WINBOOL{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_GetIconSize".}
-proc ImageList_SetIconSize*(himl: HIMAGELIST, cx: int32, cy: int32): WINBOOL{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_SetIconSize".}
-proc ImageList_GetImageInfo*(himl: HIMAGELIST, i: int32,
-                             pImageInfo: var IMAGEINFO): WINBOOL{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_GetImageInfo".}
-proc ImageList_Merge*(himl1: HIMAGELIST, i1: int32, himl2: HIMAGELIST,
-                      i2: int32, dx: int32, dy: int32): HIMAGELIST{.stdcall,
-    dynlib: "comctl32", importc: "ImageList_Merge".}
-proc ImageList_SetImageCount*(himl: HIMAGELIST, uNewCount: UINT): int{.stdcall,
-    dynlib: "comctl32.dll", importc: "ImageList_SetImageCount".}
-proc CreateToolbarEx*(hwnd: HWND, ws: DWORD, wID: UINT, nBitmaps: int32,
-                      hBMInst: HINST, wBMID: UINT, lpButtons: LPCTBBUTTON,
-                      iNumButtons: int32, dxButton: int32, dyButton: int32,
-                      dxBitmap: int32, dyBitmap: int32, uStructSize: UINT): HWND{.
-    stdcall, dynlib: "comctl32", importc: "CreateToolbarEx".}
-proc CreateMappedBitmap*(hInstance: HINST, idBitmap: int32, wFlags: UINT,
-                         lpColorMap: LPCOLORMAP, iNumMaps: int32): HBITMAP{.
-    stdcall, dynlib: "comctl32", importc: "CreateMappedBitmap".}
-proc MenuHelp*(uMsg: UINT, wParam: WPARAM, lParam: LPARAM, hMainMenu: HMENU,
-               hInst: HINST, hwndStatus: HWND, lpwIDs: var UINT){.stdcall,
-    dynlib: "comctl32", importc: "MenuHelp".}
-proc ShowHideMenuCtl*(hWnd: HWND, uFlags: UINT, lpInfo: LPINT): WINBOOL{.
-    stdcall, dynlib: "comctl32", importc: "ShowHideMenuCtl".}
-proc GetEffectiveClientRect*(hWnd: HWND, lprc: LPRECT, lpInfo: LPINT){.stdcall,
-    dynlib: "comctl32", importc: "GetEffectiveClientRect".}
-proc MakeDragList*(hLB: HWND): WINBOOL{.stdcall, dynlib: "comctl32",
-                                        importc: "MakeDragList".}
-proc DrawInsert*(handParent: HWND, hLB: HWND, nItem: int32){.stdcall,
-    dynlib: "comctl32", importc: "DrawInsert".}
-proc LBItemFromPt*(hLB: HWND, pt: POINT, bAutoScroll: WINBOOL): int32{.stdcall,
-    dynlib: "comctl32", importc: "LBItemFromPt".}
-proc CreateUpDownControl*(dwStyle: DWORD, x: int32, y: int32, cx: int32,
-                          cy: int32, hParent: HWND, nID: int32, hInst: HINST,
-                          hBuddy: HWND, nUpper: int32, nLower: int32,
-                          nPos: int32): HWND{.stdcall, dynlib: "comctl32",
-    importc: "CreateUpDownControl".}
-proc RegCloseKey*(hKey: HKEY): LONG{.stdcall, dynlib: "advapi32",
-                                     importc: "RegCloseKey".}
-proc RegSetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSECURITY_DESCRIPTOR): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegSetKeySecurity".}
-proc RegFlushKey*(hKey: HKEY): LONG{.stdcall, dynlib: "advapi32",
-                                     importc: "RegFlushKey".}
-proc RegGetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                        lpcbSecurityDescriptor: LPDWORD): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegGetKeySecurity".}
-proc RegNotifyChangeKeyValue*(hKey: HKEY, bWatchSubtree: WINBOOL,
-                              dwNotifyFilter: DWORD, hEvent: HANDLE,
-                              fAsynchronus: WINBOOL): LONG{.stdcall,
-    dynlib: "advapi32", importc: "RegNotifyChangeKeyValue".}
-proc IsValidCodePage*(CodePage: UINT): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "IsValidCodePage".}
-proc GetACP*(): UINT{.stdcall, dynlib: "kernel32", importc: "GetACP".}
-proc GetOEMCP*(): UINT{.stdcall, dynlib: "kernel32", importc: "GetOEMCP".}
-proc GetCPInfo*(para1: UINT, para2: LPCPINFO): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetCPInfo".}
-proc IsDBCSLeadByte*(TestChar: int8): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "IsDBCSLeadByte".}
-proc IsDBCSLeadByteEx*(CodePage: UINT, TestChar: int8): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsDBCSLeadByteEx".}
-proc MultiByteToWideChar*(CodePage: UINT, dwFlags: DWORD,
-                          lpMultiByteStr: LPCSTR, cchMultiByte: int32,
-                          lpWideCharStr: LPWSTR, cchWideChar: int32): int32{.
-    stdcall, dynlib: "kernel32", importc: "MultiByteToWideChar".}
-proc WideCharToMultiByte*(CodePage: UINT, dwFlags: DWORD,
-                          lpWideCharStr: LPCWSTR, cchWideChar: int32,
-                          lpMultiByteStr: LPSTR, cchMultiByte: int32,
-                          lpDefaultChar: LPCSTR, lpUsedDefaultChar: LPBOOL): int32{.
-    stdcall, dynlib: "kernel32", importc: "WideCharToMultiByte".}
-proc IsValidLocale*(Locale: LCID, dwFlags: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "IsValidLocale".}
-proc ConvertDefaultLocale*(Locale: LCID): LCID{.stdcall, dynlib: "kernel32",
-    importc: "ConvertDefaultLocale".}
-proc GetThreadLocale*(): LCID{.stdcall, dynlib: "kernel32",
-                               importc: "GetThreadLocale".}
-proc SetThreadLocale*(Locale: LCID): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "SetThreadLocale".}
-proc GetSystemDefaultLangID*(): LANGID{.stdcall, dynlib: "kernel32",
-                                        importc: "GetSystemDefaultLangID".}
-proc GetUserDefaultLangID*(): LANGID{.stdcall, dynlib: "kernel32",
-                                      importc: "GetUserDefaultLangID".}
-proc GetSystemDefaultLCID*(): LCID{.stdcall, dynlib: "kernel32",
-                                    importc: "GetSystemDefaultLCID".}
-proc GetUserDefaultLCID*(): LCID{.stdcall, dynlib: "kernel32",
-                                  importc: "GetUserDefaultLCID".}
-proc ReadConsoleOutputAttribute*(hConsoleOutput: HANDLE, lpAttribute: LPWORD,
-                                 nLength: DWORD, dwReadCoord: COORD,
-                                 lpNumberOfAttrsRead: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputAttribute".}
-proc WriteConsoleOutputAttribute*(hConsoleOutput: HANDLE,
-                                  lpAttribute: var int16, nLength: DWORD,
-                                  dwWriteCoord: COORD,
-                                  lpNumberOfAttrsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputAttribute".}
-proc FillConsoleOutputAttribute*(hConsoleOutput: HANDLE, wAttribute: int16,
-                                 nLength: DWORD, dwWriteCoord: COORD,
-                                 lpNumberOfAttrsWritten: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputAttribute".}
-proc GetConsoleMode*(hConsoleHandle: HANDLE, lpMode: LPDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetConsoleMode".}
-proc GetNumberOfConsoleInputEvents*(hConsoleInput: HANDLE,
-                                    lpNumberOfEvents: PDWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetNumberOfConsoleInputEvents".}
-proc GetConsoleScreenBufferInfo*(hConsoleOutput: HANDLE,
-    lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".}
-proc GetLargestConsoleWindowSize*(hConsoleOutput: HANDLE): COORD
-proc GetConsoleCursorInfo*(hConsoleOutput: HANDLE,
-                           lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetConsoleCursorInfo".}
-proc GetNumberOfConsoleMouseButtons*(lpNumberOfMouseButtons: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetNumberOfConsoleMouseButtons".}
-proc SetConsoleMode*(hConsoleHandle: HANDLE, dwMode: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetConsoleMode".}
-proc SetConsoleActiveScreenBuffer*(hConsoleOutput: HANDLE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetConsoleActiveScreenBuffer".}
-proc FlushConsoleInputBuffer*(hConsoleInput: HANDLE): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FlushConsoleInputBuffer".}
-proc SetConsoleScreenBufferSize*(hConsoleOutput: HANDLE, dwSize: COORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetConsoleScreenBufferSize".}
-proc SetConsoleCursorPosition*(hConsoleOutput: HANDLE, dwCursorPosition: COORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetConsoleCursorPosition".}
-proc SetConsoleCursorInfo*(hConsoleOutput: HANDLE,
-                           lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetConsoleCursorInfo".}
-proc SetConsoleWindowInfo*(hConsoleOutput: HANDLE, bAbsolute: WINBOOL,
-                           lpConsoleWindow: var SMALL_RECT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetConsoleWindowInfo".}
-proc SetConsoleTextAttribute*(hConsoleOutput: HANDLE, wAttributes: int16): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetConsoleTextAttribute".}
-proc SetConsoleCtrlHandler*(HandlerRoutine: PHANDLER_ROUTINE, Add: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetConsoleCtrlHandler".}
-proc GenerateConsoleCtrlEvent*(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GenerateConsoleCtrlEvent".}
-proc AllocConsole*(): WINBOOL{.stdcall, dynlib: "kernel32",
-                               importc: "AllocConsole".}
-proc FreeConsole*(): WINBOOL{.stdcall, dynlib: "kernel32",
-                              importc: "FreeConsole".}
-proc CreateConsoleScreenBuffer*(dwDesiredAccess: DWORD, dwShareMode: DWORD,
-                                lpSecurityAttributes: var SECURITY_ATTRIBUTES,
-                                dwFlags: DWORD, lpScreenBufferData: LPVOID): HANDLE{.
-    stdcall, dynlib: "kernel32", importc: "CreateConsoleScreenBuffer".}
-proc GetConsoleCP*(): UINT{.stdcall, dynlib: "kernel32", importc: "GetConsoleCP".}
-proc SetConsoleCP*(wCodePageID: UINT): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "SetConsoleCP".}
-proc GetConsoleOutputCP*(): UINT{.stdcall, dynlib: "kernel32",
-                                  importc: "GetConsoleOutputCP".}
-proc SetConsoleOutputCP*(wCodePageID: UINT): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetConsoleOutputCP".}
-proc WNetConnectionDialog*(hwnd: HWND, dwType: DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetConnectionDialog".}
-proc WNetDisconnectDialog*(hwnd: HWND, dwType: DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetDisconnectDialog".}
-proc WNetCloseEnum*(hEnum: HANDLE): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetCloseEnum".}
-proc CloseServiceHandle*(hSCObject: SC_HANDLE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "CloseServiceHandle".}
-proc ControlService*(hService: SC_HANDLE, dwControl: DWORD,
-                     lpServiceStatus: LPSERVICE_STATUS): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ControlService".}
-proc DeleteService*(hService: SC_HANDLE): WINBOOL{.stdcall, dynlib: "advapi32",
-    importc: "DeleteService".}
-proc LockServiceDatabase*(hSCManager: SC_HANDLE): SC_LOCK{.stdcall,
-    dynlib: "advapi32", importc: "LockServiceDatabase".}
-proc NotifyBootConfigStatus*(BootAcceptable: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "NotifyBootConfigStatus".}
-proc QueryServiceObjectSecurity*(hService: SC_HANDLE,
-                                 dwSecurityInformation: SECURITY_INFORMATION,
-                                 lpSecurityDescriptor: PSECURITY_DESCRIPTOR,
-                                 cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "QueryServiceObjectSecurity".}
-proc QueryServiceStatus*(hService: SC_HANDLE, lpServiceStatus: LPSERVICE_STATUS): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "QueryServiceStatus".}
-proc SetServiceObjectSecurity*(hService: SC_HANDLE,
-                               dwSecurityInformation: SECURITY_INFORMATION,
-                               lpSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "SetServiceObjectSecurity".}
-proc SetServiceStatus*(hServiceStatus: SERVICE_STATUS_HANDLE,
-                       lpServiceStatus: LPSERVICE_STATUS): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "SetServiceStatus".}
-proc UnlockServiceDatabase*(ScLock: SC_LOCK): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "UnlockServiceDatabase".}
-proc ChoosePixelFormat*(para1: HDC, para2: PPIXELFORMATDESCRIPTOR): int32{.
-    stdcall, dynlib: "gdi32", importc: "ChoosePixelFormat".}
-proc DescribePixelFormat*(para1: HDC, para2: int32, para3: UINT,
-                          para4: LPPIXELFORMATDESCRIPTOR): int32{.stdcall,
-    dynlib: "gdi32", importc: "DescribePixelFormat".}
-proc SetPixelFormat*(para1: HDC, para2: int32, para3: PPIXELFORMATDESCRIPTOR): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "SetPixelFormat".}
-proc SwapBuffers*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",
-                                        importc: "SwapBuffers".}
-proc DragQueryPoint*(para1: HDROP, para2: LPPOINT): WINBOOL{.stdcall,
-    dynlib: "shell32", importc: "DragQueryPoint".}
-proc DragFinish*(para1: HDROP){.stdcall, dynlib: "shell32",
-                                importc: "DragFinish".}
-proc DragAcceptFiles*(para1: HWND, para2: WINBOOL){.stdcall, dynlib: "shell32",
-    importc: "DragAcceptFiles".}
-proc DuplicateIcon*(para1: HINST, para2: HICON): HICON{.stdcall,
-    dynlib: "shell32", importc: "DuplicateIcon".}
-proc DdeAbandonTransaction*(para1: DWORD, para2: HCONV, para3: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DdeAbandonTransaction".}
-proc DdeAccessData*(para1: HDDEDATA, para2: PDWORD): PBYTE{.stdcall,
-    dynlib: "user32", importc: "DdeAccessData".}
-proc DdeAddData*(para1: HDDEDATA, para2: PBYTE, para3: DWORD, para4: DWORD): HDDEDATA{.
-    stdcall, dynlib: "user32", importc: "DdeAddData".}
-proc DdeClientTransaction*(para1: PBYTE, para2: DWORD, para3: HCONV, para4: HSZ,
-                           para5: UINT, para6: UINT, para7: DWORD, para8: PDWORD): HDDEDATA{.
-    stdcall, dynlib: "user32", importc: "DdeClientTransaction".}
-proc DdeCmpStringHandles*(para1: HSZ, para2: HSZ): int32{.stdcall,
-    dynlib: "user32", importc: "DdeCmpStringHandles".}
-proc DdeConnect*(para1: DWORD, para2: HSZ, para3: HSZ, para4: var CONVCONTEXT): HCONV{.
-    stdcall, dynlib: "user32", importc: "DdeConnect".}
-proc DdeConnectList*(para1: DWORD, para2: HSZ, para3: HSZ, para4: HCONVLIST,
-                     para5: PCONVCONTEXT): HCONVLIST{.stdcall, dynlib: "user32",
-    importc: "DdeConnectList".}
-proc DdeCreateDataHandle*(para1: DWORD, para2: LPBYTE, para3: DWORD,
-                          para4: DWORD, para5: HSZ, para6: UINT, para7: UINT): HDDEDATA{.
-    stdcall, dynlib: "user32", importc: "DdeCreateDataHandle".}
-proc DdeDisconnect*(para1: HCONV): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DdeDisconnect".}
-proc DdeDisconnectList*(para1: HCONVLIST): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DdeDisconnectList".}
-proc DdeEnableCallback*(para1: DWORD, para2: HCONV, para3: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DdeEnableCallback".}
-proc DdeFreeDataHandle*(para1: HDDEDATA): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DdeFreeDataHandle".}
-proc DdeFreeStringHandle*(para1: DWORD, para2: HSZ): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DdeFreeStringHandle".}
-proc DdeGetData*(para1: HDDEDATA, para2: LPBYTE, para3: DWORD, para4: DWORD): DWORD{.
-    stdcall, dynlib: "user32", importc: "DdeGetData".}
-proc DdeGetLastError*(para1: DWORD): UINT{.stdcall, dynlib: "user32",
-    importc: "DdeGetLastError".}
-proc DdeImpersonateClient*(para1: HCONV): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DdeImpersonateClient".}
-proc DdeKeepStringHandle*(para1: DWORD, para2: HSZ): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DdeKeepStringHandle".}
-proc DdeNameService*(para1: DWORD, para2: HSZ, para3: HSZ, para4: UINT): HDDEDATA{.
-    stdcall, dynlib: "user32", importc: "DdeNameService".}
-proc DdePostAdvise*(para1: DWORD, para2: HSZ, para3: HSZ): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "DdePostAdvise".}
-proc DdeQueryConvInfo*(para1: HCONV, para2: DWORD, para3: PCONVINFO): UINT{.
-    stdcall, dynlib: "user32", importc: "DdeQueryConvInfo".}
-proc DdeQueryNextServer*(para1: HCONVLIST, para2: HCONV): HCONV{.stdcall,
-    dynlib: "user32", importc: "DdeQueryNextServer".}
-proc DdeReconnect*(para1: HCONV): HCONV{.stdcall, dynlib: "user32",
-    importc: "DdeReconnect".}
-proc DdeSetUserHandle*(para1: HCONV, para2: DWORD, para3: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DdeSetUserHandle".}
-proc DdeUnaccessData*(para1: HDDEDATA): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DdeUnaccessData".}
-proc DdeUninitialize*(para1: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "DdeUninitialize".}
-proc SHAddToRecentDocs*(para1: UINT, para2: LPCVOID){.stdcall,
-    dynlib: "shell32", importc: "SHAddToRecentDocs".}
-proc SHBrowseForFolder*(para1: LPBROWSEINFO): LPITEMIDLIST{.stdcall,
-    dynlib: "shell32", importc: "SHBrowseForFolder".}
-proc SHChangeNotify*(para1: LONG, para2: UINT, para3: LPCVOID, para4: LPCVOID){.
-    stdcall, dynlib: "shell32", importc: "SHChangeNotify".}
-proc SHFileOperation*(para1: LPSHFILEOPSTRUCT): int32{.stdcall,
-    dynlib: "shell32", importc: "SHFileOperation".}
-proc SHFreeNameMappings*(para1: HANDLE){.stdcall, dynlib: "shell32",
-    importc: "SHFreeNameMappings".}
-proc SHGetFileInfo*(para1: LPCTSTR, para2: DWORD, para3: var SHFILEINFO,
-                    para4: UINT, para5: UINT): DWORD{.stdcall,
-    dynlib: "shell32", importc: "SHGetFileInfo".}
-proc SHGetPathFromIDList*(para1: LPCITEMIDLIST, para2: LPTSTR): WINBOOL{.
-    stdcall, dynlib: "shell32", importc: "SHGetPathFromIDList".}
-proc SHGetSpecialFolderLocation*(para1: HWND, para2: int32,
-                                 para3: var LPITEMIDLIST): HRESULT{.stdcall,
-    dynlib: "shell32", importc: "SHGetSpecialFolderLocation".}
-  # was missing, bug report 1808 PM
-proc CommDlgExtendedError*(): DWORD{.stdcall, dynlib: "comdlg32",
-                                     importc: "CommDlgExtendedError".}
-  # wgl Windows OpenGL helper functions
-proc wglUseFontBitmaps*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD): WINBOOL{.
-    stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsA".}
-proc wglCreateContext*(para1: HDC): HGLRC{.stdcall, dynlib: "opengl32",
-    importc: "wglCreateContext".}
-proc wglCreateLayerContext*(para1: HDC, para2: int32): HGLRC{.stdcall,
-    dynlib: "opengl32", importc: "wglCreateLayerContext".}
-proc wglCopyContext*(para1: HGLRC, para2: HGLRC, para3: UINT): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglCopyContext".}
-proc wglDeleteContext*(para1: HGLRC): WINBOOL{.stdcall, dynlib: "opengl32",
-    importc: "wglDeleteContext".}
-proc wglGetCurrentContext*(): HGLRC{.stdcall, dynlib: "opengl32",
-                                     importc: "wglGetCurrentContext".}
-proc wglGetCurrentDC*(): HDC{.stdcall, dynlib: "opengl32",
-                              importc: "wglGetCurrentDC".}
-proc wglMakeCurrent*(para1: HDC, para2: HGLRC): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglMakeCurrent".}
-proc wglShareLists*(para1: HGLRC, para2: HGLRC): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglShareLists".}
-proc wglUseFontBitmapsW*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD): WINBOOL{.
-    stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsW".}
-  # Delphi doesn't declare these, but we do:
-proc wglUseFontOutlines*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD,
-                         para5: float32, para6: float32, para7: int32,
-                         para8: LPGLYPHMETRICSFLOAT): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglUseFontOutlinesA".}
-proc wglUseFontBitmapsA*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD): WINBOOL{.
-    stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsA".}
-proc wglUseFontOutlinesA*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD,
-                          para5: float32, para6: float32, para7: int32,
-                          para8: LPGLYPHMETRICSFLOAT): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglUseFontOutlinesA".}
-proc wglDescribeLayerPlane*(para1: HDC, para2: int32, para3: int32, para4: UINT,
-                            para5: LPLAYERPLANEDESCRIPTOR): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglDescribeLayerPlane".}
-proc wglGetLayerPaletteEntries*(para1: HDC, para2: int32, para3: int32,
-                                para4: int32, para5: var COLORREF): int32{.
-    stdcall, dynlib: "opengl32", importc: "wglGetLayerPaletteEntries".}
-proc wglGetProcAddress*(para1: LPCSTR): TProc{.stdcall, dynlib: "opengl32",
-    importc: "wglGetProcAddress".}
-proc wglRealizeLayerPalette*(para1: HDC, para2: int32, para3: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "opengl32", importc: "wglRealizeLayerPalette".}
-proc wglSetLayerPaletteEntries*(para1: HDC, para2: int32, para3: int32,
-                                para4: int32, para5: var COLORREF): int32{.
-    stdcall, dynlib: "opengl32", importc: "wglSetLayerPaletteEntries".}
-proc wglSwapLayerBuffers*(para1: HDC, para2: UINT): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglSwapLayerBuffers".}
-proc wglUseFontOutlinesW*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD,
-                          para5: float32, para6: float32, para7: int32,
-                          para8: LPGLYPHMETRICSFLOAT): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglUseFontOutlinesW".}
-  # translated macros
-proc Animate_Create*(hWndP: HWND, id: HMENU, dwStyle: DWORD, hInstance: HINST): HWND
-proc Animate_Open*(hwnd: HWND, szName: LPTSTR): LRESULT
-proc Animate_Play*(hwnd: HWND, `from`, `to`: int32, rep: UINT): LRESULT
-
-proc Animate_Stop*(hwnd: HWND): LRESULT
-proc Animate_Close*(hwnd: HWND): LRESULT
-proc Animate_Seek*(hwnd: HWND, frame: int32): LRESULT
-proc PropSheet_AddPage*(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE): LRESULT
-proc PropSheet_Apply*(hPropSheetDlg: HWND): LRESULT
-proc PropSheet_CancelToClose*(hPropSheetDlg: HWND): LRESULT
-proc PropSheet_Changed*(hPropSheetDlg, hwndPage: HWND): LRESULT
-proc PropSheet_GetCurrentPageHwnd*(hDlg: HWND): LRESULT
-proc PropSheet_GetTabControl*(hPropSheetDlg: HWND): LRESULT
-proc PropSheet_IsDialogMessage*(hDlg: HWND, pMsg: int32): LRESULT
-proc PropSheet_PressButton*(hPropSheetDlg: HWND, iButton: int32): LRESULT
-proc PropSheet_QuerySiblings*(hPropSheetDlg: HWND, param1, param2: int32): LRESULT
-proc PropSheet_RebootSystem*(hPropSheetDlg: HWND): LRESULT
-proc PropSheet_RemovePage*(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,
-                           index: int32): LRESULT
-proc PropSheet_RestartWindows*(hPropSheetDlg: HWND): LRESULT
-proc PropSheet_SetCurSel*(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,
-                          index: int32): LRESULT
-proc PropSheet_SetCurSelByID*(hPropSheetDlg: HWND, id: int32): LRESULT
-proc PropSheet_SetFinishText*(hPropSheetDlg: HWND, lpszText: LPTSTR): LRESULT
-proc PropSheet_SetTitle*(hPropSheetDlg: HWND, dwStyle: DWORD, lpszText: LPCTSTR): LRESULT
-proc PropSheet_SetWizButtons*(hPropSheetDlg: HWND, dwFlags: DWORD): LRESULT
-proc PropSheet_UnChanged*(hPropSheetDlg: HWND, hwndPage: HWND): LRESULT
-proc Header_DeleteItem*(hwndHD: HWND, index: int32): WINBOOL
-proc Header_GetItem*(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL
-proc Header_GetItemCount*(hwndHD: HWND): int32
-proc Header_InsertItem*(hwndHD: HWND, index: int32, hdi: var HD_ITEM): int32
-proc Header_Layout*(hwndHD: HWND, layout: var HD_LAYOUT): WINBOOL
-proc Header_SetItem*(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL
-proc ListView_Arrange*(hwndLV: HWND, code: UINT): LRESULT
-proc ListView_CreateDragImage*(hwnd: HWND, i: int32, lpptUpLeft: LPPOINT): LRESULT
-proc ListView_DeleteAllItems*(hwnd: HWND): LRESULT
-proc ListView_DeleteColumn*(hwnd: HWND, iCol: int32): LRESULT
-proc ListView_DeleteItem*(hwnd: HWND, iItem: int32): LRESULT
-proc ListView_EditLabel*(hwndLV: HWND, i: int32): LRESULT
-proc ListView_EnsureVisible*(hwndLV: HWND, i, fPartialOK: int32): LRESULT
-proc ListView_FindItem*(hwnd: HWND, iStart: int32, lvfi: var LV_FINDINFO): int32
-proc ListView_GetBkColor*(hwnd: HWND): LRESULT
-proc ListView_GetCallbackMask*(hwnd: HWND): LRESULT
-proc ListView_GetColumn*(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT
-proc ListView_GetColumnWidth*(hwnd: HWND, iCol: int32): LRESULT
-proc ListView_GetCountPerPage*(hwndLV: HWND): LRESULT
-proc ListView_GetEditControl*(hwndLV: HWND): LRESULT
-proc ListView_GetImageList*(hwnd: HWND, iImageList: wINT): LRESULT
-proc ListView_GetISearchString*(hwndLV: HWND, lpsz: LPTSTR): LRESULT
-proc ListView_GetItem*(hwnd: HWND, item: var LV_ITEM): LRESULT
-proc ListView_GetItemCount*(hwnd: HWND): LRESULT
-proc ListView_GetItemPosition*(hwndLV: HWND, i: int32, pt: var POINT): int32
-proc ListView_GetItemSpacing*(hwndLV: HWND, fSmall: int32): LRESULT
-proc ListView_GetItemState*(hwndLV: HWND, i, mask: int32): LRESULT
-proc ListView_GetNextItem*(hwnd: HWND, iStart, flags: int32): LRESULT
-proc ListView_GetOrigin*(hwndLV: HWND, pt: var POINT): LRESULT
-proc ListView_GetSelectedCount*(hwndLV: HWND): LRESULT
-proc ListView_GetStringWidth*(hwndLV: HWND, psz: LPCTSTR): LRESULT
-proc ListView_GetTextBkColor*(hwnd: HWND): LRESULT
-proc ListView_GetTextColor*(hwnd: HWND): LRESULT
-proc ListView_GetTopIndex*(hwndLV: HWND): LRESULT
-proc ListView_GetViewRect*(hwnd: HWND, rc: var RECT): LRESULT
-proc ListView_HitTest*(hwndLV: HWND, info: var LV_HITTESTINFO): LRESULT
-proc ListView_InsertColumn*(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT
-proc ListView_InsertItem*(hwnd: HWND, item: var LV_ITEM): LRESULT
-proc ListView_RedrawItems*(hwndLV: HWND, iFirst, iLast: int32): LRESULT
-proc ListView_Scroll*(hwndLV: HWND, dx, dy: int32): LRESULT
-proc ListView_SetBkColor*(hwnd: HWND, clrBk: COLORREF): LRESULT
-proc ListView_SetCallbackMask*(hwnd: HWND, mask: UINT): LRESULT
-proc ListView_SetColumn*(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT
-proc ListView_SetColumnWidth*(hwnd: HWND, iCol, cx: int32): LRESULT
-proc ListView_SetImageList*(hwnd: HWND, himl: int32, iImageList: HIMAGELIST): LRESULT
-proc ListView_SetItem*(hwnd: HWND, item: var LV_ITEM): LRESULT
-proc ListView_SetItemCount*(hwndLV: HWND, cItems: int32): LRESULT
-proc ListView_SetItemPosition*(hwndLV: HWND, i, x, y: int32): LRESULT
-proc ListView_SetItemPosition32*(hwndLV: HWND, i, x, y: int32): LRESULT
-proc ListView_SetItemState*(hwndLV: HWND, i, data, mask: int32): LRESULT
-proc ListView_SetItemText*(hwndLV: HWND, i, iSubItem: int32, pszText: LPTSTR): LRESULT
-proc ListView_SetTextBkColor*(hwnd: HWND, clrTextBk: COLORREF): LRESULT
-proc ListView_SetTextColor*(hwnd: HWND, clrText: COLORREF): LRESULT
-proc ListView_SortItems*(hwndLV: HWND, pfnCompare: PFNLVCOMPARE, lPrm: LPARAM): LRESULT
-proc ListView_Update*(hwndLV: HWND, i: int32): LRESULT
-proc TreeView_InsertItem*(hwnd: HWND, lpis: LPTV_INSERTSTRUCT): LRESULT
-proc TreeView_DeleteItem*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_DeleteAllItems*(hwnd: HWND): LRESULT
-proc TreeView_Expand*(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT
-proc TreeView_GetCount*(hwnd: HWND): LRESULT
-proc TreeView_GetIndent*(hwnd: HWND): LRESULT
-proc TreeView_SetIndent*(hwnd: HWND, indent: int32): LRESULT
-proc TreeView_GetImageList*(hwnd: HWND, iImage: WPARAM): LRESULT
-proc TreeView_SetImageList*(hwnd: HWND, himl: HIMAGELIST, iImage: WPARAM): LRESULT
-proc TreeView_GetNextItem*(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT
-proc TreeView_GetChild*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetNextSibling*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetPrevSibling*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetParent*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetFirstVisible*(hwnd: HWND): LRESULT
-proc TreeView_GetNextVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetPrevVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetSelection*(hwnd: HWND): LRESULT
-proc TreeView_GetDropHilight*(hwnd: HWND): LRESULT
-proc TreeView_GetRoot*(hwnd: HWND): LRESULT
-proc TreeView_Select*(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT
-proc TreeView_SelectItem*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_SelectDropTarget*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_SelectSetFirstVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetItem*(hwnd: HWND, item: var TV_ITEM): LRESULT
-proc TreeView_SetItem*(hwnd: HWND, item: var TV_ITEM): LRESULT
-proc TreeView_EditLabel*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_GetEditControl*(hwnd: HWND): LRESULT
-proc TreeView_GetVisibleCount*(hwnd: HWND): LRESULT
-proc TreeView_HitTest*(hwnd: HWND, lpht: LPTV_HITTESTINFO): LRESULT
-proc TreeView_CreateDragImage*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_SortChildren*(hwnd: HWND, hitem: HTREEITEM, recurse: int32): LRESULT
-proc TreeView_EnsureVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT
-proc TreeView_SortChildrenCB*(hwnd: HWND, psort: LPTV_SORTCB, recurse: int32): LRESULT
-proc TreeView_EndEditLabelNow*(hwnd: HWND, fCancel: int32): LRESULT
-proc TreeView_GetISearchString*(hwndTV: HWND, lpsz: LPTSTR): LRESULT
-proc TabCtrl_GetImageList*(hwnd: HWND): LRESULT
-proc TabCtrl_SetImageList*(hwnd: HWND, himl: HIMAGELIST): LRESULT
-proc TabCtrl_GetItemCount*(hwnd: HWND): LRESULT
-proc TabCtrl_GetItem*(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT
-proc TabCtrl_SetItem*(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT
-proc TabCtrl_InsertItem*(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT
-proc TabCtrl_DeleteItem*(hwnd: HWND, i: int32): LRESULT
-proc TabCtrl_DeleteAllItems*(hwnd: HWND): LRESULT
-proc TabCtrl_GetItemRect*(hwnd: HWND, i: int32, rc: var RECT): LRESULT
-proc TabCtrl_GetCurSel*(hwnd: HWND): LRESULT
-proc TabCtrl_SetCurSel*(hwnd: HWND, i: int32): LRESULT
-proc TabCtrl_HitTest*(hwndTC: HWND, info: var TC_HITTESTINFO): LRESULT
-proc TabCtrl_SetItemExtra*(hwndTC: HWND, cb: int32): LRESULT
-proc TabCtrl_AdjustRect*(hwnd: HWND, bLarger: WINBOOL, rc: var RECT): LRESULT
-proc TabCtrl_SetItemSize*(hwnd: HWND, x, y: int32): LRESULT
-proc TabCtrl_RemoveImage*(hwnd: HWND, i: WPARAM): LRESULT
-proc TabCtrl_SetPadding*(hwnd: HWND, cx, cy: int32): LRESULT
-proc TabCtrl_GetRowCount*(hwnd: HWND): LRESULT
-proc TabCtrl_GetToolTips*(hwnd: HWND): LRESULT
-proc TabCtrl_SetToolTips*(hwnd: HWND, hwndTT: int32): LRESULT
-proc TabCtrl_GetCurFocus*(hwnd: HWND): LRESULT
-proc TabCtrl_SetCurFocus*(hwnd: HWND, i: int32): LRESULT
-proc SNDMSG*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT
-proc CommDlg_OpenSave_GetSpecA*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_GetSpecW*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT
-when not(defined(winUnicode)):
-  proc CommDlg_OpenSave_GetSpec*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT
-else:
-  proc CommDlg_OpenSave_GetSpec*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_GetFilePathA*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_GetFilePathW*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT
-when not(defined(winUnicode)):
-  proc CommDlg_OpenSave_GetFilePath*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT
-else:
-  proc CommDlg_OpenSave_GetFilePath*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_GetFolderPathA*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_GetFolderPathW*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT
-when not(defined(winUnicode)):
-  proc CommDlg_OpenSave_GetFolderPath*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT
-else:
-  proc CommDlg_OpenSave_GetFolderPath*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_GetFolderIDList*(hdlg: HWND, pidl: LPVOID, cbmax: int32): LRESULT
-proc CommDlg_OpenSave_SetControlText*(hdlg: HWND, id: int32, text: LPSTR): LRESULT
-proc CommDlg_OpenSave_HideControl*(hdlg: HWND, id: int32): LRESULT
-proc CommDlg_OpenSave_SetDefExt*(hdlg: HWND, pszext: LPSTR): LRESULT
-proc GetNextWindow*(hWnd: HWND, uCmd: UINT): HWND{.stdcall, dynlib: "user32",
-    importc: "GetWindow".}
-proc GlobalAllocPtr*(flags, cb: DWord): Pointer
-proc GlobalFreePtr*(lp: Pointer): Pointer
-proc GlobalUnlockPtr*(lp: pointer): Pointer
-proc GlobalLockPtr*(lp: pointer): Pointer
-proc GlobalReAllocPtr*(lp: Pointer, cbNew, flags: DWord): Pointer
-proc GlobalPtrHandle*(lp: pointer): Pointer
-proc SetLayeredWindowAttributes*(HWND: hwnd, crKey: COLORREF, bAlpha: int8,
-                                 dwFlags: DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetLayeredWindowAttributes".}
-type
-  PIID* = PGUID
-  TIID* = TGUID
-  TFNDlgProc* = FARPROC
-  TFNThreadStartRoutine* = FARPROC
-  TFNTimerAPCRoutine* = FARPROC
-  TFNFiberStartRoutine* = FARPROC
-  TFNHookProc* = HOOKPROC
-  PObjectTypeList* = ptr TObjectTypeList
-  OBJECT_TYPE_LIST* {.final, pure.} = object
-    Level*: int16
-    Sbz*: int16
-    ObjectType*: PGUID
-
-  TObjectTypeList* = OBJECT_TYPE_LIST
-  AUDIT_EVENT_TYPE* = DWORD
-  PBlendFunction* = ptr TBlendFunction
-  BLENDFUNCTION* {.final, pure.} = object
-    BlendOp*: int8
-    BlendFlags*: int8
-    SourceConstantAlpha*: int8
-    AlphaFormat*: int8
-
-  TBlendFunction* = BLENDFUNCTION
-  WIN_CERTIFICATE* {.final, pure.} = object
-    dwLength*: DWord
-    wRevision*: int16
-    wCertificateType*: int16
-    bCertificate*: array[0..0, int8]
-
-  TWinCertificate* = WIN_CERTIFICATE
-  PWinCertificate* = ptr TWinCertificate
-  TMaxLogPalette* {.final, pure.} = object
-    palVersion*: int16
-    palNumEntries*: int16
-    palPalEntry*: array[int8, TPaletteEntry]
-
-  PMaxLogPalette* = ptr TMaxLogPalette
-  POSVersionInfoA* = POSVERSIONINFO
-  TBitmapFileHeader* = BITMAPFILEHEADER
-  PBitmapFileHeader* = ptr TBitmapFileHeader
-
-const                         # dll names
-  advapi32* = "advapi32.dll"
-  kernel32* = "kernel32.dll"
-  mpr* = "mpr.dll"
-  version* = "version.dll"
-  comctl32* = "comctl32.dll"
-  gdi32* = "gdi32.dll"
-  opengl32* = "opengl32.dll"
-  user32* = "user32.dll"
-  wintrust* = "wintrust.dll"  # Openfile Share modes normally declared in sysutils
-  fmShareCompat* = 0x00000000
-  fmShareExclusive* = 0x00000010
-  fmShareDenyWrite* = 0x00000020
-  fmShareDenyRead* = 0x00000030
-  fmShareDenyNone* = 0x00000040 # HRESULT codes, delphilike
-  SIF_TRACKPOS* = 0x00000010
-  HTBORDER* = 18
-  CP_UTF7* = 65000
-  CP_UTF8* = 65001
-  CREATE_NO_WINDOW* = 0x08000000
-  VK_ATTN* = 246
-  VK_CRSEL* = 247
-  VK_EXSEL* = 248
-  VK_EREOF* = 249
-  VK_PLAY* = 250
-  VK_ZOOM* = 251
-  VK_NONAME* = 252
-  VK_PA1* = 253
-  VK_OEM_CLEAR* = 254
-
-const                         # Severity values
-  FACILITY_NT_BIT* = 0x10000000
-  HFILE_ERROR* = HFILE(- 1) #
-                            #  A language ID is a 16 bit value which is the combination of a
-                            #  primary language ID and a secondary language ID.  The bits are
-                            #  allocated as follows:
-                            #
-                            #       +-----------------------+-------------------------+
-                            #       |     Sublanguage ID    |   Primary Language ID   |
-                            #       +-----------------------+-------------------------+
-                            #        15                   10 9                       0   bit
-                            #
-                            #
-                            #  Language ID creation/extraction macros:
-                            #
-                            #    MAKELANGID    - construct language id from a primary language id and
-                            #                    a sublanguage id.
-                            #    PRIMARYLANGID - extract primary language id from a language id.
-                            #    SUBLANGID     - extract sublanguage id from a language id.
-                            #
-
-proc MAKELANGID*(PrimaryLang, SubLang: USHORT): int16
-proc PRIMARYLANGID*(LangId: int16): int16
-proc SUBLANGID*(LangId: int16): int16
-  #
-  #  A locale ID is a 32 bit value which is the combination of a
-  #  language ID, a sort ID, and a reserved area.  The bits are
-  #  allocated as follows:
-  #
-  #       +-------------+---------+-------------------------+
-  #       |   Reserved  | Sort ID |      Language ID        |
-  #       +-------------+---------+-------------------------+
-  #        31         20 19     16 15                      0   bit
-  #
-  #
-  #  Locale ID creation/extraction macros:
-  #
-  #    MAKELCID            - construct the locale id from a language id and a sort id.
-  #    MAKESORTLCID        - construct the locale id from a language id, sort id, and sort version.
-  #    LANGIDFROMLCID      - extract the language id from a locale id.
-  #    SORTIDFROMLCID      - extract the sort id from a locale id.
-  #    SORTVERSIONFROMLCID - extract the sort version from a locale id.
-  #
-const
-  NLS_VALID_LOCALE_MASK* = 0x000FFFFF
-
-proc MAKELCID*(LangId, SortId: int16): DWORD
-proc MAKESORTLCID*(LangId, SortId, SortVersion: int16): DWORD
-proc LANGIDFROMLCID*(LocaleId: LCID): int16
-proc SORTIDFROMLCID*(LocaleId: LCID): int16
-proc SORTVERSIONFROMLCID*(LocaleId: LCID): int16
-  #
-  #  Default System and User IDs for language and locale.
-  #
-proc LANG_SYSTEM_DEFAULT*(): int16
-proc LANG_USER_DEFAULT*(): int16
-proc LOCALE_NEUTRAL*(): DWORD
-proc LOCALE_INVARIANT*(): DWORD
-proc Succeeded*(Status: HRESULT): WINBOOL
-proc Failed*(Status: HRESULT): WINBOOL
-proc IsError*(Status: HRESULT): WINBOOL
-proc HResultCode*(hr: HRESULT): int32
-proc HResultFacility*(hr: HRESULT): int32
-proc HResultSeverity*(hr: HRESULT): int32
-proc MakeResult*(p1, p2, mask: int32): HRESULT
-proc HResultFromWin32*(x: int32): HRESULT
-proc HResultFromNT*(x: int32): HRESULT
-proc InitializeCriticalSection*(CriticalSection: var TRTLCriticalSection){.
-    stdcall, dynlib: "kernel32", importc: "InitializeCriticalSection".}
-proc EnterCriticalSection*(CriticalSection: var TRTLCriticalSection){.stdcall,
-    dynlib: "kernel32", importc: "EnterCriticalSection".}
-proc LeaveCriticalSection*(CriticalSection: var TRTLCriticalSection){.stdcall,
-    dynlib: "kernel32", importc: "LeaveCriticalSection".}
-proc DeleteCriticalSection*(CriticalSection: var TRTLCriticalSection){.stdcall,
-    dynlib: "kernel32", importc: "DeleteCriticalSection".}
-proc InitializeCriticalSectionAndSpinCount*(
-    CriticalSection: var TRTLCriticalSection, dwSpinCount: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32",
-    importc: "InitializeCriticalSectionAndSpinCount".}
-proc SetCriticalSectionSpinCount*(CriticalSection: var TRTLCriticalSection,
-                                  dwSpinCount: DWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "SetCriticalSectionSpinCount".}
-proc TryEnterCriticalSection*(CriticalSection: var TRTLCriticalSection): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "TryEnterCriticalSection".}
-proc ControlService*(hService: SC_HANDLE, dwControl: DWORD,
-                     ServiceStatus: var TSERVICESTATUS): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ControlService".}
-proc QueryServiceStatus*(hService: SC_HANDLE,
-                         lpServiceStatus: var TSERVICESTATUS): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "QueryServiceStatus".}
-proc SetServiceStatus*(hServiceStatus: SERVICE_STATUS_HANDLE,
-                       ServiceStatus: TSERVICESTATUS): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "SetServiceStatus".}
-proc AdjustTokenPrivileges*(TokenHandle: THandle, DisableAllPrivileges: WINBOOL,
-                            NewState: TTokenPrivileges, BufferLength: DWORD,
-                            PreviousState: var TTokenPrivileges,
-                            ReturnLength: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AdjustTokenPrivileges".}
-proc AdjustWindowRect*(lpRect: var TRect, dwStyle: DWORD, bMenu: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "AdjustWindowRect".}
-proc AdjustWindowRectEx*(lpRect: var TRect, dwStyle: DWORD, bMenu: WINBOOL,
-                         dwExStyle: DWORD): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "AdjustWindowRectEx".}
-proc AllocateAndInitializeSid*(pIdentifierAuthority: TSIDIdentifierAuthority,
-                               nSubAuthorityCount: int8,
-                               nSubAuthority0, nSubAuthority1: DWORD,
-    nSubAuthority2, nSubAuthority3, nSubAuthority4: DWORD, nSubAuthority5,
-    nSubAuthority6, nSubAuthority7: DWORD, pSid: var Pointer): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AllocateAndInitializeSid".}
-proc AllocateLocallyUniqueId*(Luid: var TLargeInteger): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "AllocateLocallyUniqueId".}
-proc BackupRead*(hFile: THandle, lpBuffer: PByte, nNumberOfBytesToRead: DWORD,
-                 lpNumberOfBytesRead: var DWORD, bAbort: WINBOOL,
-                 bProcessSecurity: WINBOOL, lpContext: var Pointer): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BackupRead".}
-proc BackupSeek*(hFile: THandle, dwLowBytesToSeek, dwHighBytesToSeek: DWORD,
-                 lpdwLowByteSeeked, lpdwHighByteSeeked: var DWORD,
-                 lpContext: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "BackupSeek".}
-proc BackupWrite*(hFile: THandle, lpBuffer: PByte, nNumberOfBytesToWrite: DWORD,
-                  lpNumberOfBytesWritten: var DWORD,
-                  bAbort, bProcessSecurity: WINBOOL, lpContext: var Pointer): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BackupWrite".}
-proc BeginPaint*(hWnd: HWND, lpPaint: var TPaintStruct): HDC{.stdcall,
-    dynlib: "user32", importc: "BeginPaint".}
-proc BuildCommDCB*(lpDef: cstring, lpDCB: var TDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "BuildCommDCBA".}
-proc BuildCommDCBA*(lpDef: LPCSTR, lpDCB: var TDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "BuildCommDCBA".}
-proc BuildCommDCBAndTimeouts*(lpDef: cstring, lpDCB: var TDCB,
-                              lpCommTimeouts: var TCommTimeouts): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}
-proc BuildCommDCBAndTimeoutsA*(lpDef: LPCSTR, lpDCB: var TDCB,
-                               lpCommTimeouts: var TCommTimeouts): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}
-proc BuildCommDCBAndTimeoutsW*(lpDef: LPWSTR, lpDCB: var TDCB,
-                               lpCommTimeouts: var TCommTimeouts): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}
-proc BuildCommDCBW*(lpDef: LPWSTR, lpDCB: var TDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "BuildCommDCBW".}
-proc CallMsgFilter*(lpMsg: var TMsg, nCode: int): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CallMsgFilterA".}
-proc CallMsgFilterA*(lpMsg: var TMsg, nCode: int): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CallMsgFilterA".}
-proc CallMsgFilterW*(lpMsg: var TMsg, nCode: int): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CallMsgFilterW".}
-proc CallNamedPipe*(lpNamedPipeName: cstring, lpInBuffer: Pointer,
-                    nInBufferSize: DWORD, lpOutBuffer: Pointer,
-                    nOutBufferSize: DWORD, lpBytesRead: var DWORD,
-                    nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CallNamedPipeA".}
-proc CallNamedPipeA*(lpNamedPipeName: LPCSTR, lpInBuffer: Pointer,
-                     nInBufferSize: DWORD, lpOutBuffer: Pointer,
-                     nOutBufferSize: DWORD, lpBytesRead: var DWORD,
-                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CallNamedPipeA".}
-proc CallNamedPipeW*(lpNamedPipeName: LPWSTR, lpInBuffer: Pointer,
-                     nInBufferSize: DWORD, lpOutBuffer: Pointer,
-                     nOutBufferSize: DWORD, lpBytesRead: var DWORD,
-                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "CallNamedPipeW".}
-proc CoRegisterClassObject*(para1: TCLSID, para2: pointer, para3: DWORD,
-                            para4: DWORD, out_para5: DWORD): HRESULT{.stdcall,
-    dynlib: "ole32.dll", importc: "CoRegisterClassObject".}
-proc ChangeDisplaySettings*(lpDevMode: var TDeviceMode, dwFlags: DWORD): int32{.
-    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}
-proc ChangeDisplaySettingsA*(lpDevMode: var TDeviceModeA, dwFlags: DWORD): int32{.
-    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}
-proc ChangeDisplaySettingsEx*(lpszDeviceName: cstring,
-                              lpDevMode: var TDeviceMode, wnd: HWND,
-                              dwFlags: DWORD, lParam: Pointer): int32{.stdcall,
-    dynlib: "user32", importc: "ChangeDisplaySettingsExA".}
-proc ChangeDisplaySettingsExA*(lpszDeviceName: LPCSTR,
-                               lpDevMode: var TDeviceModeA, wnd: HWND,
-                               dwFlags: DWORD, lParam: Pointer): int32{.stdcall,
-    dynlib: "user32", importc: "ChangeDisplaySettingsExA".}
-proc ChangeDisplaySettingsExW*(lpszDeviceName: LPWSTR,
-                               lpDevMode: var TDeviceModeW, wnd: HWND,
-                               dwFlags: DWORD, lParam: Pointer): int32{.stdcall,
-    dynlib: "user32", importc: "ChangeDisplaySettingsExW".}
-proc ChangeDisplaySettingsW*(lpDevMode: var TDeviceModeW, dwFlags: DWORD): int32{.
-    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}
-  #function CheckColorsInGamut(DC: HDC; var RGBQuads, Results; Count: DWORD): WINBOOL; stdcall; external 'gdi32' name 'CheckColorsInGamut';
-proc ChoosePixelFormat*(para1: HDC, para2: var PIXELFORMATDESCRIPTOR): int32{.
-    stdcall, dynlib: "gdi32", importc: "ChoosePixelFormat".}
-proc ClearCommError*(hFile: THandle, lpErrors: var DWORD, lpStat: PComStat): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ClearCommError".}
-proc ClientToScreen*(hWnd: HWND, lpPoint: var TPoint): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ClientToScreen".}
-proc ClipCursor*(lpRect: var RECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ClipCursor".}
-  #function CombineTransform(var p1: TXForm; const p2, p3: TXForm): WINBOOL; stdcall; external 'gdi32' name 'CombineTransform';
-proc CommConfigDialog*(lpszName: cstring, hWnd: HWND, lpCC: var TCommConfig): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}
-proc CommConfigDialogA*(lpszName: LPCSTR, hWnd: HWND, lpCC: var TCommConfig): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}
-proc CommConfigDialogW*(lpszName: LPWSTR, hWnd: HWND, lpCC: var TCommConfig): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}
-  #function CompareFileTime(const lpFileTime1, lpFileTime2: TFileTime): Longint; stdcall; external 'kernel32' name 'CompareFileTime';
-  #function ConvertToAutoInheritPrivateObjectSecurity(ParentDescriptor, CurrentSecurityDescriptor: PSecurityDescriptor; var NewDescriptor: PSecurityDescriptor; ObjectType: PGUID; IsDirectoryObject: WINBOOL; const GenericMapping: TGenericMapping): WINBOOL;
-  #  stdcall; external 'advapi32' name 'ConvertToAutoInheritPrivateObjectSecurity';
-proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: pointer,
-                           cAccelEntries: int): int{.stdcall, dynlib: "user32",
-    importc: "CopyAcceleratorTableA".}
-proc CopyAcceleratorTableA*(hAccelSrc: HACCEL, lpAccelDst: pointer,
-                            cAccelEntries: int): int{.stdcall, dynlib: "user32",
-    importc: "CopyAcceleratorTableA".}
-proc CopyAcceleratorTableW*(hAccelSrc: HACCEL, lpAccelDst: pointer,
-                            cAccelEntries: int): int{.stdcall, dynlib: "user32",
-    importc: "CopyAcceleratorTableW".}
-proc CopyRect*(lprcDst: var TRect, lprcSrc: TRect): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CopyRect".}
-proc CreateAcceleratorTable*(Accel: pointer, Count: int): HACCEL{.stdcall,
-    dynlib: "user32", importc: "CreateAcceleratorTableA".}
-proc CreateAcceleratorTableA*(Accel: pointer, Count: int): HACCEL{.stdcall,
-    dynlib: "user32", importc: "CreateAcceleratorTableA".}
-proc CreateAcceleratorTableW*(Accel: pointer, Count: int): HACCEL{.stdcall,
-    dynlib: "user32", importc: "CreateAcceleratorTableW".}
-  #function CreateBitmapIndirect(const p1: TBitmap): HBITMAP; stdcall; external 'gdi32' name 'CreateBitmapIndirect';
-  #function CreateBrushIndirect(const p1: TLogBrush): HBRUSH; stdcall; external 'gdi32' name 'CreateBrushIndirect';
-proc CreateColorSpace*(ColorSpace: var TLogColorSpace): HCOLORSPACE{.stdcall,
-    dynlib: "gdi32", importc: "CreateColorSpaceA".}
-proc CreateColorSpaceA*(ColorSpace: var TLogColorSpaceA): HCOLORSPACE{.stdcall,
-    dynlib: "gdi32", importc: "CreateColorSpaceA".}
-  #function CreateColorSpaceW(var ColorSpace: TLogColorSpaceW): HCOLORSPACE; stdcall; external 'gdi32' name 'CreateColorSpaceW';
-proc CreateDialogIndirectParam*(hInstance: HINST, lpTemplate: TDlgTemplate,
-                                hWndParent: HWND, lpDialogFunc: TFNDlgProc,
-                                dwInitParam: LPARAM): HWND{.stdcall,
-    dynlib: "user32", importc: "CreateDialogIndirectParamA".}
-  #function CreateDialogIndirectParamA(hInstance: HINST; const lpTemplate: TDlgTemplate; hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND; stdcall; external 'user32' name 'CreateDialogIndirectParamA';
-  #function CreateDialogIndirectParamW(hInstance: HINST; const lpTemplate: TDlgTemplate; hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND; stdcall; external 'user32' name 'CreateDialogIndirectParamW';
-  #function CreateDIBitmap(DC: HDC; var InfoHeader: TBitmapInfoHeader; dwUsage: DWORD; InitBits: PChar; var InitInfo: TBitmapInfo; wUsage: UINT): HBITMAP; stdcall; external 'gdi32' name 'CreateDIBitmap';
-  #function CreateDIBPatternBrushPt(const p1: Pointer; p2: UINT): HBRUSH; stdcall; external 'gdi32' name 'CreateDIBPatternBrushPt';
-  #function CreateDIBSection(DC: HDC; const p2: TBitmapInfo; p3: UINT; var p4: Pointer; p5: THandle; p6: DWORD): HBITMAP; stdcall; external 'gdi32' name 'CreateDIBSection';
-  #function CreateEllipticRgnIndirect(const p1: TRect): HRGN; stdcall; external 'gdi32' name 'CreateEllipticRgnIndirect';
-  #function CreateFontIndirect(const p1: TLogFont): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectA';
-  #function CreateFontIndirectA(const p1: TLogFontA): HFONT; stdcall; external 'gdi32' name 'CreateFontIndirectA';
-  #function CreateFontIndirectEx(const p1: PEnumLogFontExDV): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectExA';
-  #function CreateFontIndirectExA(const p1: PEnumLogFontExDVA): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectExA';
-  #function CreateFontIndirectExW(const p1: PEnumLogFontExDVW): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectExW';
-  #function CreateFontIndirectW(const p1: TLogFontW): HFONT; stdcall; external 'gdi32' name 'CreateFontIndirectW';
-proc CreateIconIndirect*(piconinfo: var TIconInfo): HICON{.stdcall,
-    dynlib: "user32", importc: "CreateIconIndirect".}
-  #function CreatePalette(const LogPalette: TLogPalette): HPalette; stdcall; external 'gdi32' name 'CreatePalette';
-  #function CreatePenIndirect(const LogPen: TLogPen): HPEN; stdcall; external 'gdi32' name 'CreatePenIndirect';
-proc CreatePipe*(hReadPipe, hWritePipe: var THandle,
-                 lpPipeAttributes: PSecurityAttributes, nSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreatePipe".}
-proc CreatePolygonRgn*(Points: pointer, Count, FillMode: int): HRGN{.stdcall,
-    dynlib: "gdi32", importc: "CreatePolygonRgn".}
-proc CreatePolyPolygonRgn*(pPtStructs: pointer, pIntArray: pointer, p3, p4: int): HRGN{.
-    stdcall, dynlib: "gdi32", importc: "CreatePolyPolygonRgn".}
-  #function CreatePrivateObjectSecurity(ParentDescriptor, CreatorDescriptor: PSecurityDescriptor; var NewDescriptor: PSecurityDescriptor; IsDirectoryObject: WINBOOL; Token: THandle; const GenericMapping: TGenericMapping): WINBOOL;
-  #  stdcall; external 'advapi32' name 'CreatePrivateObjectSecurity';
-  #function CreatePrivateObjectSecurityEx(ParentDescriptor, CreatorDescriptor: PSecurityDescriptor; var NewDescriptor: PSecurityDescriptor; ObjectType: PGUID; IsContainerObject: WINBOOL; AutoInheritFlags: ULONG; Token: THandle;
-  #  const GenericMapping: TGenericMapping): WINBOOL;stdcall; external 'advapi32' name 'CreatePrivateObjectSecurityEx';
-proc CreateProcess*(lpApplicationName: cstring, lpCommandLine: cstring,
-    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes,
-                    bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                    lpEnvironment: Pointer, lpCurrentDirectory: cstring,
-                    lpStartupInfo: TStartupInfo,
-                    lpProcessInformation: var TProcessInformation): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateProcessA".}
-proc CreateProcessA*(lpApplicationName: LPCSTR, lpCommandLine: LPCSTR,
-    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes,
-                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                     lpEnvironment: Pointer, lpCurrentDirectory: LPCSTR,
-                     lpStartupInfo: TStartupInfo,
-                     lpProcessInformation: var TProcessInformation): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateProcessA".}
-  #function CreateProcessAsUser(hToken: THandle; lpApplicationName: PChar; lpCommandLine: PChar; lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes; bInheritHandles: WINBOOL; dwCreationFlags: DWORD;
-  # lpEnvironment: Pointer; lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): WINBOOL;stdcall; external 'advapi32' name 'CreateProcessAsUserA';
-  #function CreateProcessAsUserA(hToken: THandle; lpApplicationName: LPCSTR; lpCommandLine: LPCSTR; lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes; bInheritHandles: WINBOOL; dwCreationFlags: DWORD;
-  #  lpEnvironment: Pointer; lpCurrentDirectory: LPCSTR; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): WINBOOL; stdcall; external 'advapi32' name 'CreateProcessAsUserA';
-  #function CreateProcessAsUserW(hToken: THandle; lpApplicationName: LPWSTR; lpCommandLine: LPWSTR; lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes; bInheritHandles: WINBOOL; dwCreationFlags: DWORD;
-  #  lpEnvironment: Pointer; lpCurrentDirectory: LPWSTR; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): WINBOOL; stdcall; external 'advapi32' name 'CreateProcessAsUserW';
-proc CreateProcessW*(lpApplicationName: LPWSTR, lpCommandLine: LPWSTR,
-    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes,
-                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,
-                     lpEnvironment: Pointer, lpCurrentDirectory: LPWSTR,
-                     lpStartupInfo: TStartupInfo,
-                     lpProcessInformation: var TProcessInformation): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "CreateProcessW".}
-  #function CreateRectRgnIndirect(const p1: TRect): HRGN; stdcall; external 'gdi32' name 'CreateRectRgnIndirect';
-proc CreateRemoteThread*(hProcess: THandle, lpThreadAttributes: Pointer,
-                         dwStackSize: DWORD,
-                         lpStartAddress: TFNThreadStartRoutine,
-                         lpParameter: Pointer, dwCreationFlags: DWORD,
-                         lpThreadId: var DWORD): THandle{.stdcall,
-    dynlib: "kernel32", importc: "CreateRemoteThread".}
-proc CreateThread*(lpThreadAttributes: Pointer, dwStackSize: DWORD,
-                   lpStartAddress: TFNThreadStartRoutine, lpParameter: Pointer,
-                   dwCreationFlags: DWORD, lpThreadId: var DWORD): THandle{.
-    stdcall, dynlib: "kernel32", importc: "CreateThread".}
-proc DdeSetQualityOfService*(hWndClient: HWnd,
-                             pqosNew: TSecurityQualityOfService,
-                             pqosPrev: PSecurityQualityOfService): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DdeSetQualityOfService".}
-  #function DeleteAce(var pAcl: TACL; dwAceIndex: DWORD): WINBOOL; stdcall; external 'advapi32' name 'DeleteAce';
-proc DescribePixelFormat*(DC: HDC, p2: int, p3: UINT,
-                          p4: var TPixelFormatDescriptor): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "DescribePixelFormat".}
-  #function DestroyPrivateObjectSecurity(var ObjectDescriptor: PSecurityDescriptor): WINBOOL; stdcall; external 'advapi32' name 'DestroyPrivateObjectSecurity';
-proc DeviceIoControl*(hDevice: THandle, dwIoControlCode: DWORD,
-                      lpInBuffer: Pointer, nInBufferSize: DWORD,
-                      lpOutBuffer: Pointer, nOutBufferSize: DWORD,
-                      lpBytesReturned: var DWORD, lpOverlapped: POverlapped): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "DeviceIoControl".}
-proc DialogBoxIndirectParam*(hInstance: HINST, lpDialogTemplate: TDlgTemplate,
-                             hWndParent: HWND, lpDialogFunc: TFNDlgProc,
-                             dwInitParam: LPARAM): int{.stdcall,
-    dynlib: "user32", importc: "DialogBoxIndirectParamA".}
-proc DialogBoxIndirectParamA*(hInstance: HINST, lpDialogTemplate: TDlgTemplate,
-                              hWndParent: HWND, lpDialogFunc: TFNDlgProc,
-                              dwInitParam: LPARAM): int{.stdcall,
-    dynlib: "user32", importc: "DialogBoxIndirectParamA".}
-proc DialogBoxIndirectParamW*(hInstance: HINST, lpDialogTemplate: TDlgTemplate,
-                              hWndParent: HWND, lpDialogFunc: TFNDlgProc,
-                              dwInitParam: LPARAM): int{.stdcall,
-    dynlib: "user32", importc: "DialogBoxIndirectParamW".}
-proc DispatchMessage*(lpMsg: TMsg): int32{.stdcall, dynlib: "user32",
-    importc: "DispatchMessageA".}
-proc DispatchMessageA*(lpMsg: TMsg): int32{.stdcall, dynlib: "user32",
-    importc: "DispatchMessageA".}
-proc DispatchMessageW*(lpMsg: TMsg): int32{.stdcall, dynlib: "user32",
-    importc: "DispatchMessageW".}
-proc DosDateTimeToFileTime*(wFatDate, wFatTime: int16, lpFileTime: var TFileTime): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "DosDateTimeToFileTime".}
-proc DPtoLP*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "DPtoLP".}
-  # function DrawAnimatedRects(hwnd: HWND; idAni: Integer; const lprcFrom, lprcTo: TRect): WINBOOL; stdcall; external 'user32' name 'DrawAnimatedRects';
-  #function DrawCaption(p1: HWND; p2: HDC; const p3: TRect; p4: UINT): WINBOOL; stdcall; external 'user32' name 'DrawCaption';
-proc DrawEdge*(hdc: HDC, qrc: var TRect, edge: UINT, grfFlags: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DrawEdge".}
-  #function DrawFocusRect(hDC: HDC; const lprc: TRect): WINBOOL; stdcall; external 'user32' name 'DrawFocusRect';
-proc DrawFrameControl*(DC: HDC, Rect: TRect, uType, uState: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "DrawFrameControl".}
-proc DrawText*(hDC: HDC, lpString: cstring, nCount: int, lpRect: var TRect,
-               uFormat: UINT): int{.stdcall, dynlib: "user32",
-                                    importc: "DrawTextA".}
-proc DrawTextA*(hDC: HDC, lpString: LPCSTR, nCount: int, lpRect: var TRect,
-                uFormat: UINT): int{.stdcall, dynlib: "user32",
-                                     importc: "DrawTextA".}
-proc DrawTextEx*(DC: HDC, lpchText: cstring, cchText: int, p4: var TRect,
-                 dwDTFormat: UINT, DTParams: PDrawTextParams): int{.stdcall,
-    dynlib: "user32", importc: "DrawTextExA".}
-proc DrawTextExA*(DC: HDC, lpchText: LPCSTR, cchText: int, p4: var TRect,
-                  dwDTFormat: UINT, DTParams: PDrawTextParams): int{.stdcall,
-    dynlib: "user32", importc: "DrawTextExA".}
-proc DrawTextExW*(DC: HDC, lpchText: LPWSTR, cchText: int, p4: var TRect,
-                  dwDTFormat: UINT, DTParams: PDrawTextParams): int{.stdcall,
-    dynlib: "user32", importc: "DrawTextExW".}
-proc DrawTextW*(hDC: HDC, lpString: LPWSTR, nCount: int, lpRect: var TRect,
-                uFormat: UINT): int{.stdcall, dynlib: "user32",
-                                     importc: "DrawTextW".}
-  #function DuplicateTokenEx(hExistingToken: THandle; dwDesiredAccess: DWORD; lpTokenAttributes: PSecurityAttributes; ImpersonationLevel: TSecurityImpersonationLevel; TokenType: TTokenType; var phNewToken: THandle): WINBOOL;
-  #  stdcall; external 'advapi32' name 'DuplicateTokenEx';
-proc EndPaint*(hWnd: HWND, lpPaint: TPaintStruct): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EndPaint".}
-  #function EnumDisplayDevices(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDevice; dwFlags: DWORD): WINBOOL;stdcall; external 'user32' name 'EnumDisplayDevicesA';
-  #function EnumDisplayDevicesA(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDeviceA; dwFlags: DWORD): WINBOOL;stdcall; external 'user32' name 'EnumDisplayDevicesA';
-  #function EnumDisplayDevicesW(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDeviceW; dwFlags: DWORD): WINBOOL;stdcall; external 'user32' name 'EnumDisplayDevicesW';
-proc EnumDisplaySettings*(lpszDeviceName: cstring, iModeNum: DWORD,
-                          lpDevMode: var TDeviceMode): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EnumDisplaySettingsA".}
-proc EnumDisplaySettingsA*(lpszDeviceName: LPCSTR, iModeNum: DWORD,
-                           lpDevMode: var TDeviceModeA): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EnumDisplaySettingsA".}
-proc EnumDisplaySettingsW*(lpszDeviceName: LPWSTR, iModeNum: DWORD,
-                           lpDevMode: var TDeviceModeW): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "EnumDisplaySettingsW".}
-  #function EnumEnhMetaFile(DC: HDC; p2: HENHMETAFILE; p3: TFNEnhMFEnumProc; p4: Pointer; const p5: TRect): WINBOOL; stdcall; external 'gdi32' name 'EnumEnhMetaFile';
-  #function EnumFontFamiliesEx(DC: HDC; var p2: TLogFont; p3: TFNFontEnumProc; p4: LPARAM; p5: DWORD): WINBOOL;stdcall; external 'gdi32' name 'EnumFontFamiliesExA';
-  #function EnumFontFamiliesExA(DC: HDC; var p2: TLogFontA; p3: TFNFontEnumProcA; p4: LPARAM; p5: DWORD): WINBOOL; stdcall; external 'gdi32' name 'EnumFontFamiliesExA';
-  #function EnumFontFamiliesExW(DC: HDC; var p2: TLogFontW; p3: TFNFontEnumProcW; p4: LPARAM; p5: DWORD): WINBOOL; stdcall; external 'gdi32' name 'EnumFontFamiliesExW';
-  #function EqualRect(const lprc1, lprc2: TRect): WINBOOL; stdcall; external 'user32' name 'EqualRect';
-proc ExtCreatePen*(PenStyle, Width: DWORD, Brush: TLogBrush, StyleCount: DWORD,
-                   Style: Pointer): HPEN{.stdcall, dynlib: "gdi32",
-    importc: "ExtCreatePen".}
-proc ExtCreateRegion*(p1: PXForm, p2: DWORD, p3: TRgnData): HRGN{.stdcall,
-    dynlib: "gdi32", importc: "ExtCreateRegion".}
-  # function ExtEscape(DC: HDC; p2, p3: Integer; const p4: LPCSTR; p5: Integer; p6: LPSTR): Integer; stdcall; external 'gdi32' name 'ExtEscape';
-proc FileTimeToDosDateTime*(lpFileTime: TFileTime,
-                            lpFatDate, lpFatTime: var int16): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FileTimeToDosDateTime".}
-proc FileTimeToLocalFileTime*(lpFileTime: TFileTime,
-                              lpLocalFileTime: var TFileTime): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "FileTimeToLocalFileTime".}
-proc FileTimeToSystemTime*(lpFileTime: TFileTime, lpSystemTime: var TSystemTime): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FileTimeToSystemTime".}
-proc FillConsoleOutputAttribute*(hConsoleOutput: THandle, wAttribute: int16,
-                                 nLength: DWORD, dwWriteCoord: TCoord,
-                                 lpNumberOfAttrsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputAttribute".}
-proc FillConsoleOutputCharacter*(hConsoleOutput: THandle, cCharacter: Char,
-                                 nLength: DWORD, dwWriteCoord: TCoord,
-                                 lpNumberOfCharsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}
-proc FillConsoleOutputCharacterA*(hConsoleOutput: THandle, cCharacter: char,
-                                  nLength: DWORD, dwWriteCoord: TCoord,
-                                  lpNumberOfCharsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}
-proc FillConsoleOutputCharacterW*(hConsoleOutput: THandle, cCharacter: WideChar,
-                                  nLength: DWORD, dwWriteCoord: TCoord,
-                                  lpNumberOfCharsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}
-  #function FillRect(hDC: HDC; const lprc: TRect; hbr: HBRUSH): Integer; stdcall; external 'user32' name 'FillRect';
-proc FindFirstFile*(lpFileName: cstring, lpFindFileData: var TWIN32FindData): THandle{.
-    stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}
-proc FindFirstFileA*(lpFileName: LPCSTR, lpFindFileData: var TWIN32FindDataA): THandle{.
-    stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}
-proc FindFirstFileW*(lpFileName: LPWSTR, lpFindFileData: var TWIN32FindDataW): THandle{.
-    stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}
-  #function FindFirstFreeAce(var pAcl: TACL; var pAce: Pointer): WINBOOL; stdcall; external 'advapi32' name 'FindFirstFreeAce';
-proc FindNextFile*(hFindFile: THandle, lpFindFileData: var TWIN32FindData): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FindNextFileA".}
-proc FindNextFileA*(hFindFile: THandle, lpFindFileData: var TWIN32FindDataA): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FindNextFileA".}
-proc FindNextFileW*(hFindFile: THandle, lpFindFileData: var TWIN32FindDataW): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "FindNextFileW".}
-  #function FlushInstructionCache(hProcess: THandle; const lpBaseAddress: Pointer; dwSize: DWORD): WINBOOL; stdcall; external 'kernel32' name 'FlushInstructionCache';
-  #function FlushViewOfFile(const lpBaseAddress: Pointer; dwNumberOfBytesToFlush: DWORD): WINBOOL; stdcall; external 'kernel32' name 'FlushViewOfFile';
-  #function FrameRect(hDC: HDC; const lprc: TRect; hbr: HBRUSH): Integer; stdcall; external 'user32' name 'FrameRect';
-  #function GetAce(const pAcl: TACL; dwAceIndex: DWORD; var pAce: Pointer): WINBOOL; stdcall; external 'advapi32' name 'GetAce';
-  #function GetAclInformation(const pAcl: TACL; pAclInformation: Pointer; nAclInformationLength: DWORD; dwAclInformationClass: TAclInformationClass): WINBOOL; stdcall; external 'advapi32' name 'GetAclInformation';
-  #function GetAltTabInfo(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo; pszItemText: PChar; cchItemText: UINT): WINBOOL;stdcall; external 'user32' name 'GetAltTabInfoA';
-  #function GetAltTabInfoA(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo; pszItemText: LPCSTR; cchItemText: UINT): WINBOOL;stdcall; external 'user32' name 'GetAltTabInfoA';
-  #function GetAltTabInfoW(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo; pszItemText: LPWSTR; cchItemText: UINT): WINBOOL;stdcall; external 'user32' name 'GetAltTabInfoW';
-proc GetAspectRatioFilterEx*(DC: HDC, p2: var TSize): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetAspectRatioFilterEx".}
-proc GetBinaryType*(lpApplicationName: cstring, lpBinaryType: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}
-proc GetBinaryTypeA*(lpApplicationName: LPCSTR, lpBinaryType: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}
-proc GetBinaryTypeW*(lpApplicationName: LPWSTR, lpBinaryType: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}
-proc GetBitmapDimensionEx*(p1: HBITMAP, p2: var TSize): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetBitmapDimensionEx".}
-proc GetBoundsRect*(DC: HDC, p2: var TRect, p3: UINT): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetBoundsRect".}
-proc GetBrushOrgEx*(DC: HDC, p2: var TPoint): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetBrushOrgEx".}
-proc GetCaretPos*(lpPoint: var TPoint): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetCaretPos".}
-proc GetCharABCWidths*(DC: HDC, p2, p3: UINT, ABCStructs: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}
-proc GetCharABCWidthsA*(DC: HDC, p2, p3: UINT, ABCStructs: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}
-proc GetCharABCWidthsFloat*(DC: HDC, p2, p3: UINT, ABCFloatSturcts: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}
-proc GetCharABCWidthsFloatA*(DC: HDC, p2, p3: UINT, ABCFloatSturcts: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}
-proc GetCharABCWidthsFloatW*(DC: HDC, p2, p3: UINT, ABCFloatSturcts: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}
-  #function GetCharABCWidthsI(DC: HDC; p2, p3: UINT; p4: PWORD; const Widths): WINBOOL;stdcall; external 'gdi32' name 'GetCharABCWidthsI';
-proc GetCharABCWidthsW*(DC: HDC, p2, p3: UINT, ABCStructs: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}
-proc GetCharacterPlacement*(DC: HDC, p2: cstring, p3, p4: WINBOOL,
-                            p5: var TGCPResults, p6: DWORD): DWORD{.stdcall,
-    dynlib: "gdi32", importc: "GetCharacterPlacementA".}
-proc GetCharacterPlacementA*(DC: HDC, p2: LPCSTR, p3, p4: WINBOOL,
-                             p5: var TGCPResults, p6: DWORD): DWORD{.stdcall,
-    dynlib: "gdi32", importc: "GetCharacterPlacementA".}
-proc GetCharacterPlacementW*(DC: HDC, p2: LPWSTR, p3, p4: WINBOOL,
-                             p5: var TGCPResults, p6: DWORD): DWORD{.stdcall,
-    dynlib: "gdi32", importc: "GetCharacterPlacementW".}
-proc GetCharWidth*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharWidthA".}
-proc GetCharWidth32*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharWidth32A".}
-proc GetCharWidth32A*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharWidth32A".}
-proc GetCharWidth32W*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharWidth32W".}
-proc GetCharWidthA*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharWidthA".}
-proc GetCharWidthFloat*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}
-proc GetCharWidthFloatA*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}
-proc GetCharWidthFloatW*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}
-  #function GetCharWidthI(DC: HDC; p2, p3: UINT; p4: PWORD; const Widths:pointer): WINBOOL;stdcall; external 'gdi32' name 'GetCharWidthI';
-proc GetCharWidthW*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetCharWidthW".}
-proc GetClassInfo*(hInstance: HINST, lpClassName: cstring,
-                   lpWndClass: var TWndClass): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetClassInfoA".}
-proc GetClassInfoA*(hInstance: HINST, lpClassName: LPCSTR,
-                    lpWndClass: var TWndClassA): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetClassInfoA".}
-proc GetClassInfoEx*(Instance: HINST, Classname: cstring,
-                     WndClass: var TWndClassEx): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetClassInfoExA".}
-  #function GetClassInfoExA(Instance: HINST; Classname: LPCSTR; var WndClass: TWndClassExA): WINBOOL; stdcall; external 'user32' name 'GetClassInfoExA';
-  #function GetClassInfoExW(Instance: HINST; Classname: LPWSTR; var WndClass: TWndClassExW): WINBOOL; stdcall; external 'user32' name 'GetClassInfoExW';
-  #function GetClassInfoW(hInstance: HINST; lpClassName: LPWSTR; var lpWndClass: TWndClassW): WINBOOL; stdcall; external 'user32' name 'GetClassInfoW';
-proc GetClientRect*(hWnd: HWND, lpRect: var TRect): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetClientRect".}
-proc GetClipBox*(DC: HDC, Rect: var TRect): int{.stdcall, dynlib: "gdi32",
-    importc: "GetClipBox".}
-proc GetClipCursor*(lpRect: var TRect): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetClipCursor".}
-proc GetColorAdjustment*(DC: HDC, p2: var TColorAdjustment): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetColorAdjustment".}
-proc GetCommConfig*(hCommDev: THandle, lpCC: var TCommConfig,
-                    lpdwSize: var DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "GetCommConfig".}
-proc GetCommMask*(hFile: THandle, lpEvtMask: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetCommMask".}
-proc GetCommModemStatus*(hFile: THandle, lpModemStat: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetCommModemStatus".}
-proc GetCommProperties*(hFile: THandle, lpCommProp: var TCommProp): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetCommProperties".}
-proc GetCommState*(hFile: THandle, lpDCB: var TDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetCommState".}
-proc GetCommTimeouts*(hFile: THandle, lpCommTimeouts: var TCommTimeouts): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetCommTimeouts".}
-proc GetComputerName*(lpBuffer: cstring, nSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetComputerNameA".}
-proc GetComputerNameA*(lpBuffer: LPCSTR, nSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetComputerNameA".}
-proc GetComputerNameW*(lpBuffer: LPWSTR, nSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetComputerNameW".}
-proc GetConsoleCursorInfo*(hConsoleOutput: THandle,
-                           lpConsoleCursorInfo: var TConsoleCursorInfo): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetConsoleCursorInfo".}
-proc GetConsoleMode*(hConsoleHandle: THandle, lpMode: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetConsoleMode".}
-proc GetConsoleScreenBufferInfo*(hConsoleOutput: THandle,
-    lpConsoleScreenBufferInfo: var TConsoleScreenBufferInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".}
-proc GetCPInfo*(CodePage: UINT, lpCPInfo: var TCPInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetCPInfo".}
-  #function GetCurrentHwProfile(var lpHwProfileInfo: THWProfileInfo): WINBOOL;stdcall; external 'advapi32' name 'GetCurrentHwProfileA';
-  #function GetCurrentHwProfileA(var lpHwProfileInfo: THWProfileInfoA): WINBOOL;stdcall; external 'advapi32' name 'GetCurrentHwProfileA';
-  #function GetCurrentHwProfileW(var lpHwProfileInfo: THWProfileInfoW): WINBOOL;stdcall; external 'advapi32' name 'GetCurrentHwProfileW';
-proc GetCursorInfo*(pci: var TCursorInfo): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetCursorInfo".}
-proc GetCursorPos*(lpPoint: var TPoint): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "GetCursorPos".}
-proc GetDCOrgEx*(DC: HDC, Origin: var TPoint): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetDCOrgEx".}
-proc GetDefaultCommConfig*(lpszName: cstring, lpCC: var TCommConfig,
-                           lpdwSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDefaultCommConfigA".}
-proc GetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: var TCommConfig,
-                            lpdwSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDefaultCommConfigA".}
-proc GetDefaultCommConfigW*(lpszName: LPWSTR, lpCC: var TCommConfig,
-                            lpdwSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetDefaultCommConfigW".}
-proc GetDIBColorTable*(DC: HDC, p2, p3: UINT, RGBQuadStructs: pointer): UINT{.
-    stdcall, dynlib: "gdi32", importc: "GetDIBColorTable".}
-proc GetDIBits*(DC: HDC, Bitmap: HBitmap, StartScan, NumScans: UINT,
-                Bits: Pointer, BitInfo: var TBitmapInfo, Usage: UINT): int{.
-    stdcall, dynlib: "gdi32", importc: "GetDIBits".}
-proc GetDiskFreeSpace*(lpRootPathName: cstring, lpSectorsPerCluster,
-    lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}
-proc GetDiskFreeSpaceA*(lpRootPathName: LPCSTR, lpSectorsPerCluster,
-    lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}
-proc GetDiskFreeSpaceEx*(lpDirectoryName: cstring, lpFreeBytesAvailableToCaller,
-    lpTotalNumberOfBytes: var TLargeInteger,
-                         lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}
-proc GetDiskFreeSpaceExA*(lpDirectoryName: LPCSTR, lpFreeBytesAvailableToCaller,
-    lpTotalNumberOfBytes: var TLargeInteger,
-                          lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}
-proc GetDiskFreeSpaceExW*(lpDirectoryName: LPWSTR, lpFreeBytesAvailableToCaller,
-    lpTotalNumberOfBytes: var TLargeInteger,
-                          lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExW".}
-proc GetDiskFreeSpaceW*(lpRootPathName: LPWSTR, lpSectorsPerCluster,
-    lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}
-proc GetDiskFreeSpaceEx*(lpDirectoryName: cstring, lpFreeBytesAvailableToCaller,
-    lpTotalNumberOfBytes: pLargeInteger, lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}
-proc GetDiskFreeSpaceExA*(lpDirectoryName: LPCSTR, lpFreeBytesAvailableToCaller,
-    lpTotalNumberOfBytes: pLargeInteger, lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}
-proc GetDiskFreeSpaceExW*(lpDirectoryName: LPWSTR, lpFreeBytesAvailableToCaller,
-    lpTotalNumberOfBytes: pLargeInteger, lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExW".}
-  #function GetEnhMetaFilePixelFormat(p1: HENHMETAFILE; p2: Cardinal; var p3: TPixelFormatDescriptor): UINT;stdcall; external 'gdi32' name 'GetEnhMetaFilePixelFormat';
-proc GetExitCodeProcess*(hProcess: THandle, lpExitCode: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetExitCodeProcess".}
-proc GetExitCodeThread*(hThread: THandle, lpExitCode: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetExitCodeThread".}
-proc GetFileInformationByHandle*(hFile: THandle, lpFileInformation: var TByHandleFileInformation): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetFileInformationByHandle".}
-  #function GetFileSecurity(lpFileName: PChar; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL;stdcall; external 'advapi32' name 'GetFileSecurityA';
-  #function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetFileSecurityA';
-  #function GetFileSecurityW(lpFileName: LPWSTR; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetFileSecurityW';
-proc GetFileVersionInfoSize*(lptstrFilename: cstring, lpdwHandle: var DWORD): DWORD{.
-    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}
-proc GetFileVersionInfoSizeA*(lptstrFilename: LPCSTR, lpdwHandle: var DWORD): DWORD{.
-    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}
-proc GetFileVersionInfoSizeW*(lptstrFilename: LPWSTR, lpdwHandle: var DWORD): DWORD{.
-    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}
-  # removed because old definition was wrong !
-  # function GetFullPathName(lpFileName: PChar; nBufferLength: DWORD; lpBuffer: PChar; var lpFilePart: PChar): DWORD;stdcall; external 'kernel32' name 'GetFullPathNameA';
-  # function GetFullPathNameA(lpFileName: LPCSTR; nBufferLength: DWORD; lpBuffer: LPCSTR; var lpFilePart: LPCSTR): DWORD; stdcall; external 'kernel32' name 'GetFullPathNameA';
-  # function GetFullPathNameW(lpFileName: LPWSTR; nBufferLength: DWORD; lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall; external 'kernel32' name 'GetFullPathNameW';
-proc GetGlyphOutline*(DC: HDC, p2, p3: UINT, p4: TGlyphMetrics, p5: DWORD,
-                      p6: Pointer, p7: TMat2): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GetGlyphOutlineA".}
-proc GetGlyphOutlineA*(DC: HDC, p2, p3: UINT, p4: TGlyphMetrics, p5: DWORD,
-                       p6: Pointer, p7: TMat2): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GetGlyphOutlineA".}
-proc GetGlyphOutlineW*(DC: HDC, p2, p3: UINT, p4: TGlyphMetrics, p5: DWORD,
-                       p6: Pointer, p7: TMat2): DWORD{.stdcall, dynlib: "gdi32",
-    importc: "GetGlyphOutlineW".}
-  #function GetGUIThreadInfo(idThread: DWORD; var pgui: TGUIThreadinfo): WINBOOL;stdcall; external 'user32' name 'GetGUIThreadInfo';
-proc GetHandleInformation*(hObject: THandle, lpdwFlags: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetHandleInformation".}
-  #function GetICMProfile(DC: HDC; var Size: DWORD; Name: PChar): WINBOOL;stdcall; external 'gdi32' name 'GetICMProfileA';
-  #function GetICMProfileA(DC: HDC; var Size: DWORD; Name: LPCSTR): WINBOOL; stdcall; external 'gdi32' name 'GetICMProfileA';
-  #function GetICMProfileW(DC: HDC; var Size: DWORD; Name: LPWSTR): WINBOOL; stdcall; external 'gdi32' name 'GetICMProfileW';
-proc GetIconInfo*(hIcon: HICON, piconinfo: var TIconInfo): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetIconInfo".}
-  #function GetKernelObjectSecurity(Handle: THandle; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetKernelObjectSecurity';
-proc GetKerningPairs*(DC: HDC, Count: DWORD, KerningPairs: pointer): DWORD{.
-    stdcall, dynlib: "gdi32", importc: "GetKerningPairs".}
-proc GetKeyboardLayoutList*(nBuff: int, List: pointer): UINT{.stdcall,
-    dynlib: "user32", importc: "GetKeyboardLayoutList".}
-  #function GetKeyboardState(var KeyState: TKeyboardState): WINBOOL; stdcall; external 'user32' name 'GetKeyboardState';
-  #function GetLastInputInfo(var plii: TLastInputInfo): WINBOOL;stdcall; external 'user32' name 'GetLastInputInfo';
-proc GetSystemTime*(lpSystemTime: var SYSTEMTIME){.stdcall, dynlib: "kernel32",
-    importc: "GetSystemTime".}
-proc GetLocalTime*(SystemTime: var SYSTEMTIME){.stdcall, dynlib: "kernel32",
-    importc: "GetLocalTime".}
-proc GetSystemInfo*(SystemInfo: var SYSTEM_INFO){.stdcall, dynlib: "kernel32",
-    importc: "GetSystemInfo".}
-proc SetSystemTime*(lpSystemTime: var SYSTEMTIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetSystemTime".}
-proc SetLocalTime*(lpSystemTime: var SYSTEMTIME): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetLocalTime".}
-proc GetLogColorSpace*(p1: HCOLORSPACE, ColorSpace: var TLogColorSpace,
-                       Size: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetLogColorSpaceA".}
-proc GetLogColorSpaceA*(p1: HCOLORSPACE, ColorSpace: var TLogColorSpaceA,
-                        Size: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetLogColorSpaceA".}
-  #function GetLogColorSpaceW(p1: HCOLORSPACE; var ColorSpace: TLogColorSpaceW; Size: DWORD): WINBOOL; stdcall; external 'gdi32' name 'GetLogColorSpaceW';
-proc GetMailslotInfo*(hMailslot: THandle, lpMaxMessageSize: Pointer,
-                      lpNextSize: var DWORD,
-                      lpMessageCount, lpReadTimeout: Pointer): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetMailslotInfo".}
-  #function GetMenuBarInfo(hend: HWND; idObject, idItem: Longint; var pmbi: TMenuBarInfo): WINBOOL;stdcall; external 'user32' name 'GetMenuBarInfo';
-  #function GetMenuInfo(hMenu: HMENU; var lpmi: TMenuInfo): WINBOOL;stdcall; external 'user32' name 'GetMenuInfo';
-proc GetMenuItemInfo*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: var TMenuItemInfo): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}
-proc GetMenuItemInfoA*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: var TMenuItemInfoA): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}
-  #function GetMenuItemInfoW(p1: HMENU; p2: UINT; p3: WINBOOL; var p4: TMenuItemInfoW): WINBOOL; stdcall; external 'user32' name 'GetMenuItemInfoW';
-proc GetMenuItemRect*(hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: var TRect): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetMenuItemRect".}
-proc GetMessage*(lpMsg: var TMsg, hWnd: HWND, wMsgFilterMin, wMsgFilterMax: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetMessageA".}
-proc GetMessageA*(lpMsg: var TMsg, hWnd: HWND,
-                  wMsgFilterMin, wMsgFilterMax: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetMessageA".}
-proc GetMessageW*(lpMsg: var TMsg, hWnd: HWND,
-                  wMsgFilterMin, wMsgFilterMax: UINT): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetMessageW".}
-proc GetMiterLimit*(DC: HDC, Limit: var float32): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetMiterLimit".}
-  #function GetMouseMovePoints(cbSize: UINT; var lppt, lpptBuf: TMouseMovePoint; nBufPoints: Integer; resolution: DWORD): Integer;stdcall; external 'user32' name 'GetMouseMovePoints';
-proc GetNamedPipeInfo*(hNamedPipe: THandle, lpFlags: var DWORD,
-                       lpOutBufferSize, lpInBufferSize, lpMaxInstances: Pointer): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetNamedPipeInfo".}
-proc GetNumberOfConsoleInputEvents*(hConsoleInput: THandle,
-                                    lpNumberOfEvents: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetNumberOfConsoleInputEvents".}
-proc GetNumberOfConsoleMouseButtons*(lpNumberOfMouseButtons: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetNumberOfConsoleMouseButtons".}
-  #function GetNumberOfEventLogRecords(hEventLog: THandle; var NumberOfRecords: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetNumberOfEventLogRecords';
-  #function GetOldestEventLogRecord(hEventLog: THandle; var OldestRecord: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetOldestEventLogRecord';
-proc GetOverlappedResult*(hFile: THandle, lpOverlapped: TOverlapped,
-                          lpNumberOfBytesTransferred: var DWORD, bWait: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetOverlappedResult".}
-proc GetPaletteEntries*(Palette: HPALETTE, StartIndex, NumEntries: UINT,
-                        PaletteEntries: pointer): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetPaletteEntries".}
-proc GetPath*(DC: HDC, Points, Types: pointer, nSize: int): int{.stdcall,
-    dynlib: "gdi32", importc: "GetPath".}
-proc GetPriorityClipboardFormat*(paFormatPriorityList: pointer, cFormats: int): int{.
-    stdcall, dynlib: "user32", importc: "GetPriorityClipboardFormat".}
-  #function GetPrivateObjectSecurity(ObjectDescriptor: PSecurityDescriptor; SecurityInformation: SECURITY_INFORMATION; ResultantDescriptor: PSecurityDescriptor; DescriptorLength: DWORD; var ReturnLength: DWORD): WINBOOL;
-  #  stdcall; external 'advapi32' name 'GetPrivateObjectSecurity';
-proc GetPrivateProfileSectionNamesA*(lpszReturnBuffer: LPSTR, nSize: DWORD,
-                                     lpFileName: LPCSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesA".}
-proc GetPrivateProfileSectionNamesW*(lpszReturnBuffer: LPWSTR, nSize: DWORD,
-                                     lpFileName: LPCWSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesW".}
-proc GetPrivateProfileSectionNames*(lpszReturnBuffer: LPTSTR, nSize: DWORD,
-                                    lpFileName: LPCTSTR): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesA".}
-proc GetPrivateProfileStructA*(lpszSection, lpszKey: LPCSTR, lpStruct: LPVOID,
-                               uSizeStruct: UINT, szFile: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructA".}
-proc GetPrivateProfileStructW*(lpszSection, lpszKey: LPCWSTR, lpStruct: LPVOID,
-                               uSizeStruct: UINT, szFile: LPCWSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructW".}
-proc GetPrivateProfileStruct*(lpszSection, lpszKey: LPCTSTR, lpStruct: LPVOID,
-                              uSizeStruct: UINT, szFile: LPCTSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructA".}
-proc GetProcessAffinityMask*(hProcess: THandle, lpProcessAffinityMask,
-    lpSystemAffinityMask: var DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "GetProcessAffinityMask".}
-proc GetProcessHeaps*(NumberOfHeaps: DWORD, ProcessHeaps: var THandle): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetProcessHeaps".}
-proc GetProcessPriorityBoost*(hThread: THandle,
-                              DisablePriorityBoost: var WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetProcessPriorityBoost".}
-proc GetProcessShutdownParameters*(lpdwLevel, lpdwFlags: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetProcessShutdownParameters".}
-proc GetProcessTimes*(hProcess: THandle, lpCreationTime, lpExitTime,
-    lpKernelTime, lpUserTime: var TFileTime): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetProcessTimes".}
-proc GetProcessWorkingSetSize*(hProcess: THandle, lpMinimumWorkingSetSize,
-    lpMaximumWorkingSetSize: var DWORD): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "GetProcessWorkingSetSize".}
-proc GetQueuedCompletionStatus*(CompletionPort: THandle,
-    lpNumberOfBytesTransferred, lpCompletionKey: var DWORD,
-                                lpOverlapped: var POverlapped,
-                                dwMilliseconds: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetQueuedCompletionStatus".}
-proc GetRasterizerCaps*(p1: var TRasterizerStatus, p2: UINT): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetRasterizerCaps".}
-proc GetRgnBox*(RGN: HRGN, p2: var TRect): int{.stdcall, dynlib: "gdi32",
-    importc: "GetRgnBox".}
-proc GetScrollInfo*(hWnd: HWND, BarFlag: int, ScrollInfo: var TScrollInfo): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetScrollInfo".}
-proc GetScrollRange*(hWnd: HWND, nBar: int, lpMinPos, lpMaxPos: var int): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetScrollRange".}
-  #function GetSecurityDescriptorControl(pSecurityDescriptor: PSecurityDescriptor; var pControl: SECURITY_DESCRIPTOR_CONTROL; var lpdwRevision: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorControl';
-  #function GetSecurityDescriptorDacl(pSecurityDescriptor: PSecurityDescriptor; var lpbDaclPresent: WINBOOL; var pDacl: PACL; var lpbDaclDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorDacl';
-  #function GetSecurityDescriptorGroup(pSecurityDescriptor: PSecurityDescriptor; var pGroup: PSID; var lpbGroupDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorGroup';
-  #function GetSecurityDescriptorOwner(pSecurityDescriptor: PSecurityDescriptor; var pOwner: PSID; var lpbOwnerDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorOwner';
-  #function GetSecurityDescriptorSacl(pSecurityDescriptor: PSecurityDescriptor; var lpbSaclPresent: WINBOOL; var pSacl: PACL; var lpbSaclDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorSacl';
-proc GetStartupInfo*(lpStartupInfo: var TSTARTUPINFO){.stdcall,
-    dynlib: "kernel32", importc: "GetStartupInfoA".}
-proc GetStringTypeA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,
-                     cchSrc: WINBOOL, lpCharType: var int16): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeA".}
-proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: cstring,
-                      cchSrc: int, lpCharType: var int16): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeExA".}
-proc GetStringTypeExA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,
-                       cchSrc: int, lpCharType: var int16): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeExA".}
-proc GetStringTypeExW*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPWSTR,
-                       cchSrc: int, lpCharType: var int16): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeExW".}
-proc GetStringTypeW*(dwInfoType: DWORD, lpSrcStr: WCHAR, cchSrc: WINBOOL,
-                     lpCharType: var int16): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetStringTypeW".}
-proc GetSystemPaletteEntries*(DC: HDC, StartIndex, NumEntries: UINT,
-                              PaletteEntries: pointer): UINT{.stdcall,
-    dynlib: "gdi32", importc: "GetSystemPaletteEntries".}
-proc GetSystemPowerStatus*(lpSystemPowerStatus: var TSystemPowerStatus): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetSystemPowerStatus".}
-proc GetSystemTimeAdjustment*(lpTimeAdjustment, lpTimeIncrement: var DWORD,
-                              lpTimeAdjustmentDisabled: var WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetSystemTimeAdjustment".}
-proc GetSystemTimeAsFileTime*(lpSystemTimeAsFileTime: var TFILETIME){.stdcall,
-    dynlib: "kernel32", importc: "GetSystemTimeAsFileTime".}
-proc GetTabbedTextExtent*(hDC: HDC, lpString: cstring,
-                          nCount, nTabPositions: int,
-                          lpnTabStopPositions: pointer): DWORD{.stdcall,
-    dynlib: "user32", importc: "GetTabbedTextExtentA".}
-proc GetTabbedTextExtentA*(hDC: HDC, lpString: LPCSTR,
-                           nCount, nTabPositions: int,
-                           lpnTabStopPositions: pointer): DWORD{.stdcall,
-    dynlib: "user32", importc: "GetTabbedTextExtentA".}
-proc GetTabbedTextExtentW*(hDC: HDC, lpString: LPWSTR,
-                           nCount, nTabPositions: int,
-                           lpnTabStopPositions: pointer): DWORD{.stdcall,
-    dynlib: "user32", importc: "GetTabbedTextExtentW".}
-proc GetTapeParameters*(hDevice: THandle, dwOperation: DWORD,
-                        lpdwSize: var DWORD, lpTapeInformation: Pointer): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetTapeParameters".}
-proc GetTapePosition*(hDevice: THandle, dwPositionType: DWORD,
-                      lpdwPartition, lpdwOffsetLow: var DWORD,
-                      lpdwOffsetHigh: Pointer): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "GetTapePosition".}
-proc GetTextExtentExPoint*(DC: HDC, p2: cstring, p3, p4: int, p5, p6: PInteger,
-                           p7: var TSize): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentExPointA".}
-proc GetTextExtentExPointA*(DC: HDC, p2: LPCSTR, p3, p4: int, p5, p6: PInteger,
-                            p7: var TSize): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentExPointA".}
-  #function GetTextExtentExPointI(DC: HDC; p2: PWORD; p3, p4: Integer; p5, p6: PINT; var p7: TSize): WINBOOL;stdcall; external 'gdi32' name 'GetTextExtentExPointI';
-proc GetTextExtentExPointW*(DC: HDC, p2: LPWSTR, p3, p4: int, p5, p6: PInteger,
-                            p7: var TSize): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "GetTextExtentExPointW".}
-proc GetTextExtentPoint*(DC: HDC, Str: cstring, Count: int, Size: var TSize): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}
-proc GetTextExtentPoint32*(DC: HDC, Str: cstring, Count: int, Size: var TSize): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}
-proc GetTextExtentPoint32A*(DC: HDC, Str: LPCSTR, Count: int, Size: var TSize): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}
-proc GetTextExtentPoint32W*(DC: HDC, Str: LPWSTR, Count: int, Size: var TSize): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32W".}
-proc GetTextExtentPointA*(DC: HDC, Str: LPCSTR, Count: int, Size: var TSize): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}
-  #function GetTextExtentPointI(DC: HDC; p2: PWORD; p3: Integer; var p4: TSize): WINBOOL;stdcall; external 'gdi32' name 'GetTextExtentPointI';
-proc GetTextExtentPointW*(DC: HDC, Str: LPWSTR, Count: int, Size: var TSize): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointW".}
-proc GetTextMetrics*(DC: HDC, TM: var TTextMetric): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetTextMetricsA".}
-  #function GetTextMetricsA(DC: HDC; var TM: TTextMetricA): WINBOOL; stdcall; external 'gdi32' name 'GetTextMetricsA';
-  #function GetTextMetricsW(DC: HDC; var TM: TTextMetricW): WINBOOL; stdcall; external 'gdi32' name 'GetTextMetricsW';
-proc GetThreadContext*(hThread: THandle, lpContext: var TContext): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetThreadContext".}
-proc GetThreadPriorityBoost*(hThread: THandle, DisablePriorityBoost: var WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetThreadPriorityBoost".}
-proc GetThreadSelectorEntry*(hThread: THandle, dwSelector: DWORD,
-                             lpSelectorEntry: var TLDTEntry): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetThreadSelectorEntry".}
-proc GetThreadTimes*(hThread: THandle, lpCreationTime, lpExitTime, lpKernelTime,
-                                       lpUserTime: var TFileTime): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetThreadTimes".}
-proc GetTimeZoneInformation*(lpTimeZoneInformation: var TTimeZoneInformation): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "GetTimeZoneInformation".}
-  #function GetTitleBarInfo(hwnd: HWND; var pti: TTitleBarInfo): WINBOOL;stdcall; external 'user32' name 'GetTitleBarInfo';
-  #function GetTokenInformation(TokenHandle: THandle; TokenInformationClass: TTokenInformationClass; TokenInformation: Pointer; TokenInformationLength: DWORD; var ReturnLength: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetTokenInformation';
-proc GetUpdateRect*(hWnd: HWND, lpRect: var TRect, bErase: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUpdateRect".}
-proc GetUserName*(lpBuffer: cstring, nSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetUserNameA".}
-proc GetUserNameA*(lpBuffer: LPCSTR, nSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetUserNameA".}
-proc GetUserNameW*(lpBuffer: LPWSTR, nSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "GetUserNameW".}
-proc GetUserObjectInformation*(hObj: THandle, nIndex: int, pvInfo: Pointer,
-                               nLength: DWORD, lpnLengthNeeded: var DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}
-proc GetUserObjectInformationA*(hObj: THandle, nIndex: int, pvInfo: Pointer,
-                                nLength: DWORD, lpnLengthNeeded: var DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}
-proc GetUserObjectInformationW*(hObj: THandle, nIndex: int, pvInfo: Pointer,
-                                nLength: DWORD, lpnLengthNeeded: var DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}
-proc GetUserObjectSecurity*(hObj: THandle, pSIRequested: var DWORD,
-                            pSID: PSecurityDescriptor, nLength: DWORD,
-                            lpnLengthNeeded: var DWORD): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetUserObjectSecurity".}
-proc GetVersionEx*(lpVersionInformation: var TOSVersionInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVersionExA".}
-proc GetVersionExA*(lpVersionInformation: var TOSVersionInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVersionExA".}
-proc GetVersionExW*(lpVersionInformation: var TOSVersionInfoW): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "GetVersionExW".}
-proc GetViewportExtEx*(DC: HDC, Size: var TSize): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetViewportExtEx".}
-proc GetViewportOrgEx*(DC: HDC, Point: var TPoint): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetViewportOrgEx".}
-proc GetVolumeInformation*(lpRootPathName: cstring, lpVolumeNameBuffer: cstring,
-                           nVolumeNameSize: DWORD, lpVolumeSerialNumber: PDWORD,
-    lpMaximumComponentLength, lpFileSystemFlags: var DWORD,
-                           lpFileSystemNameBuffer: cstring,
-                           nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVolumeInformationA".}
-proc GetVolumeInformationA*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPCSTR,
-                            nVolumeNameSize: DWORD,
-                            lpVolumeSerialNumber: PDWORD,
-    lpMaximumComponentLength, lpFileSystemFlags: var DWORD,
-                            lpFileSystemNameBuffer: LPCSTR,
-                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVolumeInformationA".}
-proc GetVolumeInformationW*(lpRootPathName: LPWSTR, lpVolumeNameBuffer: LPWSTR,
-                            nVolumeNameSize: DWORD,
-                            lpVolumeSerialNumber: PDWORD,
-    lpMaximumComponentLength, lpFileSystemFlags: var DWORD,
-                            lpFileSystemNameBuffer: LPWSTR,
-                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "GetVolumeInformationW".}
-proc GetWindowExtEx*(DC: HDC, Size: var TSize): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetWindowExtEx".}
-  #function GetWindowInfo(hwnd: HWND; var pwi: TWindowInfo): WINBOOL;stdcall; external 'user32' name 'GetWindowInfo';
-proc GetWindowOrgEx*(DC: HDC, Point: var TPoint): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetWindowOrgEx".}
-proc GetWindowRect*(hWnd: HWND, lpRect: var TRect): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "GetWindowRect".}
-proc GetWorldTransform*(DC: HDC, p2: var TXForm): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "GetWorldTransform".}
-  #function GradientFill(DC: HDC; var p2: TTriVertex; p3: ULONG; p4: Pointer; p5, p6: ULONG): WINBOOL;stdcall; external 'gdi32' name 'GradientFill';
-proc GlobalMemoryStatus*(Buffer: var MEMORYSTATUS){.stdcall, dynlib: "kernel32",
-    importc: "GlobalMemoryStatus".}
-proc HeapWalk*(hHeap: THandle, lpEntry: var TProcessHeapEntry): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "HeapWalk".}
-proc ImageList_GetDragImage*(ppt: var POINT, pptHotspot: var POINT): HIMAGELIST{.
-    stdcall, dynlib: "comctl32", importc: "ImageList_GetDragImage".}
-proc InflateRect*(lprc: var TRect, dx, dy: int): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "InflateRect".}
-proc InitializeAcl*(pAcl: var TACL, nAclLength, dwAclRevision: DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "InitializeAcl".}
-proc InitializeCriticalSectionAndSpinCount*(
-    lpCriticalSection: var TRTLCriticalSection, dwSpinCount: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32",
-    importc: "InitializeCriticalSectionAndSpinCount".}
-proc InitializeSid*(Sid: Pointer, pIdentifierAuthority: TSIDIdentifierAuthority,
-                    nSubAuthorityCount: int8): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "InitializeSid".}
-proc InsertMenuItem*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfo): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "InsertMenuItemA".}
-proc InsertMenuItemA*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfoA): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "InsertMenuItemA".}
-  #function InsertMenuItemW(p1: HMENU; p2: UINT; p3: WINBOOL; const p4: TMenuItemInfoW): WINBOOL; stdcall; external 'user32' name 'InsertMenuItemW';
-proc IntersectRect*(lprcDst: var TRect, lprcSrc1, lprcSrc2: TRect): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "IntersectRect".}
-  #function InvertRect(hDC: HDC; const lprc: TRect): WINBOOL; stdcall; external 'user32' name 'InvertRect';
-proc IsDialogMessage*(hDlg: HWND, lpMsg: var TMsg): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "IsDialogMessageA".}
-proc IsDialogMessageA*(hDlg: HWND, lpMsg: var TMsg): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "IsDialogMessageA".}
-proc IsDialogMessageW*(hDlg: HWND, lpMsg: var TMsg): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "IsDialogMessageW".}
-  #function IsRectEmpty(const lprc: TRect): WINBOOL; stdcall; external 'user32' name 'IsRectEmpty';
-proc IsValidAcl*(pAcl: TACL): WINBOOL{.stdcall, dynlib: "advapi32",
-                                       importc: "IsValidAcl".}
-proc LocalFileTimeToFileTime*(lpLocalFileTime: TFileTime,
-                              lpFileTime: var TFileTime): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "LocalFileTimeToFileTime".}
-proc LockFileEx*(hFile: THandle, dwFlags, dwReserved: DWORD,
-                 nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD,
-                 lpOverlapped: TOverlapped): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "LockFileEx".}
-proc LogonUser*(lpszUsername, lpszDomain, lpszPassword: cstring,
-                dwLogonType, dwLogonProvider: DWORD, phToken: var THandle): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LogonUserA".}
-proc LogonUserA*(lpszUsername, lpszDomain, lpszPassword: LPCSTR,
-                 dwLogonType, dwLogonProvider: DWORD, phToken: var THandle): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LogonUserA".}
-proc LogonUserW*(lpszUsername, lpszDomain, lpszPassword: LPWSTR,
-                 dwLogonType, dwLogonProvider: DWORD, phToken: var THandle): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LogonUserW".}
-proc LookupAccountName*(lpSystemName, lpAccountName: cstring, Sid: PSID,
-                        cbSid: var DWORD, ReferencedDomainName: cstring,
-                        cbReferencedDomainName: var DWORD,
-                        peUse: var SID_NAME_USE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupAccountNameA".}
-proc LookupAccountNameA*(lpSystemName, lpAccountName: LPCSTR, Sid: PSID,
-                         cbSid: var DWORD, ReferencedDomainName: LPCSTR,
-                         cbReferencedDomainName: var DWORD,
-                         peUse: var SID_NAME_USE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupAccountNameA".}
-proc LookupAccountNameW*(lpSystemName, lpAccountName: LPWSTR, Sid: PSID,
-                         cbSid: var DWORD, ReferencedDomainName: LPWSTR,
-                         cbReferencedDomainName: var DWORD,
-                         peUse: var SID_NAME_USE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupAccountNameW".}
-proc LookupAccountSid*(lpSystemName: cstring, Sid: PSID, Name: cstring,
-                       cbName: var DWORD, ReferencedDomainName: cstring,
-                       cbReferencedDomainName: var DWORD,
-                       peUse: var SID_NAME_USE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupAccountSidA".}
-proc LookupAccountSidA*(lpSystemName: LPCSTR, Sid: PSID, Name: LPCSTR,
-                        cbName: var DWORD, ReferencedDomainName: LPCSTR,
-                        cbReferencedDomainName: var DWORD,
-                        peUse: var SID_NAME_USE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupAccountSidA".}
-proc LookupAccountSidW*(lpSystemName: LPWSTR, Sid: PSID, Name: LPWSTR,
-                        cbName: var DWORD, ReferencedDomainName: LPWSTR,
-                        cbReferencedDomainName: var DWORD,
-                        peUse: var SID_NAME_USE): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupAccountSidW".}
-proc LookupPrivilegeDisplayName*(lpSystemName, lpName: LPCSTR,
-                                 lpDisplayName: cstring,
-                                 cbDisplayName, lpLanguageId: var DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}
-proc LookupPrivilegeDisplayNameA*(lpSystemName, lpName: LPCSTR,
-                                  lpDisplayName: LPCSTR,
-                                  cbDisplayName, lpLanguageId: var DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}
-proc LookupPrivilegeDisplayNameW*(lpSystemName, lpName: LPCSTR,
-                                  lpDisplayName: LPWSTR,
-                                  cbDisplayName, lpLanguageId: var DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}
-proc LookupPrivilegeName*(lpSystemName: cstring, lpLuid: var TLargeInteger,
-                          lpName: cstring, cbName: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeNameA".}
-proc LookupPrivilegeNameA*(lpSystemName: LPCSTR, lpLuid: var TLargeInteger,
-                           lpName: LPCSTR, cbName: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeNameA".}
-proc LookupPrivilegeNameW*(lpSystemName: LPWSTR, lpLuid: var TLargeInteger,
-                           lpName: LPWSTR, cbName: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeNameW".}
-proc LookupPrivilegeValue*(lpSystemName, lpName: cstring,
-                           lpLuid: var TLargeInteger): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeValueA".}
-proc LookupPrivilegeValueA*(lpSystemName, lpName: LPCSTR,
-                            lpLuid: var TLargeInteger): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeValueA".}
-proc LookupPrivilegeValueW*(lpSystemName, lpName: LPWSTR,
-                            lpLuid: var TLargeInteger): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "LookupPrivilegeValueW".}
-proc LPtoDP*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "LPtoDP".}
-proc MakeAbsoluteSD*(pSelfRelativeSecurityDescriptor: PSecurityDescriptor,
-                     pAbsoluteSecurityDescriptor: PSecurityDescriptor,
-                     lpdwAbsoluteSecurityDescriptorSi: var DWORD,
-                     pDacl: var TACL, lpdwDaclSize: var DWORD, pSacl: var TACL,
-                     lpdwSaclSize: var DWORD, pOwner: PSID,
-                     lpdwOwnerSize: var DWORD, pPrimaryGroup: Pointer,
-                     lpdwPrimaryGroupSize: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "MakeAbsoluteSD".}
-proc MakeSelfRelativeSD*(pAbsoluteSecurityDescriptor: PSecurityDescriptor,
-                         pSelfRelativeSecurityDescriptor: PSecurityDescriptor,
-                         lpdwBufferLength: var DWORD): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "MakeSelfRelativeSD".}
-proc MapDialogRect*(hDlg: HWND, lpRect: var TRect): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "MapDialogRect".}
-proc MapWindowPoints*(hWndFrom, hWndTo: HWND, lpPoints: pointer, cPoints: UINT): int{.
-    stdcall, dynlib: "user32", importc: "MapWindowPoints".}
-proc MessageBoxIndirect*(MsgBoxParams: TMsgBoxParams): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "MessageBoxIndirectA".}
-proc MessageBoxIndirectA*(MsgBoxParams: TMsgBoxParamsA): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "MessageBoxIndirectA".}
-  #function MessageBoxIndirectW(const MsgBoxParams: TMsgBoxParamsW): WINBOOL; stdcall; external 'user32' name 'MessageBoxIndirectW';
-  #function ModifyWorldTransform(DC: HDC; const p2: TXForm; p3: DWORD): WINBOOL; stdcall; external 'gdi32' name 'ModifyWorldTransform';
-proc MsgWaitForMultipleObjects*(nCount: DWORD, pHandles: pointer,
-                                fWaitAll: WINBOOL,
-                                dwMilliseconds, dwWakeMask: DWORD): DWORD{.
-    stdcall, dynlib: "user32", importc: "MsgWaitForMultipleObjects".}
-proc MsgWaitForMultipleObjectsEx*(nCount: DWORD, pHandles: pointer,
-                                  dwMilliseconds, dwWakeMask, dwFlags: DWORD): DWORD{.
-    stdcall, dynlib: "user32", importc: "MsgWaitForMultipleObjectsEx".}
-  # function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; const lpMultiByteStr: LPCSTR; cchMultiByte: Integer; lLPWSTRStr: LPWSTR; cchWideChar: Integer): Integer; stdcall; external 'kernel32' name 'MultiByteToWideChar';
-proc ObjectOpenAuditAlarm*(SubsystemName: cstring, HandleId: Pointer,
-                           ObjectTypeName: cstring, ObjectName: cstring,
-                           pSecurityDescriptor: PSecurityDescriptor,
-                           ClientToken: THandle,
-                           DesiredAccess, GrantedAccess: DWORD,
-                           Privileges: var TPrivilegeSet,
-                           ObjectCreation, AccessGranted: WINBOOL,
-                           GenerateOnClose: var WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}
-proc ObjectOpenAuditAlarmA*(SubsystemName: LPCSTR, HandleId: Pointer,
-                            ObjectTypeName: LPCSTR, ObjectName: LPCSTR,
-                            pSecurityDescriptor: PSecurityDescriptor,
-                            ClientToken: THandle,
-                            DesiredAccess, GrantedAccess: DWORD,
-                            Privileges: var TPrivilegeSet,
-                            ObjectCreation, AccessGranted: WINBOOL,
-                            GenerateOnClose: var WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}
-proc ObjectOpenAuditAlarmW*(SubsystemName: LPWSTR, HandleId: Pointer,
-                            ObjectTypeName: LPWSTR, ObjectName: LPWSTR,
-                            pSecurityDescriptor: PSecurityDescriptor,
-                            ClientToken: THandle,
-                            DesiredAccess, GrantedAccess: DWORD,
-                            Privileges: var TPrivilegeSet,
-                            ObjectCreation, AccessGranted: WINBOOL,
-                            GenerateOnClose: var WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}
-proc ObjectPrivilegeAuditAlarm*(SubsystemName: cstring, HandleId: Pointer,
-                                ClientToken: THandle, DesiredAccess: DWORD,
-                                Privileges: var TPrivilegeSet,
-                                AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}
-proc ObjectPrivilegeAuditAlarmA*(SubsystemName: LPCSTR, HandleId: Pointer,
-                                 ClientToken: THandle, DesiredAccess: DWORD,
-                                 Privileges: var TPrivilegeSet,
-                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}
-proc ObjectPrivilegeAuditAlarmW*(SubsystemName: LPWSTR, HandleId: Pointer,
-                                 ClientToken: THandle, DesiredAccess: DWORD,
-                                 Privileges: var TPrivilegeSet,
-                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}
-proc OffsetRect*(lprc: var TRect, dx, dy: int): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "OffsetRect".}
-proc OffsetViewportOrgEx*(DC: HDC, X, Y: int, Points: pointer): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "OffsetViewportOrgEx".}
-proc OffsetWindowOrgEx*(DC: HDC, X, Y: int, Points: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "OffsetWindowOrgEx".}
-proc OpenFile*(lpFileName: LPCSTR, lpReOpenBuff: var TOFStruct, uStyle: UINT): HFILE{.
-    stdcall, dynlib: "kernel32", importc: "OpenFile".}
-proc OpenProcessToken*(ProcessHandle: THandle, DesiredAccess: DWORD,
-                       TokenHandle: var THandle): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "OpenProcessToken".}
-proc OpenThreadToken*(ThreadHandle: THandle, DesiredAccess: DWORD,
-                      OpenAsSelf: WINBOOL, TokenHandle: var THandle): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "OpenThreadToken".}
-proc PeekConsoleInput*(hConsoleInput: THandle, lpBuffer: var TInputRecord,
-                       nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}
-proc PeekConsoleInputA*(hConsoleInput: THandle, lpBuffer: var TInputRecord,
-                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}
-proc PeekConsoleInputW*(hConsoleInput: THandle, lpBuffer: var TInputRecord,
-                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}
-proc PeekMessage*(lpMsg: var TMsg, hWnd: HWND,
-                  wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "PeekMessageA".}
-proc PeekMessageA*(lpMsg: var TMsg, hWnd: HWND,
-                   wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "PeekMessageA".}
-proc PeekMessageW*(lpMsg: var TMsg, hWnd: HWND,
-                   wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "PeekMessageW".}
-  #function PlayEnhMetaFile(DC: HDC; p2: HENHMETAFILE; const p3: TRect): WINBOOL; stdcall; external 'gdi32' name 'PlayEnhMetaFile';
-proc PlayEnhMetaFileRecord*(DC: HDC, p2: var THandleTable, p3: TEnhMetaRecord,
-                            p4: UINT): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "PlayEnhMetaFileRecord".}
-proc PlayMetaFileRecord*(DC: HDC, p2: THandleTable, p3: TMetaRecord, p4: UINT): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PlayMetaFileRecord".}
-proc PlgBlt*(DC: HDC, PointsArray: pointer, p3: HDC, p4, p5, p6, p7: int,
-             p8: HBITMAP, p9, p10: int): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "PlgBlt".}
-proc PolyBezier*(DC: HDC, Points: pointer, Count: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolyBezier".}
-proc PolyBezierTo*(DC: HDC, Points: pointer, Count: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolyBezierTo".}
-proc PolyDraw*(DC: HDC, Points, Types: pointer, cCount: int): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolyDraw".}
-proc Polygon*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "Polygon".}
-proc Polyline*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "Polyline".}
-proc PolyLineTo*(DC: HDC, Points: pointer, Count: DWORD): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "PolylineTo".}
-proc PolyPolygon*(DC: HDC, Points: pointer, nPoints: pointer, p4: int): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyPolygon".}
-proc PolyPolyline*(DC: HDC, PointStructs: pointer, Points: pointer, p4: DWORD): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyPolyline".}
-proc PolyTextOut*(DC: HDC, PolyTextArray: pointer, Strings: int): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}
-proc PolyTextOutA*(DC: HDC, PolyTextArray: pointer, Strings: int): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}
-proc PolyTextOutW*(DC: HDC, PolyTextArray: pointer, Strings: int): WINBOOL{.
-    stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}
-proc PrivilegeCheck*(ClientToken: THandle, RequiredPrivileges: TPrivilegeSet,
-                     pfResult: var WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "PrivilegeCheck".}
-proc PrivilegedServiceAuditAlarm*(SubsystemName, ServiceName: cstring,
-                                  ClientToken: THandle,
-                                  Privileges: var TPrivilegeSet,
-                                  AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}
-proc PrivilegedServiceAuditAlarmA*(SubsystemName, ServiceName: LPCSTR,
-                                   ClientToken: THandle,
-                                   Privileges: var TPrivilegeSet,
-                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}
-proc PrivilegedServiceAuditAlarmW*(SubsystemName, ServiceName: LPWSTR,
-                                   ClientToken: THandle,
-                                   Privileges: var TPrivilegeSet,
-                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,
-    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}
-  #function PtInRect(const lprc: TRect; pt: TPoint): WINBOOL; stdcall; external 'user32' name 'PtInRect';
-proc QueryPerformanceCounter*(lpPerformanceCount: var TLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "QueryPerformanceCounter".}
-proc QueryPerformanceFrequency*(lpFrequency: var TLargeInteger): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "QueryPerformanceFrequency".}
-  #function QueryRecoveryAgents(p1: PChar; var p2: Pointer; var p3: TRecoveryAgentInformation): DWORD;stdcall; external 'kernel32' name 'QueryRecoveryAgentsA';
-  #function QueryRecoveryAgentsA(p1: LPCSTR; var p2: Pointer; var p3: TRecoveryAgentInformationA): DWORD;stdcall; external 'kernel32' name 'QueryRecoveryAgentsA';
-  #function QueryRecoveryAgentsW(p1: LPWSTR; var p2: Pointer; var p3: TRecoveryAgentInformationW): DWORD;stdcall; external 'kernel32' name 'QueryRecoveryAgentsW';
-proc RaiseException*(dwExceptionCode: DWORD, dwExceptionFlags: DWORD,
-                     nNumberOfArguments: DWORD, lpArguments: var DWORD){.
-    stdcall, dynlib: "kernel32", importc: "RaiseException".}
-proc UnhandledExceptionFilter*(ExceptionInfo: var emptyrecord): LONG{.stdcall,
-    dynlib: "kernel32", importc: "UnhandledExceptionFilter".}
-proc ReadConsole*(hConsoleInput: THandle, lpBuffer: Pointer,
-                  nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: var DWORD,
-                  lpReserved: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ReadConsoleA".}
-proc ReadConsoleA*(hConsoleInput: THandle, lpBuffer: Pointer,
-                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: var DWORD,
-                   lpReserved: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ReadConsoleA".}
-proc ReadConsoleInput*(hConsoleInput: THandle, lpBuffer: var TInputRecord,
-                       nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}
-proc ReadConsoleInputA*(hConsoleInput: THandle, lpBuffer: var TInputRecord,
-                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}
-proc ReadConsoleInputW*(hConsoleInput: THandle, lpBuffer: var TInputRecord,
-                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}
-proc ReadConsoleOutput*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                        dwBufferSize, dwBufferCoord: TCoord,
-                        lpReadRegion: var TSmallRect): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadConsoleOutputA".}
-proc ReadConsoleOutputA*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                         dwBufferSize, dwBufferCoord: TCoord,
-                         lpReadRegion: var TSmallRect): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadConsoleOutputA".}
-proc ReadConsoleOutputAttribute*(hConsoleOutput: THandle, lpAttribute: Pointer,
-                                 nLength: DWORD, dwReadCoord: TCoord,
-                                 lpNumberOfAttrsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputAttribute".}
-proc ReadConsoleOutputCharacter*(hConsoleOutput: THandle, lpCharacter: LPCSTR,
-                                 nLength: DWORD, dwReadCoord: TCoord,
-                                 lpNumberOfCharsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}
-proc ReadConsoleOutputCharacterA*(hConsoleOutput: THandle, lpCharacter: LPCSTR,
-                                  nLength: DWORD, dwReadCoord: TCoord,
-                                  lpNumberOfCharsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}
-proc ReadConsoleOutputCharacterW*(hConsoleOutput: THandle, lpCharacter: LPCSTR,
-                                  nLength: DWORD, dwReadCoord: TCoord,
-                                  lpNumberOfCharsRead: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}
-proc ReadConsoleOutputW*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                         dwBufferSize, dwBufferCoord: TCoord,
-                         lpReadRegion: var TSmallRect): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadConsoleOutputW".}
-proc ReadConsoleW*(hConsoleInput: THandle, lpBuffer: Pointer,
-                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: var DWORD,
-                   lpReserved: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",
-    importc: "ReadConsoleW".}
-proc ReadEventLog*(hEventLog: THandle, dwReadFlags, dwRecordOffset: DWORD,
-                   lpBuffer: Pointer, nNumberOfBytesToRead: DWORD,
-                   pnBytesRead, pnMinNumberOfBytesNeeded: var DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ReadEventLogA".}
-proc ReadEventLogA*(hEventLog: THandle, dwReadFlags, dwRecordOffset: DWORD,
-                    lpBuffer: Pointer, nNumberOfBytesToRead: DWORD,
-                    pnBytesRead, pnMinNumberOfBytesNeeded: var DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ReadEventLogA".}
-proc ReadEventLogW*(hEventLog: THandle, dwReadFlags, dwRecordOffset: DWORD,
-                    lpBuffer: Pointer, nNumberOfBytesToRead: DWORD,
-                    pnBytesRead, pnMinNumberOfBytesNeeded: var DWORD): WINBOOL{.
-    stdcall, dynlib: "advapi32", importc: "ReadEventLogW".}
-proc ReadFile*(hFile: THandle, Buffer: pointer, nNumberOfBytesToRead: DWORD,
-               lpNumberOfBytesRead: var DWORD, lpOverlapped: POverlapped): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "ReadFile".}
-proc ReadProcessMemory*(hProcess: THandle, lpBaseAddress: Pointer,
-                        lpBuffer: Pointer, nSize: DWORD,
-                        lpNumberOfBytesRead: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ReadProcessMemory".}
-  #function RectInRegion(RGN: HRGN; const p2: TRect): WINBOOL; stdcall; external 'gdi32' name 'RectInRegion';
-  #function RectVisible(DC: HDC; const Rect: TRect): WINBOOL; stdcall; external 'gdi32' name 'RectVisible';
-proc RegConnectRegistry*(lpMachineName: cstring, hKey: HKEY, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}
-proc RegConnectRegistryA*(lpMachineName: LPCSTR, hKey: HKEY, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}
-proc RegConnectRegistryW*(lpMachineName: LPWSTR, hKey: HKEY, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}
-proc RegCreateKey*(hKey: HKEY, lpSubKey: cstring, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}
-proc RegCreateKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}
-proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: cstring, Reserved: DWORD,
-                     lpClass: cstring, dwOptions: DWORD, samDesired: REGSAM,
-                     lpSecurityAttributes: PSecurityAttributes,
-                     phkResult: var HKEY, lpdwDisposition: PDWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
-proc RegCreateKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD,
-                      lpClass: LPCSTR, dwOptions: DWORD, samDesired: REGSAM,
-                      lpSecurityAttributes: PSecurityAttributes,
-                      phkResult: var HKEY, lpdwDisposition: PDWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}
-proc RegCreateKeyExW*(hKey: HKEY, lpSubKey: LPWSTR, Reserved: DWORD,
-                      lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM,
-                      lpSecurityAttributes: PSecurityAttributes,
-                      phkResult: var HKEY, lpdwDisposition: PDWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}
-proc RegCreateKeyW*(hKey: HKEY, lpSubKey: LPWSTR, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}
-proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: cstring,
-                   lpcbName: var DWORD, lpReserved: Pointer, lpClass: cstring,
-                   lpcbClass: PDWORD, lpftLastWriteTime: PFileTime): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}
-proc RegEnumKeyExA*(hKey: HKEY, dwIndex: DWORD, lpName: LPCSTR,
-                    lpcbName: var DWORD, lpReserved: Pointer, lpClass: LPCSTR,
-                    lpcbClass: PDWORD, lpftLastWriteTime: PFileTime): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}
-proc RegEnumKeyExW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR,
-                    lpcbName: var DWORD, lpReserved: Pointer, lpClass: LPWSTR,
-                    lpcbClass: PDWORD, lpftLastWriteTime: PFileTime): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}
-proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: cstring,
-                   lpcbValueName: var DWORD, lpReserved: Pointer,
-                   lpType: PDWORD, lpData: PByte, lpcbData: PDWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}
-proc RegEnumValueA*(hKey: HKEY, dwIndex: DWORD, lpValueName: cstring,
-                    lpcbValueName: var DWORD, lpReserved: Pointer,
-                    lpType: PDWORD, lpData: PByte, lpcbData: PDWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}
-proc RegEnumValueW*(hKey: HKEY, dwIndex: DWORD, lpValueName: cstring,
-                    lpcbValueName: var DWORD, lpReserved: Pointer,
-                    lpType: PDWORD, lpData: PByte, lpcbData: PDWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}
-proc RegGetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION,
-                        pSecurityDescriptor: PSecurityDescriptor,
-                        lpcbSecurityDescriptor: var DWORD): int32{.stdcall,
-    dynlib: "advapi32", importc: "RegGetKeySecurity".}
-proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,
-                    dwType: DWORD, lpData: pointer, cbData: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
-proc RegSetValueExA*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,
-                     dwType: DWORD, lpData: pointer, cbData: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}
-proc RegSetValueExW*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD,
-                     dwType: DWORD, lpData: pointer, cbData: DWORD): LONG{.
-    stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}
-proc RegisterClass*(lpWndClass: TWndClass): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassA".}
-proc RegisterClassA*(lpWndClass: TWndClassA): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassA".}
-proc RegisterClassEx*(WndClass: TWndClassEx): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassExA".}
-proc RegisterClassExA*(WndClass: TWndClassExA): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassExA".}
-proc RegisterClassExW*(WndClass: TWndClassExW): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassExW".}
-proc RegisterClassW*(lpWndClass: TWndClassW): ATOM{.stdcall, dynlib: "user32",
-    importc: "RegisterClassW".}
-proc RegOpenKey*(hKey: HKEY, lpSubKey: cstring, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}
-proc RegOpenKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}
-proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: cstring, ulOptions: DWORD,
-                   samDesired: REGSAM, phkResult: var HKEY): int32{.stdcall,
-    dynlib: "advapi32", importc: "RegOpenKeyExA".}
-proc RegOpenKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD,
-                    samDesired: REGSAM, phkResult: var HKEY): int32{.stdcall,
-    dynlib: "advapi32", importc: "RegOpenKeyExA".}
-proc RegOpenKeyExW*(hKey: HKEY, lpSubKey: LPWSTR, ulOptions: DWORD,
-                    samDesired: REGSAM, phkResult: var HKEY): int32{.stdcall,
-    dynlib: "advapi32", importc: "RegOpenKeyExW".}
-proc RegOpenKeyW*(hKey: HKEY, lpSubKey: LPWSTR, phkResult: var HKEY): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}
-proc RegQueryMultipleValues*(hKey: HKEY, ValList: pointer, NumVals: DWORD,
-                             lpValueBuf: cstring, ldwTotsize: var DWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}
-proc RegQueryMultipleValuesA*(hKey: HKEY, ValList: pointer, NumVals: DWORD,
-                              lpValueBuf: LPCSTR, ldwTotsize: var DWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}
-proc RegQueryMultipleValuesW*(hKey: HKEY, ValList: pointer, NumVals: DWORD,
-                              lpValueBuf: LPWSTR, ldwTotsize: var DWORD): int32{.
-    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}
-proc RegQueryValue*(hKey: HKEY, lpSubKey: cstring, lpValue: cstring,
-                    lpcbValue: var int32): int32{.stdcall, dynlib: "advapi32",
-    importc: "RegQueryValueA".}
-proc RegQueryValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpValue: LPCSTR,
-                     lpcbValue: var int32): int32{.stdcall, dynlib: "advapi32",
-    importc: "RegQueryValueA".}
-proc RegQueryValueW*(hKey: HKEY, lpSubKey: LPWSTR, lpValue: LPWSTR,
-                     lpcbValue: var int32): int32{.stdcall, dynlib: "advapi32",
-    importc: "RegQueryValueW".}
-proc ResetDC*(DC: HDC, p2: TDeviceMode): HDC{.stdcall, dynlib: "gdi32",
-    importc: "ResetDCA".}
-proc ResetDCA*(DC: HDC, p2: TDeviceModeA): HDC{.stdcall, dynlib: "gdi32",
-    importc: "ResetDCA".}
-  #function ResetDCW(DC: HDC; const p2: TDeviceModeW): HDC; stdcall; external 'gdi32' name 'ResetDCW';
-proc ScreenToClient*(hWnd: HWND, lpPoint: var TPoint): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "ScreenToClient".}
-proc ScrollConsoleScreenBuffer*(hConsoleOutput: THandle,
-                                lpScrollRectangle: TSmallRect,
-                                lpClipRectangle: TSmallRect,
-                                dwDestinationOrigin: TCoord,
-                                lpFill: var TCharInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}
-proc ScrollConsoleScreenBufferA*(hConsoleOutput: THandle,
-                                 lpScrollRectangle: TSmallRect,
-                                 lpClipRectangle: TSmallRect,
-                                 dwDestinationOrigin: TCoord,
-                                 lpFill: var TCharInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}
-proc ScrollConsoleScreenBufferW*(hConsoleOutput: THandle,
-                                 lpScrollRectangle: TSmallRect,
-                                 lpClipRectangle: TSmallRect,
-                                 dwDestinationOrigin: TCoord,
-                                 lpFill: var TCharInfo): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}
-proc ScrollWindow*(hWnd: HWND, XAmount: int32, YAmount: int32, lpRect: lpRECT,
-                   lpClipRect: lpRECT): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "ScrollWindow".}
-proc ScrollWindowEx*(hWnd: HWND, dx: int32, dy: int32, prcScroll: lpRECT,
-                     prcClip: lpRECT, hrgnUpdate: HRGN, prcUpdate: LPRECT,
-                     flags: UINT): int32{.stdcall, dynlib: "user32",
-    importc: "ScrollWindowEx".}
-  #function ScrollDC(DC: HDC; DX, DY: Integer; var Scroll, Clip: TRect; Rgn: HRGN; Update: PRect): WINBOOL; stdcall; external 'user32' name 'ScrollDC';
-  #function SearchPath(lpPath, lpFileName, lpExtension: PChar; nBufferLength: DWORD; lpBuffer: PChar; var lpFilePart: PChar): DWORD;stdcall; external 'kernel32' name 'SearchPathA';
-  #function SearchPathA(lpPath, lpFileName, lpExtension: LPCSTR; nBufferLength: DWORD; lpBuffer: LPCSTR; var lpFilePart: LPCSTR): DWORD; stdcall; external 'kernel32' name 'SearchPathA';
-  #function SearchPathW(lpPath, lpFileName, lpExtension: LPWSTR; nBufferLength: DWORD; lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall; external 'kernel32' name 'SearchPathW';
-  #function SendInput(cInputs: UINT; var pInputs: TInput; cbSize: Integer): UINT;stdcall; external 'user32' name 'SendInput';
-proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,
-                         fuFlags, uTimeout: UINT, lpdwResult: var DWORD): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}
-proc SendMessageTimeoutA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,
-                          fuFlags, uTimeout: UINT, lpdwResult: var DWORD): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}
-proc SendMessageTimeoutW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,
-                          fuFlags, uTimeout: UINT, lpdwResult: var DWORD): LRESULT{.
-    stdcall, dynlib: "user32", importc: "SendMessageTimeoutW".}
-  #function SetAclInformation(var pAcl: TACL; pAclInformation: Pointer; nAclInformationLength: DWORD; dwAclInformationClass: TAclInformationClass): WINBOOL; stdcall; external 'advapi32' name 'SetAclInformation';
-  #function SetColorAdjustment(DC: HDC; const p2: TColorAdjustment): WINBOOL; stdcall; external 'gdi32' name 'SetColorAdjustment';
-proc SetCommConfig*(hCommDev: THandle, lpCC: TCommConfig, dwSize: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetCommConfig".}
-proc SetCommState*(hFile: THandle, lpDCB: TDCB): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetCommState".}
-proc SetCommTimeouts*(hFile: THandle, lpCommTimeouts: TCommTimeouts): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetCommTimeouts".}
-proc SetConsoleCursorInfo*(hConsoleOutput: THandle,
-                           lpConsoleCursorInfo: TConsoleCursorInfo): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetConsoleCursorInfo".}
-  #function SetConsoleWindowInfo(hConsoleOutput: THandle; bAbsolute: WINBOOL; const lpConsoleWindow: TSmallRect): WINBOOL; stdcall; external 'kernel32' name 'SetConsoleWindowInfo';
-proc SetCriticalSectionSpinCount*(lpCriticalSection: var TRTLCriticalSection,
-                                  dwSpinCount: DWORD): DWORD{.stdcall,
-    dynlib: "kernel32", importc: "SetCriticalSectionSpinCount".}
-proc SetDeviceGammaRamp*(DC: HDC, Ramp: pointer): WINBOOL{.stdcall,
-    dynlib: "gdi32", importc: "SetDeviceGammaRamp".}
-proc SetDIBColorTable*(DC: HDC, p2, p3: UINT, RGBQuadSTructs: pointer): UINT{.
-    stdcall, dynlib: "gdi32", importc: "SetDIBColorTable".}
-proc SetDIBits*(DC: HDC, Bitmap: HBITMAP, StartScan, NumScans: UINT,
-                Bits: Pointer, BitsInfo: var TBitmapInfo, Usage: UINT): int{.
-    stdcall, dynlib: "gdi32", importc: "SetDIBits".}
-  #function SetDIBitsToDevice(DC: HDC; DestX, DestY: Integer; Width, Height: DWORD; SrcX, SrcY: Integer; nStartScan, NumScans: UINT; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT): Integer; stdcall; external 'gdi32' name 'SetDIBitsToDevice';
-proc SetEnhMetaFileBits*(para1: UINT, para2: pointer): HENHMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "SetEnhMetaFileBits".}
-proc SetFileTime*(hFile: HANDLE, lpCreationTime: var FILETIME,
-                  lpLastAccessTime: var FILETIME, lpLastWriteTime: var FILETIME): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetFileTime".}
-  #function SetKeyboardState(var KeyState: TKeyboardState): WINBOOL; stdcall; external 'user32' name 'SetKeyboardState';
-  #function SetLocalTime(const lpSystemTime: TSystemTime): WINBOOL; stdcall; external 'kernel32' name 'SetLocalTime';
-  #function SetMenuInfo(hMenu: HMENU; const lpcmi: TMenuInfo): WINBOOL;stdcall; external 'user32' name 'SetMenuInfo';
-proc SetMenuItemInfo*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfo): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}
-proc SetMenuItemInfoA*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfoA): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}
-  #function SetMenuItemInfoW(p1: HMENU; p2: UINT; p3: WINBOOL; const p4: TMenuItemInfoW): WINBOOL; stdcall; external 'user32' name 'SetMenuItemInfoW';
-proc SetMetaFileBitsEx*(p1: UINT, p2: cstring): HMETAFILE{.stdcall,
-    dynlib: "gdi32", importc: "SetMetaFileBitsEx".}
-proc SetNamedPipeHandleState*(hNamedPipe: THandle, lpMode: var DWORD,
-    lpMaxCollectionCount, lpCollectDataTimeout: Pointer): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetNamedPipeHandleState".}
-proc SetPaletteEntries*(Palette: HPALETTE, StartIndex, NumEntries: UINT,
-                        PaletteEntries: pointer): UINT{.stdcall,
-    dynlib: "gdi32", importc: "SetPaletteEntries".}
-  #function SetPrivateObjectSecurity(SecurityInformation: SECURITY_INFORMATION; ModificationDescriptor: PSecurityDescriptor; var ObjectsSecurityDescriptor: PSecurityDescriptor; const GenericMapping: TGenericMapping; Token: THandle): WINBOOL;
-  #  stdcall; external 'advapi32' name 'SetPrivateObjectSecurity';
-  #function SetPrivateObjectSecurityEx(SecurityInformation: SECURITY_INFORMATION; ModificationDescriptor: PSecurityDescriptor; var ObjectsSecurityDescriptor: PSecurityDescriptor; AutoInheritFlags: ULONG;
-  #  const GenericMapping: TGenericMapping; Token: THandle): WINBOOL;stdcall; external 'advapi32' name 'SetPrivateObjectSecurityEx';
-proc SetRect*(lprc: var TRect, xLeft, yTop, xRight, yBottom: int): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetRect".}
-proc SetRectEmpty*(lprc: var TRect): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "SetRectEmpty".}
-proc SetScrollInfo*(hWnd: HWND, BarFlag: int, ScrollInfo: TScrollInfo,
-                    Redraw: WINBOOL): int{.stdcall, dynlib: "user32",
-    importc: "SetScrollInfo".}
-proc SetSysColors*(cElements: int, lpaElements: pointer, lpaRgbValues: pointer): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SetSysColors".}
-  #function SetSystemTime(const lpSystemTime: TSystemTime): WINBOOL; stdcall; external 'kernel32' name 'SetSystemTime';
-proc SetThreadContext*(hThread: THandle, lpContext: TContext): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SetThreadContext".}
-  #function SetTimeZoneInformation(const lpTimeZoneInformation: TTimeZoneInformation): WINBOOL; stdcall; external 'kernel32' name 'SetTimeZoneInformation';
-proc SetUserObjectSecurity*(hObj: THandle, pSIRequested: var DWORD,
-                            pSID: PSecurityDescriptor): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "SetUserObjectSecurity".}
-proc SetWaitableTimer*(hTimer: THandle, lpDueTime: var TLargeInteger,
-                       lPeriod: int32, pfnCompletionRoutine: TFNTimerAPCRoutine,
-                       lpArgToCompletionRoutine: Pointer, fResume: WINBOOL): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SetWaitableTimer".}
-proc SetWinMetaFileBits*(p1: UINT, p2: cstring, p3: HDC, p4: TMetaFilePict): HENHMETAFILE{.
-    stdcall, dynlib: "gdi32", importc: "SetWinMetaFileBits".}
-  #function SetWorldTransform(DC: HDC; const p2: TXForm): WINBOOL; stdcall; external 'gdi32' name 'SetWorldTransform';
-proc StartDoc*(DC: HDC, p2: TDocInfo): int{.stdcall, dynlib: "gdi32",
-    importc: "StartDocA".}
-proc StartDocA*(DC: HDC, p2: TDocInfoA): int{.stdcall, dynlib: "gdi32",
-    importc: "StartDocA".}
-  #function StartDocW(DC: HDC; const p2: TDocInfoW): Integer; stdcall; external 'gdi32' name 'StartDocW';
-  #function StretchDIBits(DC: HDC; DestX, DestY, DestWidth, DestHegiht, SrcX, SrcY, SrcWidth, SrcHeight: Integer; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT; Rop: DWORD): Integer; stdcall; external 'gdi32' name 'StretchDIBits';
-proc SubtractRect*(lprcDst: var TRect, lprcSrc1, lprcSrc2: TRect): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "SubtractRect".}
-proc SystemTimeToFileTime*(lpSystemTime: TSystemTime, lpFileTime: var TFileTime): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "SystemTimeToFileTime".}
-proc SystemTimeToTzSpecificLocalTime*(lpTimeZoneInformation: PTimeZoneInformation,
-    lpUniversalTime, lpLocalTime: var TSystemTime): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "SystemTimeToTzSpecificLocalTime".}
-proc TabbedTextOut*(hDC: HDC, X, Y: int, lpString: cstring,
-                    nCount, nTabPositions: int, lpnTabStopPositions: pointer,
-                    nTabOrigin: int): int32{.stdcall, dynlib: "user32",
-    importc: "TabbedTextOutA".}
-proc TabbedTextOutA*(hDC: HDC, X, Y: int, lpString: LPCSTR,
-                     nCount, nTabPositions: int, lpnTabStopPositions: pointer,
-                     nTabOrigin: int): int32{.stdcall, dynlib: "user32",
-    importc: "TabbedTextOutA".}
-proc TabbedTextOutW*(hDC: HDC, X, Y: int, lpString: LPWSTR,
-                     nCount, nTabPositions: int, lpnTabStopPositions: pointer,
-                     nTabOrigin: int): int32{.stdcall, dynlib: "user32",
-    importc: "TabbedTextOutW".}
-  #function ToAscii(uVirtKey, uScanCode: UINT; const KeyState: TKeyboardState; lpChar: PChar; uFlags: UINT): Integer; stdcall; external 'user32' name 'ToAscii';
-  #function ToAsciiEx(uVirtKey: UINT; uScanCode: UINT; const KeyState: TKeyboardState; lpChar: PChar; uFlags: UINT; dwhkl: HKL): Integer; stdcall; external 'user32' name 'ToAsciiEx';
-  #function ToUnicode(wVirtKey, wScanCode: UINT; const KeyState: TKeyboardState; var pwszBuff; cchBuff: Integer; wFlags: UINT): Integer; stdcall; external 'user32' name 'ToUnicode';
-  # Careful, NT and higher only.
-proc TrackMouseEvent*(EventTrack: var TTrackMouseEvent): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "TrackMouseEvent".}
-proc TrackMouseEvent*(lpEventTrack: PTrackMouseEvent): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "TrackMouseEvent".}
-proc TrackPopupMenu*(hMenu: HMENU, uFlags: UINT, x: int32, y: int32,
-                     nReserved: int32, hWnd: HWND, prcRect: PRect): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "TrackPopupMenu".}
-proc TransactNamedPipe*(hNamedPipe: THandle, lpInBuffer: Pointer,
-                        nInBufferSize: DWORD, lpOutBuffer: Pointer,
-                        nOutBufferSize: DWORD, lpBytesRead: var DWORD,
-                        lpOverlapped: POverlapped): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "TransactNamedPipe".}
-proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: var TMsg): int{.
-    stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
-proc TranslateAcceleratorA*(hWnd: HWND, hAccTable: HACCEL, lpMsg: var TMsg): int{.
-    stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}
-proc TranslateAcceleratorW*(hWnd: HWND, hAccTable: HACCEL, lpMsg: var TMsg): int{.
-    stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}
-proc TranslateCharsetInfo*(lpSrc: var DWORD, lpCs: var TCharsetInfo,
-                           dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",
-    importc: "TranslateCharsetInfo".}
-proc TranslateMDISysAccel*(hWndClient: HWND, lpMsg: TMsg): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "TranslateMDISysAccel".}
-proc TranslateMessage*(lpMsg: TMsg): WINBOOL{.stdcall, dynlib: "user32",
-    importc: "TranslateMessage".}
-  #function TransparentDIBits(DC: HDC; p2, p3, p4, p5: Integer; const p6: Pointer; const p7: PBitmapInfo; p8: UINT; p9, p10, p11, p12: Integer; p13: UINT): WINBOOL;stdcall; external 'gdi32' name 'TransparentDIBits';
-proc TryEnterCriticalSection*(lpCriticalSection: var TRTLCriticalSection): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "TryEnterCriticalSection".}
-proc UnhandledExceptionFilter*(ExceptionInfo: TExceptionPointers): int32{.
-    stdcall, dynlib: "kernel32", importc: "UnhandledExceptionFilter".}
-proc UnionRect*(lprcDst: var TRect, lprcSrc1, lprcSrc2: TRect): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "UnionRect".}
-proc UnlockFileEx*(hFile: THandle, dwReserved, nNumberOfBytesToUnlockLow: DWORD,
-                   nNumberOfBytesToUnlockHigh: DWORD, lpOverlapped: TOverlapped): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "UnlockFileEx".}
-proc VerFindFile*(uFlags: DWORD,
-                  szFileName, szWinDir, szAppDir, szCurDir: cstring,
-                  lpuCurDirLen: var UINT, szDestDir: cstring,
-                  lpuDestDirLen: var UINT): DWORD{.stdcall, dynlib: "version",
-    importc: "VerFindFileA".}
-proc VerFindFileA*(uFlags: DWORD,
-                   szFileName, szWinDir, szAppDir, szCurDir: LPCSTR,
-                   lpuCurDirLen: var UINT, szDestDir: LPCSTR,
-                   lpuDestDirLen: var UINT): DWORD{.stdcall, dynlib: "version",
-    importc: "VerFindFileA".}
-proc VerFindFileW*(uFlags: DWORD,
-                   szFileName, szWinDir, szAppDir, szCurDir: LPWSTR,
-                   lpuCurDirLen: var UINT, szDestDir: LPWSTR,
-                   lpuDestDirLen: var UINT): DWORD{.stdcall, dynlib: "version",
-    importc: "VerFindFileW".}
-proc VerInstallFile*(uFlags: DWORD, szSrcFileName, szDestFileName, szSrcDir,
-                                    szDestDir, szCurDir, szTmpFile: cstring,
-                     lpuTmpFileLen: var UINT): DWORD{.stdcall,
-    dynlib: "version", importc: "VerInstallFileA".}
-proc VerInstallFileA*(uFlags: DWORD, szSrcFileName, szDestFileName, szSrcDir,
-                                     szDestDir, szCurDir, szTmpFile: LPCSTR,
-                      lpuTmpFileLen: var UINT): DWORD{.stdcall,
-    dynlib: "version", importc: "VerInstallFileA".}
-proc VerInstallFileW*(uFlags: DWORD, szSrcFileName, szDestFileName, szSrcDir,
-                                     szDestDir, szCurDir, szTmpFile: LPWSTR,
-                      lpuTmpFileLen: var UINT): DWORD{.stdcall,
-    dynlib: "version", importc: "VerInstallFileW".}
-proc VerQueryValue*(pBlock: Pointer, lpSubBlock: cstring,
-                    lplpBuffer: var Pointer, puLen: var UINT): WINBOOL{.stdcall,
-    dynlib: "version", importc: "VerQueryValueA".}
-proc VerQueryValueA*(pBlock: Pointer, lpSubBlock: LPCSTR,
-                     lplpBuffer: var Pointer, puLen: var UINT): WINBOOL{.
-    stdcall, dynlib: "version", importc: "VerQueryValueA".}
-proc VerQueryValueW*(pBlock: Pointer, lpSubBlock: LPWSTR,
-                     lplpBuffer: var Pointer, puLen: var UINT): WINBOOL{.
-    stdcall, dynlib: "version", importc: "VerQueryValueW".}
-proc VirtualQuery*(lpAddress: Pointer, lpBuffer: var TMemoryBasicInformation,
-                   dwLength: DWORD): DWORD{.stdcall, dynlib: "kernel32",
-    importc: "VirtualQuery".}
-proc VirtualQueryEx*(hProcess: THandle, lpAddress: Pointer,
-                     lpBuffer: var TMemoryBasicInformation, dwLength: DWORD): DWORD{.
-    stdcall, dynlib: "kernel32", importc: "VirtualQueryEx".}
-proc WaitCommEvent*(hFile: THandle, lpEvtMask: var DWORD,
-                    lpOverlapped: POverlapped): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WaitCommEvent".}
-proc WaitForDebugEvent*(lpDebugEvent: var TDebugEvent, dwMilliseconds: DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WaitForDebugEvent".}
-proc wglDescribeLayerPlane*(p1: HDC, p2, p3: int, p4: int,
-                            p5: var TLayerPlaneDescriptor): WINBOOL{.stdcall,
-    dynlib: "opengl32", importc: "wglDescribeLayerPlane".}
-proc wglGetLayerPaletteEntries*(p1: HDC, p2, p3, p4: int, pcr: pointer): int{.
-    stdcall, dynlib: "opengl32", importc: "wglGetLayerPaletteEntries".}
-proc wglSetLayerPaletteEntries*(p1: HDC, p2, p3, p4: int, pcr: pointer): int{.
-    stdcall, dynlib: "opengl32", importc: "wglSetLayerPaletteEntries".}
-  #function wglSwapMultipleBuffers(p1: UINT; const p2: PWGLSwap): DWORD;stdcall; external 'opengl32' name 'wglSwapMultipleBuffers';
-  #function WinSubmitCertificate(var lpCertificate: TWinCertificate): WINBOOL;stdcall; external 'imaghlp' name 'WinSubmitCertificate';
-  #function WinVerifyTrust(hwnd: HWND; const ActionID: TGUID; ActionData: Pointer): Longint;stdcall; external 'imaghlp' name 'WinVerifyTrust';
-proc WNetAddConnection2*(lpNetResource: var TNetResource,
-                         lpPassword, lpUserName: cstring, dwFlags: DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetAddConnection2A".}
-proc WNetAddConnection2A*(lpNetResource: var TNetResourceA,
-                          lpPassword, lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetAddConnection2A".}
-  #function WNetAddConnection2W(var lpNetResource: TNetResourceW; lpPassword, lpUserName: LPWSTR; dwFlags: DWORD): DWORD; stdcall; external 'mpr' name 'WNetAddConnection2W';
-proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: var TNetResource,
-                         lpPassword, lpUserName: cstring, dwFlags: DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}
-proc WNetAddConnection3A*(hwndOwner: HWND, lpNetResource: var TNetResourceA,
-                          lpPassword, lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}
-  #function WNetAddConnection3W(hwndOwner: HWND; var lpNetResource: TNetResourceW; lpPassword, lpUserName: LPWSTR; dwFlags: DWORD): DWORD; stdcall; external 'mpr' name 'WNetAddConnection3W';
-proc WNetConnectionDialog1*(lpConnDlgStruct: var TConnectDlgStruct): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}
-proc WNetConnectionDialog1A*(lpConnDlgStruct: var TConnectDlgStruct): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}
-  #function WNetConnectionDialog1W(var lpConnDlgStruct: TConnectDlgStruct): DWORD; stdcall; external 'mpr' name 'WNetConnectionDialog1W';
-proc WNetDisconnectDialog1*(lpConnDlgStruct: var TDiscDlgStruct): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1A".}
-proc WNetDisconnectDialog1A*(lpConnDlgStruct: var TDiscDlgStructA): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1A".}
-  #function WNetDisconnectDialog1W(var lpConnDlgStruct: TDiscDlgStructW): DWORD; stdcall; external 'mpr' name 'WNetDisconnectDialog1W';
-proc WNetEnumResource*(hEnum: THandle, lpcCount: var DWORD, lpBuffer: Pointer,
-                       lpBufferSize: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetEnumResourceA".}
-proc WNetEnumResourceA*(hEnum: THandle, lpcCount: var DWORD, lpBuffer: Pointer,
-                        lpBufferSize: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetEnumResourceA".}
-proc WNetEnumResourceW*(hEnum: THandle, lpcCount: var DWORD, lpBuffer: Pointer,
-                        lpBufferSize: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetEnumResourceW".}
-proc WNetGetConnection*(lpLocalName: cstring, lpRemoteName: cstring,
-                        lpnLength: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetConnectionA".}
-proc WNetGetConnectionA*(lpLocalName: LPCSTR, lpRemoteName: LPCSTR,
-                         lpnLength: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetConnectionA".}
-proc WNetGetConnectionW*(lpLocalName: LPWSTR, lpRemoteName: LPWSTR,
-                         lpnLength: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetConnectionW".}
-proc WNetGetLastError*(lpError: var DWORD, lpErrorBuf: cstring,
-                       nErrorBufSize: DWORD, lpNameBuf: cstring,
-                       nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetLastErrorA".}
-proc WNetGetLastErrorA*(lpError: var DWORD, lpErrorBuf: LPCSTR,
-                        nErrorBufSize: DWORD, lpNameBuf: LPCSTR,
-                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetLastErrorA".}
-proc WNetGetLastErrorW*(lpError: var DWORD, lpErrorBuf: LPWSTR,
-                        nErrorBufSize: DWORD, lpNameBuf: LPWSTR,
-                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetLastErrorW".}
-proc WNetGetNetworkInformation*(lpProvider: cstring,
-                                lpNetInfoStruct: var TNetInfoStruct): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}
-proc WNetGetNetworkInformationA*(lpProvider: LPCSTR,
-                                 lpNetInfoStruct: var TNetInfoStruct): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}
-proc WNetGetNetworkInformationW*(lpProvider: LPWSTR,
-                                 lpNetInfoStruct: var TNetInfoStruct): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}
-proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: cstring,
-                          lpBufferSize: var DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetGetProviderNameA".}
-proc WNetGetProviderNameA*(dwNetType: DWORD, lpProviderName: LPCSTR,
-                           lpBufferSize: var DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetGetProviderNameA".}
-proc WNetGetProviderNameW*(dwNetType: DWORD, lpProviderName: LPWSTR,
-                           lpBufferSize: var DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetGetProviderNameW".}
-proc WNetGetResourceParent*(lpNetResource: PNetResource, lpBuffer: Pointer,
-                            cbBuffer: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetGetResourceParentA".}
-proc WNetGetResourceParentA*(lpNetResource: PNetResourceA, lpBuffer: Pointer,
-                             cbBuffer: var DWORD): DWORD{.stdcall,
-    dynlib: "mpr", importc: "WNetGetResourceParentA".}
-  #function WNetGetResourceParentW(lpNetResource: PNetResourceW; lpBuffer: Pointer; var cbBuffer: DWORD): DWORD;stdcall; external 'mpr' name 'WNetGetResourceParentW';
-proc WNetGetUniversalName*(lpLocalPath: cstring, dwInfoLevel: DWORD,
-                           lpBuffer: Pointer, lpBufferSize: var DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}
-proc WNetGetUniversalNameA*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD,
-                            lpBuffer: Pointer, lpBufferSize: var DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}
-proc WNetGetUniversalNameW*(lpLocalPath: LPWSTR, dwInfoLevel: DWORD,
-                            lpBuffer: Pointer, lpBufferSize: var DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}
-proc WNetGetUser*(lpName: cstring, lpUserName: cstring, lpnLength: var DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUserA".}
-proc WNetGetUserA*(lpName: LPCSTR, lpUserName: LPCSTR, lpnLength: var DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUserA".}
-proc WNetGetUserW*(lpName: LPWSTR, lpUserName: LPWSTR, lpnLength: var DWORD): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetGetUserW".}
-proc WNetOpenEnum*(dwScope, dwType, dwUsage: DWORD, lpNetResource: PNetResource,
-                   lphEnum: var THandle): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetOpenEnumA".}
-proc WNetOpenEnumA*(dwScope, dwType, dwUsage: DWORD,
-                    lpNetResource: PNetResourceA, lphEnum: var THandle): DWORD{.
-    stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}
-  #function WNetOpenEnumW(dwScope, dwType, dwUsage: DWORD; lpNetResource: PNetResourceW; var lphEnum: THandle): DWORD; stdcall; external 'mpr' name 'WNetOpenEnumW';
-proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: var TNetResource,
-                        lpUserID: cstring, lpPassword: cstring, dwFlags: DWORD,
-                        lpAccessName: cstring, lpBufferSize: var DWORD,
-                        lpResult: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetUseConnectionA".}
-proc WNetUseConnectionA*(hwndOwner: HWND, lpNetResource: var TNetResourceA,
-                         lpUserID: LPCSTR, lpPassword: LPCSTR, dwFlags: DWORD,
-                         lpAccessName: LPCSTR, lpBufferSize: var DWORD,
-                         lpResult: var DWORD): DWORD{.stdcall, dynlib: "mpr",
-    importc: "WNetUseConnectionA".}
-  #function WNetUseConnectionW(hwndOwner: HWND; var lpNetResource: TNetResourceW; lpUserID: LPWSTR; lpPassword: LPWSTR; dwFlags: DWORD; lpAccessName: LPWSTR; var lpBufferSize: DWORD; var lpResult: DWORD): DWORD; stdcall; external 'mpr' name 'WNetUseConnectionW';
-proc WriteConsole*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                   nNumberOfCharsToWrite: DWORD,
-                   lpNumberOfCharsWritten: var DWORD, lpReserved: Pointer): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}
-proc WriteConsoleA*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                    nNumberOfCharsToWrite: DWORD,
-                    lpNumberOfCharsWritten: var DWORD, lpReserved: Pointer): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}
-proc WriteConsoleInput*(hConsoleInput: THandle, lpBuffer: TInputRecord,
-                        nLength: DWORD, lpNumberOfEventsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}
-proc WriteConsoleInputA*(hConsoleInput: THandle, lpBuffer: TInputRecord,
-                         nLength: DWORD, lpNumberOfEventsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}
-proc WriteConsoleInputW*(hConsoleInput: THandle, lpBuffer: TInputRecord,
-                         nLength: DWORD, lpNumberOfEventsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}
-proc WriteConsoleOutput*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                         dwBufferSize, dwBufferCoord: TCoord,
-                         lpWriteRegion: var TSmallRect): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteConsoleOutputA".}
-proc WriteConsoleOutputA*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                          dwBufferSize, dwBufferCoord: TCoord,
-                          lpWriteRegion: var TSmallRect): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteConsoleOutputA".}
-proc WriteConsoleOutputAttribute*(hConsoleOutput: THandle, lpAttribute: Pointer,
-                                  nLength: DWORD, dwWriteCoord: TCoord,
-                                  lpNumberOfAttrsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputAttribute".}
-proc WriteConsoleOutputCharacter*(hConsoleOutput: THandle, lpCharacter: cstring,
-                                  nLength: DWORD, dwWriteCoord: TCoord,
-                                  lpNumberOfCharsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}
-proc WriteConsoleOutputCharacterA*(hConsoleOutput: THandle, lpCharacter: LPCSTR,
-                                   nLength: DWORD, dwWriteCoord: TCoord,
-                                   lpNumberOfCharsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}
-proc WriteConsoleOutputCharacterW*(hConsoleOutput: THandle, lpCharacter: LPWSTR,
-                                   nLength: DWORD, dwWriteCoord: TCoord,
-                                   lpNumberOfCharsWritten: var DWORD): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}
-proc WriteConsoleOutputW*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                          dwBufferSize, dwBufferCoord: TCoord,
-                          lpWriteRegion: var TSmallRect): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteConsoleOutputW".}
-proc WriteConsoleW*(hConsoleOutput: THandle, lpBuffer: Pointer,
-                    nNumberOfCharsToWrite: DWORD,
-                    lpNumberOfCharsWritten: var DWORD, lpReserved: Pointer): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}
-proc WriteFile*(hFile: THandle, Buffer: pointer, nNumberOfBytesToWrite: DWORD,
-                lpNumberOfBytesWritten: var DWORD, lpOverlapped: POverlapped): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WriteFile".}
-proc WriteFileEx*(hFile: THandle, lpBuffer: Pointer,
-                  nNumberOfBytesToWrite: DWORD, lpOverlapped: TOverlapped,
-                  lpCompletionRoutine: FARPROC): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteFileEx".}
-proc WritePrivateProfileStructA*(lpszSection, lpszKey: LPCSTR, lpStruct: LPVOID,
-                                 uSizeStruct: UINT, szFile: LPCSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructA".}
-proc WritePrivateProfileStructW*(lpszSection, lpszKey: LPCWSTR,
-                                 lpStruct: LPVOID, uSizeStruct: UINT,
-                                 szFile: LPCWSTR): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WritePrivateProfileStructW".}
-proc WritePrivateProfileStruct*(lpszSection, lpszKey: LPCTSTR, lpStruct: LPVOID,
-                                uSizeStruct: UINT, szFile: LPCTSTR): WINBOOL{.
-    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructA".}
-proc WriteProcessMemory*(hProcess: THandle, lpBaseAddress: Pointer,
-                         lpBuffer: Pointer, nSize: DWORD,
-                         lpNumberOfBytesWritten: var DWORD): WINBOOL{.stdcall,
-    dynlib: "kernel32", importc: "WriteProcessMemory".}
-proc SHFileOperation*(para1: var SHFILEOPSTRUCT): int32{.stdcall,
-    dynlib: "shell32", importc: "SHFileOperation".}
-  # these are old Win16 funcs that under win32 are aliases for several char* funcs.
-  # exist under Win32 (even in SDK's from 2002), but are officially "depreciated"
-proc AnsiNext*(lpsz: LPCSTR): LPSTR{.stdcall, dynlib: "user32",
-                                     importc: "CharNextA".}
-proc AnsiPrev*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR{.stdcall,
-    dynlib: "user32", importc: "CharPrevA".}
-proc AnsiToOem*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "CharToOemA".}
-proc OemToAnsi*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,
-    dynlib: "user32", importc: "OemToCharA".}
-proc AnsiToOemBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "CharToOemBuffA".}
-proc OemToAnsiBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.
-    stdcall, dynlib: "user32", importc: "OemToCharBuffA".}
-proc AnsiUpper*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",
-                                     importc: "CharUpperA".}
-proc AnsiUpperBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "CharUpperBuffA".}
-proc AnsiLower*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",
-                                     importc: "CharLowerA".}
-proc AnsiLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
-    dynlib: "user32", importc: "CharLowerBuffA".}
-# implementation
-# was #define dname(params) def_expr
-# argument types are unknown
-
-proc GetBValue(rgb: int32): int8 =
-  result = toU8(rgb shr 16'i32)
-
-proc GetGValue(rgb: int32): int8 =
-  result = toU8(rgb shr 8'i32)
-
-proc GetRValue(rgb: int32): int8 =
-  result = toU8(rgb)
-
-proc RGB(r, g, b: int32): DWORD =
-  result = toU8(r) or toU8(g shl 8'i32) or toU8(b shl 16'i32)
-
-proc HIBYTE(w: int32): int8 =
-  result = toU8(w shr 8'i32 and 0x000000FF'i32)
-
-proc HIWORD(L: int32): int16 =
-  result = toU16(L shr 16'i32 and 0x0000FFFF'i32)
-
-proc LOBYTE(w: int32): int8 =
-  result = toU8(w)
-
-proc LOWORD(L: int32): int16 =
-  result = toU16(L)
-
-proc MAKELONG(a, b: int32): LONG =
-  result = a and 0x0000ffff'i32 or b shl 16'i32
-
-proc MAKEWORD(a, b: int32): int16 =
-  result = toU16(a and 0xff'i32) or toU16(b shl 8'i32)
-
-proc SEXT_HIWORD(L: int32): int32 =
-  # return type might be wrong
-  result = HIWORD(L)
-
-proc ZEXT_HIWORD(L: int32): int32 =
-  # return type might be wrong
-  result = ze(HIWORD(L))
-
-proc SEXT_LOWORD(L: int32): int32 =
-  result = LOWORD(L)
-
-proc INDEXTOOVERLAYMASK(i: int32): int32 =
-  # return type might be wrong
-  result = i shl 8'i32
-
-proc INDEXTOSTATEIMAGEMASK(i: int32): int32 =
-  # return type might be wrong
-  result = i shl 12'i32
-
-proc MAKEINTATOM(i: int32): LPTSTR =
-  result = cast[LPTSTR](cast[ULONG_PTR](ToU16(i)))
-
-proc MAKELANGID(p, s: int32): int32 =
-  # return type might be wrong
-  result = toU16(s) shl 10'i16 or toU16(p)
-
-proc PRIMARYLANGID(lgid: int32): int16 =
-  # PRIMARYLANGID:=WORD(lgid(@($3ff)));
-  #         h2pas error here corrected by hand PM
-  result = toU16(lgid) and 0x000003FF'i16
-
-proc SUBLANGID(lgid: int32): int32 =
-  # return type might be wrong
-  result = toU16(lgid) shr 10'i16
-
-proc LANGIDFROMLCID(lcid: int32): int16 =
-  result = toU16(lcid)
-
-proc SORTIDFROMLCID(lcid: int32): int16 =
-  result = toU16((lcid and 0x000FFFFF'i32) shr 16'i32)
-
-proc MAKELCID(lgid, srtid: int32): DWORD =
-  result = toU32(srtid shl 16'i32 or lgid and 0xffff'i32)
-
-proc MAKELPARAM(L, h: int32): LPARAM =
-  result = LPARAM(MAKELONG(L, h))
-
-proc MAKELRESULT(L, h: int32): LRESULT =
-  result = LRESULT(MAKELONG(L, h))
-
-proc MAKEROP4(fore, back: int32): DWORD =
-  result = back shl 8'i32 and 0xFF000000'i32 or fore
-
-proc MAKEWPARAM(L, h: int32): WPARAM =
-  result = WPARAM(MAKELONG(L, h))
-
-proc GET_X_LPARAM(lp: Windows.LParam): int32 =
-  result = int16(LOWORD(lp))
-
-proc GET_Y_LPARAM(lp: Windows.LParam): int32 =
-  result = int16(HIWORD(lp))
-
-proc PALETTEINDEX(i: int32): COLORREF =
-  result = COLORREF(0x01000000'i32 or i and 0xffff'i32)
-
-proc PALETTERGB(r, g, b: int32): int32 =
-  # return type might be wrong
-  result = 0x02000000 or (RGB(r, g, b))
-
-proc UNICODE_NULL(): WCHAR =
-  result = 0'i16
-
-proc IDC_ARROW(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32512)
-
-proc IDC_IBEAM(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32513)
-
-proc IDC_WAIT(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32514)
-
-proc IDC_CROSS(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32515)
-
-proc IDC_UPARROW(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32516)
-
-proc IDC_SIZENWSE(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32642)
-
-proc IDC_SIZENESW(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32643)
-
-proc IDC_SIZEWE(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32644)
-
-proc IDC_SIZENS(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32645)
-
-proc IDC_SIZEALL(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32646)
-
-proc IDC_NO(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32648)
-
-proc IDC_APPSTARTING(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32650)
-
-proc IDC_HELP(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32651)
-
-proc IDI_APPLICATION(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32512)
-
-proc IDI_HAND(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32513)
-
-proc IDI_QUESTION(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32514)
-
-proc IDI_EXCLAMATION(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32515)
-
-proc IDI_ASTERISK(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32516)
-
-proc IDI_WINLOGO(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32517)
-
-proc IDC_SIZE(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32640)
-
-proc IDC_ICON(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32641)
-
-proc IDC_HAND(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](32649)
-
-proc STD_INPUT_HANDLE(): DWORD =
-  result = DWORD(- (10))
-
-proc STD_OUTPUT_HANDLE(): DWORD =
-  result = DWORD(- (11))
-
-proc STD_ERROR_HANDLE(): DWORD =
-  result = DWORD(- (12))
-
-proc HWND_BROADCAST(): HWND =
-  result = HWND(0x0000FFFF)
-
-proc HKEY_CLASSES_ROOT(): HKEY =
-  result = HKEY(0x80000000)
-
-proc HKEY_CURRENT_USER(): HKEY =
-  result = HKEY(0x80000001)
-
-proc HKEY_LOCAL_MACHINE(): HKEY =
-  result = HKEY(0x80000002)
-
-proc HKEY_USERS(): HKEY =
-  result = HKEY(0x80000003)
-
-proc HKEY_PERFORMANCE_DATA(): HKEY =
-  result = HKEY(0x80000004)
-
-proc HKEY_CURRENT_CONFIG(): HKEY =
-  result = HKEY(0x80000005)
-
-proc HKEY_DYN_DATA(): HKEY =
-  result = HKEY(0x80000006)
-
-proc HWND_BOTTOM(): HWND =
-  result = HWND(1)
-
-proc HWND_NOTOPMOST(): HWND =
-  result = HWND(- (2))
-
-proc HWND_TOP(): HWND =
-  result = HWND(0)
-
-proc HWND_TOPMOST(): HWND =
-  result = HWND(- (1))
-
-proc VS_FILE_INFO(): LPTSTR =
-  # return type might be wrong
-  result = cast[MAKEINTRESOURCE](16)
-
-proc HINST_COMMCTRL(): HINST =
-  result = HINST(- (1))
-
-proc LPSTR_TEXTCALLBACKW(): LPWSTR =
-  result = cast[LPWSTR](- (1))
-
-proc LPSTR_TEXTCALLBACKA(): LPSTR =
-  result = cast[LPSTR](- (1))
-
-when defined(winUnicode):
-  #const this is a function in fact !!
-  #     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;
-  proc LPSTR_TEXTCALLBACK(): LPWSTR =
-    result = cast[LPWSTR](- (1))
-
-else:
-  #const
-  #     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
-  proc LPSTR_TEXTCALLBACK(): LPSTR =
-    result = cast[LPSTR](- (1))
-
-# was #define dname def_expr
-
-proc TVI_ROOT(): HTREEITEM =
-  result = cast[HTREEITEM](0xFFFF0000)
-
-proc TVI_FIRST(): HTREEITEM =
-  result = cast[HTREEITEM](0xFFFF0001)
-
-proc TVI_LAST(): HTREEITEM =
-  result = cast[HTREEITEM](0xFFFF0002)
-
-proc TVI_SORT(): HTREEITEM =
-  result = cast[HTREEITEM](0xFFFF0003)
-
-proc HWND_DESKTOP(): HWND =
-  result = HWND(0)
-
-proc GetFirstChild(h: HWND): HWND =
-  result = GetTopWindow(h)
-
-proc GetNextSibling(h: HWND): HWND =
-  result = GetWindow(h, GW_HWNDNEXT)
-
-proc GetWindowID(h: HWND): int32 =
-  result = GetDlgCtrlID(h)
-
-proc SubclassWindow(h: HWND, p: LONG): LONG =
-  result = SetWindowLong(h, GWL_WNDPROC, p)
-
-proc GET_WM_COMMAND_CMD(w, L: int32): int32 =
-  # return type might be wrong
-  result = HIWORD(w)
-
-proc GET_WM_COMMAND_ID(w, L: int32): int32 =
-  # return type might be wrong
-  result = LOWORD(w)
-
-proc GET_WM_CTLCOLOR_HDC(w, L, msg: int32): HDC =
-  result = HDC(w)
-
-proc GET_WM_CTLCOLOR_HWND(w, L, msg: int32): HWND =
-  result = HWND(L)
-
-proc GET_WM_HSCROLL_CODE(w, L: int32): int32 =
-  # return type might be wrong
-  result = LOWORD(w)
-
-proc GET_WM_HSCROLL_HWND(w, L: int32): HWND =
-  result = HWND(L)
-
-proc GET_WM_HSCROLL_POS(w, L: int32): int32 =
-  # return type might be wrong
-  result = HIWORD(w)
-
-proc GET_WM_MDIACTIVATE_FACTIVATE(h, a, b: int32): int32 =
-  # return type might be wrong
-  result = ord(b == h)
-
-proc GET_WM_MDIACTIVATE_HWNDACTIVATE(a, b: int32): HWND =
-  result = HWND(b)
-
-proc GET_WM_MDIACTIVATE_HWNDDEACT(a, b: int32): HWND =
-  result = HWND(a)
-
-proc GET_WM_VSCROLL_CODE(w, L: int32): int32 =
-  # return type might be wrong
-  result = LOWORD(w)
-
-proc GET_WM_VSCROLL_HWND(w, L: int32): HWND =
-  result = HWND(L)
-
-proc GET_WM_VSCROLL_POS(w, L: int32): int32 =
-  # return type might be wrong
-  result = HIWORD(w)
-
-proc FreeModule(h: HINST): WINBOOL =
-  result = FreeLibrary(h)
-
-proc MakeProcInstance(p, i: int32): int32 =
-  # return type might be wrong
-  result = p
-
-proc FreeProcInstance(p: int32): int32 =
-  # return type might be wrong
-  result = p
-
-proc fBinary(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fBinary) shr bp_DCB_fBinary
-
-proc set_fBinary(a: var DCB, fBinary: DWORD) =
-  a.flags = a.flags or ((fBinary shl bp_DCB_fBinary) and bm_DCB_fBinary)
-
-proc fParity(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fParity) shr bp_DCB_fParity
-
-proc set_fParity(a: var DCB, fParity: DWORD) =
-  a.flags = a.flags or ((fParity shl bp_DCB_fParity) and bm_DCB_fParity)
-
-proc fOutxCtsFlow(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fOutxCtsFlow) shr bp_DCB_fOutxCtsFlow
-
-proc set_fOutxCtsFlow(a: var DCB, fOutxCtsFlow: DWORD) =
-  a.flags = a.flags or
-      ((fOutxCtsFlow shl bp_DCB_fOutxCtsFlow) and bm_DCB_fOutxCtsFlow)
-
-proc fOutxDsrFlow(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fOutxDsrFlow) shr bp_DCB_fOutxDsrFlow
-
-proc set_fOutxDsrFlow(a: var DCB, fOutxDsrFlow: DWORD) =
-  a.flags = a.flags or
-      ((fOutxDsrFlow shl bp_DCB_fOutxDsrFlow) and bm_DCB_fOutxDsrFlow)
-
-proc fDtrControl(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fDtrControl) shr bp_DCB_fDtrControl
-
-proc set_fDtrControl(a: var DCB, fDtrControl: DWORD) =
-  a.flags = a.flags or
-      ((fDtrControl shl bp_DCB_fDtrControl) and bm_DCB_fDtrControl)
-
-proc fDsrSensitivity(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fDsrSensitivity) shr bp_DCB_fDsrSensitivity
-
-proc set_fDsrSensitivity(a: var DCB, fDsrSensitivity: DWORD) =
-  a.flags = a.flags or
-      ((fDsrSensitivity shl bp_DCB_fDsrSensitivity) and
-      bm_DCB_fDsrSensitivity)
-
-proc fTXContinueOnXoff(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fTXContinueOnXoff) shr
-      bp_DCB_fTXContinueOnXoff
-
-proc set_fTXContinueOnXoff(a: var DCB, fTXContinueOnXoff: DWORD) =
-  a.flags = a.flags or
-      ((fTXContinueOnXoff shl bp_DCB_fTXContinueOnXoff) and
-      bm_DCB_fTXContinueOnXoff)
-
-proc fOutX(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fOutX) shr bp_DCB_fOutX
-
-proc set_fOutX(a: var DCB, fOutX: DWORD) =
-  a.flags = a.flags or ((fOutX shl bp_DCB_fOutX) and bm_DCB_fOutX)
-
-proc fInX(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fInX) shr bp_DCB_fInX
-
-proc set_fInX(a: var DCB, fInX: DWORD) =
-  a.flags = a.flags or ((fInX shl bp_DCB_fInX) and bm_DCB_fInX)
-
-proc fErrorChar(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fErrorChar) shr bp_DCB_fErrorChar
-
-proc set_fErrorChar(a: var DCB, fErrorChar: DWORD) =
-  a.flags = a.flags or
-      ((fErrorChar shl bp_DCB_fErrorChar) and bm_DCB_fErrorChar)
-
-proc fNull(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fNull) shr bp_DCB_fNull
-
-proc set_fNull(a: var DCB, fNull: DWORD) =
-  a.flags = a.flags or ((fNull shl bp_DCB_fNull) and bm_DCB_fNull)
-
-proc fRtsControl(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fRtsControl) shr bp_DCB_fRtsControl
-
-proc set_fRtsControl(a: var DCB, fRtsControl: DWORD) =
-  a.flags = a.flags or
-      ((fRtsControl shl bp_DCB_fRtsControl) and bm_DCB_fRtsControl)
-
-proc fAbortOnError(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fAbortOnError) shr bp_DCB_fAbortOnError
-
-proc set_fAbortOnError(a: var DCB, fAbortOnError: DWORD) =
-  a.flags = a.flags or
-      ((fAbortOnError shl bp_DCB_fAbortOnError) and bm_DCB_fAbortOnError)
-
-proc fDummy2(a: var DCB): DWORD =
-  result = (a.flags and bm_DCB_fDummy2) shr bp_DCB_fDummy2
-
-proc set_fDummy2(a: var DCB, fDummy2: DWORD) =
-  a.flags = a.flags or ((fDummy2 shl bp_DCB_fDummy2) and bm_DCB_fDummy2)
-
-proc fCtsHold(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fCtsHold) shr bp_COMSTAT_fCtsHold
-
-proc set_fCtsHold(a: var COMSTAT, fCtsHold: DWORD) =
-  a.flag0 = a.flag0 or
-      ((fCtsHold shl bp_COMSTAT_fCtsHold) and bm_COMSTAT_fCtsHold)
-
-proc fDsrHold(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fDsrHold) shr bp_COMSTAT_fDsrHold
-
-proc set_fDsrHold(a: var COMSTAT, fDsrHold: DWORD) =
-  a.flag0 = a.flag0 or
-      ((fDsrHold shl bp_COMSTAT_fDsrHold) and bm_COMSTAT_fDsrHold)
-
-proc fRlsdHold(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fRlsdHold) shr bp_COMSTAT_fRlsdHold
-
-proc set_fRlsdHold(a: var COMSTAT, fRlsdHold: DWORD) =
-  a.flag0 = a.flag0 or
-      ((fRlsdHold shl bp_COMSTAT_fRlsdHold) and bm_COMSTAT_fRlsdHold)
-
-proc fXoffHold(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fXoffHold) shr bp_COMSTAT_fXoffHold
-
-proc set_fXoffHold(a: var COMSTAT, fXoffHold: DWORD) =
-  a.flag0 = a.flag0 or
-      ((fXoffHold shl bp_COMSTAT_fXoffHold) and bm_COMSTAT_fXoffHold)
-
-proc fXoffSent(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fXoffSent) shr bp_COMSTAT_fXoffSent
-
-proc set_fXoffSent(a: var COMSTAT, fXoffSent: DWORD) =
-  a.flag0 = a.flag0 or
-      ((fXoffSent shl bp_COMSTAT_fXoffSent) and bm_COMSTAT_fXoffSent)
-
-proc fEof(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fEof) shr bp_COMSTAT_fEof
-
-proc set_fEof(a: var COMSTAT, fEof: DWORD) =
-  a.flag0 = a.flag0 or ((fEof shl bp_COMSTAT_fEof) and bm_COMSTAT_fEof)
-
-proc fTxim(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fTxim) shr bp_COMSTAT_fTxim
-
-proc set_fTxim(a: var COMSTAT, fTxim: DWORD) =
-  a.flag0 = a.flag0 or ((fTxim shl bp_COMSTAT_fTxim) and bm_COMSTAT_fTxim)
-
-proc fReserved(a: var COMSTAT): DWORD =
-  result = (a.flag0 and bm_COMSTAT_fReserved) shr bp_COMSTAT_fReserved
-
-proc set_fReserved(a: var COMSTAT, fReserved: DWORD) =
-  a.flag0 = a.flag0 or
-      ((fReserved shl bp_COMSTAT_fReserved) and bm_COMSTAT_fReserved)
-
-proc bAppReturnCode(a: var DDEACK): int16 =
-  result = (a.flag0 and bm_DDEACK_bAppReturnCode) shr
-      bp_DDEACK_bAppReturnCode
-
-proc set_bAppReturnCode(a: var DDEACK, bAppReturnCode: int16) =
-  a.flag0 = a.flag0 or
-      ((bAppReturnCode shl bp_DDEACK_bAppReturnCode) and
-      bm_DDEACK_bAppReturnCode)
-
-proc reserved(a: var DDEACK): int16 =
-  result = (a.flag0 and bm_DDEACK_reserved) shr bp_DDEACK_reserved
-
-proc set_reserved(a: var DDEACK, reserved: int16) =
-  a.flag0 = a.flag0 or
-      ((reserved shl bp_DDEACK_reserved) and bm_DDEACK_reserved)
-
-proc fBusy(a: var DDEACK): int16 =
-  result = (a.flag0 and bm_DDEACK_fBusy) shr bp_DDEACK_fBusy
-
-proc set_fBusy(a: var DDEACK, fBusy: int16) =
-  a.flag0 = a.flag0 or ((fBusy shl bp_DDEACK_fBusy) and bm_DDEACK_fBusy)
-
-proc fAck(a: var DDEACK): int16 =
-  result = (a.flag0 and bm_DDEACK_fAck) shr bp_DDEACK_fAck
-
-proc set_fAck(a: var DDEACK, fAck: int16) =
-  a.flag0 = a.flag0 or ((fAck shl bp_DDEACK_fAck) and bm_DDEACK_fAck)
-
-proc reserved(a: var DDEADVISE): int16 =
-  result = (a.flag0 and bm_DDEADVISE_reserved) shr bp_DDEADVISE_reserved
-
-proc set_reserved(a: var DDEADVISE, reserved: int16) =
-  a.flag0 = a.flag0 or
-      ((reserved shl bp_DDEADVISE_reserved) and bm_DDEADVISE_reserved)
-
-proc fDeferUpd(a: var DDEADVISE): int16 =
-  result = (a.flag0 and bm_DDEADVISE_fDeferUpd) shr bp_DDEADVISE_fDeferUpd
-
-proc set_fDeferUpd(a: var DDEADVISE, fDeferUpd: int16) =
-  a.flag0 = a.flag0 or
-      ((fDeferUpd shl bp_DDEADVISE_fDeferUpd) and bm_DDEADVISE_fDeferUpd)
-
-proc fAckReq(a: var DDEADVISE): int16 =
-  result = (a.flag0 and bm_DDEADVISE_fAckReq) shr bp_DDEADVISE_fAckReq
-
-proc set_fAckReq(a: var DDEADVISE, fAckReq: int16) =
-  a.flag0 = a.flag0 or
-      ((fAckReq shl bp_DDEADVISE_fAckReq) and bm_DDEADVISE_fAckReq)
-
-proc unused(a: var DDEDATA): int16 =
-  result = (a.flag0 and bm_DDEDATA_unused) shr bp_DDEDATA_unused
-
-proc set_unused(a: var DDEDATA, unused: int16) =
-  a.flag0 = a.flag0 or ((unused shl bp_DDEDATA_unused) and bm_DDEDATA_unused)
-
-proc fResponse(a: var DDEDATA): int16 =
-  result = (a.flag0 and bm_DDEDATA_fResponse) shr bp_DDEDATA_fResponse
-
-proc set_fResponse(a: var DDEDATA, fResponse: int16) =
-  a.flag0 = a.flag0 or
-      ((fResponse shl bp_DDEDATA_fResponse) and bm_DDEDATA_fResponse)
-
-proc fRelease(a: var DDEDATA): int16 =
-  result = (a.flag0 and bm_DDEDATA_fRelease) shr bp_DDEDATA_fRelease
-
-proc set_fRelease(a: var DDEDATA, fRelease: int16) =
-  a.flag0 = a.flag0 or
-      ((fRelease shl bp_DDEDATA_fRelease) and bm_DDEDATA_fRelease)
-
-proc reserved(a: var DDEDATA): int16 =
-  result = (a.flag0 and bm_DDEDATA_reserved) shr bp_DDEDATA_reserved
-
-proc set_reserved(a: var DDEDATA, reserved: int16) =
-  a.flag0 = a.flag0 or
-      ((reserved shl bp_DDEDATA_reserved) and bm_DDEDATA_reserved)
-
-proc fAckReq(a: var DDEDATA): int16 =
-  result = (a.flag0 and bm_DDEDATA_fAckReq) shr bp_DDEDATA_fAckReq
-
-proc set_fAckReq(a: var DDEDATA, fAckReq: int16) =
-  a.flag0 = a.flag0 or
-      ((fAckReq shl bp_DDEDATA_fAckReq) and bm_DDEDATA_fAckReq)
-
-proc unused(a: var DDELN): int16 =
-  result = (a.flag0 and bm_DDELN_unused) shr bp_DDELN_unused
-
-proc set_unused(a: var DDELN, unused: int16) =
-  a.flag0 = a.flag0 or ((unused shl bp_DDELN_unused) and bm_DDELN_unused)
-
-proc fRelease(a: var DDELN): int16 =
-  result = (a.flag0 and bm_DDELN_fRelease) shr bp_DDELN_fRelease
-
-proc set_fRelease(a: var DDELN, fRelease: int16) =
-  a.flag0 = a.flag0 or
-      ((fRelease shl bp_DDELN_fRelease) and bm_DDELN_fRelease)
-
-proc fDeferUpd(a: var DDELN): int16 =
-  result = (a.flag0 and bm_DDELN_fDeferUpd) shr bp_DDELN_fDeferUpd
-
-proc set_fDeferUpd(a: var DDELN, fDeferUpd: int16) =
-  a.flag0 = a.flag0 or
-      ((fDeferUpd shl bp_DDELN_fDeferUpd) and bm_DDELN_fDeferUpd)
-
-proc fAckReq(a: var DDELN): int16 =
-  result = (a.flag0 and bm_DDELN_fAckReq) shr bp_DDELN_fAckReq
-
-proc set_fAckReq(a: var DDELN, fAckReq: int16) =
-  a.flag0 = a.flag0 or ((fAckReq shl bp_DDELN_fAckReq) and bm_DDELN_fAckReq)
-
-proc unused(a: var DDEPOKE): int16 =
-  result = (a.flag0 and bm_DDEPOKE_unused) shr bp_DDEPOKE_unused
-
-proc set_unused(a: var DDEPOKE, unused: int16) =
-  a.flag0 = a.flag0 or ((unused shl bp_DDEPOKE_unused) and bm_DDEPOKE_unused)
-
-proc fRelease(a: var DDEPOKE): int16 =
-  result = (a.flag0 and bm_DDEPOKE_fRelease) shr bp_DDEPOKE_fRelease
-
-proc set_fRelease(a: var DDEPOKE, fRelease: int16) =
-  a.flag0 = a.flag0 or
-      ((fRelease shl bp_DDEPOKE_fRelease) and bm_DDEPOKE_fRelease)
-
-proc fReserved(a: var DDEPOKE): int16 =
-  result = (a.flag0 and bm_DDEPOKE_fReserved) shr bp_DDEPOKE_fReserved
-
-proc set_fReserved(a: var DDEPOKE, fReserved: int16) =
-  a.flag0 = a.flag0 or
-      ((fReserved shl bp_DDEPOKE_fReserved) and bm_DDEPOKE_fReserved)
-
-proc unused(a: var DDEUP): int16 =
-  result = (a.flag0 and bm_DDEUP_unused) shr bp_DDEUP_unused
-
-proc set_unused(a: var DDEUP, unused: int16) =
-  a.flag0 = a.flag0 or ((unused shl bp_DDEUP_unused) and bm_DDEUP_unused)
-
-proc fAck(a: var DDEUP): int16 =
-  result = (a.flag0 and bm_DDEUP_fAck) shr bp_DDEUP_fAck
-
-proc set_fAck(a: var DDEUP, fAck: int16) =
-  a.flag0 = a.flag0 or ((fAck shl bp_DDEUP_fAck) and bm_DDEUP_fAck)
-
-proc fRelease(a: var DDEUP): int16 =
-  result = (a.flag0 and bm_DDEUP_fRelease) shr bp_DDEUP_fRelease
-
-proc set_fRelease(a: var DDEUP, fRelease: int16) =
-  a.flag0 = a.flag0 or
-      ((fRelease shl bp_DDEUP_fRelease) and bm_DDEUP_fRelease)
-
-proc fReserved(a: var DDEUP): int16 =
-  result = (a.flag0 and bm_DDEUP_fReserved) shr bp_DDEUP_fReserved
-
-proc set_fReserved(a: var DDEUP, fReserved: int16) =
-  a.flag0 = a.flag0 or
-      ((fReserved shl bp_DDEUP_fReserved) and bm_DDEUP_fReserved)
-
-proc fAckReq(a: var DDEUP): int16 =
-  result = (a.flag0 and bm_DDEUP_fAckReq) shr bp_DDEUP_fAckReq
-
-proc set_fAckReq(a: var DDEUP, fAckReq: int16) =
-  a.flag0 = a.flag0 or ((fAckReq shl bp_DDEUP_fAckReq) and bm_DDEUP_fAckReq)
-
-proc CreateWindowA(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,
-                   X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                   hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                   lpParam: LPVOID): HWND =
-  result = CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,
-                           nHeight, hWndParent, hMenu, hInstance, lpParam)
-
-proc CreateDialogA(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                   lpDialogFunc: DLGPROC): HWND =
-  result = CreateDialogParamA(hInstance, lpTemplateName, hWndParent,
-                              lpDialogFunc, 0)
-
-proc CreateDialogIndirectA(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                           hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =
-  result = CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent,
-                                      lpDialogFunc, 0)
-
-proc DialogBoxA(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                lpDialogFunc: DLGPROC): int32 =
-  result = DialogBoxParamA(hInstance, lpTemplateName, hWndParent, lpDialogFunc,
-                           0)
-
-proc DialogBoxIndirectA(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,
-                        hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =
-  result = DialogBoxIndirectParamA(hInstance, hDialogTemplate, hWndParent,
-                                   lpDialogFunc, 0)
-
-proc CreateWindowW(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD,
-                   X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                   hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                   lpParam: LPVOID): HWND =
-  result = CreateWindowExW(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,
-                           nHeight, hWndParent, hMenu, hInstance, lpParam)
-
-proc CreateDialogW(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,
-                   lpDialogFunc: DLGPROC): HWND =
-  result = CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0)
-
-proc CreateDialogIndirectW(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                           hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =
-  result = CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent,
-                                      lpDialogFunc, 0)
-
-proc DialogBoxW(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,
-                lpDialogFunc: DLGPROC): int32 =
-  result = DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-
-proc DialogBoxIndirectW(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                        hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =
-  result = DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent,
-                                   lpDialogFunc, 0)
-
-when defined(winUnicode):
-  proc CreateWindow(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD,
-                    X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                    lpParam: LPVOID): HWND =
-    result = CreateWindowEx(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,
-                            nHeight, hWndParent, hMenu, hInstance, lpParam)
-
-  proc CreateDialog(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,
-                    lpDialogFunc: DLGPROC): HWND =
-    result = CreateDialogParam(hInstance, lpName, hWndParent, lpDialogFunc, 0)
-
-  proc CreateDialogIndirect(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =
-    result = CreateDialogIndirectParam(hInstance, lpTemplate, hWndParent,
-                                       lpDialogFunc, 0)
-
-  proc DialogBox(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,
-                 lpDialogFunc: DLGPROC): int32 =
-    result = DialogBoxParam(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)
-
-  proc DialogBoxIndirect(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =
-    result = DialogBoxIndirectParam(hInstance, lpTemplate, hWndParent,
-                                    lpDialogFunc, 0)
-
-else:
-  proc CreateWindow(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,
-                    X: int32, Y: int32, nWidth: int32, nHeight: int32,
-                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,
-                    lpParam: LPVOID): HWND =
-    result = CreateWindowEx(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,
-                            nHeight, hWndParent, hMenu, hInstance, lpParam)
-
-  proc CreateDialog(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                    lpDialogFunc: DLGPROC): HWND =
-    result = CreateDialogParam(hInstance, lpTemplateName, hWndParent,
-                               lpDialogFunc, 0)
-
-  proc CreateDialogIndirect(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,
-                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =
-    result = CreateDialogIndirectParam(hInstance, lpTemplate, hWndParent,
-                                       lpDialogFunc, 0)
-
-  proc DialogBox(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,
-                 lpDialogFunc: DLGPROC): int32 =
-    result = DialogBoxParam(hInstance, lpTemplateName, hWndParent, lpDialogFunc,
-                            0)
-
-  proc DialogBoxIndirect(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,
-                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =
-    result = DialogBoxIndirectParam(hInstance, hDialogTemplate, hWndParent,
-                                    lpDialogFunc, 0)
-
-proc GlobalDiscard(hglbMem: HGLOBAL): HGLOBAL =
-  result = GlobalReAlloc(hglbMem, 0, GMEM_MOVEABLE)
-
-proc LocalDiscard(hlocMem: HLOCAL): HLOCAL =
-  result = LocalReAlloc(hlocMem, 0, LMEM_MOVEABLE)
-
-proc GlobalAllocPtr(flags, cb: DWord): Pointer =
-  result = GlobalLock(GlobalAlloc(flags, cb))
-
-proc GlobalFreePtr(lp: Pointer): Pointer =
-  result = cast[Pointer](GlobalFree(cast[HWND](GlobalUnlockPtr(lp))))
-
-proc GlobalUnlockPtr(lp: pointer): Pointer =
-  discard GlobalUnlock(GlobalHandle(lp))
-  result = lp
-
-proc GlobalLockPtr(lp: pointer): Pointer =
-  result = GlobalLock(GlobalHandle(lp))
-
-proc GlobalReAllocPtr(lp: Pointer, cbNew, flags: DWord): Pointer =
-  result = GlobalLock(GlobalReAlloc(cast[HWND](GlobalUnlockPtr(lp)), cbNew, flags))
-
-proc GlobalPtrHandle(lp: pointer): Pointer =
-  result = cast[Pointer](GlobalHandle(lp))
-
-proc ImageList_AddIcon(himl: HIMAGELIST, hicon: HICON): int32 =
-  result = ImageList_ReplaceIcon(himl, - (1), hicon)
-
-proc Animate_Create(hWndP: HWND, id: HMENU, dwStyle: DWORD, hInstance: HINST): HWND =
-  result = CreateWindow(cast[LPCSTR](ANIMATE_CLASS), nil, dwStyle, 0, 0, 0, 0, hwndP,
-                        id, hInstance, nil)
-
-proc Animate_Open(hwnd: HWND, szName: LPTSTR): LRESULT =
-  result = SendMessage(hwnd, ACM_OPEN, 0, cast[LPARAM](szName))
-
-proc Animate_Play(hwnd: HWND, `from`, `to`: int32, rep: UINT): LRESULT =
-  result = SendMessage(hwnd, ACM_PLAY, WPARAM(rep),
-                       LPARAM(MAKELONG(`from`, `to`)))
-
-proc Animate_Stop(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, ACM_STOP, 0, 0)
-
-proc Animate_Close(hwnd: HWND): LRESULT =
-  result = Animate_Open(hwnd, nil)
-
-proc Animate_Seek(hwnd: HWND, frame: int32): LRESULT =
-  result = Animate_Play(hwnd, frame, frame, 1)
-
-proc PropSheet_AddPage(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_ADDPAGE, 0, cast[LPARAM](hpage))
-
-proc PropSheet_Apply(hPropSheetDlg: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0)
-
-proc PropSheet_CancelToClose(hPropSheetDlg: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0)
-
-proc PropSheet_Changed(hPropSheetDlg, hwndPage: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_CHANGED, WPARAM(hwndPage), 0)
-
-proc PropSheet_GetCurrentPageHwnd(hDlg: HWND): LRESULT =
-  result = SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0)
-
-proc PropSheet_GetTabControl(hPropSheetDlg: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0)
-
-proc PropSheet_IsDialogMessage(hDlg: HWND, pMsg: int32): LRESULT =
-  result = SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 0, LPARAM(pMsg))
-
-proc PropSheet_PressButton(hPropSheetDlg: HWND, iButton: int32): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, WPARAM(int32(iButton)), 0)
-
-proc PropSheet_QuerySiblings(hPropSheetDlg: HWND, param1, param2: int32): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, WPARAM(param1),
-                       LPARAM(param2))
-
-proc PropSheet_RebootSystem(hPropSheetDlg: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0)
-
-proc PropSheet_RemovePage(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,
-                          index: int32): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, WPARAM(index),
-                       cast[LPARAM](hpage))
-
-proc PropSheet_RestartWindows(hPropSheetDlg: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0)
-
-proc PropSheet_SetCurSel(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,
-                         index: int32): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_SETCURSEL, WPARAM(index),
-                       cast[LPARAM](hpage))
-
-proc PropSheet_SetCurSelByID(hPropSheetDlg: HWND, id: int32): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, LPARAM(id))
-
-proc PropSheet_SetFinishText(hPropSheetDlg: HWND, lpszText: LPTSTR): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast[LPARAM](lpszText))
-
-proc PropSheet_SetTitle(hPropSheetDlg: HWND, dwStyle: DWORD, lpszText: LPCTSTR): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_SETTITLE, WPARAM(dwStyle),
-                       cast[LPARAM](lpszText))
-
-proc PropSheet_SetWizButtons(hPropSheetDlg: HWND, dwFlags: DWORD): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, LPARAM(dwFlags))
-
-proc PropSheet_UnChanged(hPropSheetDlg: HWND, hwndPage: HWND): LRESULT =
-  result = SendMessage(hPropSheetDlg, PSM_UNCHANGED, WPARAM(hwndPage), 0)
-
-proc Header_DeleteItem(hwndHD: HWND, index: int32): WINBOOL =
-  result = WINBOOL(SendMessage(hwndHD, HDM_DELETEITEM, WPARAM(index), 0))
-
-proc Header_GetItem(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL =
-  result = WINBOOL(SendMessage(hwndHD, HDM_GETITEM, WPARAM(index),
-                               cast[LPARAM](addr(hdi))))
-
-proc Header_GetItemCount(hwndHD: HWND): int32 =
-  result = int32(SendMessage(hwndHD, HDM_GETITEMCOUNT, 0, 0))
-
-proc Header_InsertItem(hwndHD: HWND, index: int32, hdi: var HD_ITEM): int32 =
-  result = int32(SendMessage(hwndHD, HDM_INSERTITEM, WPARAM(index),
-                             cast[LPARAM](addr(hdi))))
-
-proc Header_Layout(hwndHD: HWND, layout: var HD_LAYOUT): WINBOOL =
-  result = WINBOOL(SendMessage(hwndHD, HDM_LAYOUT, 0,
-                   cast[LPARAM](addr(layout))))
-
-proc Header_SetItem(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL =
-  result = WINBOOL(SendMessage(hwndHD, HDM_SETITEM, WPARAM(index),
-                               cast[LPARAM](addr(hdi))))
-
-proc ListView_Arrange(hwndLV: HWND, code: UINT): LRESULT =
-  result = SendMessage(hwndLV, LVM_ARRANGE, WPARAM(code), 0)
-
-proc ListView_CreateDragImage(hwnd: HWND, i: int32, lpptUpLeft: LPPOINT): LRESULT =
-  result = SendMessage(hwnd, LVM_CREATEDRAGIMAGE, WPARAM(i), cast[LPARAM](lpptUpLeft))
-
-proc ListView_DeleteAllItems(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, LVM_DELETEALLITEMS, 0, 0)
-
-proc ListView_DeleteColumn(hwnd: HWND, iCol: int32): LRESULT =
-  result = SendMessage(hwnd, LVM_DELETECOLUMN, WPARAM(iCol), 0)
-
-proc ListView_DeleteItem(hwnd: HWND, iItem: int32): LRESULT =
-  result = SendMessage(hwnd, LVM_DELETEITEM, WPARAM(iItem), 0)
-
-proc ListView_EditLabel(hwndLV: HWND, i: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_EDITLABEL, WPARAM(int32(i)), 0)
-
-proc ListView_EnsureVisible(hwndLV: HWND, i, fPartialOK: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_ENSUREVISIBLE, WPARAM(i),
-                       MAKELPARAM(fPartialOK, 0))
-
-proc ListView_FindItem(hwnd: HWND, iStart: int32, lvfi: var LV_FINDINFO): int32 =
-  result = SendMessage(hwnd, LVM_FINDITEM, WPARAM(iStart), cast[LPARAM](addr(lvfi)))
-
-proc ListView_GetBkColor(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, LVM_GETBKCOLOR, 0, 0)
-
-proc ListView_GetCallbackMask(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, LVM_GETCALLBACKMASK, 0, 0)
-
-proc ListView_GetColumn(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT =
-  result = SendMessage(hwnd, LVM_GETCOLUMN, WPARAM(iCol), cast[LPARAM](addr(col)))
-
-proc ListView_GetColumnWidth(hwnd: HWND, iCol: int32): LRESULT =
-  result = SendMessage(hwnd, LVM_GETCOLUMNWIDTH, WPARAM(iCol), 0)
-
-proc ListView_GetCountPerPage(hwndLV: HWND): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETCOUNTPERPAGE, 0, 0)
-
-proc ListView_GetEditControl(hwndLV: HWND): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETEDITCONTROL, 0, 0)
-
-proc ListView_GetImageList(hwnd: HWND, iImageList: wINT): LRESULT =
-  result = SendMessage(hwnd, LVM_GETIMAGELIST, WPARAM(iImageList), 0)
-
-proc ListView_GetISearchString(hwndLV: HWND, lpsz: LPTSTR): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))
-
-proc ListView_GetItem(hwnd: HWND, item: var LV_ITEM): LRESULT =
-  result = SendMessage(hwnd, LVM_GETITEM, 0, cast[LPARAM](addr(item)))
-
-proc ListView_GetItemCount(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0)
-
-proc ListView_GetItemPosition(hwndLV: HWND, i: int32, pt: var POINT): int32 =
-  result = SendMessage(hwndLV, LVM_GETITEMPOSITION, WPARAM(int32(i)),
-                       cast[LPARAM](addr(pt)))
-
-proc ListView_GetItemSpacing(hwndLV: HWND, fSmall: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETITEMSPACING, fSmall, 0)
-
-proc ListView_GetItemState(hwndLV: HWND, i, mask: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETITEMSTATE, WPARAM(i), LPARAM(mask))
-
-proc ListView_GetNextItem(hwnd: HWND, iStart, flags: int32): LRESULT =
-  result = SendMessage(hwnd, LVM_GETNEXTITEM, WPARAM(iStart), LPARAM(flags))
-
-proc ListView_GetOrigin(hwndLV: HWND, pt: var POINT): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETORIGIN, WPARAM(0), cast[LPARAM](addr(pt)))
-
-proc ListView_GetSelectedCount(hwndLV: HWND): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETSELECTEDCOUNT, 0, 0)
-
-proc ListView_GetStringWidth(hwndLV: HWND, psz: LPCTSTR): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, cast[LPARAM](psz))
-
-proc ListView_GetTextBkColor(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0)
-
-proc ListView_GetTextColor(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0)
-
-proc ListView_GetTopIndex(hwndLV: HWND): LRESULT =
-  result = SendMessage(hwndLV, LVM_GETTOPINDEX, 0, 0)
-
-proc ListView_GetViewRect(hwnd: HWND, rc: var RECT): LRESULT =
-  result = SendMessage(hwnd, LVM_GETVIEWRECT, 0, cast[LPARAM](addr(rc)))
-
-proc ListView_HitTest(hwndLV: HWND, info: var LV_HITTESTINFO): LRESULT =
-  result = SendMessage(hwndLV, LVM_HITTEST, 0, cast[LPARAM](addr(info)))
-
-proc ListView_InsertColumn(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT =
-  result = SendMessage(hwnd, LVM_INSERTCOLUMN, WPARAM(iCol), cast[LPARAM](addr(col)))
-
-proc ListView_InsertItem(hwnd: HWND, item: var LV_ITEM): LRESULT =
-  result = SendMessage(hwnd, LVM_INSERTITEM, 0, cast[LPARAM](addr(item)))
-
-proc ListView_RedrawItems(hwndLV: HWND, iFirst, iLast: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_REDRAWITEMS, WPARAM(iFirst), LPARAM(iLast))
-
-proc ListView_Scroll(hwndLV: HWND, dx, dy: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_SCROLL, WPARAM(dx), LPARAM(dy))
-
-proc ListView_SetBkColor(hwnd: HWND, clrBk: COLORREF): LRESULT =
-  result = SendMessage(hwnd, LVM_SETBKCOLOR, 0, LPARAM(clrBk))
-
-proc ListView_SetCallbackMask(hwnd: HWND, mask: UINT): LRESULT =
-  result = SendMessage(hwnd, LVM_SETCALLBACKMASK, WPARAM(mask), 0)
-
-proc ListView_SetColumn(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT =
-  result = SendMessage(hwnd, LVM_SETCOLUMN, WPARAM(iCol), cast[LPARAM](addr(col)))
-
-proc ListView_SetColumnWidth(hwnd: HWND, iCol, cx: int32): LRESULT =
-  result = SendMessage(hwnd, LVM_SETCOLUMNWIDTH, WPARAM(iCol), MAKELPARAM(cx, 0))
-
-proc ListView_SetImageList(hwnd: HWND, himl: int32, iImageList: HIMAGELIST): LRESULT =
-  result = SendMessage(hwnd, LVM_SETIMAGELIST, WPARAM(iImageList),
-                       LPARAM(UINT(himl)))
-
-proc ListView_SetItem(hwnd: HWND, item: var LV_ITEM): LRESULT =
-  result = SendMessage(hwnd, LVM_SETITEM, 0, cast[LPARAM](addr(item)))
-
-proc ListView_SetItemCount(hwndLV: HWND, cItems: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_SETITEMCOUNT, WPARAM(cItems), 0)
-
-proc ListView_SetItemPosition(hwndLV: HWND, i, x, y: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_SETITEMPOSITION, WPARAM(i), MAKELPARAM(x, y))
-
-proc ListView_SetItemPosition32(hwndLV: HWND, i, x, y: int32): LRESULT =
-  var ptNewPos: POINT
-  ptNewPos.x = x
-  ptNewPos.y = y
-  result = SendMessage(hwndLV, LVM_SETITEMPOSITION32, WPARAM(i),
-                       cast[LPARAM](addr(ptNewPos)))
-
-proc ListView_SetItemState(hwndLV: HWND, i, data, mask: int32): LRESULT =
-  var gnu_lvi: LV_ITEM
-  gnu_lvi.stateMask = mask
-  gnu_lvi.state = data
-  result = SendMessage(hwndLV, LVM_SETITEMSTATE, WPARAM(i),
-                       cast[LPARAM](addr(gnu_lvi)))
-
-proc ListView_SetItemText(hwndLV: HWND, i, iSubItem: int32, 
-                          pszText: LPTSTR): LRESULT =
-  var gnu_lvi: LV_ITEM
-  gnu_lvi.iSubItem = iSubItem
-  gnu_lvi.pszText = pszText
-  result = SendMessage(hwndLV, LVM_SETITEMTEXT, WPARAM(i),
-                       cast[LPARAM](addr(gnu_lvi)))
-
-proc ListView_SetTextBkColor(hwnd: HWND, clrTextBk: COLORREF): LRESULT =
-  result = SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, LPARAM(clrTextBk))
-
-proc ListView_SetTextColor(hwnd: HWND, clrText: COLORREF): LRESULT =
-  result = SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, LPARAM(clrText))
-
-proc ListView_SortItems(hwndLV: HWND, pfnCompare: PFNLVCOMPARE, 
-                        lPrm: LPARAM): LRESULT =
-  result = SendMessage(hwndLV, LVM_SORTITEMS, WPARAM(lPrm), 
-                       cast[LPARAM](pfnCompare))
-
-proc ListView_Update(hwndLV: HWND, i: int32): LRESULT =
-  result = SendMessage(hwndLV, LVM_UPDATE, WPARAM(i), 0)
-
-proc TreeView_InsertItem(hwnd: HWND, lpis: LPTV_INSERTSTRUCT): LRESULT =
-  result = SendMessage(hwnd, TVM_INSERTITEM, 0, cast[LPARAM](lpis))
-
-proc TreeView_DeleteItem(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](hitem))
-
-proc TreeView_DeleteAllItems(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](TVI_ROOT))
-
-proc TreeView_Expand(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_EXPAND, WPARAM(code), cast[LPARAM](hitem))
-
-proc TreeView_GetCount(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TVM_GETCOUNT, 0, 0)
-
-proc TreeView_GetIndent(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TVM_GETINDENT, 0, 0)
-
-proc TreeView_SetIndent(hwnd: HWND, indent: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_SETINDENT, WPARAM(indent), 0)
-
-proc TreeView_GetImageList(hwnd: HWND, iImage: WPARAM): LRESULT =
-  result = SendMessage(hwnd, TVM_GETIMAGELIST, iImage, 0)
-
-proc TreeView_SetImageList(hwnd: HWND, himl: HIMAGELIST, iImage: WPARAM): LRESULT =
-  result = SendMessage(hwnd, TVM_SETIMAGELIST, iImage, LPARAM(UINT(himl)))
-
-proc TreeView_GetNextItem(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_GETNEXTITEM, WPARAM(code), cast[LPARAM](hitem))
-
-proc TreeView_GetChild(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
-
-proc TreeView_GetNextSibling(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
-
-proc TreeView_GetPrevSibling(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
-
-proc TreeView_GetParent(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
-
-proc TreeView_GetFirstVisible(hwnd: HWND): LRESULT =
-  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_FIRSTVISIBLE)
-
-proc TreeView_GetNextVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
-
-proc TreeView_GetPrevVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
-
-proc TreeView_GetSelection(hwnd: HWND): LRESULT =
-  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_CARET)
-
-proc TreeView_GetDropHilight(hwnd: HWND): LRESULT =
-  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_DROPHILITE)
-
-proc TreeView_GetRoot(hwnd: HWND): LRESULT =
-  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_ROOT)
-
-proc TreeView_Select(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_SELECTITEM, WPARAM(code), cast[LPARAM](hitem))
-
-proc TreeView_SelectItem(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_Select(hwnd, hitem, TVGN_CARET)
-
-proc TreeView_SelectDropTarget(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
-
-proc TreeView_SelectSetFirstVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
-
-proc TreeView_GetItem(hwnd: HWND, item: var TV_ITEM): LRESULT =
-  result = SendMessage(hwnd, TVM_GETITEM, 0, cast[LPARAM](addr(item)))
-
-proc TreeView_SetItem(hwnd: HWND, item: var TV_ITEM): LRESULT =
-  result = SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](addr(item)))
-
-proc TreeView_EditLabel(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  Result = SendMessage(hwnd, TVM_EDITLABEL, 0, cast[LPARAM](hitem))
-
-proc TreeView_GetEditControl(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0)
-
-proc TreeView_GetVisibleCount(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0)
-
-proc TreeView_HitTest(hwnd: HWND, lpht: LPTV_HITTESTINFO): LRESULT =
-  result = SendMessage(hwnd, TVM_HITTEST, 0, cast[LPARAM](lpht))
-
-proc TreeView_CreateDragImage(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0, cast[LPARAM](hitem))
-
-proc TreeView_SortChildren(hwnd: HWND, hitem: HTREEITEM, recurse: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_SORTCHILDREN, WPARAM(recurse), cast[LPARAM](hitem))
-
-proc TreeView_EnsureVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =
-  result = SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, cast[LPARAM](hitem))
-
-proc TreeView_SortChildrenCB(hwnd: HWND, psort: LPTV_SORTCB, recurse: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_SORTCHILDRENCB, WPARAM(recurse), cast[LPARAM](psort))
-
-proc TreeView_EndEditLabelNow(hwnd: HWND, fCancel: int32): LRESULT =
-  result = SendMessage(hwnd, TVM_ENDEDITLABELNOW, WPARAM(fCancel), 0)
-
-proc TreeView_GetISearchString(hwndTV: HWND, lpsz: LPTSTR): LRESULT =
-  result = SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))
-
-proc TabCtrl_GetImageList(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_GETIMAGELIST, 0, 0)
-
-proc TabCtrl_SetImageList(hwnd: HWND, himl: HIMAGELIST): LRESULT =
-  result = SendMessage(hwnd, TCM_SETIMAGELIST, 0, LPARAM(UINT(himl)))
-
-proc TabCtrl_GetItemCount(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_GETITEMCOUNT, 0, 0)
-
-proc TabCtrl_GetItem(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT =
-  result = SendMessage(hwnd, TCM_GETITEM, WPARAM(iItem), cast[LPARAM](addr(item)))
-
-proc TabCtrl_SetItem(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT =
-  result = SendMessage(hwnd, TCM_SETITEM, WPARAM(iItem), cast[LPARAM](addr(item)))
-
-proc TabCtrl_InsertItem(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT =
-  result = SendMessage(hwnd, TCM_INSERTITEM, WPARAM(iItem), cast[LPARAM](addr(item)))
-
-proc TabCtrl_DeleteItem(hwnd: HWND, i: int32): LRESULT =
-  result = SendMessage(hwnd, TCM_DELETEITEM, WPARAM(i), 0)
-
-proc TabCtrl_DeleteAllItems(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_DELETEALLITEMS, 0, 0)
-
-proc TabCtrl_GetItemRect(hwnd: HWND, i: int32, rc: var RECT): LRESULT =
-  result = SendMessage(hwnd, TCM_GETITEMRECT, WPARAM(int32(i)), cast[LPARAM](addr(rc)))
-
-proc TabCtrl_GetCurSel(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_GETCURSEL, 0, 0)
-
-proc TabCtrl_SetCurSel(hwnd: HWND, i: int32): LRESULT =
-  result = SendMessage(hwnd, TCM_SETCURSEL, WPARAM(i), 0)
-
-proc TabCtrl_HitTest(hwndTC: HWND, info: var TC_HITTESTINFO): LRESULT =
-  result = SendMessage(hwndTC, TCM_HITTEST, 0, cast[LPARAM](addr(info)))
-
-proc TabCtrl_SetItemExtra(hwndTC: HWND, cb: int32): LRESULT =
-  result = SendMessage(hwndTC, TCM_SETITEMEXTRA, WPARAM(cb), 0)
-
-proc TabCtrl_AdjustRect(hwnd: HWND, bLarger: WINBOOL, rc: var RECT): LRESULT =
-  result = SendMessage(hwnd, TCM_ADJUSTRECT, WPARAM(bLarger), cast[LPARAM](addr(rc)))
-
-proc TabCtrl_SetItemSize(hwnd: HWND, x, y: int32): LRESULT =
-  result = SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y))
-
-proc TabCtrl_RemoveImage(hwnd: HWND, i: WPARAM): LRESULT =
-  result = SendMessage(hwnd, TCM_REMOVEIMAGE, i, 0)
-
-proc TabCtrl_SetPadding(hwnd: HWND, cx, cy: int32): LRESULT =
-  result = SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
-
-proc TabCtrl_GetRowCount(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0)
-
-proc TabCtrl_GetToolTips(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_GETTOOLTIPS, 0, 0)
-
-proc TabCtrl_SetToolTips(hwnd: HWND, hwndTT: int32): LRESULT =
-  result = SendMessage(hwnd, TCM_SETTOOLTIPS, WPARAM(hwndTT), 0)
-
-proc TabCtrl_GetCurFocus(hwnd: HWND): LRESULT =
-  result = SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0)
-
-proc TabCtrl_SetCurFocus(hwnd: HWND, i: int32): LRESULT =
-  result = SendMessage(hwnd, TCM_SETCURFOCUS, i, 0)
-
-proc SNDMSG(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT =
-  result = SendMessage(hWnd, Msg, wParam, lParam)
-
-proc CommDlg_OpenSave_GetSpecA(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))
-
-proc CommDlg_OpenSave_GetSpecW(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))
-
-when not(defined(winUnicode)):
-  proc CommDlg_OpenSave_GetSpec(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =
-    result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))
-
-else:
-  proc CommDlg_OpenSave_GetSpec(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =
-    result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))
-
-proc CommDlg_OpenSave_GetFilePathA(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-proc CommDlg_OpenSave_GetFilePathW(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-when not(defined(winUnicode)):
-  proc CommDlg_OpenSave_GetFilePath(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =
-    result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-else:
-  proc CommDlg_OpenSave_GetFilePath(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =
-    result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-proc CommDlg_OpenSave_GetFolderPathA(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-proc CommDlg_OpenSave_GetFolderPathW(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-when not(defined(winUnicode)):
-  proc CommDlg_OpenSave_GetFolderPath(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =
-    result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM](psz))
-
-else:
-  proc CommDlg_OpenSave_GetFolderPath(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =
-    result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM]((psz)))
-
-proc CommDlg_OpenSave_GetFolderIDList(hdlg: HWND, pidl: LPVOID, cbmax: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_GETFOLDERIDLIST, WPARAM(cbmax), cast[LPARAM](pidl))
-
-proc CommDlg_OpenSave_SetControlText(hdlg: HWND, id: int32, text: LPSTR): LRESULT =
-  result = SNDMSG(hdlg, CDM_SETCONTROLTEXT, WPARAM(id), cast[LPARAM](text))
-
-proc CommDlg_OpenSave_HideControl(hdlg: HWND, id: int32): LRESULT =
-  result = SNDMSG(hdlg, CDM_HIDECONTROL, WPARAM(id), 0)
-
-proc CommDlg_OpenSave_SetDefExt(hdlg: HWND, pszext: LPSTR): LRESULT =
-  result = SNDMSG(hdlg, CDM_SETDEFEXT, 0, cast[LPARAM](pszext))
-
-proc InternalGetLargestConsoleWindowSize(hConsoleOutput: HANDLE): DWord{.
-    stdcall, dynlib: "kernel32", importc: "GetLargestConsoleWindowSize".}
-proc GetLargestConsoleWindowSize(hConsoleOutput: HANDLE): COORD =
-  var res: dword
-  res = InternalGetLargestConsoleWindowSize(hConsoleOutput)
-  result.y = toU16(res and 0x0000ffff) # XXX: correct?
-  result.x = toU16(res shr 16)
-
-proc Succeeded(Status: HRESULT): WINBOOL =
-  result = (Status and 0x80000000'i32)
-
-proc Failed(Status: HRESULT): WINBOOL =
-  result = (Status and 0x80000000'i32)
-
-proc IsError(Status: HRESULT): WINBOOL =
-  result = ord((int(Status) shr 31) == SEVERITY_ERROR)
-
-proc HResultCode(hr: HRESULT): int32 =
-  result = hr and 0x0000FFFF'i32
-
-proc HResultFacility(hr: HRESULT): int32 =
-  result = (hr shr 16'i32) and 0x00001FFF'i32
-
-proc HResultSeverity(hr: HRESULT): int32 =
-  result = (hr shr 31'i32) and 0x00000001'i32
-
-proc MakeResult(p1, p2, mask: int32): HRESULT =
-  result = (p1 shl 31'i32) or (p2 shl 16'i32) or mask
-
-proc HResultFromWin32(x: int32): HRESULT =
-  result = x
-  if result != 0'i32:
-    result = ((result and 0x0000FFFF'i32) or (int32(FACILITY_WIN32) shl 16'i32) or
-        0x80000000'i32)
-
-proc HResultFromNT(x: int32): HRESULT =
-  result = x or int32(FACILITY_NT_BIT)
-
-proc MAKELANGID(PrimaryLang, SubLang: USHORT): int16 =
-  result = (SubLang shl 10'i16) or PrimaryLang
-
-proc PRIMARYLANGID(LangId: int16): int16 =
-  result = LangId and 0x000003FF'i16
-
-proc SUBLANGID(LangId: int16): int16 =
-  result = LangId shr 10'i16
-
-proc MAKELCID(LangId, SortId: int16): DWORD =
-  result = toU32((ze(SortId) shl 16) or ze(LangId))
-
-proc MAKESORTLCID(LangId, SortId, SortVersion: int16): DWORD =
-  result = MAKELCID(LangId, SortId) or int(SortVersion shl 20'i32)
-
-proc LANGIDFROMLCID(LocaleId: LCID): int16 =
-  result = toU16(LocaleId)
-
-proc SORTIDFROMLCID(LocaleId: LCID): int16 =
-  result = toU16((DWORD(LocaleId) shr 16) and 0x0000000F)
-
-proc SORTVERSIONFROMLCID(LocaleId: LCID): int16 =
-  result = toU16((DWORD(LocaleId) shr 20) and 0x0000000F)
-
-proc LANG_SYSTEM_DEFAULT(): int16 =
-  result = toU16(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_SYS_DEFAULT))
-
-proc LANG_USER_DEFAULT(): int16 =
-  result = toU16(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_DEFAULT))
-
-proc LOCALE_NEUTRAL(): DWORD =
-  result = MAKELCID(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_NEUTRAL), SORT_DEFAULT)
-
-proc LOCALE_INVARIANT(): DWORD =
-  result = MAKELCID(MAKELANGID(toU16(LANG_INVARIANT), SUBLANG_NEUTRAL), SORT_DEFAULT)
+#

+#

+#            Nimrod's Runtime Library

+#        (c) Copyright 2010 Andreas Rumpf

+#

+#    See the file "copying.txt", included in this

+#    distribution, for details about the copyright.

+#

+

+## Define ``winUnicode`` before importing this module for the

+## Unicode version.

+

+{.deadCodeElim: on.}

+

+type

+  WideChar* = int16

+  PWideChar* = ptr int16

+

+type  # WinNT.h -- Defines the 32-Bit Windows types and constants

+  CHAR* = int8

+  SHORT* = int16

+  LONG* = int

+  # UNICODE (Wide Character) types

+  PWCHAR* = PWideChar

+  LPWCH* = PWideChar

+  PWCH* = PWideChar

+  LPCWCH* = PWideChar

+  PCWCH* = PWideChar

+  NWPSTR* = PWideChar

+  LPWSTR* = PWideChar

+  LPCWSTR* = PWideChar

+  PCWSTR* = PWideChar

+  # ANSI (Multi-byte Character) types

+  LPCH* = cstring

+  PCH* = cstring

+  LPCCH* = cstring

+  PCCH* = cstring

+  LPSTR* = cstring

+  PSTR* = cstring

+  LPCSTR* = cstring

+  PCSTR* = cstring

+

+type  # BaseTsd.h -- Type definitions for the basic sized types

+      # Give here only the bare minimum, to be expanded as needs arise

+  UINT8* = int8

+  UINT16* = int16

+  UINT32* = int32

+  UINT64* = int64

+  LONG32* = int32

+  ULONG32* = int32

+  DWORD32* = int32

+  LONG64* = int64

+  ULONG64* = int64

+  DWORD64* = int64

+  PDWORD64* = ptr DWORD64

+  # int32 on Win32, int64 on Win64

+  INT_PTR* = TAddress

+  UINT_PTR* = TAddress

+  LONG_PTR* = TAddress

+  ULONG_PTR* = TAddress

+  SIZE_T* = TAddress

+  SSIZE_T* = TAddress

+  DWORD_PTR* = TAddress

+  # Thread affinity

+  KAFFINITY* = TAddress

+  PKAFFINITY* = ptr KAFFINITY

+

+type  # WinDef.h -- Basic Windows Type Definitions

+  # BaseTypes

+  ULONG* = int

+  PULONG* = ptr int

+  USHORT* = int16

+  PUSHORT* = ptr int16

+  UCHAR* = int8

+  PUCHAR* = ptr int8

+  PSZ* = cstring

+

+  DWORD* = int32

+  WINBOOL* = int32

+  BYTE* = char

+  WORD* = int16

+  # FLOAT* = float

+  PFLOAT* = ptr FLOAT

+  PWINBOOL* = ptr WINBOOL

+  LPWINBOOL* = ptr WINBOOL

+  PBYTE* = ptr int8

+  LPBYTE* = ptr int8

+  PINT* = ptr int32

+  LPINT* = ptr int32

+  PWORD* = ptr int16

+  LPWORD* = ptr int16

+  LPLONG* = ptr int32

+  PDWORD* = ptr DWORD

+  LPDWORD* = ptr DWORD

+  LPVOID* = pointer

+  LPCVOID* = pointer

+

+  # INT* = int  # Cannot work and not necessary anyway

+  UINT* = int

+  PUINT* = ptr int

+

+  WPARAM* = LONG_PTR

+  LPARAM* = LONG_PTR

+  LRESULT* = LONG_PTR

+

+  ATOM* = int16

+  TAtom* = ATOM

+  HANDLE* = int

+  THandle* = HANDLE

+  PHANDLE* = ptr HANDLE

+  LPHANDLE* = ptr HANDLE

+  HWND* = HANDLE

+  HHOOK* = HANDLE

+  HEVENT* = HANDLE

+  HGLOBAL* = HANDLE

+  HLOCAL* = HANDLE

+  HGDIOBJ* = HANDLE

+  HKEY* = HANDLE

+  PHKEY* = ptr HKEY

+  HACCEL* = HANDLE

+  HBITMAP* = HANDLE

+  HBRUSH* = HANDLE

+  HCOLORSPACE* = HANDLE

+  HDC* = HANDLE

+  HGLRC* = HANDLE

+  HDESK* = HANDLE

+  HENHMETAFILE* = HANDLE

+  HFONT* = HANDLE

+  HICON* = HANDLE

+  HMETAFILE* = HANDLE

+  HINST* = HANDLE  # Not HINSTANCE, else it has problems with the var HInstance

+  HMODULE* = HANDLE

+  HPALETTE* = HANDLE

+  HPEN* = HANDLE

+  HRGN* = HANDLE

+  HRSRC* = HANDLE

+  HTASK* = HANDLE

+  HWINSTA* = HANDLE

+  HKL* = HANDLE

+  HMONITOR* = HANDLE

+  HWINEVENTHOOK* = HANDLE

+  HUMPD* = HANDLE

+

+  HFILE* = HANDLE

+  HCURSOR* = HANDLE # = HICON

+  COLORREF* = int

+  LPCOLORREF* = ptr COLORREF

+

+  POINT* {.final, pure.} = object

+    x*: LONG

+    y*: LONG

+  PPOINT* = ptr POINT

+  LPPOINT* = ptr POINT

+  POINTL* {.final, pure.} = object

+    x*: LONG

+    y*: LONG

+  PPOINTL* = ptr POINTL

+

+  TPOINT* = POINT

+  TPOINTL* = POINTL

+

+  RECT* {.final, pure.} = object

+    TopLeft*, BottomRight*: TPoint

+  PRECT* = ptr RECT

+  LPRECT* = ptr RECT

+

+  RECTL* {.final, pure.} = object

+    left*: LONG

+    top*: LONG

+    right*: LONG

+    bottom*: LONG

+  PRECTL* = ptr RECTL

+

+  SIZE* {.final, pure.} = object

+    cx*: LONG

+    cy*: LONG

+  PSIZE* = ptr SIZE

+  LPSIZE* = ptr SIZE

+  SIZEL* = SIZE

+  PSIZEL* = ptr SIZE

+  LPSIZEL* = ptr SIZE

+

+  POINTS* {.final, pure.} = object

+    x*: SHORT

+    y*: SHORT

+  PPOINTS* = ptr POINTS

+

+  TRECT* = RECT

+  TRECTL* = RECTL

+  TSIZE* = SIZE

+  TSIZEL* = SIZE

+  TPOINTS* = POINTS

+

+  FILETIME* {.final, pure.} = object

+    dwLowDateTime*: DWORD

+    dwHighDateTime*: DWORD

+  PFILETIME* = ptr FILETIME

+  LPFILETIME* = ptr FILETIME

+

+  TFILETIME* = FILETIME

+

+const

+  MAX_PATH* = 260

+  HFILE_ERROR* = HFILE(-1)

+

+  # mode selections for the device mode function

+  # DocumentProperties

+  DM_UPDATE* = 1

+  DM_COPY* = 2

+  DM_PROMPT* = 4

+  DM_MODIFY* = 8

+

+  DM_IN_BUFFER* = DM_MODIFY

+  DM_IN_PROMPT* = DM_PROMPT

+  DM_OUT_BUFFER* = DM_COPY

+  DM_OUT_DEFAULT* = DM_UPDATE

+

+  # device capabilities indices

+  DC_FIELDS* = 1

+  DC_PAPERS* = 2

+  DC_PAPERSIZE* = 3

+  DC_MINEXTENT* = 4

+  DC_MAXEXTENT* = 5

+  DC_BINS* = 6

+  DC_DUPLEX* = 7

+  DC_SIZE* = 8

+  DC_EXTRA* = 9

+  DC_VERSION* = 10

+  DC_DRIVER* = 11

+  DC_BINNAMES* = 12

+  DC_ENUMRESOLUTIONS* = 13

+  DC_FILEDEPENDENCIES* = 14

+  DC_TRUETYPE* = 15

+  DC_PAPERNAMES* = 16

+  DC_ORIENTATION* = 17

+  DC_COPIES* = 18

+

+  DC_BINADJUST* = 19

+  DC_EMF_COMPLIANT* = 20

+  DC_DATATYPE_PRODUCED* = 21

+

+type

+  WORDBOOL* = int16  # XXX: not a bool

+  CALTYPE* = int

+  CALID* = int

+  CCHAR* = char

+  TCOLORREF* = int

+  WINT* = int32

+  PINTEGER* = ptr int32

+  PBOOL* = ptr WINBOOL

+  LONGLONG* = int64

+  PLONGLONG* = ptr LONGLONG

+  LPLONGLONG* = ptr LONGLONG

+  ULONGLONG* = int64          # used in AMD64 CONTEXT

+  PULONGLONG* = ptr ULONGLONG #

+  DWORDLONG* = int64          # was unsigned long

+  PDWORDLONG* = ptr DWORDLONG

+  HRESULT* = int

+  PHRESULT* = ptr HRESULT

+  HCONV* = HANDLE

+  HCONVLIST* = HANDLE

+  HDBC* = HANDLE

+  HDDEDATA* = HANDLE

+  HDROP* = HANDLE

+  HDWP* = HANDLE

+  HENV* = HANDLE

+  HIMAGELIST* = HANDLE

+  HMENU* = HANDLE

+  HRASCONN* = HANDLE

+  HSTMT* = HANDLE

+  HSTR* = HANDLE

+  HSZ* = HANDLE

+  LANGID* = int16

+  LCID* = DWORD

+  LCTYPE* = DWORD

+  LP* = ptr int16

+  LPBOOL* = ptr WINBOOL

+

+when defined(winUnicode):

+  type

+    LPCTSTR* = PWideChar

+else:

+  type

+    LPCTSTR* = cstring

+type

+  LPPCSTR* = ptr LPCSTR

+  LPPCTSTR* = ptr LPCTSTR

+  LPPCWSTR* = ptr LPCWSTR

+

+when defined(winUnicode):

+  type

+    LPTCH* = PWideChar

+    LPTSTR* = PWideChar

+else:

+  type

+    LPTCH* = cstring

+    LPTSTR* = cstring

+type

+  PBOOLEAN* = ptr int8

+  PLONG* = ptr int32

+  PSHORT* = ptr SHORT

+

+when defined(winUnicode):

+  type

+    PTBYTE* = ptr int16

+    PTCH* = PWideChar

+    PTCHAR* = PWideChar

+    PTSTR* = PWideChar

+else:

+  type

+    PTBYTE* = ptr int8

+    PTCH* = cstring

+    PTCHAR* = cstring

+    PTSTR* = cstring

+type

+  PVOID* = pointer

+  RETCODE* = SHORT

+  SC_HANDLE* = HANDLE

+  SC_LOCK* = LPVOID

+  LPSC_HANDLE* = ptr SC_HANDLE

+  SERVICE_STATUS_HANDLE* = DWORD

+

+when defined(winUnicode):

+  type

+    TBYTE* = int16

+    TCHAR* = widechar

+    BCHAR* = int16

+else:

+  type

+    TBYTE* = int8

+    TCHAR* = char

+    BCHAR* = int8

+type

+  WCHAR* = WideChar

+  PLPSTR* = ptr LPSTR

+  PLPWStr* = ptr LPWStr

+  ACL_INFORMATION_CLASS* = enum

+    AclRevisionInformation = 1, AclSizeInformation

+  MEDIA_TYPE* = enum

+    Unknown, F5_1Pt2_512, F3_1Pt44_512, F3_2Pt88_512, F3_20Pt8_512, F3_720_512,

+    F5_360_512, F5_320_512, F5_320_1024, F5_180_512, F5_160_512, RemovableMedia,

+    FixedMedia

+

+const

+  RASCS_DONE* = 0x00002000

+  RASCS_PAUSED* = 0x00001000

+

+type

+  RASCONNSTATE* = enum

+    RASCS_OpenPort = 0, RASCS_PortOpened, RASCS_ConnectDevice,

+    RASCS_DeviceConnected, RASCS_AllDevicesConnected, RASCS_Authenticate,

+    RASCS_AuthNotify, RASCS_AuthRetry, RASCS_AuthCallback,

+    RASCS_AuthChangePassword, RASCS_AuthProject, RASCS_AuthLinkSpeed,

+    RASCS_AuthAck, RASCS_ReAuthenticate, RASCS_Authenticated,

+    RASCS_PrepareForCallback, RASCS_WaitForModemReset, RASCS_WaitForCallback,

+    RASCS_Projected, RASCS_StartAuthentication, RASCS_CallbackComplete,

+    RASCS_LogonNetwork, RASCS_Interactive = RASCS_PAUSED,

+    RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired,

+    RASCS_Connected = RASCS_DONE, RASCS_Disconnected

+  RASPROJECTION* = enum

+    RASP_PppIp = 0x00008021, RASP_PppIpx = 0x0000802B, RASP_PppNbf = 0x0000803F,

+    RASP_Amb = 0x00010000

+  SECURITY_IMPERSONATION_LEVEL* = enum

+    SecurityAnonymous, SecurityIdentification, SecurityImpersonation,

+    SecurityDelegation

+  SID_NAME_USE* = enum

+    SidTypeUser = 1, SidTypeGroup, SidTypeDomain, SidTypeAlias,

+    SidTypeWellKnownGroup, SidTypeDeletedAccount, SidTypeInvalid, SidTypeUnknown

+  PSID_NAME_USE* = ptr SID_NAME_USE

+  TOKEN_INFORMATION_CLASS* = enum

+    TokenUser = 1, TokenGroups, TokenPrivileges, TokenOwner, TokenPrimaryGroup,

+    TokenDefaultDacl, TokenSource, TokenType, TokenImpersonationLevel,

+    TokenStatistics

+  TTOKEN_TYPE* = enum

+    TokenPrimary = 1, TokenImpersonation

+  MakeIntResourceA* = cstring

+  MakeIntResourceW* = PWideChar

+  MakeIntResource* = MakeIntResourceA

+

+  #

+  #    Definitions for callback procedures

+  #

+type

+  BFFCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPARAM, para4: LPARAM): int32{.

+      stdcall.}

+  LPCCHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.

+      stdcall.}

+  LPCFHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.

+      stdcall.}

+  PTHREAD_START_ROUTINE* = Pointer

+  LPTHREAD_START_ROUTINE* = PTHREAD_START_ROUTINE

+  EDITSTREAMCALLBACK* = proc (para1: DWORD, para2: LPBYTE, para3: LONG,

+                              para4: LONG): DWORD{.stdcall.}

+  LPFRHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.

+      stdcall.}

+  LPOFNHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): UINT{.

+      stdcall.}

+  LPPRINTHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM,

+                           para4: LPARAM): UINT{.stdcall.}

+  LPSETUPHOOKPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM,

+                           para4: LPARAM): UINT{.stdcall.}

+  DLGPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): LRESULT{.

+      stdcall.}

+  PFNPROPSHEETCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPARAM): int32{.

+      stdcall.}

+  LPSERVICE_MAIN_FUNCTION* = proc (para1: DWORD, para2: LPTSTR){.stdcall.}

+  PFNTVCOMPARE* = proc (para1: LPARAM, para2: LPARAM, para3: LPARAM): int32{.

+      stdcall.}

+  WNDPROC* = proc (para1: HWND, para2: UINT, para3: WPARAM, para4: LPARAM): LRESULT{.

+      stdcall.}

+  FARPROC* = pointer

+  TFarProc* = FARPROC

+  TProc* = pointer

+  ENUMRESTYPEPROC* = proc (para1: HANDLE, para2: LPTSTR, para3: LONG): WINBOOL{.

+      stdcall.}

+  ENUMRESNAMEPROC* = proc (para1: HANDLE, para2: LPCTSTR, para3: LPTSTR,

+                           para4: LONG): WINBOOL{.stdcall.}

+  ENUMRESLANGPROC* = proc (para1: HANDLE, para2: LPCTSTR, para3: LPCTSTR,

+                           para4: int16, para5: LONG): WINBOOL{.stdcall.}

+  DESKTOPENUMPROC* = FARPROC

+  ENUMWINDOWSPROC* = proc (para1: HWND, para2: LPARAM): WINBOOL{.stdcall.}

+  ENUMWINDOWSTATIONPROC* = proc (para1: LPTSTR, para2: LPARAM): WINBOOL{.stdcall.}

+  SENDASYNCPROC* = proc (para1: HWND, para2: UINT, para3: DWORD, para4: LRESULT){.

+      stdcall.}

+  TIMERPROC* = proc (para1: HWND, para2: UINT, para3: UINT, para4: DWORD){.

+      stdcall.}

+  GRAYSTRINGPROC* = FARPROC

+  DRAWSTATEPROC* = proc (para1: HDC, para2: LPARAM, para3: WPARAM, para4: int32,

+                         para5: int32): WINBOOL{.stdcall.}

+  PROPENUMPROCEX* = proc (para1: HWND, para2: LPCTSTR, para3: HANDLE,

+                          para4: DWORD): WINBOOL{.stdcall.}

+  PROPENUMPROC* = proc (para1: HWND, para2: LPCTSTR, para3: HANDLE): WINBOOL{.

+      stdcall.}

+  HOOKPROC* = proc (para1: int32, para2: WPARAM, para3: LPARAM): LRESULT{.

+      stdcall.}

+  ENUMOBJECTSPROC* = proc (para1: LPVOID, para2: LPARAM){.stdcall.}

+  LINEDDAPROC* = proc (para1: int32, para2: int32, para3: LPARAM){.stdcall.}

+  TABORTPROC* = proc (para1: HDC, para2: int32): WINBOOL{.stdcall.}

+  LPPAGEPAINTHOOK* = proc (para1: HWND, para2: UINT, para3: WPARAM,

+                           para4: LPARAM): UINT{.stdcall.}

+  LPPAGESETUPHOOK* = proc (para1: HWND, para2: UINT, para3: WPARAM,

+                           para4: LPARAM): UINT{.stdcall.}

+  ICMENUMPROC* = proc (para1: LPTSTR, para2: LPARAM): int32{.stdcall.}

+  EDITWORDBREAKPROCEX* = proc (para1: cstring, para2: LONG, para3: int8,

+                               para4: WINT): LONG{.stdcall.}

+  PFNLVCOMPARE* = proc (para1: LPARAM, para2: LPARAM, para3: LPARAM): int32{.

+      stdcall.}

+  LOCALE_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}

+  CODEPAGE_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}

+  DATEFMT_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}

+  TIMEFMT_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}

+  CALINFO_ENUMPROC* = proc (para1: LPTSTR): WINBOOL{.stdcall.}

+  PHANDLER_ROUTINE* = proc (para1: DWORD): WINBOOL{.stdcall.}

+  LPHANDLER_FUNCTION* = proc (para1: DWORD): WINBOOL{.stdcall.}

+  PFNGETPROFILEPATH* = proc (para1: LPCTSTR, para2: LPSTR, para3: UINT): UINT{.

+      stdcall.}

+  PFNRECONCILEPROFILE* = proc (para1: LPCTSTR, para2: LPCTSTR, para3: DWORD): UINT{.

+      stdcall.}

+  PFNPROCESSPOLICIES* = proc (para1: HWND, para2: LPCTSTR, para3: LPCTSTR,

+                              para4: LPCTSTR, para5: DWORD): WINBOOL{.stdcall.}

+  #Not convertable by H2PAS

+                                                                                #  #define SECURITY_NULL_SID_AUTHORITY     {0,0,0,0,0,0}

+                                                                                #  #define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}

+                                                                                #  #define SECURITY_LOCAL_SID_AUTHORITY    {0,0,0,0,0,2}

+                                                                                #  #define SECURITY_CREATOR_SID_AUTHORITY  {0,0,0,0,0,3}

+                                                                                #  #define SECURITY_NON_UNIQUE_AUTHORITY   {0,0,0,0,0,4}

+                                                                                #  #define SECURITY_NT_AUTHORITY           {0,0,0,0,0,5}

+                                                                                #

+

+const

+  SE_CREATE_TOKEN_NAME* = "SeCreateTokenPrivilege"

+  SE_ASSIGNPRIMARYTOKEN_NAME* = "SeAssignPrimaryTokenPrivilege"

+  SE_LOCK_MEMORY_NAME* = "SeLockMemoryPrivilege"

+  SE_INCREASE_QUOTA_NAME* = "SeIncreaseQuotaPrivilege"

+  SE_UNSOLICITED_INPUT_NAME* = "SeUnsolicitedInputPrivilege"

+  SE_MACHINE_ACCOUNT_NAME* = "SeMachineAccountPrivilege"

+  SE_TCB_NAME* = "SeTcbPrivilege"

+  SE_SECURITY_NAME* = "SeSecurityPrivilege"

+  SE_TAKE_OWNERSHIP_NAME* = "SeTakeOwnershipPrivilege"

+  SE_LOAD_DRIVER_NAME* = "SeLoadDriverPrivilege"

+  SE_SYSTEM_PROFILE_NAME* = "SeSystemProfilePrivilege"

+  SE_SYSTEMTIME_NAME* = "SeSystemtimePrivilege"

+  SE_PROF_SINGLE_PROCESS_NAME* = "SeProfileSingleProcessPrivilege"

+  SE_INC_BASE_PRIORITY_NAME* = "SeIncreaseBasePriorityPrivilege"

+  SE_CREATE_PAGEFILE_NAME* = "SeCreatePagefilePrivilege"

+  SE_CREATE_PERMANENT_NAME* = "SeCreatePermanentPrivilege"

+  SE_BACKUP_NAME* = "SeBackupPrivilege"

+  SE_RESTORE_NAME* = "SeRestorePrivilege"

+  SE_SHUTDOWN_NAME* = "SeShutdownPrivilege"

+  SE_DEBUG_NAME* = "SeDebugPrivilege"

+  SE_AUDIT_NAME* = "SeAuditPrivilege"

+  SE_SYSTEM_ENVIRONMENT_NAME* = "SeSystemEnvironmentPrivilege"

+  SE_CHANGE_NOTIFY_NAME* = "SeChangeNotifyPrivilege"

+  SE_REMOTE_SHUTDOWN_NAME* = "SeRemoteShutdownPrivilege"

+  SERVICES_ACTIVE_DATABASEW* = "ServicesActive"

+  SERVICES_FAILED_DATABASEW* = "ServicesFailed"

+  SERVICES_ACTIVE_DATABASEA* = "ServicesActive"

+  SERVICES_FAILED_DATABASEA* = "ServicesFailed"

+  SC_GROUP_IDENTIFIERW* = "+"

+  SC_GROUP_IDENTIFIERA* = "+"

+

+when defined(winUnicode):

+  const

+    SERVICES_ACTIVE_DATABASE* = SERVICES_ACTIVE_DATABASEW

+    SERVICES_FAILED_DATABASE* = SERVICES_FAILED_DATABASEW

+    SC_GROUP_IDENTIFIER* = SC_GROUP_IDENTIFIERW

+else:

+  const

+    SERVICES_ACTIVE_DATABASE* = SERVICES_ACTIVE_DATABASEA

+    SERVICES_FAILED_DATABASE* = SERVICES_FAILED_DATABASEA

+    SC_GROUP_IDENTIFIER* = SC_GROUP_IDENTIFIERA

+type

+  PFNCALLBACK* = proc (para1, para2: UINT, para3: HCONV, para4, para5: HSZ,

+                       para6: HDDEDATA, para7, para8: DWORD): HDDEData{.stdcall.}

+  CALLB* = PFNCALLBACK

+  SECURITY_CONTEXT_TRACKING_MODE* = WINBOOL

+  # End of stuff from ddeml.h in old Cygnus headers

+

+  WNDENUMPROC* = FARPROC

+  ENHMFENUMPROC* = FARPROC

+  CCSTYLE* = DWORD

+  PCCSTYLE* = ptr CCSTYLE

+  LPCCSTYLE* = ptr CCSTYLE

+  CCSTYLEFLAGA* = DWORD

+  PCCSTYLEFLAGA* = ptr CCSTYLEFLAGA

+  LPCCSTYLEFLAGA* = ptr CCSTYLEFLAGA

+

+const

+  LZERROR_UNKNOWNALG* = -8

+  LZERROR_BADVALUE* = -7

+  LZERROR_GLOBLOCK* = -6

+  LZERROR_GLOBALLOC* = -5

+  LZERROR_WRITE* = -4

+  LZERROR_READ* = -3

+  LZERROR_BADOUTHANDLE* = -2

+  LZERROR_BADINHANDLE* = -1

+  NO_ERROR* = 0

+  ERROR_SUCCESS* = 0

+  ERROR_INVALID_FUNCTION* = 1

+  ERROR_FILE_NOT_FOUND* = 2

+  ERROR_PATH_NOT_FOUND* = 3

+  ERROR_TOO_MANY_OPEN_FILES* = 4

+  ERROR_ACCESS_DENIED* = 5

+  ERROR_INVALID_HANDLE* = 6

+  ERROR_ARENA_TRASHED* = 7

+  ERROR_NOT_ENOUGH_MEMORY* = 8

+  ERROR_INVALID_BLOCK* = 9

+  ERROR_BAD_ENVIRONMENT* = 10

+  ERROR_BAD_FORMAT* = 11

+  ERROR_INVALID_ACCESS* = 12

+  ERROR_INVALID_DATA* = 13

+  ERROR_OUTOFMEMORY* = 14

+  ERROR_INVALID_DRIVE* = 15

+  ERROR_CURRENT_DIRECTORY* = 16

+  ERROR_NOT_SAME_DEVICE* = 17

+  ERROR_NO_MORE_FILES* = 18

+  ERROR_WRITE_PROTECT* = 19

+  ERROR_BAD_UNIT* = 20

+  ERROR_NOT_READY* = 21

+  ERROR_BAD_COMMAND* = 22

+  ERROR_CRC* = 23

+  ERROR_BAD_LENGTH* = 24

+  ERROR_SEEK* = 25

+  ERROR_NOT_DOS_DISK* = 26

+  ERROR_SECTOR_NOT_FOUND* = 27

+  ERROR_OUT_OF_PAPER* = 28

+  ERROR_WRITE_FAULT* = 29

+  ERROR_READ_FAULT* = 30

+  ERROR_GEN_FAILURE* = 31

+  ERROR_SHARING_VIOLATION* = 32

+  ERROR_LOCK_VIOLATION* = 33

+  ERROR_WRONG_DISK* = 34

+  ERROR_SHARING_BUFFER_EXCEEDED* = 36

+  ERROR_HANDLE_EOF* = 38

+  ERROR_HANDLE_DISK_FULL* = 39

+  ERROR_NOT_SUPPORTED* = 50

+  ERROR_REM_NOT_LIST* = 51

+  ERROR_DUP_NAME* = 52

+  ERROR_BAD_NETPATH* = 53

+  ERROR_NETWORK_BUSY* = 54

+  ERROR_DEV_NOT_EXIST* = 55

+  ERROR_TOO_MANY_CMDS* = 56

+  ERROR_ADAP_HDW_ERR* = 57

+  ERROR_BAD_NET_RESP* = 58

+  ERROR_UNEXP_NET_ERR* = 59

+  ERROR_BAD_REM_ADAP* = 60

+  ERROR_PRINTQ_FULL* = 61

+  ERROR_NO_SPOOL_SPACE* = 62

+  ERROR_PRINT_CANCELLED* = 63

+  ERROR_NETNAME_DELETED* = 64

+  ERROR_NETWORK_ACCESS_DENIED* = 65

+  ERROR_BAD_DEV_TYPE* = 66

+  ERROR_BAD_NET_NAME* = 67

+  ERROR_TOO_MANY_NAMES* = 68

+  ERROR_TOO_MANY_SESS* = 69

+  ERROR_SHARING_PAUSED* = 70

+  ERROR_REQ_NOT_ACCEP* = 71

+  ERROR_REDIR_PAUSED* = 72

+  ERROR_FILE_EXISTS* = 80

+  ERROR_CANNOT_MAKE* = 82

+  ERROR_FAIL_I24* = 83

+  ERROR_OUT_OF_STRUCTURES* = 84

+  ERROR_ALREADY_ASSIGNED* = 85

+  ERROR_INVALID_PASSWORD* = 86

+  ERROR_INVALID_PARAMETER* = 87

+  ERROR_NET_WRITE_FAULT* = 88

+  ERROR_NO_PROC_SLOTS* = 89

+  ERROR_TOO_MANY_SEMAPHORES* = 100

+  ERROR_EXCL_SEM_ALREADY_OWNED* = 101

+  ERROR_SEM_IS_SET* = 102

+  ERROR_TOO_MANY_SEM_REQUESTS* = 103

+  ERROR_INVALID_AT_INTERRUPT_TIME* = 104

+  ERROR_SEM_OWNER_DIED* = 105

+  ERROR_SEM_USER_LIMIT* = 106

+  ERROR_DISK_CHANGE* = 107

+  ERROR_DRIVE_LOCKED* = 108

+  ERROR_BROKEN_PIPE* = 109

+  ERROR_OPEN_FAILED* = 110

+  ERROR_BUFFER_OVERFLOW* = 111

+  ERROR_DISK_FULL* = 112

+  ERROR_NO_MORE_SEARCH_HANDLES* = 113

+  ERROR_INVALID_TARGET_HANDLE* = 114

+  ERROR_INVALID_CATEGORY* = 117

+  ERROR_INVALID_VERIFY_SWITCH* = 118

+  ERROR_BAD_DRIVER_LEVEL* = 119

+  ERROR_CALL_NOT_IMPLEMENTED* = 120

+  ERROR_SEM_TIMEOUT* = 121

+  ERROR_INSUFFICIENT_BUFFER* = 122

+  ERROR_INVALID_NAME* = 123

+  ERROR_INVALID_LEVEL* = 124

+  ERROR_NO_VOLUME_LABEL* = 125

+  ERROR_MOD_NOT_FOUND* = 126

+  ERROR_PROC_NOT_FOUND* = 127

+  ERROR_WAIT_NO_CHILDREN* = 128

+  ERROR_CHILD_NOT_COMPLETE* = 129

+  ERROR_DIRECT_ACCESS_HANDLE* = 130

+  ERROR_NEGATIVE_SEEK* = 131

+  ERROR_SEEK_ON_DEVICE* = 132

+  ERROR_IS_JOIN_TARGET* = 133

+  ERROR_IS_JOINED* = 134

+  ERROR_IS_SUBSTED* = 135

+  ERROR_NOT_JOINED* = 136

+  ERROR_NOT_SUBSTED* = 137

+  ERROR_JOIN_TO_JOIN* = 138

+  ERROR_SUBST_TO_SUBST* = 139

+  ERROR_JOIN_TO_SUBST* = 140

+  ERROR_SUBST_TO_JOIN* = 141

+  ERROR_BUSY_DRIVE* = 142

+  ERROR_SAME_DRIVE* = 143

+  ERROR_DIR_NOT_ROOT* = 144

+  ERROR_DIR_NOT_EMPTY* = 145

+  ERROR_IS_SUBST_PATH* = 146

+  ERROR_IS_JOIN_PATH* = 147

+  ERROR_PATH_BUSY* = 148

+  ERROR_IS_SUBST_TARGET* = 149

+  ERROR_SYSTEM_TRACE* = 150

+  ERROR_INVALID_EVENT_COUNT* = 151

+  ERROR_TOO_MANY_MUXWAITERS* = 152

+  ERROR_INVALID_LIST_FORMAT* = 153

+  ERROR_LABEL_TOO_LONG* = 154

+  ERROR_TOO_MANY_TCBS* = 155

+  ERROR_SIGNAL_REFUSED* = 156

+  ERROR_DISCARDED* = 157

+  ERROR_NOT_LOCKED* = 158

+  ERROR_BAD_THREADID_ADDR* = 159

+  ERROR_BAD_ARGUMENTS* = 160

+  ERROR_BAD_PATHNAME* = 161

+  ERROR_SIGNAL_PENDING* = 162

+  ERROR_MAX_THRDS_REACHED* = 164

+  ERROR_LOCK_FAILED* = 167

+  ERROR_BUSY* = 170

+  ERROR_CANCEL_VIOLATION* = 173

+  ERROR_ATOMIC_LOCKS_NOT_SUPPORTED* = 174

+  ERROR_INVALID_SEGMENT_NUMBER* = 180

+  ERROR_INVALID_ORDINAL* = 182

+  ERROR_ALREADY_EXISTS* = 183

+  ERROR_INVALID_FLAG_NUMBER* = 186

+  ERROR_SEM_NOT_FOUND* = 187

+  ERROR_INVALID_STARTING_CODESEG* = 188

+  ERROR_INVALID_STACKSEG* = 189

+  ERROR_INVALID_MODULETYPE* = 190

+  ERROR_INVALID_EXE_SIGNATURE* = 191

+  ERROR_EXE_MARKED_INVALID* = 192

+  ERROR_BAD_EXE_FORMAT* = 193

+  ERROR_ITERATED_DATA_EXCEEDS_64k* = 194

+  ERROR_INVALID_MINALLOCSIZE* = 195

+  ERROR_DYNLINK_FROM_INVALID_RING* = 196

+  ERROR_IOPL_NOT_ENABLED* = 197

+  ERROR_INVALID_SEGDPL* = 198

+  ERROR_AUTODATASEG_EXCEEDS_64k* = 199

+  ERROR_RING2SEG_MUST_BE_MOVABLE* = 200

+  ERROR_RELOC_CHAIN_XEEDS_SEGLIM* = 201

+  ERROR_INFLOOP_IN_RELOC_CHAIN* = 202

+  ERROR_ENVVAR_NOT_FOUND* = 203

+  ERROR_NO_SIGNAL_SENT* = 205

+  ERROR_FILENAME_EXCED_RANGE* = 206

+  ERROR_RING2_STACK_IN_USE* = 207

+  ERROR_META_EXPANSION_TOO_LONG* = 208

+  ERROR_INVALID_SIGNAL_NUMBER* = 209

+  ERROR_THREAD_1_INACTIVE* = 210

+  ERROR_LOCKED* = 212

+  ERROR_TOO_MANY_MODULES* = 214

+  ERROR_NESTING_NOT_ALLOWED* = 215

+  ERROR_BAD_PIPE* = 230

+  ERROR_PIPE_BUSY* = 231

+  ERROR_NO_DATA* = 232

+  ERROR_PIPE_NOT_CONNECTED* = 233

+  ERROR_MORE_DATA* = 234

+  ERROR_VC_DISCONNECTED* = 240

+  ERROR_INVALID_EA_NAME* = 254

+  ERROR_EA_LIST_INCONSISTENT* = 255

+  ERROR_NO_MORE_ITEMS* = 259

+  ERROR_CANNOT_COPY* = 266

+  ERROR_DIRECTORY* = 267

+  ERROR_EAS_DIDNT_FIT* = 275

+  ERROR_EA_FILE_CORRUPT* = 276

+  ERROR_EA_TABLE_FULL* = 277

+  ERROR_INVALID_EA_HANDLE* = 278

+  ERROR_EAS_NOT_SUPPORTED* = 282

+  ERROR_NOT_OWNER* = 288

+  ERROR_TOO_MANY_POSTS* = 298

+  ERROR_PARTIAL_COPY* = 299

+  ERROR_MR_MID_NOT_FOUND* = 317

+  ERROR_INVALID_ADDRESS* = 487

+  ERROR_ARITHMETIC_OVERFLOW* = 534

+  ERROR_PIPE_CONNECTED* = 535

+  ERROR_PIPE_LISTENING* = 536

+  ERROR_EA_ACCESS_DENIED* = 994

+  ERROR_OPERATION_ABORTED* = 995

+  ERROR_IO_INCOMPLETE* = 996

+  ERROR_IO_PENDING* = 997

+  ERROR_NOACCESS* = 998

+  ERROR_SWAPERROR* = 999

+  ERROR_STACK_OVERFLOW* = 1001

+  ERROR_INVALID_MESSAGE* = 1002

+  ERROR_CAN_NOT_COMPLETE* = 1003

+  ERROR_INVALID_FLAGS* = 1004

+  ERROR_UNRECOGNIZED_VOLUME* = 1005

+  ERROR_FILE_INVALID* = 1006

+  ERROR_FULLSCREEN_MODE* = 1007

+  ERROR_NO_TOKEN* = 1008

+  ERROR_BADDB* = 1009

+  ERROR_BADKEY* = 1010

+  ERROR_CANTOPEN* = 1011

+  ERROR_CANTREAD* = 1012

+  ERROR_CANTWRITE* = 1013

+  ERROR_REGISTRY_RECOVERED* = 1014

+  ERROR_REGISTRY_CORRUPT* = 1015

+  ERROR_REGISTRY_IO_FAILED* = 1016

+  ERROR_NOT_REGISTRY_FILE* = 1017

+  ERROR_KEY_DELETED* = 1018

+  ERROR_NO_LOG_SPACE* = 1019

+  ERROR_KEY_HAS_CHILDREN* = 1020

+  ERROR_CHILD_MUST_BE_VOLATILE* = 1021

+  ERROR_NOTIFY_ENUM_DIR* = 1022

+  ERROR_DEPENDENT_SERVICES_RUNNING* = 1051

+  ERROR_INVALID_SERVICE_CONTROL* = 1052

+  ERROR_SERVICE_REQUEST_TIMEOUT* = 1053

+  ERROR_SERVICE_NO_THREAD* = 1054

+  ERROR_SERVICE_DATABASE_LOCKED* = 1055

+  ERROR_SERVICE_ALREADY_RUNNING* = 1056

+  ERROR_INVALID_SERVICE_ACCOUNT* = 1057

+  ERROR_SERVICE_DISABLED* = 1058

+  ERROR_CIRCULAR_DEPENDENCY* = 1059

+  ERROR_SERVICE_DOES_NOT_EXIST* = 1060

+  ERROR_SERVICE_CANNOT_ACCEPT_CTRL* = 1061

+  ERROR_SERVICE_NOT_ACTIVE* = 1062

+  ERROR_FAILED_SERVICE_CONTROLLER_CONNECT* = 1063

+  ERROR_EXCEPTION_IN_SERVICE* = 1064

+  ERROR_DATABASE_DOES_NOT_EXIST* = 1065

+  ERROR_SERVICE_SPECIFIC_ERROR* = 1066

+  ERROR_PROCESS_ABORTED* = 1067

+  ERROR_SERVICE_DEPENDENCY_FAIL* = 1068

+  ERROR_SERVICE_LOGON_FAILED* = 1069

+  ERROR_SERVICE_START_HANG* = 1070

+  ERROR_INVALID_SERVICE_LOCK* = 1071

+  ERROR_SERVICE_MARKED_FOR_DELETE* = 1072

+  ERROR_SERVICE_EXISTS* = 1073

+  ERROR_ALREADY_RUNNING_LKG* = 1074

+  ERROR_SERVICE_DEPENDENCY_DELETED* = 1075

+  ERROR_BOOT_ALREADY_ACCEPTED* = 1076

+  ERROR_SERVICE_NEVER_STARTED* = 1077

+  ERROR_DUPLICATE_SERVICE_NAME* = 1078

+  ERROR_END_OF_MEDIA* = 1100

+  ERROR_FILEMARK_DETECTED* = 1101

+  ERROR_BEGINNING_OF_MEDIA* = 1102

+  ERROR_SETMARK_DETECTED* = 1103

+  ERROR_NO_DATA_DETECTED* = 1104

+  ERROR_PARTITION_FAILURE* = 1105

+  ERROR_INVALID_BLOCK_LENGTH* = 1106

+  ERROR_DEVICE_NOT_PARTITIONED* = 1107

+  ERROR_UNABLE_TO_LOCK_MEDIA* = 1108

+  ERROR_UNABLE_TO_UNLOAD_MEDIA* = 1109

+  ERROR_MEDIA_CHANGED* = 1110

+  ERROR_BUS_RESET* = 1111

+  ERROR_NO_MEDIA_IN_DRIVE* = 1112

+  ERROR_NO_UNICODE_TRANSLATION* = 1113

+  ERROR_DLL_INIT_FAILED* = 1114

+  ERROR_SHUTDOWN_IN_PROGRESS* = 1115

+  ERROR_NO_SHUTDOWN_IN_PROGRESS* = 1116

+  ERROR_IO_DEVICE* = 1117

+  ERROR_SERIAL_NO_DEVICE* = 1118

+  ERROR_IRQ_BUSY* = 1119

+  ERROR_MORE_WRITES* = 1120

+  ERROR_COUNTER_TIMEOUT* = 1121

+  ERROR_FLOPPY_ID_MARK_NOT_FOUND* = 1122

+  ERROR_FLOPPY_WRONG_CYLINDER* = 1123

+  ERROR_FLOPPY_UNKNOWN_ERROR* = 1124

+  ERROR_FLOPPY_BAD_REGISTERS* = 1125

+  ERROR_DISK_RECALIBRATE_FAILED* = 1126

+  ERROR_DISK_OPERATION_FAILED* = 1127

+  ERROR_DISK_RESET_FAILED* = 1128

+  ERROR_EOM_OVERFLOW* = 1129

+  ERROR_NOT_ENOUGH_SERVER_MEMORY* = 1130

+  ERROR_POSSIBLE_DEADLOCK* = 1131

+  ERROR_MAPPED_ALIGNMENT* = 1132

+  ERROR_SET_POWER_STATE_VETOED* = 1140

+  ERROR_SET_POWER_STATE_FAILED* = 1141

+  ERROR_OLD_WIN_VERSION* = 1150

+  ERROR_APP_WRONG_OS* = 1151

+  ERROR_SINGLE_INSTANCE_APP* = 1152

+  ERROR_RMODE_APP* = 1153

+  ERROR_INVALID_DLL* = 1154

+  ERROR_NO_ASSOCIATION* = 1155

+  ERROR_DDE_FAIL* = 1156

+  ERROR_DLL_NOT_FOUND* = 1157

+  ERROR_BAD_USERNAME* = 2202

+  ERROR_NOT_CONNECTED* = 2250

+  ERROR_OPEN_FILES* = 2401

+  ERROR_ACTIVE_CONNECTIONS* = 2402

+  ERROR_DEVICE_IN_USE* = 2404

+  ERROR_BAD_DEVICE* = 1200

+  ERROR_CONNECTION_UNAVAIL* = 1201

+  ERROR_DEVICE_ALREADY_REMEMBERED* = 1202

+  ERROR_NO_NET_OR_BAD_PATH* = 1203

+  ERROR_BAD_PROVIDER* = 1204

+  ERROR_CANNOT_OPEN_PROFILE* = 1205

+  ERROR_BAD_PROFILE* = 1206

+  ERROR_NOT_CONTAINER* = 1207

+  ERROR_EXTENDED_ERROR* = 1208

+  ERROR_INVALID_GROUPNAME* = 1209

+  ERROR_INVALID_COMPUTERNAME* = 1210

+  ERROR_INVALID_EVENTNAME* = 1211

+  ERROR_INVALID_DOMAINNAME* = 1212

+  ERROR_INVALID_SERVICENAME* = 1213

+  ERROR_INVALID_NETNAME* = 1214

+  ERROR_INVALID_SHARENAME* = 1215

+  ERROR_INVALID_PASSWORDNAME* = 1216

+  ERROR_INVALID_MESSAGENAME* = 1217

+  ERROR_INVALID_MESSAGEDEST* = 1218

+  ERROR_SESSION_CREDENTIAL_CONFLICT* = 1219

+  ERROR_REMOTE_SESSION_LIMIT_EXCEEDED* = 1220

+  ERROR_DUP_DOMAINNAME* = 1221

+  ERROR_NO_NETWORK* = 1222

+  ERROR_CANCELLED* = 1223

+  ERROR_USER_MAPPED_FILE* = 1224

+  ERROR_CONNECTION_REFUSED* = 1225

+  ERROR_GRACEFUL_DISCONNECT* = 1226

+  ERROR_ADDRESS_ALREADY_ASSOCIATED* = 1227

+  ERROR_ADDRESS_NOT_ASSOCIATED* = 1228

+  ERROR_CONNECTION_INVALID* = 1229

+  ERROR_CONNECTION_ACTIVE* = 1230

+  ERROR_NETWORK_UNREACHABLE* = 1231

+  ERROR_HOST_UNREACHABLE* = 1232

+  ERROR_PROTOCOL_UNREACHABLE* = 1233

+  ERROR_PORT_UNREACHABLE* = 1234

+  ERROR_REQUEST_ABORTED* = 1235

+  ERROR_CONNECTION_ABORTED* = 1236

+  ERROR_RETRY* = 1237

+  ERROR_CONNECTION_COUNT_LIMIT* = 1238

+  ERROR_LOGIN_TIME_RESTRICTION* = 1239

+  ERROR_LOGIN_WKSTA_RESTRICTION* = 1240

+  ERROR_INCORRECT_ADDRESS* = 1241

+  ERROR_ALREADY_REGISTERED* = 1242

+  ERROR_SERVICE_NOT_FOUND* = 1243

+  ERROR_NOT_AUTHENTICATED* = 1244

+  ERROR_NOT_LOGGED_ON* = 1245

+  ERROR_CONTINUE* = 1246

+  ERROR_ALREADY_INITIALIZED* = 1247

+  ERROR_NO_MORE_DEVICES* = 1248

+  ERROR_NOT_ALL_ASSIGNED* = 1300

+  ERROR_SOME_NOT_MAPPED* = 1301

+  ERROR_NO_QUOTAS_FOR_ACCOUNT* = 1302

+  ERROR_LOCAL_USER_SESSION_KEY* = 1303

+  ERROR_NULL_LM_PASSWORD* = 1304

+  ERROR_UNKNOWN_REVISION* = 1305

+  ERROR_REVISION_MISMATCH* = 1306

+  ERROR_INVALID_OWNER* = 1307

+  ERROR_INVALID_PRIMARY_GROUP* = 1308

+  ERROR_NO_IMPERSONATION_TOKEN* = 1309

+  ERROR_CANT_DISABLE_MANDATORY* = 1310

+  ERROR_NO_LOGON_SERVERS* = 1311

+  ERROR_NO_SUCH_LOGON_SESSION* = 1312

+  ERROR_NO_SUCH_PRIVILEGE* = 1313

+  ERROR_PRIVILEGE_NOT_HELD* = 1314

+  ERROR_INVALID_ACCOUNT_NAME* = 1315

+  ERROR_USER_EXISTS* = 1316

+  ERROR_NO_SUCH_USER* = 1317

+  ERROR_GROUP_EXISTS* = 1318

+  ERROR_NO_SUCH_GROUP* = 1319

+  ERROR_MEMBER_IN_GROUP* = 1320

+  ERROR_MEMBER_NOT_IN_GROUP* = 1321

+  ERROR_LAST_ADMIN* = 1322

+  ERROR_WRONG_PASSWORD* = 1323

+  ERROR_ILL_FORMED_PASSWORD* = 1324

+  ERROR_PASSWORD_RESTRICTION* = 1325

+  ERROR_LOGON_FAILURE* = 1326

+  ERROR_ACCOUNT_RESTRICTION* = 1327

+  ERROR_INVALID_LOGON_HOURS* = 1328

+  ERROR_INVALID_WORKSTATION* = 1329

+  ERROR_PASSWORD_EXPIRED* = 1330

+  ERROR_ACCOUNT_DISABLED* = 1331

+  ERROR_NONE_MAPPED* = 1332

+  ERROR_TOO_MANY_LUIDS_REQUESTED* = 1333

+  ERROR_LUIDS_EXHAUSTED* = 1334

+  ERROR_INVALID_SUB_AUTHORITY* = 1335

+  ERROR_INVALID_ACL* = 1336

+  ERROR_INVALID_SID* = 1337

+  ERROR_INVALID_SECURITY_DESCR* = 1338

+  ERROR_BAD_INHERITANCE_ACL* = 1340

+  ERROR_SERVER_DISABLED* = 1341

+  ERROR_SERVER_NOT_DISABLED* = 1342

+  ERROR_INVALID_ID_AUTHORITY* = 1343

+  ERROR_ALLOTTED_SPACE_EXCEEDED* = 1344

+  ERROR_INVALID_GROUP_ATTRIBUTES* = 1345

+  ERROR_BAD_IMPERSONATION_LEVEL* = 1346

+  ERROR_CANT_OPEN_ANONYMOUS* = 1347

+  ERROR_BAD_VALIDATION_CLASS* = 1348

+  ERROR_BAD_TOKEN_TYPE* = 1349

+  ERROR_NO_SECURITY_ON_OBJECT* = 1350

+  ERROR_CANT_ACCESS_DOMAIN_INFO* = 1351

+  ERROR_INVALID_SERVER_STATE* = 1352

+  ERROR_INVALID_DOMAIN_STATE* = 1353

+  ERROR_INVALID_DOMAIN_ROLE* = 1354

+  ERROR_NO_SUCH_DOMAIN* = 1355

+  ERROR_DOMAIN_EXISTS* = 1356

+  ERROR_DOMAIN_LIMIT_EXCEEDED* = 1357

+  ERROR_INTERNAL_DB_CORRUPTION* = 1358

+  ERROR_INTERNAL_ERROR* = 1359

+  ERROR_GENERIC_NOT_MAPPED* = 1360

+  ERROR_BAD_DESCRIPTOR_FORMAT* = 1361

+  ERROR_NOT_LOGON_PROCESS* = 1362

+  ERROR_LOGON_SESSION_EXISTS* = 1363

+  ERROR_NO_SUCH_PACKAGE* = 1364

+  ERROR_BAD_LOGON_SESSION_STATE* = 1365

+  ERROR_LOGON_SESSION_COLLISION* = 1366

+  ERROR_INVALID_LOGON_TYPE* = 1367

+  ERROR_CANNOT_IMPERSONATE* = 1368

+  ERROR_RXACT_INVALID_STATE* = 1369

+  ERROR_RXACT_COMMIT_FAILURE* = 1370

+  ERROR_SPECIAL_ACCOUNT* = 1371

+  ERROR_SPECIAL_GROUP* = 1372

+  ERROR_SPECIAL_USER* = 1373

+  ERROR_MEMBERS_PRIMARY_GROUP* = 1374

+  ERROR_TOKEN_ALREADY_IN_USE* = 1375

+  ERROR_NO_SUCH_ALIAS* = 1376

+  ERROR_MEMBER_NOT_IN_ALIAS* = 1377

+  ERROR_MEMBER_IN_ALIAS* = 1378

+  ERROR_ALIAS_EXISTS* = 1379

+  ERROR_LOGON_NOT_GRANTED* = 1380

+  ERROR_TOO_MANY_SECRETS* = 1381

+  ERROR_SECRET_TOO_LONG* = 1382

+  ERROR_INTERNAL_DB_ERROR* = 1383

+  ERROR_TOO_MANY_CONTEXT_IDS* = 1384

+  ERROR_LOGON_TYPE_NOT_GRANTED* = 1385

+  ERROR_NT_CROSS_ENCRYPTION_REQUIRED* = 1386

+  ERROR_NO_SUCH_MEMBER* = 1387

+  ERROR_INVALID_MEMBER* = 1388

+  ERROR_TOO_MANY_SIDS* = 1389

+  ERROR_LM_CROSS_ENCRYPTION_REQUIRED* = 1390

+  ERROR_NO_INHERITANCE* = 1391

+  ERROR_FILE_CORRUPT* = 1392

+  ERROR_DISK_CORRUPT* = 1393

+  ERROR_NO_USER_SESSION_KEY* = 1394

+  ERROR_LICENSE_QUOTA_EXCEEDED* = 1395

+  ERROR_INVALID_WINDOW_HANDLE* = 1400

+  ERROR_INVALID_MENU_HANDLE* = 1401

+  ERROR_INVALID_CURSOR_HANDLE* = 1402

+  ERROR_INVALID_ACCEL_HANDLE* = 1403

+  ERROR_INVALID_HOOK_HANDLE* = 1404

+  ERROR_INVALID_DWP_HANDLE* = 1405

+  ERROR_TLW_WITH_WSCHILD* = 1406

+  ERROR_CANNOT_FIND_WND_CLASS* = 1407

+  ERROR_WINDOW_OF_OTHER_THREAD* = 1408

+  ERROR_HOTKEY_ALREADY_REGISTERED* = 1409

+  ERROR_CLASS_ALREADY_EXISTS* = 1410

+  ERROR_CLASS_DOES_NOT_EXIST* = 1411

+  ERROR_CLASS_HAS_WINDOWS* = 1412

+  ERROR_INVALID_INDEX* = 1413

+  ERROR_INVALID_ICON_HANDLE* = 1414

+  ERROR_PRIVATE_DIALOG_INDEX* = 1415

+  ERROR_LISTBOX_ID_NOT_FOUND* = 1416

+  ERROR_NO_WILDCARD_CHARACTERS* = 1417

+  ERROR_CLIPBOARD_NOT_OPEN* = 1418

+  ERROR_HOTKEY_NOT_REGISTERED* = 1419

+  ERROR_WINDOW_NOT_DIALOG* = 1420

+  ERROR_CONTROL_ID_NOT_FOUND* = 1421

+  ERROR_INVALID_COMBOBOX_MESSAGE* = 1422

+  ERROR_WINDOW_NOT_COMBOBOX* = 1423

+  ERROR_INVALID_EDIT_HEIGHT* = 1424

+  ERROR_DC_NOT_FOUND* = 1425

+  ERROR_INVALID_HOOK_FILTER* = 1426

+  ERROR_INVALID_FILTER_PROC* = 1427

+  ERROR_HOOK_NEEDS_HMOD* = 1428

+  ERROR_GLOBAL_ONLY_HOOK* = 1429

+  ERROR_JOURNAL_HOOK_SET* = 1430

+  ERROR_HOOK_NOT_INSTALLED* = 1431

+  ERROR_INVALID_LB_MESSAGE* = 1432

+  ERROR_SETCOUNT_ON_BAD_LB* = 1433

+  ERROR_LB_WITHOUT_TABSTOPS* = 1434

+  ERROR_DESTROY_OBJECT_OF_OTHER_THREAD* = 1435

+  ERROR_CHILD_WINDOW_MENU* = 1436

+  ERROR_NO_SYSTEM_MENU* = 1437

+  ERROR_INVALID_MSGBOX_STYLE* = 1438

+  ERROR_INVALID_SPI_VALUE* = 1439

+  ERROR_SCREEN_ALREADY_LOCKED* = 1440

+  ERROR_HWNDS_HAVE_DIFF_PARENT* = 1441

+  ERROR_NOT_CHILD_WINDOW* = 1442

+  ERROR_INVALID_GW_COMMAND* = 1443

+  ERROR_INVALID_THREAD_ID* = 1444

+  ERROR_NON_MDICHILD_WINDOW* = 1445

+  ERROR_POPUP_ALREADY_ACTIVE* = 1446

+  ERROR_NO_SCROLLBARS* = 1447

+  ERROR_INVALID_SCROLLBAR_RANGE* = 1448

+  ERROR_INVALID_SHOWWIN_COMMAND* = 1449

+  ERROR_NO_SYSTEM_RESOURCES* = 1450

+  ERROR_NONPAGED_SYSTEM_RESOURCES* = 1451

+  ERROR_PAGED_SYSTEM_RESOURCES* = 1452

+  ERROR_WORKING_SET_QUOTA* = 1453

+  ERROR_PAGEFILE_QUOTA* = 1454

+  ERROR_COMMITMENT_LIMIT* = 1455

+  ERROR_MENU_ITEM_NOT_FOUND* = 1456

+  ERROR_INVALID_KEYBOARD_HANDLE* = 1457

+  ERROR_HOOK_TYPE_NOT_ALLOWED* = 1458

+  ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION* = 1459

+  ERROR_TIMEOUT* = 1460

+  ERROR_EVENTLOG_FILE_CORRUPT* = 1500

+  ERROR_EVENTLOG_CANT_START* = 1501

+  ERROR_LOG_FILE_FULL* = 1502

+  ERROR_EVENTLOG_FILE_CHANGED* = 1503

+  RPC_S_INVALID_STRING_BINDING* = 1700

+  RPC_S_WRONG_KIND_OF_BINDING* = 1701

+  RPC_S_INVALID_BINDING* = 1702

+  RPC_S_PROTSEQ_NOT_SUPPORTED* = 1703

+  RPC_S_INVALID_RPC_PROTSEQ* = 1704

+  RPC_S_INVALID_STRING_UUID* = 1705

+  RPC_S_INVALID_ENDPOINT_FORMAT* = 1706

+  RPC_S_INVALID_NET_ADDR* = 1707

+  RPC_S_NO_ENDPOINT_FOUND* = 1708

+  RPC_S_INVALID_TIMEOUT* = 1709

+  RPC_S_OBJECT_NOT_FOUND* = 1710

+  RPC_S_ALREADY_REGISTERED* = 1711

+  RPC_S_TYPE_ALREADY_REGISTERED* = 1712

+  RPC_S_ALREADY_LISTENING* = 1713

+  RPC_S_NO_PROTSEQS_REGISTERED* = 1714

+  RPC_S_NOT_LISTENING* = 1715

+  RPC_S_UNKNOWN_MGR_TYPE* = 1716

+  RPC_S_UNKNOWN_IF* = 1717

+  RPC_S_NO_BINDINGS* = 1718

+  RPC_S_NO_PROTSEQS* = 1719

+  RPC_S_CANT_CREATE_ENDPOINT* = 1720

+  RPC_S_OUT_OF_RESOURCES* = 1721

+  RPC_S_SERVER_UNAVAILABLE* = 1722

+  RPC_S_SERVER_TOO_BUSY* = 1723

+  RPC_S_INVALID_NETWORK_OPTIONS* = 1724

+  RPC_S_NO_CALL_ACTIVE* = 1725

+  RPC_S_CALL_FAILED* = 1726

+  RPC_S_CALL_FAILED_DNE* = 1727

+  RPC_S_PROTOCOL_ERROR* = 1728

+  RPC_S_UNSUPPORTED_TRANS_SYN* = 1730

+  RPC_S_UNSUPPORTED_TYPE* = 1732

+  RPC_S_INVALID_TAG* = 1733

+  RPC_S_INVALID_BOUND* = 1734

+  RPC_S_NO_ENTRY_NAME* = 1735

+  RPC_S_INVALID_NAME_SYNTAX* = 1736

+  RPC_S_UNSUPPORTED_NAME_SYNTAX* = 1737

+  RPC_S_UUID_NO_ADDRESS* = 1739

+  RPC_S_DUPLICATE_ENDPOINT* = 1740

+  RPC_S_UNKNOWN_AUTHN_TYPE* = 1741

+  RPC_S_MAX_CALLS_TOO_SMALL* = 1742

+  RPC_S_STRING_TOO_LONG* = 1743

+  RPC_S_PROTSEQ_NOT_FOUND* = 1744

+  RPC_S_PROCNUM_OUT_OF_RANGE* = 1745

+  RPC_S_BINDING_HAS_NO_AUTH* = 1746

+  RPC_S_UNKNOWN_AUTHN_SERVICE* = 1747

+  RPC_S_UNKNOWN_AUTHN_LEVEL* = 1748

+  RPC_S_INVALID_AUTH_IDENTITY* = 1749

+  RPC_S_UNKNOWN_AUTHZ_SERVICE* = 1750

+  EPT_S_INVALID_ENTRY* = 1751

+  EPT_S_CANT_PERFORM_OP* = 1752

+  EPT_S_NOT_REGISTERED* = 1753

+  RPC_S_NOTHING_TO_EXPORT* = 1754

+  RPC_S_INCOMPLETE_NAME* = 1755

+  RPC_S_INVALID_VERS_OPTION* = 1756

+  RPC_S_NO_MORE_MEMBERS* = 1757

+  RPC_S_NOT_ALL_OBJS_UNEXPORTED* = 1758

+  RPC_S_INTERFACE_NOT_FOUND* = 1759

+  RPC_S_ENTRY_ALREADY_EXISTS* = 1760

+  RPC_S_ENTRY_NOT_FOUND* = 1761

+  RPC_S_NAME_SERVICE_UNAVAILABLE* = 1762

+  RPC_S_INVALID_NAF_ID* = 1763

+  RPC_S_CANNOT_SUPPORT* = 1764

+  RPC_S_NO_CONTEXT_AVAILABLE* = 1765

+  RPC_S_INTERNAL_ERROR* = 1766

+  RPC_S_ZERO_DIVIDE* = 1767

+  RPC_S_ADDRESS_ERROR* = 1768

+  RPC_S_FP_DIV_ZERO* = 1769

+  RPC_S_FP_UNDERFLOW* = 1770

+  RPC_S_FP_OVERFLOW* = 1771

+  RPC_X_NO_MORE_ENTRIES* = 1772

+  RPC_X_SS_CHAR_TRANS_OPEN_FAIL* = 1773

+  RPC_X_SS_CHAR_TRANS_SHORT_FILE* = 1774

+  RPC_X_SS_IN_NULL_CONTEXT* = 1775

+  RPC_X_SS_CONTEXT_DAMAGED* = 1777

+  RPC_X_SS_HANDLES_MISMATCH* = 1778

+  RPC_X_SS_CANNOT_GET_CALL_HANDLE* = 1779

+  RPC_X_NULL_REF_POINTER* = 1780

+  RPC_X_ENUM_VALUE_OUT_OF_RANGE* = 1781

+  RPC_X_BYTE_COUNT_TOO_SMALL* = 1782

+  RPC_X_BAD_STUB_DATA* = 1783

+  ERROR_INVALID_USER_BUFFER* = 1784

+  ERROR_UNRECOGNIZED_MEDIA* = 1785

+  ERROR_NO_TRUST_LSA_SECRET* = 1786

+  ERROR_NO_TRUST_SAM_ACCOUNT* = 1787

+  ERROR_TRUSTED_DOMAIN_FAILURE* = 1788

+  ERROR_TRUSTED_RELATIONSHIP_FAILURE* = 1789

+  ERROR_TRUST_FAILURE* = 1790

+  RPC_S_CALL_IN_PROGRESS* = 1791

+  ERROR_NETLOGON_NOT_STARTED* = 1792

+  ERROR_ACCOUNT_EXPIRED* = 1793

+  ERROR_REDIRECTOR_HAS_OPEN_HANDLES* = 1794

+  ERROR_PRINTER_DRIVER_ALREADY_INSTALLED* = 1795

+  ERROR_UNKNOWN_PORT* = 1796

+  ERROR_UNKNOWN_PRINTER_DRIVER* = 1797

+  ERROR_UNKNOWN_PRINTPROCESSOR* = 1798

+  ERROR_INVALID_SEPARATOR_FILE* = 1799

+  ERROR_INVALID_PRIORITY* = 1800

+  ERROR_INVALID_PRINTER_NAME* = 1801

+  ERROR_PRINTER_ALREADY_EXISTS* = 1802

+  ERROR_INVALID_PRINTER_COMMAND* = 1803

+  ERROR_INVALID_DATATYPE* = 1804

+  ERROR_INVALID_ENVIRONMENT* = 1805

+  RPC_S_NO_MORE_BINDINGS* = 1806

+  ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT* = 1807

+  ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT* = 1808

+  ERROR_NOLOGON_SERVER_TRUST_ACCOUNT* = 1809

+  ERROR_DOMAIN_TRUST_INCONSISTENT* = 1810

+  ERROR_SERVER_HAS_OPEN_HANDLES* = 1811

+  ERROR_RESOURCE_DATA_NOT_FOUND* = 1812

+  ERROR_RESOURCE_TYPE_NOT_FOUND* = 1813

+  ERROR_RESOURCE_NAME_NOT_FOUND* = 1814

+  ERROR_RESOURCE_LANG_NOT_FOUND* = 1815

+  ERROR_NOT_ENOUGH_QUOTA* = 1816

+  RPC_S_NO_INTERFACES* = 1817

+  RPC_S_CALL_CANCELLED* = 1818

+  RPC_S_BINDING_INCOMPLETE* = 1819

+  RPC_S_COMM_FAILURE* = 1820

+  RPC_S_UNSUPPORTED_AUTHN_LEVEL* = 1821

+  RPC_S_NO_PRINC_NAME* = 1822

+  RPC_S_NOT_RPC_ERROR* = 1823

+  RPC_S_UUID_LOCAL_ONLY* = 1824

+  RPC_S_SEC_PKG_ERROR* = 1825

+  RPC_S_NOT_CANCELLED* = 1826

+  RPC_X_INVALID_ES_ACTION* = 1827

+  RPC_X_WRONG_ES_VERSION* = 1828

+  RPC_X_WRONG_STUB_VERSION* = 1829

+  RPC_X_INVALID_PIPE_OBJECT* = 1830

+  RPC_X_INVALID_PIPE_OPERATION* = 1831

+  RPC_S_GROUP_MEMBER_NOT_FOUND* = 1898

+  EPT_S_CANT_CREATE* = 1899

+  RPC_S_INVALID_OBJECT* = 1900

+  ERROR_INVALID_TIME* = 1901

+  ERROR_INVALID_FORM_NAME* = 1902

+  ERROR_INVALID_FORM_SIZE* = 1903

+  ERROR_ALREADY_WAITING* = 1904

+  ERROR_PRINTER_DELETED* = 1905

+  ERROR_INVALID_PRINTER_STATE* = 1906

+  ERROR_PASSWORD_MUST_CHANGE* = 1907

+  ERROR_DOMAIN_CONTROLLER_NOT_FOUND* = 1908

+  ERROR_ACCOUNT_LOCKED_OUT* = 1909

+  OR_INVALID_OXID* = 1910

+  OR_INVALID_OID* = 1911

+  OR_INVALID_SET* = 1912

+  RPC_S_SEND_INCOMPLETE* = 1913

+  ERROR_NO_BROWSER_SERVERS_FOUND* = 6118

+  ERROR_INVALID_PIXEL_FORMAT* = 2000

+  ERROR_BAD_DRIVER* = 2001

+  ERROR_INVALID_WINDOW_STYLE* = 2002

+  ERROR_METAFILE_NOT_SUPPORTED* = 2003

+  ERROR_TRANSFORM_NOT_SUPPORTED* = 2004

+  ERROR_CLIPPING_NOT_SUPPORTED* = 2005

+  ERROR_UNKNOWN_PRINT_MONITOR* = 3000

+  ERROR_PRINTER_DRIVER_IN_USE* = 3001

+  ERROR_SPOOL_FILE_NOT_FOUND* = 3002

+  ERROR_SPL_NO_STARTDOC* = 3003

+  ERROR_SPL_NO_ADDJOB* = 3004

+  ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED* = 3005

+  ERROR_PRINT_MONITOR_ALREADY_INSTALLED* = 3006

+  ERROR_INVALID_PRINT_MONITOR* = 3007

+  ERROR_PRINT_MONITOR_IN_USE* = 3008

+  ERROR_PRINTER_HAS_JOBS_QUEUED* = 3009

+  ERROR_SUCCESS_REBOOT_REQUIRED* = 3010

+  ERROR_SUCCESS_RESTART_REQUIRED* = 3011

+  ERROR_WINS_INTERNAL* = 4000

+  ERROR_CAN_NOT_DEL_LOCAL_WINS* = 4001

+  ERROR_STATIC_INIT* = 4002

+  ERROR_INC_BACKUP* = 4003

+  ERROR_FULL_BACKUP* = 4004

+  ERROR_REC_NON_EXISTENT* = 4005

+  ERROR_RPL_NOT_ALLOWED* = 4006

+  E_UNEXPECTED* = HRESULT(0x8000FFFF)

+  E_NOTIMPL* = HRESULT(0x80004001)

+  E_OUTOFMEMORY* = HRESULT(0x8007000E)

+  E_INVALIDARG* = HRESULT(0x80070057)

+  E_NOINTERFACE* = HRESULT(0x80004002)

+  E_POINTER* = HRESULT(0x80004003)

+  E_HANDLE* = HRESULT(0x80070006)

+  E_ABORT* = HRESULT(0x80004004)

+  E_FAIL* = HRESULT(0x80004005)

+  E_ACCESSDENIED* = HRESULT(0x80070005)

+  E_PENDING* = HRESULT(0x8000000A)

+  CO_E_INIT_TLS* = HRESULT(0x80004006)

+  CO_E_INIT_SHARED_ALLOCATOR* = HRESULT(0x80004007)

+  CO_E_INIT_MEMORY_ALLOCATOR* = HRESULT(0x80004008)

+  CO_E_INIT_CLASS_CACHE* = HRESULT(0x80004009)

+  CO_E_INIT_RPC_CHANNEL* = HRESULT(0x8000400A)

+  CO_E_INIT_TLS_SET_CHANNEL_CONTROL* = HRESULT(0x8000400B)

+  CO_E_INIT_TLS_CHANNEL_CONTROL* = HRESULT(0x8000400C)

+  CO_E_INIT_UNACCEPTED_USER_ALLOCATOR* = HRESULT(0x8000400D)

+  CO_E_INIT_SCM_MUTEX_EXISTS* = HRESULT(0x8000400E)

+  CO_E_INIT_SCM_FILE_MAPPING_EXISTS* = HRESULT(0x8000400F)

+  CO_E_INIT_SCM_MAP_VIEW_OF_FILE* = HRESULT(0x80004010)

+  CO_E_INIT_SCM_EXEC_FAILURE* = HRESULT(0x80004011)

+  CO_E_INIT_ONLY_SINGLE_THREADED* = HRESULT(0x80004012)

+  CO_E_CANT_REMOTE* = HRESULT(0x80004013)

+  CO_E_BAD_SERVER_NAME* = HRESULT(0x80004014)

+  CO_E_WRONG_SERVER_IDENTITY* = HRESULT(0x80004015)

+  CO_E_OLE1DDE_DISABLED* = HRESULT(0x80004016)

+  CO_E_RUNAS_SYNTAX* = HRESULT(0x80004017)

+  CO_E_CREATEPROCESS_FAILURE* = HRESULT(0x80004018)

+  CO_E_RUNAS_CREATEPROCESS_FAILURE* = HRESULT(0x80004019)

+  CO_E_RUNAS_LOGON_FAILURE* = HRESULT(0x8000401A)

+  CO_E_LAUNCH_PERMSSION_DENIED* = HRESULT(0x8000401B)

+  CO_E_START_SERVICE_FAILURE* = HRESULT(0x8000401C)

+  CO_E_REMOTE_COMMUNICATION_FAILURE* = HRESULT(0x8000401D)

+  CO_E_SERVER_START_TIMEOUT* = HRESULT(0x8000401E)

+  CO_E_CLSREG_INCONSISTENT* = HRESULT(0x8000401F)

+  CO_E_IIDREG_INCONSISTENT* = HRESULT(0x80004020)

+  CO_E_NOT_SUPPORTED* = HRESULT(0x80004021)

+  CO_E_FIRST* = DWORD(0x800401F0)

+  CO_E_LAST* = DWORD(0x800401FF)

+  CO_S_FIRST* = DWORD(0x000401F0)

+  CO_S_LAST* = DWORD(0x000401FF)

+  S_OK* = HRESULT(0x00000000)

+  S_FALSE* = HRESULT(0x00000001)

+  CO_E_NOTINITIALIZED* = HRESULT(0x800401F0)

+  CO_E_ALREADYINITIALIZED* = HRESULT(0x800401F1)

+  CO_E_CANTDETERMINECLASS* = HRESULT(0x800401F2)

+  CO_E_CLASSSTRING* = HRESULT(0x800401F3)

+  CO_E_IIDSTRING* = HRESULT(0x800401F4)

+  CO_E_APPNOTFOUND* = HRESULT(0x800401F5)

+  CO_E_APPSINGLEUSE* = HRESULT(0x800401F6)

+  CO_E_ERRORINAPP* = HRESULT(0x800401F7)

+  CO_E_DLLNOTFOUND* = HRESULT(0x800401F8)

+  CO_E_ERRORINDLL* = HRESULT(0x800401F9)

+  CO_E_WRONGOSFORAPP* = HRESULT(0x800401FA)

+  CO_E_OBJNOTREG* = HRESULT(0x800401FB)

+  CO_E_OBJISREG* = HRESULT(0x800401FC)

+  CO_E_OBJNOTCONNECTED* = HRESULT(0x800401FD)

+  CO_E_APPDIDNTREG* = HRESULT(0x800401FE)

+  CO_E_RELEASED* = HRESULT(0x800401FF)

+  OLE_E_FIRST* = HRESULT(0x80040000)

+  OLE_E_LAST* = HRESULT(0x800400FF)

+  OLE_S_FIRST* = HRESULT(0x00040000)

+  OLE_S_LAST* = HRESULT(0x000400FF)

+  OLE_E_OLEVERB* = HRESULT(0x80040000)

+  OLE_E_ADVF* = HRESULT(0x80040001)

+  OLE_E_ENUM_NOMORE* = HRESULT(0x80040002)

+  OLE_E_ADVISENOTSUPPORTED* = HRESULT(0x80040003)

+  OLE_E_NOCONNECTION* = HRESULT(0x80040004)

+  OLE_E_NOTRUNNING* = HRESULT(0x80040005)

+  OLE_E_NOCACHE* = HRESULT(0x80040006)

+  OLE_E_BLANK* = HRESULT(0x80040007)

+  OLE_E_CLASSDIFF* = HRESULT(0x80040008)

+  OLE_E_CANT_GETMONIKER* = HRESULT(0x80040009)

+  OLE_E_CANT_BINDTOSOURCE* = HRESULT(0x8004000A)

+  OLE_E_STATIC* = HRESULT(0x8004000B)

+  OLE_E_PROMPTSAVECANCELLED* = HRESULT(0x8004000C)

+  OLE_E_INVALIDRECT* = HRESULT(0x8004000D)

+  OLE_E_WRONGCOMPOBJ* = HRESULT(0x8004000E)

+  OLE_E_INVALIDHWND* = HRESULT(0x8004000F)

+  OLE_E_NOT_INPLACEACTIVE* = HRESULT(0x80040010)

+  OLE_E_CANTCONVERT* = HRESULT(0x80040011)

+  OLE_E_NOSTORAGE* = HRESULT(0x80040012)

+  DV_E_FORMATETC* = HRESULT(0x80040064)

+  DV_E_DVTARGETDEVICE* = HRESULT(0x80040065)

+  DV_E_STGMEDIUM* = HRESULT(0x80040066)

+  DV_E_STATDATA* = HRESULT(0x80040067)

+  DV_E_LINDEX* = HRESULT(0x80040068)

+  DV_E_TYMED* = HRESULT(0x80040069)

+  DV_E_CLIPFORMAT* = HRESULT(0x8004006A)

+  DV_E_DVASPECT* = HRESULT(0x8004006B)

+  DV_E_DVTARGETDEVICE_SIZE* = HRESULT(0x8004006C)

+  DV_E_NOIVIEWOBJECT* = HRESULT(0x8004006D)

+  DRAGDROP_E_FIRST* = DWORD(0x80040100)

+  DRAGDROP_E_LAST* = DWORD(0x8004010F)

+  DRAGDROP_S_FIRST* = DWORD(0x00040100)

+  DRAGDROP_S_LAST* = DWORD(0x0004010F)

+  DRAGDROP_E_NOTREGISTERED* = HRESULT(0x80040100)

+  DRAGDROP_E_ALREADYREGISTERED* = HRESULT(0x80040101)

+  DRAGDROP_E_INVALIDHWND* = HRESULT(0x80040102)

+  CLASSFACTORY_E_FIRST* = DWORD(0x80040110)

+  CLASSFACTORY_E_LAST* = DWORD(0x8004011F)

+  CLASSFACTORY_S_FIRST* = DWORD(0x00040110)

+  CLASSFACTORY_S_LAST* = DWORD(0x0004011F)

+  CLASS_E_NOAGGREGATION* = HRESULT(0x80040110)

+  CLASS_E_CLASSNOTAVAILABLE* = HRESULT(0x80040111)

+  MARSHAL_E_FIRST* = DWORD(0x80040120)

+  MARSHAL_E_LAST* = DWORD(0x8004012F)

+  MARSHAL_S_FIRST* = DWORD(0x00040120)

+  MARSHAL_S_LAST* = DWORD(0x0004012F)

+  DATA_E_FIRST* = DWORD(0x80040130)

+  DATA_E_LAST* = DWORD(0x8004013F)

+  DATA_S_FIRST* = DWORD(0x00040130)

+  DATA_S_LAST* = DWORD(0x0004013F)

+  VIEW_E_FIRST* = DWORD(0x80040140)

+  VIEW_E_LAST* = DWORD(0x8004014F)

+  VIEW_S_FIRST* = DWORD(0x00040140)

+  VIEW_S_LAST* = DWORD(0x0004014F)

+  VIEW_E_DRAW* = HRESULT(0x80040140)

+  REGDB_E_FIRST* = DWORD(0x80040150)

+  REGDB_E_LAST* = DWORD(0x8004015F)

+  REGDB_S_FIRST* = DWORD(0x00040150)

+  REGDB_S_LAST* = DWORD(0x0004015F)

+  REGDB_E_READREGDB* = HRESULT(0x80040150)

+  REGDB_E_WRITEREGDB* = HRESULT(0x80040151)

+  REGDB_E_KEYMISSING* = HRESULT(0x80040152)

+  REGDB_E_INVALIDVALUE* = HRESULT(0x80040153)

+  REGDB_E_CLASSNOTREG* = HRESULT(0x80040154)

+  REGDB_E_IIDNOTREG* = HRESULT(0x80040155)

+  CACHE_E_FIRST* = DWORD(0x80040170)

+  CACHE_E_LAST* = DWORD(0x8004017F)

+  CACHE_S_FIRST* = DWORD(0x00040170)

+  CACHE_S_LAST* = DWORD(0x0004017F)

+  CACHE_E_NOCACHE_UPDATED* = HRESULT(0x80040170)

+  OLEOBJ_E_FIRST* = DWORD(0x80040180)

+  OLEOBJ_E_LAST* = DWORD(0x8004018F)

+  OLEOBJ_S_FIRST* = DWORD(0x00040180)

+  OLEOBJ_S_LAST* = DWORD(0x0004018F)

+  OLEOBJ_E_NOVERBS* = HRESULT(0x80040180)

+  OLEOBJ_E_INVALIDVERB* = HRESULT(0x80040181)

+  CLIENTSITE_E_FIRST* = DWORD(0x80040190)

+  CLIENTSITE_E_LAST* = DWORD(0x8004019F)

+  CLIENTSITE_S_FIRST* = DWORD(0x00040190)

+  CLIENTSITE_S_LAST* = DWORD(0x0004019F)

+  INPLACE_E_NOTUNDOABLE* = HRESULT(0x800401A0)

+  INPLACE_E_NOTOOLSPACE* = HRESULT(0x800401A1)

+  INPLACE_E_FIRST* = DWORD(0x800401A0)

+  INPLACE_E_LAST* = DWORD(0x800401AF)

+  INPLACE_S_FIRST* = DWORD(0x000401A0)

+  INPLACE_S_LAST* = DWORD(0x000401AF)

+  ENUM_E_FIRST* = DWORD(0x800401B0)

+  ENUM_E_LAST* = DWORD(0x800401BF)

+  ENUM_S_FIRST* = DWORD(0x000401B0)

+  ENUM_S_LAST* = DWORD(0x000401BF)

+  CONVERT10_E_FIRST* = DWORD(0x800401C0)

+  CONVERT10_E_LAST* = DWORD(0x800401CF)

+  CONVERT10_S_FIRST* = DWORD(0x000401C0)

+  CONVERT10_S_LAST* = DWORD(0x000401CF)

+  CONVERT10_E_OLESTREAM_GET* = HRESULT(0x800401C0)

+  CONVERT10_E_OLESTREAM_PUT* = HRESULT(0x800401C1)

+  CONVERT10_E_OLESTREAM_FMT* = HRESULT(0x800401C2)

+  CONVERT10_E_OLESTREAM_BITMAP_TO_DIB* = HRESULT(0x800401C3)

+  CONVERT10_E_STG_FMT* = HRESULT(0x800401C4)

+  CONVERT10_E_STG_NO_STD_STREAM* = HRESULT(0x800401C5)

+  CONVERT10_E_STG_DIB_TO_BITMAP* = HRESULT(0x800401C6)

+  CLIPBRD_E_FIRST* = DWORD(0x800401D0)

+  CLIPBRD_E_LAST* = DWORD(0x800401DF)

+  CLIPBRD_S_FIRST* = DWORD(0x000401D0)

+  CLIPBRD_S_LAST* = DWORD(0x000401DF)

+  CLIPBRD_E_CANT_OPEN* = HRESULT(0x800401D0)

+  CLIPBRD_E_CANT_EMPTY* = HRESULT(0x800401D1)

+  CLIPBRD_E_CANT_SET* = HRESULT(0x800401D2)

+  CLIPBRD_E_BAD_DATA* = HRESULT(0x800401D3)

+  CLIPBRD_E_CANT_CLOSE* = HRESULT(0x800401D4)

+  MK_E_FIRST* = DWORD(0x800401E0)

+  MK_E_LAST* = DWORD(0x800401EF)

+  MK_S_FIRST* = DWORD(0x000401E0)

+  MK_S_LAST* = DWORD(0x000401EF)

+  MK_E_CONNECTMANUALLY* = HRESULT(0x800401E0)

+  MK_E_EXCEEDEDDEADLINE* = HRESULT(0x800401E1)

+  MK_E_NEEDGENERIC* = HRESULT(0x800401E2)

+  MK_E_UNAVAILABLE* = HRESULT(0x800401E3)

+  MK_E_SYNTAX* = HRESULT(0x800401E4)

+  MK_E_NOOBJECT* = HRESULT(0x800401E5)

+  MK_E_INVALIDEXTENSION* = HRESULT(0x800401E6)

+  MK_E_INTERMEDIATEINTERFACENOTSUPPORTED* = HRESULT(0x800401E7)

+  MK_E_NOTBINDABLE* = HRESULT(0x800401E8)

+  MK_E_NOTBOUND* = HRESULT(0x800401E9)

+  MK_E_CANTOPENFILE* = HRESULT(0x800401EA)

+  MK_E_MUSTBOTHERUSER* = HRESULT(0x800401EB)

+  MK_E_NOINVERSE* = HRESULT(0x800401EC)

+  MK_E_NOSTORAGE* = HRESULT(0x800401ED)

+  MK_E_NOPREFIX* = HRESULT(0x800401EE)

+  MK_E_ENUMERATION_FAILED* = HRESULT(0x800401EF)

+  OLE_S_USEREG* = HRESULT(0x00040000)

+  OLE_S_STATIC* = HRESULT(0x00040001)

+  OLE_S_MAC_CLIPFORMAT* = HRESULT(0x00040002)

+  DRAGDROP_S_DROP* = HRESULT(0x00040100)

+  DRAGDROP_S_CANCEL* = HRESULT(0x00040101)

+  DRAGDROP_S_USEDEFAULTCURSORS* = HRESULT(0x00040102)

+  DATA_S_SAMEFORMATETC* = HRESULT(0x00040130)

+  VIEW_S_ALREADY_FROZEN* = HRESULT(0x00040140)

+  CACHE_S_FORMATETC_NOTSUPPORTED* = HRESULT(0x00040170)

+  CACHE_S_SAMECACHE* = HRESULT(0x00040171)

+  CACHE_S_SOMECACHES_NOTUPDATED* = HRESULT(0x00040172)

+  OLEOBJ_S_INVALIDVERB* = HRESULT(0x00040180)

+  OLEOBJ_S_CANNOT_DOVERB_NOW* = HRESULT(0x00040181)

+  OLEOBJ_S_INVALIDHWND* = HRESULT(0x00040182)

+  INPLACE_S_TRUNCATED* = HRESULT(0x000401A0)

+  CONVERT10_S_NO_PRESENTATION* = HRESULT(0x000401C0)

+  MK_S_REDUCED_TO_SELF* = HRESULT(0x000401E2)

+  MK_S_ME* = HRESULT(0x000401E4)

+  MK_S_HIM* = HRESULT(0x000401E5)

+  MK_S_US* = HRESULT(0x000401E6)

+  MK_S_MONIKERALREADYREGISTERED* = HRESULT(0x000401E7)

+  CO_E_CLASS_CREATE_FAILED* = HRESULT(0x80080001)

+  CO_E_SCM_ERROR* = HRESULT(0x80080002)

+  CO_E_SCM_RPC_FAILURE* = HRESULT(0x80080003)

+  CO_E_BAD_PATH* = HRESULT(0x80080004)

+  CO_E_SERVER_EXEC_FAILURE* = HRESULT(0x80080005)

+  CO_E_OBJSRV_RPC_FAILURE* = HRESULT(0x80080006)

+  MK_E_NO_NORMALIZED* = HRESULT(0x80080007)

+  CO_E_SERVER_STOPPING* = HRESULT(0x80080008)

+  MEM_E_INVALID_ROOT* = HRESULT(0x80080009)

+  MEM_E_INVALID_LINK* = HRESULT(0x80080010)

+  MEM_E_INVALID_SIZE* = HRESULT(0x80080011)

+  CO_S_NOTALLINTERFACES* = HRESULT(0x00080012)

+  DISP_E_UNKNOWNINTERFACE* = HRESULT(0x80020001)

+  DISP_E_MEMBERNOTFOUND* = HRESULT(0x80020003)

+  DISP_E_PARAMNOTFOUND* = HRESULT(0x80020004)

+  DISP_E_TYPEMISMATCH* = HRESULT(0x80020005)

+  DISP_E_UNKNOWNNAME* = HRESULT(0x80020006)

+  DISP_E_NONAMEDARGS* = HRESULT(0x80020007)

+  DISP_E_BADVARTYPE* = HRESULT(0x80020008)

+  DISP_E_EXCEPTION* = HRESULT(0x80020009)

+  DISP_E_OVERFLOW* = HRESULT(0x8002000A)

+  DISP_E_BADINDEX* = HRESULT(0x8002000B)

+  DISP_E_UNKNOWNLCID* = HRESULT(0x8002000C)

+  DISP_E_ARRAYISLOCKED* = HRESULT(0x8002000D)

+  DISP_E_BADPARAMCOUNT* = HRESULT(0x8002000E)

+  DISP_E_PARAMNOTOPTIONAL* = HRESULT(0x8002000F)

+  DISP_E_BADCALLEE* = HRESULT(0x80020010)

+  DISP_E_NOTACOLLECTION* = HRESULT(0x80020011)

+  TYPE_E_BUFFERTOOSMALL* = HRESULT(0x80028016)

+  TYPE_E_INVDATAREAD* = HRESULT(0x80028018)

+  TYPE_E_UNSUPFORMAT* = HRESULT(0x80028019)

+  TYPE_E_REGISTRYACCESS* = HRESULT(0x8002801C)

+  TYPE_E_LIBNOTREGISTERED* = HRESULT(0x8002801D)

+  TYPE_E_UNDEFINEDTYPE* = HRESULT(0x80028027)

+  TYPE_E_QUALIFIEDNAMEDISALLOWED* = HRESULT(0x80028028)

+  TYPE_E_INVALIDSTATE* = HRESULT(0x80028029)

+  TYPE_E_WRONGTYPEKIND* = HRESULT(0x8002802A)

+  TYPE_E_ELEMENTNOTFOUND* = HRESULT(0x8002802B)

+  TYPE_E_AMBIGUOUSNAME* = HRESULT(0x8002802C)

+  TYPE_E_NAMECONFLICT* = HRESULT(0x8002802D)

+  TYPE_E_UNKNOWNLCID* = HRESULT(0x8002802E)

+  TYPE_E_DLLFUNCTIONNOTFOUND* = HRESULT(0x8002802F)

+  TYPE_E_BADMODULEKIND* = HRESULT(0x800288BD)

+  TYPE_E_SIZETOOBIG* = HRESULT(0x800288C5)

+  TYPE_E_DUPLICATEID* = HRESULT(0x800288C6)

+  TYPE_E_INVALIDID* = HRESULT(0x800288CF)

+  TYPE_E_TYPEMISMATCH* = HRESULT(0x80028CA0)

+  TYPE_E_OUTOFBOUNDS* = HRESULT(0x80028CA1)

+  TYPE_E_IOERROR* = HRESULT(0x80028CA2)

+  TYPE_E_CANTCREATETMPFILE* = HRESULT(0x80028CA3)

+  TYPE_E_CANTLOADLIBRARY* = HRESULT(0x80029C4A)

+  TYPE_E_INCONSISTENTPROPFUNCS* = HRESULT(0x80029C83)

+  TYPE_E_CIRCULARTYPE* = HRESULT(0x80029C84)

+  STG_E_INVALIDFUNCTION* = HRESULT(0x80030001)

+  STG_E_FILENOTFOUND* = HRESULT(0x80030002)

+  STG_E_PATHNOTFOUND* = HRESULT(0x80030003)

+  STG_E_TOOMANYOPENFILES* = HRESULT(0x80030004)

+  STG_E_ACCESSDENIED* = HRESULT(0x80030005)

+  STG_E_INVALIDHANDLE* = HRESULT(0x80030006)

+  STG_E_INSUFFICIENTMEMORY* = HRESULT(0x80030008)

+  STG_E_INVALIDPOINTER* = HRESULT(0x80030009)

+  STG_E_NOMOREFILES* = HRESULT(0x80030012)

+  STG_E_DISKISWRITEPROTECTED* = HRESULT(0x80030013)

+  STG_E_SEEKERROR* = HRESULT(0x80030019)

+  STG_E_WRITEFAULT* = HRESULT(0x8003001D)

+  STG_E_READFAULT* = HRESULT(0x8003001E)

+  STG_E_SHAREVIOLATION* = HRESULT(0x80030020)

+  STG_E_LOCKVIOLATION* = HRESULT(0x80030021)

+  STG_E_FILEALREADYEXISTS* = HRESULT(0x80030050)

+  STG_E_INVALIDPARAMETER* = HRESULT(0x80030057)

+  STG_E_MEDIUMFULL* = HRESULT(0x80030070)

+  STG_E_PROPSETMISMATCHED* = HRESULT(0x800300F0)

+  STG_E_ABNORMALAPIEXIT* = HRESULT(0x800300FA)

+  STG_E_INVALIDHEADER* = HRESULT(0x800300FB)

+  STG_E_INVALIDNAME* = HRESULT(0x800300FC)

+  STG_E_UNKNOWN* = HRESULT(0x800300FD)

+  STG_E_UNIMPLEMENTEDFUNCTION* = HRESULT(0x800300FE)

+  STG_E_INVALIDFLAG* = HRESULT(0x800300FF)

+  STG_E_INUSE* = HRESULT(0x80030100)

+  STG_E_NOTCURRENT* = HRESULT(0x80030101)

+  STG_E_REVERTED* = HRESULT(0x80030102)

+  STG_E_CANTSAVE* = HRESULT(0x80030103)

+  STG_E_OLDFORMAT* = HRESULT(0x80030104)

+  STG_E_OLDDLL* = HRESULT(0x80030105)

+  STG_E_SHAREREQUIRED* = HRESULT(0x80030106)

+  STG_E_NOTFILEBASEDSTORAGE* = HRESULT(0x80030107)

+  STG_E_EXTANTMARSHALLINGS* = HRESULT(0x80030108)

+  STG_E_DOCFILECORRUPT* = HRESULT(0x80030109)

+  STG_E_BADBASEADDRESS* = HRESULT(0x80030110)

+  STG_E_INCOMPLETE* = HRESULT(0x80030201)

+  STG_E_TERMINATED* = HRESULT(0x80030202)

+  STG_S_CONVERTED* = HRESULT(0x00030200)

+  STG_S_BLOCK* = HRESULT(0x00030201)

+  STG_S_RETRYNOW* = HRESULT(0x00030202)

+  STG_S_MONITORING* = HRESULT(0x00030203)

+  RPC_E_CALL_REJECTED* = HRESULT(0x80010001)

+  RPC_E_CALL_CANCELED* = HRESULT(0x80010002)

+  RPC_E_CANTPOST_INSENDCALL* = HRESULT(0x80010003)

+  RPC_E_CANTCALLOUT_INASYNCCALL* = HRESULT(0x80010004)

+  RPC_E_CANTCALLOUT_INEXTERNALCALL* = HRESULT(0x80010005)

+  RPC_E_CONNECTION_TERMINATED* = HRESULT(0x80010006)

+  RPC_E_SERVER_DIED* = HRESULT(0x80010007)

+  RPC_E_CLIENT_DIED* = HRESULT(0x80010008)

+  RPC_E_INVALID_DATAPACKET* = HRESULT(0x80010009)

+  RPC_E_CANTTRANSMIT_CALL* = HRESULT(0x8001000A)

+  RPC_E_CLIENT_CANTMARSHAL_DATA* = HRESULT(0x8001000B)

+  RPC_E_CLIENT_CANTUNMARSHAL_DATA* = HRESULT(0x8001000C)

+  RPC_E_SERVER_CANTMARSHAL_DATA* = HRESULT(0x8001000D)

+  RPC_E_SERVER_CANTUNMARSHAL_DATA* = HRESULT(0x8001000E)

+  RPC_E_INVALID_DATA* = HRESULT(0x8001000F)

+  RPC_E_INVALID_PARAMETER* = HRESULT(0x80010010)

+  RPC_E_CANTCALLOUT_AGAIN* = HRESULT(0x80010011)

+  RPC_E_SERVER_DIED_DNE* = HRESULT(0x80010012)

+  RPC_E_SYS_CALL_FAILED* = HRESULT(0x80010100)

+  RPC_E_OUT_OF_RESOURCES* = HRESULT(0x80010101)

+  RPC_E_ATTEMPTED_MULTITHREAD* = HRESULT(0x80010102)

+  RPC_E_NOT_REGISTERED* = HRESULT(0x80010103)

+  RPC_E_FAULT* = HRESULT(0x80010104)

+  RPC_E_SERVERFAULT* = HRESULT(0x80010105)

+  RPC_E_CHANGED_MODE* = HRESULT(0x80010106)

+  RPC_E_INVALIDMETHOD* = HRESULT(0x80010107)

+  RPC_E_DISCONNECTED* = HRESULT(0x80010108)

+  RPC_E_RETRY* = HRESULT(0x80010109)

+  RPC_E_SERVERCALL_RETRYLATER* = HRESULT(0x8001010A)

+  RPC_E_SERVERCALL_REJECTED* = HRESULT(0x8001010B)

+  RPC_E_INVALID_CALLDATA* = HRESULT(0x8001010C)

+  RPC_E_CANTCALLOUT_ININPUTSYNCCALL* = HRESULT(0x8001010D)

+  RPC_E_WRONG_THREAD* = HRESULT(0x8001010E)

+  RPC_E_THREAD_NOT_INIT* = HRESULT(0x8001010F)

+  RPC_E_VERSION_MISMATCH* = HRESULT(0x80010110)

+  RPC_E_INVALID_HEADER* = HRESULT(0x80010111)

+  RPC_E_INVALID_EXTENSION* = HRESULT(0x80010112)

+  RPC_E_INVALID_IPID* = HRESULT(0x80010113)

+  RPC_E_INVALID_OBJECT* = HRESULT(0x80010114)

+  RPC_S_CALLPENDING* = HRESULT(0x80010115)

+  RPC_S_WAITONTIMER* = HRESULT(0x80010116)

+  RPC_E_CALL_COMPLETE* = HRESULT(0x80010117)

+  RPC_E_UNSECURE_CALL* = HRESULT(0x80010118)

+  RPC_E_TOO_LATE* = HRESULT(0x80010119)

+  RPC_E_NO_GOOD_SECURITY_PACKAGES* = HRESULT(0x8001011A)

+  RPC_E_ACCESS_DENIED* = HRESULT(0x8001011B)

+  RPC_E_REMOTE_DISABLED* = HRESULT(0x8001011C)

+  RPC_E_INVALID_OBJREF* = HRESULT(0x8001011D)

+  RPC_E_UNEXPECTED* = HRESULT(0x8001FFFF)

+  NTE_BAD_UID* = HRESULT(0x80090001)

+  NTE_BAD_HASH* = HRESULT(0x80090002)

+  NTE_BAD_KEY* = HRESULT(0x80090003)

+  NTE_BAD_LEN* = HRESULT(0x80090004)

+  NTE_BAD_DATA* = HRESULT(0x80090005)

+  NTE_BAD_SIGNATURE* = HRESULT(0x80090006)

+  NTE_BAD_VER* = HRESULT(0x80090007)

+  NTE_BAD_ALGID* = HRESULT(0x80090008)

+  NTE_BAD_FLAGS* = HRESULT(0x80090009)

+  NTE_BAD_TYPE* = HRESULT(0x8009000A)

+  NTE_BAD_KEY_STATE* = HRESULT(0x8009000B)

+  NTE_BAD_HASH_STATE* = HRESULT(0x8009000C)

+  NTE_NO_KEY* = HRESULT(0x8009000D)

+  NTE_NO_MEMORY* = HRESULT(0x8009000E)

+  NTE_EXISTS* = HRESULT(0x8009000F)

+  NTE_PERM* = HRESULT(0x80090010)

+  NTE_NOT_FOUND* = HRESULT(0x80090011)

+  NTE_DOUBLE_ENCRYPT* = HRESULT(0x80090012)

+  NTE_BAD_PROVIDER* = HRESULT(0x80090013)

+  NTE_BAD_PROV_TYPE* = HRESULT(0x80090014)

+  NTE_BAD_PUBLIC_KEY* = HRESULT(0x80090015)

+  NTE_BAD_KEYSET* = HRESULT(0x80090016)

+  NTE_PROV_TYPE_NOT_DEF* = HRESULT(0x80090017)

+  NTE_PROV_TYPE_ENTRY_BAD* = HRESULT(0x80090018)

+  NTE_KEYSET_NOT_DEF* = HRESULT(0x80090019)

+  NTE_KEYSET_ENTRY_BAD* = HRESULT(0x8009001A)

+  NTE_PROV_TYPE_NO_MATCH* = HRESULT(0x8009001B)

+  NTE_SIGNATURE_FILE_BAD* = HRESULT(0x8009001C)

+  NTE_PROVIDER_DLL_FAIL* = HRESULT(0x8009001D)

+  NTE_PROV_DLL_NOT_FOUND* = HRESULT(0x8009001E)

+  NTE_BAD_KEYSET_PARAM* = HRESULT(0x8009001F)

+  NTE_FAIL* = HRESULT(0x80090020)

+  NTE_SYS_ERR* = HRESULT(0x80090021)

+  NTE_OP_OK* = HRESULT(0)

+  TRUST_E_PROVIDER_UNKNOWN* = HRESULT(0x800B0001)

+  TRUST_E_ACTION_UNKNOWN* = HRESULT(0x800B0002)

+  TRUST_E_SUBJECT_FORM_UNKNOWN* = HRESULT(0x800B0003)

+  TRUST_E_SUBJECT_NOT_TRUSTED* = HRESULT(0x800B0004)

+  DIGSIG_E_ENCODE* = HRESULT(0x800B0005)

+  DIGSIG_E_DECODE* = HRESULT(0x800B0006)

+  DIGSIG_E_EXTENSIBILITY* = HRESULT(0x800B0007)

+  DIGSIG_E_CRYPTO* = HRESULT(0x800B0008)

+  PERSIST_E_SIZEDEFINITE* = HRESULT(0x800B0009)

+  PERSIST_E_SIZEINDEFINITE* = HRESULT(0x800B000A)

+  PERSIST_E_NOTSELFSIZING* = HRESULT(0x800B000B)

+  TRUST_E_NOSIGNATURE* = HRESULT(0x800B0100)

+  CERT_E_EXPIRED* = HRESULT(0x800B0101)

+  CERT_E_VALIDIYPERIODNESTING* = HRESULT(0x800B0102)

+  CERT_E_ROLE* = HRESULT(0x800B0103)

+  CERT_E_PATHLENCONST* = HRESULT(0x800B0104)

+  CERT_E_CRITICAL* = HRESULT(0x800B0105)

+  CERT_E_PURPOSE* = HRESULT(0x800B0106)

+  CERT_E_ISSUERCHAINING* = HRESULT(0x800B0107)

+  CERT_E_MALFORMED* = HRESULT(0x800B0108)

+  CERT_E_UNTRUSTEDROOT* = HRESULT(0x800B0109)

+  CERT_E_CHAINING* = HRESULT(0x800B010A)

+

+proc UNICODE_NULL*(): WCHAR

+const

+  LF_FACESIZE* = 32

+  LF_FULLFACESIZE* = 64

+  ELF_VENDOR_SIZE* = 4

+  SECURITY_STATIC_TRACKING* = 0

+  SECURITY_DYNAMIC_TRACKING* = 1

+  MAX_DEFAULTCHAR* = 2

+  MAX_LEADBYTES* = 12

+  EXCEPTION_MAXIMUM_PARAMETERS* = 15

+  CCHDEVICENAME* = 32

+  CCHFORMNAME* = 32

+  MENU_TEXT_LEN* = 40

+  MAX_LANA* = 254

+  NCBNAMSZ* = 16

+  NETBIOS_NAME_LEN* = 16

+  OFS_MAXPATHNAME* = 128

+  MAX_TAB_STOPS* = 32

+  ANYSIZE_ARRAY* = 1

+  RAS_MaxCallbackNumber* = 128

+  RAS_MaxDeviceName* = 128

+  RAS_MaxDeviceType* = 16

+  RAS_MaxEntryName* = 256

+  RAS_MaxIpAddress* = 15

+  RAS_MaxIpxAddress* = 21

+  RAS_MaxPhoneNumber* = 128

+  UNLEN* = 256

+  PWLEN* = 256

+  CNLEN* = 15

+  DNLEN* = 15

+  # Unsigned types max

+  MAXDWORD* = 0xFFFFFFFF

+  MAXWORD* = 0x0000FFFF

+  MAXBYTE* = 0x000000FF

+  # Signed types max/min

+  MINCHAR* = 0x00000080

+  MAXCHAR* = 0x0000007F

+  MINSHORT* = 0x00008000

+  MAXSHORT* = 0x00007FFF

+  MINLONG* = 0x80000000

+  MAXLONG* = 0x7FFFFFFF

+  # _llseek

+  FILE_BEGIN* = 0

+  FILE_CURRENT* = 1

+  FILE_END* = 2

+  # _lopen, LZOpenFile, OpenFile

+  OF_READ* = 0

+  OF_READWRITE* = 2

+  OF_WRITE* = 1

+  OF_SHARE_COMPAT* = 0

+  OF_SHARE_DENY_NONE* = 64

+  OF_SHARE_DENY_READ* = 48

+  OF_SHARE_DENY_WRITE* = 32

+  OF_SHARE_EXCLUSIVE* = 16

+  OF_CANCEL* = 2048

+  OF_CREATE* = 4096

+  OF_DELETE* = 512

+  OF_EXIST* = 16384

+  OF_PARSE* = 256

+  OF_PROMPT* = 8192

+  OF_REOPEN* = 32768

+  OF_VERIFY* = 1024

+  # ActivateKeyboardLayout, LoadKeyboardLayout

+  HKL_NEXT* = 1

+  HKL_PREV* = 0

+  KLF_REORDER* = 8

+  KLF_UNLOADPREVIOUS* = 4

+  KLF_ACTIVATE* = 1

+  KLF_NOTELLSHELL* = 128

+  KLF_REPLACELANG* = 16

+  KLF_SUBSTITUTE_OK* = 2

+  # AppendMenu

+  MF_BITMAP* = 0x00000004

+  MF_DISABLED* = 0x00000002

+  MF_ENABLED* = 0

+  MF_GRAYED* = 0x00000001

+  MF_HELP* = 0x00004000

+  MF_MENUBARBREAK* = 0x00000020

+  MF_MENUBREAK* = 0x00000040

+  MF_MOUSESELECT* = 0x00008000

+  MF_OWNERDRAW* = 0x00000100

+  MF_POPUP* = 0x00000010

+  MF_SEPARATOR* = 0x00000800

+  MF_STRING* = 0

+  MF_SYSMENU* = 0x00002000

+  MF_USECHECKBITMAPS* = 0x00000200

+  # Ternary Raster Operations - BitBlt

+  BLACKNESS* = 0x00000042

+  NOTSRCERASE* = 0x001100A6

+  NOTSRCCOPY* = 0x00330008

+  SRCERASE* = 0x00440328

+  DSTINVERT* = 0x00550009

+  PATINVERT* = 0x005A0049

+  SRCINVERT* = 0x00660046

+  SRCAND* = 0x008800C6

+  MERGEPAINT* = 0x00BB0226

+  MERGECOPY* = 0x00C000CA

+  SRCCOPY* = 0x00CC0020

+  SRCPAINT* = 0x00EE0086

+  PATCOPY* = 0x00F00021

+  PATPAINT* = 0x00FB0A09

+  WHITENESS* = 0x00FF0062

+  # Binary Raster Operations

+  R2_BLACK* = 1

+  R2_COPYPEN* = 13

+  R2_MASKNOTPEN* = 3

+  R2_MASKPEN* = 9

+  R2_MASKPENNOT* = 5

+  R2_MERGENOTPEN* = 12

+  R2_MERGEPEN* = 15

+  R2_MERGEPENNOT* = 14

+  R2_NOP* = 11

+  R2_NOT* = 6

+  R2_NOTCOPYPEN* = 4

+  R2_NOTMASKPEN* = 8

+  R2_NOTMERGEPEN* = 2

+  R2_NOTXORPEN* = 10

+  R2_WHITE* = 16

+  R2_XORPEN* = 7

+  # BroadcastSystemMessage

+  BSF_FLUSHDISK* = 4

+  BSF_FORCEIFHUNG* = 32

+  BSF_IGNORECURRENTTASK* = 2

+  BSF_NOHANG* = 8

+  BSF_POSTMESSAGE* = 16

+  BSF_QUERY* = 1

+  BSM_ALLCOMPONENTS* = 0

+  BSM_APPLICATIONS* = 8

+  BSM_INSTALLABLEDRIVERS* = 4

+  BSM_NETDRIVER* = 2

+  BSM_VXDS* = 1

+  BROADCAST_QUERY_DENY* = 1112363332

+                                     # CallNamedPipe

+  NMPWAIT_NOWAIT* = 1

+  NMPWAIT_WAIT_FOREVER* = -1

+  NMPWAIT_USE_DEFAULT_WAIT* = 0

+  # CascadeWindows, TileWindows

+  MDITILE_SKIPDISABLED* = 2

+  MDITILE_HORIZONTAL* = 1

+  MDITILE_VERTICAL* = 0

+  # CBTProc

+  HCBT_ACTIVATE* = 5

+  HCBT_CLICKSKIPPED* = 6

+  HCBT_CREATEWND* = 3

+  HCBT_DESTROYWND* = 4

+  HCBT_KEYSKIPPED* = 7

+  HCBT_MINMAX* = 1

+  HCBT_MOVESIZE* = 0

+  HCBT_QS* = 2

+  HCBT_SETFOCUS* = 9

+  HCBT_SYSCOMMAND* = 8

+

+  CDS_UPDATEREGISTRY* = 1

+  CDS_TEST* = 2

+  CDS_FULLSCREEN* = 4

+  CDS_GLOBAL* = 8

+  CDS_SET_PRIMARY* = 0x00000010

+  CDS_RESET* = 0x40000000

+  CDS_SETRECT* = 0x20000000

+  CDS_NORESET* = 0x10000000

+  DISP_CHANGE_SUCCESSFUL* = 0

+  DISP_CHANGE_RESTART* = 1

+  DISP_CHANGE_BADFLAGS* = -4

+  DISP_CHANGE_FAILED* = -1

+  DISP_CHANGE_BADMODE* = -2

+  DISP_CHANGE_NOTUPDATED* = -3

+  # ChangeServiceConfig

+  SERVICE_NO_CHANGE* = -1

+  SERVICE_WIN32_OWN_PROCESS* = 16

+  SERVICE_WIN32_SHARE_PROCESS* = 32

+  SERVICE_KERNEL_DRIVER* = 1

+  SERVICE_FILE_SYSTEM_DRIVER* = 2

+  SERVICE_INTERACTIVE_PROCESS* = 256

+  SERVICE_BOOT_START* = 0

+  SERVICE_SYSTEM_START* = 1

+  SERVICE_AUTO_START* = 2

+  SERVICE_DEMAND_START* = 3

+  SERVICE_DISABLED* = 4

+  SERVICE_STOPPED* = 1

+  SERVICE_START_PENDING* = 2

+  SERVICE_STOP_PENDING* = 3

+  SERVICE_RUNNING* = 4

+  SERVICE_CONTINUE_PENDING* = 5

+  SERVICE_PAUSE_PENDING* = 6

+  SERVICE_PAUSED* = 7

+  SERVICE_ACCEPT_STOP* = 1

+  SERVICE_ACCEPT_PAUSE_CONTINUE* = 2

+  SERVICE_ACCEPT_SHUTDOWN* = 4

+  # CheckDlgButton

+  BST_CHECKED* = 1

+  BST_INDETERMINATE* = 2

+  BST_UNCHECKED* = 0

+  BST_FOCUS* = 8

+  BST_PUSHED* = 4

+  # CheckMenuItem, HiliteMenuItem

+  MF_BYCOMMAND* = 0

+  MF_BYPOSITION* = 0x00000400

+  MF_CHECKED* = 0x00000008

+  MF_UNCHECKED* = 0

+  MF_HILITE* = 0x00000080

+  MF_UNHILITE* = 0

+  # ChildWindowFromPointEx

+  CWP_ALL* = 0

+  CWP_SKIPINVISIBLE* = 1

+  CWP_SKIPDISABLED* = 2

+  CWP_SKIPTRANSPARENT* = 4

+  # ClearCommError

+  CE_BREAK* = 16

+  CE_DNS* = 2048

+  CE_FRAME* = 8

+  CE_IOE* = 1024

+  CE_MODE* = 32768

+  CE_OOP* = 4096

+  CE_OVERRUN* = 2

+  CE_PTO* = 512

+  CE_RXOVER* = 1

+  CE_RXPARITY* = 4

+  CE_TXFULL* = 256

+                              # CombineRgn

+  RGN_AND* = 1

+  RGN_COPY* = 5

+  RGN_DIFF* = 4

+  RGN_OR* = 2

+  RGN_XOR* = 3

+  NULLREGION* = 1

+  SIMPLEREGION* = 2

+  COMPLEXREGION* = 3

+  ERROR* = 0

+  # CommonDlgExtendedError

+  CDERR_DIALOGFAILURE* = 0x0000FFFF

+  CDERR_FINDRESFAILURE* = 6

+  CDERR_INITIALIZATION* = 2

+  CDERR_LOADRESFAILURE* = 7

+  CDERR_LOADSTRFAILURE* = 5

+  CDERR_LOCKRESFAILURE* = 8

+  CDERR_MEMALLOCFAILURE* = 9

+  CDERR_MEMLOCKFAILURE* = 10

+  CDERR_NOHINSTANCE* = 4

+  CDERR_NOHOOK* = 11

+  CDERR_NOTEMPLATE* = 3

+  CDERR_REGISTERMSGFAIL* = 12

+  CDERR_STRUCTSIZE* = 1

+  PDERR_CREATEICFAILURE* = 0x00001000 + 10

+  PDERR_DEFAULTDIFFERENT* = 0x00001000 + 12

+  PDERR_DNDMMISMATCH* = 0x00001000 + 9

+  PDERR_GETDEVMODEFAIL* = 0x00001000 + 5

+  PDERR_INITFAILURE* = 0x00001000 + 6

+  PDERR_LOADDRVFAILURE* = 0x00001000 + 4

+  PDERR_NODEFAULTPRN* = 0x00001000 + 8

+  PDERR_NODEVICES* = 0x00001000 + 7

+  PDERR_PARSEFAILURE* = 0x00001000 + 2

+  PDERR_PRINTERNOTFOUND* = 0x00001000 + 11

+  PDERR_RETDEFFAILURE* = 0x00001000 + 3

+  PDERR_SETUPFAILURE* = 0x00001000 + 1

+  CFERR_MAXLESSTHANMIN* = 0x00002000 + 2

+  CFERR_NOFONTS* = 0x00002000 + 1

+  FNERR_BUFFERTOOSMALL* = 0x00003000 + 3

+  FNERR_INVALIDFILENAME* = 0x00003000 + 2

+  FNERR_SUBCLASSFAILURE* = 0x00003000 + 1

+  FRERR_BUFFERLENGTHZERO* = 0x00004000 + 1

+  # CompareString, LCMapString

+  LOCALE_SYSTEM_DEFAULT* = 0x00000800

+  LOCALE_USER_DEFAULT* = 0x00000400

+  NORM_IGNORECASE* = 1

+  NORM_IGNOREKANATYPE* = 65536

+  NORM_IGNORENONSPACE* = 2

+  NORM_IGNORESYMBOLS* = 4

+  NORM_IGNOREWIDTH* = 131072

+  SORT_STRINGSORT* = 4096

+  LCMAP_BYTEREV* = 2048

+  LCMAP_FULLWIDTH* = 8388608

+  LCMAP_HALFWIDTH* = 4194304

+  LCMAP_HIRAGANA* = 1048576

+  LCMAP_KATAKANA* = 2097152

+  LCMAP_LOWERCASE* = 256

+  LCMAP_SORTKEY* = 1024

+  LCMAP_UPPERCASE* = 512

+  # ContinueDebugEvent

+  DBG_CONTINUE* = 0x00010002

+  DBG_CONTROL_BREAK* = 0x40010008

+  DBG_CONTROL_C* = 0x40010005

+  DBG_EXCEPTION_NOT_HANDLED* = 0x80010001

+  DBG_TERMINATE_THREAD* = 0x40010003

+  DBG_TERMINATE_PROCESS* = 0x40010004

+  # ControlService

+  SERVICE_CONTROL_STOP* = 1

+  SERVICE_CONTROL_PAUSE* = 2

+  SERVICE_CONTROL_CONTINUE* = 3

+  SERVICE_CONTROL_INTERROGATE* = 4

+  SERVICE_CONTROL_SHUTDOWN* = 5

+  # CopyImage, LoadImage

+  IMAGE_BITMAP* = 0

+  IMAGE_CURSOR* = 2

+  IMAGE_ENHMETAFILE* = 1

+  IMAGE_ICON* = 1

+  LR_MONOCHROME* = 1

+  LR_COLOR* = 2

+  LR_COPYRETURNORG* = 4

+  LR_COPYDELETEORG* = 8

+  LR_DEFAULTSIZE* = 64

+  LR_CREATEDIBSECTION* = 8192

+  LR_COPYFROMRESOURCE* = 0x00004000

+  LR_SHARED* = 0x00008000

+  # CreateDesktop

+  DF_ALLOWOTHERACCOUNTHOOK* = 0x00000001

+  DESKTOP_CREATEMENU* = 0x00000004

+  DESKTOP_CREATEWINDOW* = 0x00000002

+  DESKTOP_ENUMERATE* = 0x00000040

+  DESKTOP_HOOKCONTROL* = 0x00000008

+  DESKTOP_JOURNALPLAYBACK* = 0x00000020

+  DESKTOP_JOURNALRECORD* = 0x00000010

+  DESKTOP_READOBJECTS* = 0x00000001

+  DESKTOP_SWITCHDESKTOP* = 0x00000100

+  DESKTOP_WRITEOBJECTS* = 0x00000080

+  WSF_VISIBLE* = 0x00000001

+  # CreateDIBitmap

+  CBM_INIT* = 0x00000004

+  DIB_PAL_COLORS* = 1

+  DIB_RGB_COLORS* = 0

+  # CreateFile, GetFileAttributes, SetFileAttributes

+  GENERIC_READ* = 0x80000000

+  GENERIC_WRITE* = 0x40000000

+  FILE_READ_DATA* = 0x00000001 # file & pipe

+  FILE_LIST_DIRECTORY* = 0x00000001 # directory

+  FILE_WRITE_DATA* = 0x00000002 # file & pipe

+  FILE_ADD_FILE* = 0x00000002 # directory

+  FILE_APPEND_DATA* = 0x00000004 # file

+  FILE_ADD_SUBDIRECTORY* = 0x00000004 # directory

+  FILE_CREATE_PIPE_INSTANCE* = 0x00000004 # named pipe

+  FILE_READ_EA* = 0x00000008 # file & directory

+  FILE_READ_PROPERTIES* = FILE_READ_EA

+  FILE_WRITE_EA* = 0x00000010 # file & directory

+  FILE_WRITE_PROPERTIES* = FILE_WRITE_EA

+  FILE_EXECUTE* = 0x00000020 # file

+  FILE_TRAVERSE* = 0x00000020 # directory

+  FILE_DELETE_CHILD* = 0x00000040 # directory

+  FILE_READ_ATTRIBUTES* = 0x00000080 # all

+  FILE_WRITE_ATTRIBUTES* = 0x00000100 # all

+  FILE_SHARE_DELETE* = 4

+  FILE_SHARE_READ* = 1

+  FILE_SHARE_WRITE* = 2

+  CONSOLE_TEXTMODE_BUFFER* = 1

+  CREATE_NEW* = 1

+  CREATE_ALWAYS* = 2

+  OPEN_EXISTING* = 3

+  OPEN_ALWAYS* = 4

+  TRUNCATE_EXISTING* = 5

+  FILE_ATTRIBUTE_ARCHIVE* = 32

+  FILE_ATTRIBUTE_COMPRESSED* = 2048

+  FILE_ATTRIBUTE_NORMAL* = 128

+  FILE_ATTRIBUTE_DIRECTORY* = 16

+  FILE_ATTRIBUTE_HIDDEN* = 2

+  FILE_ATTRIBUTE_READONLY* = 1

+  FILE_ATTRIBUTE_SYSTEM* = 4

+  FILE_ATTRIBUTE_TEMPORARY* = 256

+  FILE_FLAG_WRITE_THROUGH* = 0x80000000

+  FILE_FLAG_OVERLAPPED* = 1073741824

+  FILE_FLAG_NO_BUFFERING* = 536870912

+  FILE_FLAG_RANDOM_ACCESS* = 268435456

+  FILE_FLAG_SEQUENTIAL_SCAN* = 134217728

+  FILE_FLAG_DELETE_ON_CLOSE* = 67108864

+  FILE_FLAG_BACKUP_SEMANTICS* = 33554432

+  FILE_FLAG_POSIX_SEMANTICS* = 16777216

+  cSECURITY_ANONYMOUS* = 0

+  cSECURITY_IDENTIFICATION* = 65536

+  cSECURITY_IMPERSONATION* = 131072

+  cSECURITY_DELEGATION* = 196608

+  cSECURITY_CONTEXT_TRACKING* = 262144

+  cSECURITY_EFFECTIVE_ONLY* = 524288

+  cSECURITY_SQOS_PRESENT* = 1048576

+  # CreateFileMapping, VirtualAlloc, VirtualFree, VirtualProtect

+  SEC_COMMIT* = 134217728

+  SEC_IMAGE* = 16777216

+  SEC_NOCACHE* = 268435456

+  SEC_RESERVE* = 67108864

+  PAGE_READONLY* = 2

+  PAGE_READWRITE* = 4

+  PAGE_WRITECOPY* = 8

+  PAGE_EXECUTE* = 16

+  PAGE_EXECUTE_READ* = 32

+  PAGE_EXECUTE_READWRITE* = 64

+  PAGE_EXECUTE_WRITECOPY* = 128

+  PAGE_GUARD* = 256

+  PAGE_NOACCESS* = 1

+  PAGE_NOCACHE* = 512

+  MEM_COMMIT* = 4096

+  MEM_FREE* = 65536

+  MEM_RESERVE* = 8192

+  MEM_IMAGE* = 16777216

+  MEM_MAPPED* = 262144

+  MEM_PRIVATE* = 131072

+  MEM_DECOMMIT* = 16384

+  MEM_RELEASE* = 32768

+  MEM_TOP_DOWN* = 1048576

+  EXCEPTION_GUARD_PAGE* = 0x80000001

+  SECTION_EXTEND_SIZE* = 0x00000010

+  SECTION_MAP_READ* = 0x00000004

+  SECTION_MAP_WRITE* = 0x00000002

+  SECTION_QUERY* = 0x00000001

+  SECTION_ALL_ACCESS* = 0x000F001F

+  # CreateFont

+  FW_DONTCARE* = 0

+  FW_THIN* = 100

+  FW_EXTRALIGHT* = 200

+  FW_LIGHT* = 300

+  FW_NORMAL* = 400

+  FW_REGULAR* = FW_NORMAL

+  FW_MEDIUM* = 500

+  FW_SEMIBOLD* = 600

+  FW_BOLD* = 700

+  FW_EXTRABOLD* = 800

+  FW_HEAVY* = 900

+  ANSI_CHARSET* = 0

+  DEFAULT_CHARSET* = 1

+  SYMBOL_CHARSET* = 2

+  SHIFTJIS_CHARSET* = 128

+  HANGEUL_CHARSET* = 129

+  GB2312_CHARSET* = 134

+  CHINESEBIG5_CHARSET* = 136

+  GREEK_CHARSET* = 161

+  TURKISH_CHARSET* = 162

+  HEBREW_CHARSET* = 177

+  ARABIC_CHARSET* = 178

+  BALTIC_CHARSET* = 186

+  RUSSIAN_CHARSET* = 204

+  THAI_CHARSET* = 222

+  EASTEUROPE_CHARSET* = 238

+  OEM_CHARSET* = 255

+  OUT_DEFAULT_PRECIS* = 0

+  OUT_STRING_PRECIS* = 1

+  OUT_CHARACTER_PRECIS* = 2

+  OUT_STROKE_PRECIS* = 3

+  OUT_TT_PRECIS* = 4

+  OUT_DEVICE_PRECIS* = 5

+  OUT_RASTER_PRECIS* = 6

+  OUT_TT_ONLY_PRECIS* = 7

+  OUT_OUTLINE_PRECIS* = 8

+  CLIP_DEFAULT_PRECIS* = 0

+  CLIP_CHARACTER_PRECIS* = 1

+  CLIP_STROKE_PRECIS* = 2

+  CLIP_MASK* = 15

+  CLIP_LH_ANGLES* = 16

+  CLIP_TT_ALWAYS* = 32

+  CLIP_EMBEDDED* = 128

+  DEFAULT_QUALITY* = 0

+  DRAFT_QUALITY* = 1

+  PROOF_QUALITY* = 2

+  NONANTIALIASED_QUALITY* = 3

+  ANTIALIASED_QUALITY* = 4

+  DEFAULT_PITCH* = 0

+  FIXED_PITCH* = 1

+  VARIABLE_PITCH* = 2

+  MONO_FONT* = 8

+  FF_DECORATIVE* = 80

+  FF_DONTCARE* = 0

+  FF_MODERN* = 48

+  FF_ROMAN* = 16

+  FF_SCRIPT* = 64

+  FF_SWISS* = 32

+  # CreateHatchBrush

+  HS_BDIAGONAL* = 3

+  HS_CROSS* = 4

+  HS_DIAGCROSS* = 5

+  HS_FDIAGONAL* = 2

+  HS_HORIZONTAL* = 0

+  HS_VERTICAL* = 1

+  # CreateIconFromResourceEx

+  LR_DEFAULTCOLOR* = 0

+  LR_LOADREALSIZE* = 128

+                              # CreateMailslot, GetMailslotInfo

+  MAILSLOT_WAIT_FOREVER* = 0xFFFFFFFF

+  MAILSLOT_NO_MESSAGE* = 0xFFFFFFFF

+  # CreateMappedBitmap

+  CMB_MASKED* = 2

+  # CreateNamedPipe

+  PIPE_ACCESS_DUPLEX* = 3

+  PIPE_ACCESS_INBOUND* = 1

+  PIPE_ACCESS_OUTBOUND* = 2

+  WRITE_DAC* = 0x00040000

+  WRITE_OWNER* = 0x00080000

+  ACCESS_SYSTEM_SECURITY* = 0x01000000

+  PIPE_TYPE_BYTE* = 0

+  PIPE_TYPE_MESSAGE* = 4

+  PIPE_READMODE_BYTE* = 0

+  PIPE_READMODE_MESSAGE* = 2

+  PIPE_WAIT* = 0

+  PIPE_NOWAIT* = 1

+  # CreatePen, ExtCreatePen

+  PS_GEOMETRIC* = 65536

+  PS_COSMETIC* = 0

+  PS_ALTERNATE* = 8

+  PS_SOLID* = 0

+  PS_DASH* = 1

+  PS_DOT* = 2

+  PS_DASHDOT* = 3

+  PS_DASHDOTDOT* = 4

+  PS_NULL* = 5

+  PS_USERSTYLE* = 7

+  PS_INSIDEFRAME* = 6

+  PS_ENDCAP_ROUND* = 0

+  PS_ENDCAP_SQUARE* = 256

+  PS_ENDCAP_FLAT* = 512

+  PS_JOIN_BEVEL* = 4096

+  PS_JOIN_MITER* = 8192

+  PS_JOIN_ROUND* = 0

+  PS_STYLE_MASK* = 15

+  PS_ENDCAP_MASK* = 3840

+  PS_TYPE_MASK* = 983040

+  # CreatePolygonRgn

+  ALTERNATE* = 1

+  WINDING* = 2

+  # CreateProcess

+  CREATE_DEFAULT_ERROR_MODE* = 67108864

+  CREATE_NEW_CONSOLE* = 16

+  CREATE_NEW_PROCESS_GROUP* = 512

+  CREATE_SEPARATE_WOW_VDM* = 2048

+  CREATE_SUSPENDED* = 4

+  CREATE_UNICODE_ENVIRONMENT* = 1024

+  DEBUG_PROCESS* = 1

+  DEBUG_ONLY_THIS_PROCESS* = 2

+  DETACHED_PROCESS* = 8

+  HIGH_PRIORITY_CLASS* = 128

+  IDLE_PRIORITY_CLASS* = 64

+  NORMAL_PRIORITY_CLASS* = 32

+  REALTIME_PRIORITY_CLASS* = 256

+  # CreateService

+  SERVICE_ALL_ACCESS* = 0x000F01FF

+  SERVICE_CHANGE_CONFIG* = 2

+  SERVICE_ENUMERATE_DEPENDENTS* = 8

+  SERVICE_INTERROGATE* = 128

+  SERVICE_PAUSE_CONTINUE* = 64

+  SERVICE_QUERY_CONFIG* = 1

+  SERVICE_QUERY_STATUS* = 4

+  SERVICE_START* = 16

+  SERVICE_STOP* = 32

+  SERVICE_USER_DEFINED_CONTROL* = 256

+  SERVICE_DELETE* = 0x00010000

+  SERVICE_READ_CONTROL* = 0x00020000

+  SERVICE_GENERIC_EXECUTE* = 0x20000000

+  SERVICE_ERROR_IGNORE* = 0

+  SERVICE_ERROR_NORMAL* = 1

+  SERVICE_ERROR_SEVERE* = 2

+  SERVICE_ERROR_CRITICAL* = 3

+  # CreateTapePartition, WriteTapemark

+  TAPE_FIXED_PARTITIONS* = 0

+  TAPE_INITIATOR_PARTITIONS* = 0x00000002

+  TAPE_SELECT_PARTITIONS* = 0x00000001

+  TAPE_FILEMARKS* = 0x00000001

+  TAPE_LONG_FILEMARKS* = 0x00000003

+  TAPE_SETMARKS* = 0

+  TAPE_SHORT_FILEMARKS* = 0x00000002

+  # CreateWindow

+  CW_USEDEFAULT* = int32(0x80000000)

+  WS_BORDER* = 0x00800000

+  WS_CAPTION* = 0x00C00000

+  WS_CHILD* = 0x40000000

+  WS_CHILDWINDOW* = 0x40000000

+  WS_CLIPCHILDREN* = 0x02000000

+  WS_CLIPSIBLINGS* = 0x04000000

+  WS_DISABLED* = 0x08000000

+  WS_DLGFRAME* = 0x00400000

+  WS_GROUP* = 0x00020000

+  WS_HSCROLL* = 0x00100000

+  WS_ICONIC* = 0x20000000

+  WS_MAXIMIZE* = 0x01000000

+  WS_MAXIMIZEBOX* = 0x00010000

+  WS_MINIMIZE* = 0x20000000

+  WS_MINIMIZEBOX* = 0x00020000

+  WS_OVERLAPPED* = 0

+  WS_OVERLAPPEDWINDOW* = 0x00CF0000

+  WS_POPUP* = LONG(0x80000000)

+  WS_POPUPWINDOW* = LONG(0x80880000)

+  WS_SIZEBOX* = 0x00040000

+  WS_SYSMENU* = 0x00080000

+  WS_TABSTOP* = 0x00010000

+  WS_THICKFRAME* = 0x00040000

+  WS_TILED* = 0

+  WS_TILEDWINDOW* = 0x00CF0000

+  WS_VISIBLE* = 0x10000000

+  WS_VSCROLL* = 0x00200000

+  MDIS_ALLCHILDSTYLES* = 0x00000001

+  BS_3STATE* = 0x00000005

+  BS_AUTO3STATE* = 0x00000006

+  BS_AUTOCHECKBOX* = 0x00000003

+  BS_AUTORADIOBUTTON* = 0x00000009

+  BS_BITMAP* = 0x00000080

+  BS_BOTTOM* = 0x00000800

+  BS_CENTER* = 0x00000300

+  BS_CHECKBOX* = 0x00000002

+  BS_DEFPUSHBUTTON* = 0x00000001

+  BS_GROUPBOX* = 0x00000007

+  BS_ICON* = 0x00000040

+  BS_LEFT* = 0x00000100

+  BS_LEFTTEXT* = 0x00000020

+  BS_MULTILINE* = 0x00002000

+  BS_NOTIFY* = 0x00004000

+  BS_OWNERDRAW* = 0x0000000B

+  BS_PUSHBUTTON* = 0

+  BS_PUSHLIKE* = 0x00001000

+  BS_RADIOBUTTON* = 0x00000004

+  BS_RIGHT* = 0x00000200

+  BS_RIGHTBUTTON* = 0x00000020

+  BS_TEXT* = 0

+  BS_TOP* = 0x00000400

+  BS_USERBUTTON* = 0x00000008

+  BS_VCENTER* = 0x00000C00

+  BS_FLAT* = 0x00008000

+  CBS_AUTOHSCROLL* = 0x00000040

+  CBS_DISABLENOSCROLL* = 0x00000800

+  CBS_DROPDOWN* = 0x00000002

+  CBS_DROPDOWNLIST* = 0x00000003

+  CBS_HASSTRINGS* = 0x00000200

+  CBS_LOWERCASE* = 0x00004000

+  CBS_NOINTEGRALHEIGHT* = 0x00000400

+  CBS_OEMCONVERT* = 0x00000080

+  CBS_OWNERDRAWFIXED* = 0x00000010

+  CBS_OWNERDRAWVARIABLE* = 0x00000020

+  CBS_SIMPLE* = 0x00000001

+  CBS_SORT* = 0x00000100

+  CBS_UPPERCASE* = 0x00002000

+  ES_AUTOHSCROLL* = 0x00000080

+  ES_AUTOVSCROLL* = 0x00000040

+  ES_CENTER* = 0x00000001

+  ES_LEFT* = 0

+  ES_LOWERCASE* = 0x00000010

+  ES_MULTILINE* = 0x00000004

+  ES_NOHIDESEL* = 0x00000100

+  ES_NUMBER* = 0x00002000

+  ES_OEMCONVERT* = 0x00000400

+  ES_PASSWORD* = 0x00000020

+  ES_READONLY* = 0x00000800

+  ES_RIGHT* = 0x00000002

+  ES_UPPERCASE* = 0x00000008

+  ES_WANTRETURN* = 0x00001000

+  LBS_DISABLENOSCROLL* = 0x00001000

+  LBS_EXTENDEDSEL* = 0x00000800

+  LBS_HASSTRINGS* = 0x00000040

+  LBS_MULTICOLUMN* = 0x00000200

+  LBS_MULTIPLESEL* = 0x00000008

+  LBS_NODATA* = 0x00002000

+  LBS_NOINTEGRALHEIGHT* = 0x00000100

+  LBS_NOREDRAW* = 0x00000004

+  LBS_NOSEL* = 0x00004000

+  LBS_NOTIFY* = 0x00000001

+  LBS_OWNERDRAWFIXED* = 0x00000010

+  LBS_OWNERDRAWVARIABLE* = 0x00000020

+  LBS_SORT* = 0x00000002

+  LBS_STANDARD* = 0x00A00003

+  LBS_USETABSTOPS* = 0x00000080

+  LBS_WANTKEYBOARDINPUT* = 0x00000400

+  SBS_BOTTOMALIGN* = 0x00000004

+  SBS_HORZ* = 0

+  SBS_LEFTALIGN* = 0x00000002

+  SBS_RIGHTALIGN* = 0x00000004

+  SBS_SIZEBOX* = 0x00000008

+  SBS_SIZEBOXBOTTOMRIGHTALIGN* = 0x00000004

+  SBS_SIZEBOXTOPLEFTALIGN* = 0x00000002

+  SBS_SIZEGRIP* = 0x00000010

+  SBS_TOPALIGN* = 0x00000002

+  SBS_VERT* = 0x00000001

+  SS_BITMAP* = 0x0000000E

+  SS_BLACKFRAME* = 0x00000007

+  SS_BLACKRECT* = 0x00000004

+  SS_CENTER* = 0x00000001

+  SS_CENTERIMAGE* = 0x00000200

+  SS_ENHMETAFILE* = 0x0000000F

+  SS_ETCHEDFRAME* = 0x00000012

+  SS_ETCHEDHORZ* = 0x00000010

+  SS_ETCHEDVERT* = 0x00000011

+  SS_GRAYFRAME* = 0x00000008

+  SS_GRAYRECT* = 0x00000005

+  SS_ICON* = 0x00000003

+  SS_LEFT* = 0

+  SS_LEFTNOWORDWRAP* = 0x0000000C

+  SS_NOPREFIX* = 0x00000080

+  SS_NOTIFY* = 0x00000100

+  SS_OWNERDRAW* = 0x0000000D

+  SS_REALSIZEIMAGE* = 0x00000800

+  SS_RIGHT* = 0x00000002

+  SS_RIGHTJUST* = 0x00000400

+  SS_SIMPLE* = 0x0000000B

+  SS_SUNKEN* = 0x00001000

+  SS_USERITEM* = 0x0000000A

+  SS_WHITEFRAME* = 0x00000009

+  SS_WHITERECT* = 0x00000006

+  DS_3DLOOK* = 0x00000004

+  DS_ABSALIGN* = 0x00000001

+  DS_CENTER* = 0x00000800

+  DS_CENTERMOUSE* = 0x00001000

+  DS_CONTEXTHELP* = 0x00002000

+  DS_CONTROL* = 0x00000400

+  DS_FIXEDSYS* = 0x00000008

+  DS_LOCALEDIT* = 0x00000020

+  DS_MODALFRAME* = 0x00000080

+  DS_NOFAILCREATE* = 0x00000010

+  DS_NOIDLEMSG* = 0x00000100

+  DS_SETFONT* = 0x00000040

+  DS_SETFOREGROUND* = 0x00000200

+  DS_SYSMODAL* = 0x00000002

+  # CreateWindowEx

+  WS_EX_ACCEPTFILES* = 0x00000010

+  WS_EX_APPWINDOW* = 0x00040000

+  WS_EX_CLIENTEDGE* = 0x00000200

+  WS_EX_CONTEXTHELP* = 0x00000400

+  WS_EX_CONTROLPARENT* = 0x00010000

+  WS_EX_DLGMODALFRAME* = 0x00000001

+  WS_EX_LEFT* = 0

+  WS_EX_LEFTSCROLLBAR* = 0x00004000

+  WS_EX_LTRREADING* = 0

+  WS_EX_MDICHILD* = 0x00000040

+  WS_EX_NOPARENTNOTIFY* = 0x00000004

+  WS_EX_OVERLAPPEDWINDOW* = 0x00000300

+  WS_EX_PALETTEWINDOW* = 0x00000188

+  WS_EX_RIGHT* = 0x00001000

+  WS_EX_RIGHTSCROLLBAR* = 0

+  WS_EX_RTLREADING* = 0x00002000

+  WS_EX_STATICEDGE* = 0x00020000

+  WS_EX_TOOLWINDOW* = 0x00000080

+  WS_EX_TOPMOST* = 0x00000008

+  WS_EX_TRANSPARENT* = 0x00000020

+  WS_EX_WINDOWEDGE* = 0x00000100

+  # CreateWindowStation

+  WINSTA_ACCESSCLIPBOARD* = 0x00000004

+  WINSTA_ACCESSGLOBALATOMS* = 0x00000020

+  WINSTA_CREATEDESKTOP* = 0x00000008

+  WINSTA_ENUMDESKTOPS* = 0x00000001

+  WINSTA_ENUMERATE* = 0x00000100

+  WINSTA_EXITWINDOWS* = 0x00000040

+  WINSTA_READATTRIBUTES* = 0x00000002

+  WINSTA_READSCREEN* = 0x00000200

+  WINSTA_WRITEATTRIBUTES* = 0x00000010

+  # DdeCallback

+                                       # DdeClientTransaction

+                                       # DdeEnableCallback

+                                       # DdeGetLastError

+                                       # DdeInitialize

+                                       # DdeNameService

+                                       # DebugProc

+  WH_CALLWNDPROC* = 4

+  WH_CALLWNDPROCRET* = 12

+  WH_CBT* = 5

+  WH_DEBUG* = 9

+  WH_GETMESSAGE* = 3

+  WH_JOURNALPLAYBACK* = 1

+  WH_JOURNALRECORD* = 0

+  WH_KEYBOARD* = 2

+  WH_MOUSE* = 7

+  WH_MSGFILTER* = -1

+  WH_SHELL* = 10

+  WH_SYSMSGFILTER* = 6

+  WH_FOREGROUNDIDLE* = 11

+  # DefineDosDevice

+  DDD_RAW_TARGET_PATH* = 1

+  DDD_REMOVE_DEFINITION* = 2

+  DDD_EXACT_MATCH_ON_REMOVE* = 4

+  # DeviceCapbilities

+  DCTT_BITMAP* = 0x00000001

+  DCTT_DOWNLOAD* = 0x00000002

+  DCTT_SUBDEV* = 0x00000004

+                              # DlgDirList

+  DDL_ARCHIVE* = 32

+  DDL_DIRECTORY* = 16

+  DDL_DRIVES* = 16384

+  DDL_EXCLUSIVE* = 32768

+  DDL_HIDDEN* = 2

+  DDL_READONLY* = 1

+  DDL_READWRITE* = 0

+  DDL_SYSTEM* = 4

+  DDL_POSTMSGS* = 8192

+  # DllEntryPoint

+  DLL_PROCESS_ATTACH* = 1

+  DLL_THREAD_ATTACH* = 2

+  DLL_PROCESS_DETACH* = 0

+  DLL_THREAD_DETACH* = 3

+  # DrawAnimatedRects

+  IDANI_OPEN* = 1

+  IDANI_CLOSE* = 2

+  # DrawCaption

+  DC_ACTIVE* = 1

+  DC_SMALLCAP* = 2

+  # DrawEdge

+  BDR_RAISEDINNER* = 4

+  BDR_SUNKENINNER* = 8

+  BDR_RAISEDOUTER* = 1

+  BDR_SUNKENOUTER* = 2

+  BDR_OUTER* = BDR_RAISEDOUTER or BDR_SUNKENOUTER

+  BDR_INNER* = BDR_RAISEDINNER or BDR_SUNKENINNER

+  BDR_RAISED* = BDR_RAISEDOUTER or BDR_RAISEDINNER

+  BDR_SUNKEN* = BDR_SUNKENOUTER or BDR_SUNKENINNER

+  EDGE_BUMP* = 9

+  EDGE_ETCHED* = 6

+  EDGE_RAISED* = 5

+  EDGE_SUNKEN* = 10

+  BF_ADJUST* = 8192

+  BF_BOTTOM* = 8

+  BF_BOTTOMLEFT* = 9

+  BF_BOTTOMRIGHT* = 12

+  BF_DIAGONAL* = 16

+  BF_DIAGONAL_ENDBOTTOMLEFT* = 25

+  BF_DIAGONAL_ENDBOTTOMRIGHT* = 28

+  BF_DIAGONAL_ENDTOPLEFT* = 19

+  BF_DIAGONAL_ENDTOPRIGHT* = 22

+  BF_FLAT* = 16384

+  BF_LEFT* = 1

+  BF_MIDDLE* = 2048

+  BF_MONO* = 32768

+  BF_RECT* = 15

+  BF_RIGHT* = 4

+  BF_SOFT* = 4096

+  BF_TOP* = 2

+  BF_TOPLEFT* = 3

+  BF_TOPRIGHT* = 6

+  # DrawFrameControl

+  DFC_BUTTON* = 4

+  DFC_CAPTION* = 1

+  DFC_MENU* = 2

+  DFC_SCROLL* = 3

+  DFCS_BUTTON3STATE* = 8

+  DFCS_BUTTONCHECK* = 0

+  DFCS_BUTTONPUSH* = 16

+  DFCS_BUTTONRADIO* = 4

+  DFCS_BUTTONRADIOIMAGE* = 1

+  DFCS_BUTTONRADIOMASK* = 2

+  DFCS_CAPTIONCLOSE* = 0

+  DFCS_CAPTIONHELP* = 4

+  DFCS_CAPTIONMAX* = 2

+  DFCS_CAPTIONMIN* = 1

+  DFCS_CAPTIONRESTORE* = 3

+  DFCS_MENUARROW* = 0

+  DFCS_MENUBULLET* = 2

+  DFCS_MENUCHECK* = 1

+  DFCS_SCROLLCOMBOBOX* = 5

+  DFCS_SCROLLDOWN* = 1

+  DFCS_SCROLLLEFT* = 2

+  DFCS_SCROLLRIGHT* = 3

+  DFCS_SCROLLSIZEGRIP* = 8

+  DFCS_SCROLLUP* = 0

+  DFCS_ADJUSTRECT* = 8192

+  DFCS_CHECKED* = 1024

+  DFCS_FLAT* = 16384

+  DFCS_INACTIVE* = 256

+  DFCS_MONO* = 32768

+  DFCS_PUSHED* = 512

+  # DrawIconEx

+  DI_COMPAT* = 4

+  DI_DEFAULTSIZE* = 8

+  DI_IMAGE* = 2

+  DI_MASK* = 1

+  DI_NORMAL* = 3

+  # DrawState

+  DST_BITMAP* = 4

+  DST_COMPLEX* = 0

+  DST_ICON* = 3

+  DST_PREFIXTEXT* = 2

+  DST_TEXT* = 1

+  DSS_NORMAL* = 0

+  DSS_UNION* = 16

+  DSS_DISABLED* = 32

+  DSS_MONO* = 128

+  # DrawStatusText

+  SBT_NOBORDERS* = 256

+  SBT_OWNERDRAW* = 4096

+  SBT_POPOUT* = 512

+  SBT_RTLREADING* = 1024

+  # DrawText, DrawTextEx

+  DT_BOTTOM* = 8

+  DT_CALCRECT* = 1024

+  DT_CENTER* = 1

+  DT_EDITCONTROL* = 8192

+  DT_END_ELLIPSIS* = 32768

+  DT_PATH_ELLIPSIS* = 16384

+  DT_EXPANDTABS* = 64

+  DT_EXTERNALLEADING* = 512

+  DT_LEFT* = 0

+  DT_MODIFYSTRING* = 65536

+  DT_NOCLIP* = 256

+  DT_NOPREFIX* = 2048

+  DT_RIGHT* = 2

+  DT_RTLREADING* = 131072

+  DT_SINGLELINE* = 32

+  DT_TABSTOP* = 128

+  DT_TOP* = 0

+  DT_VCENTER* = 4

+  DT_WORDBREAK* = 16

+  DT_INTERNAL* = 4096

+  DT_WORD_ELLIPSIS* = 0x00040000

+  DT_HIDEPREFIX* = 0x00100000

+  DT_PREFIXONLY* = 0x00200000

+  # DuplicateHandle, MapViewOfFile

+  DUPLICATE_CLOSE_SOURCE* = 1

+  DUPLICATE_SAME_ACCESS* = 2

+  FILE_MAP_ALL_ACCESS* = 0x000F001F

+  FILE_MAP_READ* = 4

+  FILE_MAP_WRITE* = 2

+  FILE_MAP_COPY* = 1

+  MUTEX_ALL_ACCESS* = 0x001F0001

+  MUTEX_MODIFY_STATE* = 1

+  SYNCHRONIZE* = 0x00100000

+  SEMAPHORE_ALL_ACCESS* = 0x001F0003

+  SEMAPHORE_MODIFY_STATE* = 2

+  EVENT_ALL_ACCESS* = 0x001F0003

+  EVENT_MODIFY_STATE* = 2

+  KEY_ALL_ACCESS* = 0x000F003F

+  KEY_CREATE_LINK* = 32

+  KEY_CREATE_SUB_KEY* = 4

+  KEY_ENUMERATE_SUB_KEYS* = 8

+  KEY_EXECUTE* = 0x00020019

+  KEY_NOTIFY* = 16

+  KEY_QUERY_VALUE* = 1

+  KEY_READ* = 0x00020019

+  KEY_SET_VALUE* = 2

+  KEY_WRITE* = 0x00020006

+  PROCESS_ALL_ACCESS* = 0x001F0FFF

+  PROCESS_CREATE_PROCESS* = 128

+  PROCESS_CREATE_THREAD* = 2

+  PROCESS_DUP_HANDLE* = 64

+  PROCESS_QUERY_INFORMATION* = 1024

+  PROCESS_SET_INFORMATION* = 512

+  PROCESS_TERMINATE* = 1

+  PROCESS_VM_OPERATION* = 8

+  PROCESS_VM_READ* = 16

+  PROCESS_VM_WRITE* = 32

+  THREAD_ALL_ACCESS* = 0x001F03FF

+  THREAD_DIRECT_IMPERSONATION* = 512

+  THREAD_GET_CONTEXT* = 8

+  THREAD_IMPERSONATE* = 256

+  THREAD_QUERY_INFORMATION* = 64

+  THREAD_SET_CONTEXT* = 16

+  THREAD_SET_INFORMATION* = 32

+  THREAD_SET_THREAD_TOKEN* = 128

+  THREAD_SUSPEND_RESUME* = 2

+  THREAD_TERMINATE* = 1

+  # EditWordBreakProc

+  WB_ISDELIMITER* = 2

+  WB_LEFT* = 0

+  WB_RIGHT* = 1

+  # EnableScrollBar

+  SB_BOTH* = 3

+  SB_CTL* = 2

+  SB_HORZ* = 0

+  SB_VERT* = 1

+  ESB_DISABLE_BOTH* = 3

+  ESB_DISABLE_DOWN* = 2

+  ESB_DISABLE_LEFT* = 1

+  ESB_DISABLE_LTUP* = 1

+  ESB_DISABLE_RIGHT* = 2

+  ESB_DISABLE_RTDN* = 2

+  ESB_DISABLE_UP* = 1

+  ESB_ENABLE_BOTH* = 0

+  # Scroll Bar notifications

+  SB_LINEUP* = 0

+  SB_LINEDOWN* = 1

+  SB_LINELEFT* = 0

+  SB_LINERIGHT* = 1

+  SB_PAGEUP* = 2

+  SB_PAGEDOWN* = 3

+  SB_PAGELEFT* = 2

+  SB_PAGERIGHT* = 3

+  SB_THUMBPOSITION* = 4

+  SB_THUMBTRACK* = 5

+  SB_ENDSCROLL* = 8

+  SB_LEFT* = 6

+  SB_RIGHT* = 7

+  SB_BOTTOM* = 7

+  SB_TOP* = 6

+  # EnumCalendarInfo

+  ENUM_ALL_CALENDARS* = -1

+  # EnumDateFormats

+  # GetDateFormat

+  DATE_SHORTDATE* = 1

+  DATE_LONGDATE* = 2

+  DATE_USE_ALT_CALENDAR* = 4

+  # EnumDependentServices

+  SERVICE_ACTIVE* = 1

+  SERVICE_INACTIVE* = 2

+  # EnumFontFamExProc

+  DEVICE_FONTTYPE* = 2

+  RASTER_FONTTYPE* = 1

+  TRUETYPE_FONTTYPE* = 4

+  # EnumObjects, GetCurrentObject, GetObjectType

+  OBJ_BRUSH* = 2

+  OBJ_PEN* = 1

+  OBJ_PAL* = 5

+  OBJ_FONT* = 6

+  OBJ_BITMAP* = 7

+  OBJ_EXTPEN* = 11

+  OBJ_REGION* = 8

+  OBJ_DC* = 3

+  OBJ_MEMDC* = 10

+  OBJ_METAFILE* = 9

+  OBJ_METADC* = 4

+  OBJ_ENHMETAFILE* = 13

+  OBJ_ENHMETADC* = 12

+

+                              #

+                              # Predefined Resource Types

+                              #

+const

+  RT_CURSOR* = cast[MAKEINTRESOURCE](1)

+  RT_BITMAP* = cast[MAKEINTRESOURCE](2)

+  RT_ICON* = cast[MAKEINTRESOURCE](3)

+  RT_MENU* = cast[MAKEINTRESOURCE](4)

+  RT_DIALOG* = cast[MAKEINTRESOURCE](5)

+  RT_STRING* = cast[MAKEINTRESOURCE](6)

+  RT_FONTDIR* = cast[MAKEINTRESOURCE](7)

+  RT_FONT* = cast[MAKEINTRESOURCE](8)

+  RT_ACCELERATOR* = cast[MAKEINTRESOURCE](9)

+  RT_RCDATA* = cast[MAKEINTRESOURCE](10)

+  RT_MESSAGETABLE* = cast[MAKEINTRESOURCE](11)

+  DIFFERENCE* = 11

+  RT_GROUP_CURSOR* = cast[MAKEINTRESOURCE](12)

+  RT_GROUP_ICON* = cast[MAKEINTRESOURCE](14)

+  RT_VERSION* = cast[MAKEINTRESOURCE](16)

+  RT_DLGINCLUDE* = cast[MAKEINTRESOURCE](17)

+  RT_PLUGPLAY* = cast[MAKEINTRESOURCE](19)

+  RT_VXD* = cast[MAKEINTRESOURCE](20)

+  RT_ANICURSOR* = cast[MAKEINTRESOURCE](21)

+  RT_ANIICON* = cast[MAKEINTRESOURCE](22)

+  RT_HTML* = cast[MAKEINTRESOURCE](23)

+  RT_MANIFEST* = cast[MAKEINTRESOURCE](24)

+

+const

+  # EnumServicesStatus

+  SERVICE_WIN32* = 48

+  SERVICE_DRIVER* = 11

+  # EnumSystemCodePages

+  CP_INSTALLED* = 1

+  CP_SUPPORTED* = 2

+  # EnumSystemLocales

+  LCID_INSTALLED* = 1

+  LCID_SUPPORTED* = 2

+  # EraseTape

+  TAPE_ERASE_LONG* = 0x00000001

+  TAPE_ERASE_SHORT* = 0

+  # Escape

+  SP_ERROR* = -1

+  SP_OUTOFDISK* = -4

+  SP_OUTOFMEMORY* = -5

+  SP_USERABORT* = -3

+  PHYSICALWIDTH* = 110

+  PHYSICALHEIGHT* = 111

+  PHYSICALOFFSETX* = 112

+  PHYSICALOFFSETY* = 113

+  SCALINGFACTORX* = 114

+  SCALINGFACTORY* = 115

+  QUERYESCSUPPORT* = 8

+  #ABORTDOC = 2; conflicts with AbortDoc function

+  cABORTDOC* = 2

+  #ENDDOC = 11; conflicts with AbortDoc function

+  cENDDOC* = 11

+  GETPHYSPAGESIZE* = 12

+  GETPRINTINGOFFSET* = 13

+  GETSCALINGFACTOR* = 14

+  NEWFRAME* = 1

+  NEXTBAND* = 3

+  PASSTHROUGH* = 19

+  #SETABORTPROC = 9; conflicts with AbortDoc function

+  cSETABORTPROC* = 9

+  #STARTDOC = 10; conflicts with AbortDoc function

+  cSTARTDOC* = 10

+  # EscapeCommFunction

+  CLRDTR* = 6

+  CLRRTS* = 4

+  SETDTR* = 5

+  SETRTS* = 3

+  SETXOFF* = 1

+  SETXON* = 2

+  SETBREAK* = 8

+  CLRBREAK* = 9

+  # ExitWindowsEx

+  EWX_FORCE* = 4

+  EWX_LOGOFF* = 0

+  EWX_POWEROFF* = 8

+  EWX_REBOOT* = 2

+  EWX_SHUTDOWN* = 1

+  # ExtFloodFill

+  FLOODFILLBORDER* = 0

+  FLOODFILLSURFACE* = 1

+  # ExtTextOut

+  ETO_CLIPPED* = 4

+  ETO_GLYPH_INDEX* = 16

+  ETO_OPAQUE* = 2

+  ETO_RTLREADING* = 128

+  # FillConsoleOutputAttribute

+  FOREGROUND_BLUE* = 1

+  FOREGROUND_GREEN* = 2

+  FOREGROUND_RED* = 4

+  FOREGROUND_INTENSITY* = 8

+  BACKGROUND_BLUE* = 16

+  BACKGROUND_GREEN* = 32

+  BACKGROUND_RED* = 64

+  BACKGROUND_INTENSITY* = 128

+  # FindFirstChangeNotification

+  FILE_NOTIFY_CHANGE_FILE_NAME* = 1

+  FILE_NOTIFY_CHANGE_DIR_NAME* = 2

+  FILE_NOTIFY_CHANGE_ATTRIBUTES* = 4

+  FILE_NOTIFY_CHANGE_SIZE* = 8

+  FILE_NOTIFY_CHANGE_LAST_WRITE* = 16

+  FILE_NOTIFY_CHANGE_SECURITY* = 256

+  # FindFirstPrinterChangeNotification

+                                     # FindNextPrinterNotification

+                                     # FMExtensionProc

+                                     # FoldString

+  MAP_FOLDCZONE* = 16

+  MAP_FOLDDIGITS* = 128

+  MAP_PRECOMPOSED* = 32

+  MAP_COMPOSITE* = 64

+  # ForegroundIdleProc

+  HC_ACTION* = 0

+  # FormatMessage

+  FORMAT_MESSAGE_ALLOCATE_BUFFER* = 256

+  FORMAT_MESSAGE_IGNORE_INSERTS* = 512

+  FORMAT_MESSAGE_FROM_STRING* = 1024

+  FORMAT_MESSAGE_FROM_HMODULE* = 2048

+  FORMAT_MESSAGE_FROM_SYSTEM* = 4096

+  FORMAT_MESSAGE_ARGUMENT_ARRAY* = 8192

+  FORMAT_MESSAGE_MAX_WIDTH_MASK* = 255

+  # GdiComment

+  GDICOMMENT_WINDOWS_METAFILE* = -2147483647

+  GDICOMMENT_BEGINGROUP* = 2

+  GDICOMMENT_ENDGROUP* = 3

+  GDICOMMENT_MULTIFORMATS* = 1073741828

+  GDICOMMENT_IDENTIFIER* = 1128875079

+  # GenerateConsoleCtrlEvent, HandlerRoutine

+  CTRL_C_EVENT* = 0

+  CTRL_BREAK_EVENT* = 1

+  CTRL_CLOSE_EVENT* = 2

+  CTRL_LOGOFF_EVENT* = 5

+  CTRL_SHUTDOWN_EVENT* = 6

+  # GetAddressByName

+                              # GetArcDirection

+  AD_COUNTERCLOCKWISE* = 1

+  AD_CLOCKWISE* = 2

+  # GetBinaryTypes

+  SCS_32BIT_BINARY* = 0

+  SCS_DOS_BINARY* = 1

+  SCS_OS216_BINARY* = 5

+  SCS_PIF_BINARY* = 3

+  SCS_POSIX_BINARY* = 4

+  SCS_WOW_BINARY* = 2

+  # GetBoundsRect, SetBoundsRect

+  DCB_DISABLE* = 8

+  DCB_ENABLE* = 4

+  DCB_RESET* = 1

+  DCB_SET* = 3

+  DCB_ACCUMULATE* = 2

+  # GetCharacterPlacement, GetFontLanguageInfo

+  GCP_DBCS* = 1

+  GCP_ERROR* = 0x00008000

+  GCP_CLASSIN* = 0x00080000

+  GCP_DIACRITIC* = 256

+  GCP_DISPLAYZWG* = 0x00400000

+  GCP_GLYPHSHAPE* = 16

+  GCP_JUSTIFY* = 0x00010000

+  GCP_JUSTIFYIN* = 0x00200000

+  GCP_KASHIDA* = 1024

+  GCP_LIGATE* = 32

+  GCP_MAXEXTENT* = 0x00100000

+  GCP_NEUTRALOVERRIDE* = 0x02000000

+  GCP_NUMERICOVERRIDE* = 0x01000000

+  GCP_NUMERICSLATIN* = 0x04000000

+  GCP_NUMERICSLOCAL* = 0x08000000

+  GCP_REORDER* = 2

+  GCP_SYMSWAPOFF* = 0x00800000

+  GCP_USEKERNING* = 8

+  FLI_GLYPHS* = 0x00040000

+  FLI_MASK* = 0x0000103B

+  # GetClassLong, GetClassWord

+  GCW_ATOM* = -32

+  GCL_CBCLSEXTRA* = -20

+  GCL_CBWNDEXTRA* = -18

+  GCL_HBRBACKGROUND* = -10

+  GCL_HCURSOR* = -12

+  GCL_HICON* = -14

+  GCL_HICONSM* = -34

+  GCL_HMODULE* = -16

+  GCL_MENUNAME* = -8

+  GCL_STYLE* = -26

+  GCL_WNDPROC* = -24

+  # GetClipboardFormat, SetClipboardData

+  CF_BITMAP* = 2

+  CF_DIB* = 8

+  CF_PALETTE* = 9

+  CF_ENHMETAFILE* = 14

+  CF_METAFILEPICT* = 3

+  CF_OEMTEXT* = 7

+  CF_TEXT* = 1

+  CF_UNICODETEXT* = 13

+  CF_DIF* = 5

+  CF_DSPBITMAP* = 130

+  CF_DSPENHMETAFILE* = 142

+  CF_DSPMETAFILEPICT* = 131

+  CF_DSPTEXT* = 129

+  CF_GDIOBJFIRST* = 768

+  CF_GDIOBJLAST* = 1023

+  CF_HDROP* = 15

+  CF_LOCALE* = 16

+  CF_OWNERDISPLAY* = 128

+  CF_PENDATA* = 10

+  CF_PRIVATEFIRST* = 512

+  CF_PRIVATELAST* = 767

+  CF_RIFF* = 11

+  CF_SYLK* = 4

+  CF_WAVE* = 12

+  CF_TIFF* = 6

+  # GetCommMask

+  EV_BREAK* = 64

+  EV_CTS* = 8

+  EV_DSR* = 16

+  EV_ERR* = 128

+  EV_EVENT1* = 2048

+  EV_EVENT2* = 4096

+  EV_PERR* = 512

+  EV_RING* = 256

+  EV_RLSD* = 32

+  EV_RX80FULL* = 1024

+  EV_RXCHAR* = 1

+  EV_RXFLAG* = 2

+  EV_TXEMPTY* = 4

+  # GetCommModemStatus

+  MS_CTS_ON* = 0x00000010

+  MS_DSR_ON* = 0x00000020

+  MS_RING_ON* = 0x00000040

+  MS_RLSD_ON* = 0x00000080

+  # GetComputerName

+  MAX_COMPUTERNAME_LENGTH* = 15

+  # GetConsoleMode

+  ENABLE_LINE_INPUT* = 2

+  ENABLE_ECHO_INPUT* = 4

+  ENABLE_PROCESSED_INPUT* = 1

+  ENABLE_WINDOW_INPUT* = 8

+  ENABLE_MOUSE_INPUT* = 16

+  ENABLE_PROCESSED_OUTPUT* = 1

+  ENABLE_WRAP_AT_EOL_OUTPUT* = 2

+  # GetCPInfo

+  CP_ACP* = 0

+  CP_MACCP* = 2

+  CP_OEMCP* = 1

+  # GetDCEx

+  DCX_WINDOW* = 0x00000001

+  DCX_CACHE* = 0x00000002

+  DCX_PARENTCLIP* = 0x00000020

+  DCX_CLIPSIBLINGS* = 0x00000010

+  DCX_CLIPCHILDREN* = 0x00000008

+  DCX_NORESETATTRS* = 0x00000004

+  DCX_LOCKWINDOWUPDATE* = 0x00000400

+  DCX_EXCLUDERGN* = 0x00000040

+  DCX_INTERSECTRGN* = 0x00000080

+  DCX_VALIDATE* = 0x00200000

+  # GetDeviceCaps

+  DRIVERVERSION* = 0

+  TECHNOLOGY* = 2

+  DT_PLOTTER* = 0

+  DT_RASDISPLAY* = 1

+  DT_RASPRINTER* = 2

+  DT_RASCAMERA* = 3

+  DT_CHARSTREAM* = 4

+  DT_METAFILE* = 5

+  DT_DISPFILE* = 6

+  HORZSIZE* = 4

+  VERTSIZE* = 6

+  HORZRES* = 8

+  VERTRES* = 10

+  LOGPIXELSX* = 88

+  LOGPIXELSY* = 90

+  BITSPIXEL* = 12

+  PLANES* = 14

+  NUMBRUSHES* = 16

+  NUMPENS* = 18

+  NUMFONTS* = 22

+  NUMCOLORS* = 24

+  ASPECTX* = 40

+  ASPECTY* = 42

+  ASPECTXY* = 44

+  PDEVICESIZE* = 26

+  CLIPCAPS* = 36

+  SIZEPALETTE* = 104

+  NUMRESERVED* = 106

+  COLORRES* = 108

+  VREFRESH* = 116

+  DESKTOPHORZRES* = 118

+  DESKTOPVERTRES* = 117

+  BLTALIGNMENT* = 119

+  RASTERCAPS* = 38

+  RC_BANDING* = 2

+  RC_BITBLT* = 1

+  RC_BITMAP64* = 8

+  RC_DI_BITMAP* = 128

+  RC_DIBTODEV* = 512

+  RC_FLOODFILL* = 4096

+  RC_GDI20_OUTPUT* = 16

+  RC_PALETTE* = 256

+  RC_SCALING* = 4

+  RC_STRETCHBLT* = 2048

+  RC_STRETCHDIB* = 8192

+  CURVECAPS* = 28

+  CC_NONE* = 0

+  CC_CIRCLES* = 1

+  CC_PIE* = 2

+  CC_CHORD* = 4

+  CC_ELLIPSES* = 8

+  CC_WIDE* = 16

+  CC_STYLED* = 32

+  CC_WIDESTYLED* = 64

+  CC_INTERIORS* = 128

+  CC_ROUNDRECT* = 256

+  LINECAPS* = 30

+  LC_NONE* = 0

+  LC_POLYLINE* = 2

+  LC_MARKER* = 4

+  LC_POLYMARKER* = 8

+  LC_WIDE* = 16

+  LC_STYLED* = 32

+  LC_WIDESTYLED* = 64

+  LC_INTERIORS* = 128

+  POLYGONALCAPS* = 32

+  PC_NONE* = 0

+  PC_POLYGON* = 1

+  PC_RECTANGLE* = 2

+  PC_WINDPOLYGON* = 4

+  PC_SCANLINE* = 8

+  PC_WIDE* = 16

+  PC_STYLED* = 32

+  PC_WIDESTYLED* = 64

+  PC_INTERIORS* = 128

+  TEXTCAPS* = 34

+  TC_OP_CHARACTER* = 1

+  TC_OP_STROKE* = 2

+  TC_CP_STROKE* = 4

+  TC_CR_90* = 8

+  TC_CR_ANY* = 16

+  TC_SF_X_YINDEP* = 32

+  TC_SA_DOUBLE* = 64

+  TC_SA_INTEGER* = 128

+  TC_SA_CONTIN* = 256

+  TC_EA_DOUBLE* = 512

+  TC_IA_ABLE* = 1024

+  TC_UA_ABLE* = 2048

+  TC_SO_ABLE* = 4096

+  TC_RA_ABLE* = 8192

+  TC_VA_ABLE* = 16384

+  TC_RESERVED* = 32768

+  TC_SCROLLBLT* = 65536

+  PC_PATHS* = 512

+  # GetDriveType

+  DRIVE_REMOVABLE* = 2

+  DRIVE_FIXED* = 3

+  DRIVE_REMOTE* = 4

+  DRIVE_CDROM* = 5

+  DRIVE_RAMDISK* = 6

+  DRIVE_UNKNOWN* = 0

+  DRIVE_NO_ROOT_DIR* = 1

+  # GetExceptionCode

+  EXCEPTION_ACCESS_VIOLATION* = 0xC0000005

+  EXCEPTION_BREAKPOINT* = 0x80000003

+  EXCEPTION_DATATYPE_MISALIGNMENT* = 0x80000002

+  EXCEPTION_SINGLE_STEP* = 0x80000004

+  EXCEPTION_ARRAY_BOUNDS_EXCEEDED* = 0xC000008C

+  EXCEPTION_FLT_DENORMAL_OPERAND* = 0xC000008D

+  EXCEPTION_FLT_DIVIDE_BY_ZERO* = 0xC000008E

+  EXCEPTION_FLT_INEXACT_RESULT* = 0xC000008F

+  EXCEPTION_FLT_INVALID_OPERATION* = 0xC0000090

+  EXCEPTION_FLT_OVERFLOW* = 0xC0000091

+  EXCEPTION_FLT_STACK_CHECK* = 0xC0000092

+  EXCEPTION_FLT_UNDERFLOW* = 0xC0000093

+  EXCEPTION_INT_DIVIDE_BY_ZERO* = 0xC0000094

+  EXCEPTION_INT_OVERFLOW* = 0xC0000095

+  EXCEPTION_INVALID_HANDLE* = 0xC0000008

+  EXCEPTION_PRIV_INSTRUCTION* = 0xC0000096

+  EXCEPTION_NONCONTINUABLE_EXCEPTION* = 0xC0000025

+  EXCEPTION_NONCONTINUABLE* = 0x00000001

+  EXCEPTION_STACK_OVERFLOW* = 0xC00000FD

+  EXCEPTION_INVALID_DISPOSITION* = 0xC0000026

+  EXCEPTION_IN_PAGE_ERROR* = 0xC0000006

+  EXCEPTION_ILLEGAL_INSTRUCTION* = 0xC000001D

+  EXCEPTION_POSSIBLE_DEADLOCK* = 0xC0000194

+  # GetFileType

+  FILE_TYPE_UNKNOWN* = 0

+  FILE_TYPE_DISK* = 1

+  FILE_TYPE_CHAR* = 2

+  FILE_TYPE_PIPE* = 3

+  # GetGlyphOutline

+  GGO_BITMAP* = 1

+  GGO_NATIVE* = 2

+  GGO_METRICS* = 0

+  GGO_GRAY2_BITMAP* = 4

+  GGO_GRAY4_BITMAP* = 5

+  GGO_GRAY8_BITMAP* = 6

+  GDI_ERROR* = 0xFFFFFFFF

+  # GetGraphicsMode

+  GM_COMPATIBLE* = 1

+  GM_ADVANCED* = 2

+  # GetHandleInformation

+  HANDLE_FLAG_INHERIT* = 1

+  HANDLE_FLAG_PROTECT_FROM_CLOSE* = 2

+  # GetIconInfo

+  IDC_ARROW* =       cast[MAKEINTRESOURCE](32512)

+  IDC_IBEAM* =       cast[MAKEINTRESOURCE](32513)

+  IDC_WAIT* =        cast[MAKEINTRESOURCE](32514)

+  IDC_CROSS* =       cast[MAKEINTRESOURCE](32515)

+  IDC_UPARROW* =     cast[MAKEINTRESOURCE](32516)

+  IDC_SIZE* =        cast[MAKEINTRESOURCE](32640)  # OBSOLETE: use IDC_SIZEALL

+  IDC_ICON* =        cast[MAKEINTRESOURCE](32641)  # OBSOLETE: use IDC_ARROW

+  IDC_SIZENWSE* =    cast[MAKEINTRESOURCE](32642)

+  IDC_SIZENESW* =    cast[MAKEINTRESOURCE](32643)

+  IDC_SIZEWE* =      cast[MAKEINTRESOURCE](32644)

+  IDC_SIZENS* =      cast[MAKEINTRESOURCE](32645)

+  IDC_SIZEALL* =     cast[MAKEINTRESOURCE](32646)

+  IDC_NO* =          cast[MAKEINTRESOURCE](32648)

+  IDC_HAND* =        cast[MAKEINTRESOURCE](32649)

+  IDC_APPSTARTING* = cast[MAKEINTRESOURCE](32650)

+  IDC_HELP* =        cast[MAKEINTRESOURCE](32651)

+

+  IDI_APPLICATION* = cast[MAKEINTRESOURCE](32512)

+  IDI_HAND* =        cast[MAKEINTRESOURCE](32513)

+  IDI_QUESTION* =    cast[MAKEINTRESOURCE](32514)

+  IDI_EXCLAMATION* = cast[MAKEINTRESOURCE](32515)

+  IDI_ASTERISK* =    cast[MAKEINTRESOURCE](32516)

+  IDI_WINLOGO* =     cast[MAKEINTRESOURCE](32517)

+  IDI_WARNING* =     IDI_EXCLAMATION

+  IDI_ERROR* =       IDI_HAND

+  IDI_INFORMATION* = IDI_ASTERISK

+

+const

+  # GetMapMode

+  MM_ANISOTROPIC* = 8

+  MM_HIENGLISH* = 5

+  MM_HIMETRIC* = 3

+  MM_ISOTROPIC* = 7

+  MM_LOENGLISH* = 4

+  MM_LOMETRIC* = 2

+  MM_TEXT* = 1

+  MM_TWIPS* = 6

+  # GetMenuDefaultItem

+  GMDI_GOINTOPOPUPS* = 0x00000002

+  GMDI_USEDISABLED* = 0x00000001

+  # PeekMessage

+  PM_NOREMOVE* = 0

+  PM_REMOVE* = 1

+  PM_NOYIELD* = 2

+  # GetNamedPipeHandleState

+                              #   PIPE_NOWAIT = 1; already above

+                              #   PIPE_READMODE_MESSAGE = 2;already above

+                              # GetNamedPipeInfo

+  PIPE_CLIENT_END* = 0

+  PIPE_SERVER_END* = 1

+  #   PIPE_TYPE_MESSAGE = 4;already above

+                              # GetNextWindow, GetWindow

+  GW_HWNDNEXT* = 2

+  GW_HWNDPREV* = 3

+  GW_CHILD* = 5

+  GW_HWNDFIRST* = 0

+  GW_HWNDLAST* = 1

+  GW_OWNER* = 4

+  # GetPath

+  PT_MOVETO* = 6

+  PT_LINETO* = 2

+  PT_BEZIERTO* = 4

+  PT_CLOSEFIGURE* = 1

+  # GetProcessShutdownParameters

+  SHUTDOWN_NORETRY* = 1

+  # GetQueueStatus

+  QS_ALLEVENTS* = 191

+  QS_ALLINPUT* = 255

+  QS_HOTKEY* = 128

+  QS_INPUT* = 7

+  QS_KEY* = 1

+  QS_MOUSE* = 6

+  QS_MOUSEBUTTON* = 4

+  QS_MOUSEMOVE* = 2

+  QS_PAINT* = 32

+  QS_POSTMESSAGE* = 8

+  QS_SENDMESSAGE* = 64

+  QS_TIMER* = 16

+  # GetScrollInfo, SetScrollInfo

+  SIF_ALL* = 23

+  SIF_PAGE* = 2

+  SIF_POS* = 4

+  SIF_RANGE* = 1

+  SIF_DISABLENOSCROLL* = 8

+

+  # GetStdHandle

+  STD_INPUT_HANDLE* =  DWORD(-10)

+  STD_OUTPUT_HANDLE* = DWORD(-11)

+  STD_ERROR_HANDLE* =  DWORD(-12)

+

+  INVALID_HANDLE_VALUE* = HANDLE(-1)

+

+const

+  # GetStockObject

+  BLACK_BRUSH* = 4

+  DKGRAY_BRUSH* = 3

+  GRAY_BRUSH* = 2

+  HOLLOW_BRUSH* = 5

+  LTGRAY_BRUSH* = 1

+  NULL_BRUSH* = 5

+  WHITE_BRUSH* = 0

+  BLACK_PEN* = 7

+  NULL_PEN* = 8

+  WHITE_PEN* = 6

+  ANSI_FIXED_FONT* = 11

+  ANSI_VAR_FONT* = 12

+  DEVICE_DEFAULT_FONT* = 14

+  DEFAULT_GUI_FONT* = 17

+  OEM_FIXED_FONT* = 10

+  SYSTEM_FONT* = 13

+  SYSTEM_FIXED_FONT* = 16

+  DEFAULT_PALETTE* = 15

+  # GetStringTypeA

+  CT_CTYPE1* = 1

+  CT_CTYPE2* = 2

+  CT_CTYPE3* = 4

+  C1_UPPER* = 1

+  C1_LOWER* = 2

+  C1_DIGIT* = 4

+  C1_SPACE* = 8

+  C1_PUNCT* = 16

+  C1_CNTRL* = 32

+  C1_BLANK* = 64

+  C1_XDIGIT* = 128

+  C1_ALPHA* = 256

+  C2_LEFTTORIGHT* = 1

+  C2_RIGHTTOLEFT* = 2

+  C2_EUROPENUMBER* = 3

+  C2_EUROPESEPARATOR* = 4

+  C2_EUROPETERMINATOR* = 5

+  C2_ARABICNUMBER* = 6

+  C2_COMMONSEPARATOR* = 7

+  C2_BLOCKSEPARATOR* = 8

+  C2_SEGMENTSEPARATOR* = 9

+  C2_WHITESPACE* = 10

+  C2_OTHERNEUTRAL* = 11

+  C2_NOTAPPLICABLE* = 0

+  C3_NONSPACING* = 1

+  C3_DIACRITIC* = 2

+  C3_VOWELMARK* = 4

+  C3_SYMBOL* = 8

+  C3_KATAKANA* = 16

+  C3_HIRAGANA* = 32

+  C3_HALFWIDTH* = 64

+  C3_FULLWIDTH* = 128

+  C3_IDEOGRAPH* = 256

+  C3_KASHIDA* = 512

+  C3_ALPHA* = 32768

+  C3_NOTAPPLICABLE* = 0

+  # GetSysColor

+  COLOR_3DDKSHADOW* = 21

+  COLOR_3DFACE* = 15

+  COLOR_3DHILIGHT* = 20

+  COLOR_3DLIGHT* = 22

+  COLOR_BTNHILIGHT* = 20

+  COLOR_3DSHADOW* = 16

+  COLOR_ACTIVEBORDER* = 10

+  COLOR_ACTIVECAPTION* = 2

+  COLOR_APPWORKSPACE* = 12

+  COLOR_BACKGROUND* = 1

+  COLOR_DESKTOP* = 1

+  COLOR_BTNFACE* = 15

+  COLOR_BTNHIGHLIGHT* = 20

+  COLOR_BTNSHADOW* = 16

+  COLOR_BTNTEXT* = 18

+  COLOR_CAPTIONTEXT* = 9

+  COLOR_GRAYTEXT* = 17

+  COLOR_HIGHLIGHT* = 13

+  COLOR_HIGHLIGHTTEXT* = 14

+  COLOR_INACTIVEBORDER* = 11

+  COLOR_INACTIVECAPTION* = 3

+  COLOR_INACTIVECAPTIONTEXT* = 19

+  COLOR_INFOBK* = 24

+  COLOR_INFOTEXT* = 23

+  COLOR_MENU* = 4

+  COLOR_MENUTEXT* = 7

+  COLOR_SCROLLBAR* = 0

+  COLOR_WINDOW* = 5

+  COLOR_WINDOWFRAME* = 6

+  COLOR_WINDOWTEXT* = 8

+  # GetSystemMetrics

+  SM_CYMIN* = 29

+  SM_CXMIN* = 28

+  SM_ARRANGE* = 56

+  SM_CLEANBOOT* = 67

+  # The right value for SM_CEMETRICS for NT 3.5 is 75.  For Windows 95

+                     #     and NT 4.0, it is 76.  The meaning is undocumented, anyhow.

+  SM_CMETRICS* = 76

+  SM_CMOUSEBUTTONS* = 43

+  SM_CXBORDER* = 5

+  SM_CYBORDER* = 6

+  SM_CXCURSOR* = 13

+  SM_CYCURSOR* = 14

+  SM_CXDLGFRAME* = 7

+  SM_CYDLGFRAME* = 8

+  SM_CXDOUBLECLK* = 36

+  SM_CYDOUBLECLK* = 37

+  SM_CXDRAG* = 68

+  SM_CYDRAG* = 69

+  SM_CXEDGE* = 45

+  SM_CYEDGE* = 46

+  SM_CXFIXEDFRAME* = 7

+  SM_CYFIXEDFRAME* = 8

+  SM_CXFRAME* = 32

+  SM_CYFRAME* = 33

+  SM_CXFULLSCREEN* = 16

+  SM_CYFULLSCREEN* = 17

+  SM_CXHSCROLL* = 21

+  SM_CYHSCROLL* = 3

+  SM_CXHTHUMB* = 10

+  SM_CXICON* = 11

+  SM_CYICON* = 12

+  SM_CXICONSPACING* = 38

+  SM_CYICONSPACING* = 39

+  SM_CXMAXIMIZED* = 61

+  SM_CYMAXIMIZED* = 62

+  SM_CXMAXTRACK* = 59

+  SM_CYMAXTRACK* = 60

+  SM_CXMENUCHECK* = 71

+  SM_CYMENUCHECK* = 72

+  SM_CXMENUSIZE* = 54

+  SM_CYMENUSIZE* = 55

+  SM_CXMINIMIZED* = 57

+  SM_CYMINIMIZED* = 58

+  SM_CXMINSPACING* = 47

+  SM_CYMINSPACING* = 48

+  SM_CXMINTRACK* = 34

+  SM_CYMINTRACK* = 35

+  SM_CXSCREEN* = 0

+  SM_CYSCREEN* = 1

+  SM_CXSIZE* = 30

+  SM_CYSIZE* = 31

+  SM_CXSIZEFRAME* = 32

+  SM_CYSIZEFRAME* = 33

+  SM_CXSMICON* = 49

+  SM_CYSMICON* = 50

+  SM_CXSMSIZE* = 52

+  SM_CYSMSIZE* = 53

+  SM_CXVSCROLL* = 2

+  #SM_CYHSCROLL = 3;already above

+                              #SM_CXHSCROLL = 21;already above

+  SM_CYVSCROLL* = 20

+  SM_CYVTHUMB* = 9

+  SM_CYCAPTION* = 4

+  SM_CYKANJIWINDOW* = 18

+  SM_CYMENU* = 15

+  SM_CYSMCAPTION* = 51

+  SM_DBCSENABLED* = 42

+  SM_DEBUG* = 22

+  SM_MENUDROPALIGNMENT* = 40

+  SM_MIDEASTENABLED* = 74

+  SM_MOUSEPRESENT* = 19

+  SM_MOUSEWHEELPRESENT* = 75

+  SM_NETWORK* = 63

+  SM_PENWINDOWS* = 41

+  SM_SECURE* = 44

+  SM_SHOWSOUNDS* = 70

+  SM_SLOWMACHINE* = 73

+  SM_SWAPBUTTON* = 23

+  ARW_BOTTOMLEFT* = 0

+  ARW_BOTTOMRIGHT* = 0x00000001

+  ARW_HIDE* = 0x00000008

+  ARW_TOPLEFT* = 0x00000002

+  ARW_TOPRIGHT* = 0x00000003

+  ARW_DOWN* = 0x00000004

+  ARW_LEFT* = 0

+  ARW_RIGHT* = 0

+  ARW_UP* = 0x00000004

+  # GetSystemPaletteUse

+  SYSPAL_NOSTATIC* = 2

+  SYSPAL_STATIC* = 1

+  SYSPAL_ERROR* = 0

+  # GetTapeParameters, SetTapeParameters

+  GET_TAPE_MEDIA_INFORMATION* = 0

+  GET_TAPE_DRIVE_INFORMATION* = 1

+  SET_TAPE_MEDIA_INFORMATION* = 0

+  SET_TAPE_DRIVE_INFORMATION* = 1

+  # GetTapePosition

+  TAPE_ABSOLUTE_POSITION* = 0

+  TAPE_LOGICAL_POSITION* = 0x00000001

+  # GetTextAlign

+  TA_BASELINE* = 24

+  TA_BOTTOM* = 8

+  TA_TOP* = 0

+  TA_CENTER* = 6

+  TA_LEFT* = 0

+  TA_RIGHT* = 2

+  TA_RTLREADING* = 256

+  TA_NOUPDATECP* = 0

+  TA_UPDATECP* = 1

+  VTA_BASELINE* = 24

+  VTA_CENTER* = 6

+  # GetThreadPriority

+  THREAD_PRIORITY_ABOVE_NORMAL* = 1

+  THREAD_PRIORITY_BELOW_NORMAL* = -1

+  THREAD_PRIORITY_HIGHEST* = 2

+  THREAD_PRIORITY_IDLE* = -15

+  THREAD_PRIORITY_LOWEST* = -2

+  THREAD_PRIORITY_NORMAL* = 0

+  THREAD_PRIORITY_TIME_CRITICAL* = 15

+  THREAD_PRIORITY_ERROR_RETURN* = 2147483647

+  TLS_MINIMUM_AVAILABLE* = 64

+  # GetTimeFormat

+  TIME_NOMINUTESORSECONDS* = 1

+  TIME_NOSECONDS* = 2

+  TIME_NOTIMEMARKER* = 4

+  TIME_FORCE24HOURFORMAT* = 8

+

+const

+  # GetTimeZoneInformation

+  TIME_ZONE_ID_INVALID* = DWORD(- 1)

+  TIME_ZONE_ID_UNKNOWN* = 0

+  TIME_ZONE_ID_STANDARD* = 1

+  TIME_ZONE_ID_DAYLIGHT* = 2

+  # GetUserObjectInformation

+  UOI_FLAGS* = 1

+  UOI_NAME* = 2

+  UOI_TYPE* = 3

+  # GetVolumeInformation

+  FS_CASE_IS_PRESERVED* = 2

+  FS_CASE_SENSITIVE* = 1

+  FS_UNICODE_STORED_ON_DISK* = 4

+  FS_PERSISTENT_ACLS* = 8

+  FS_FILE_COMPRESSION* = 16

+  FS_VOL_IS_COMPRESSED* = 32768

+  # GetWindowLong

+  GWL_EXSTYLE* = -20

+  GWL_STYLE* = -16

+  GWL_WNDPROC* = -4

+  GWL_HINSTANCE* = -6

+  GWL_HWNDPARENT* = -8

+  GWL_ID* = -12

+  GWL_USERDATA* = -21

+  DWL_DLGPROC* = 4

+  DWL_MSGRESULT* = 0

+  DWL_USER* = 8

+  # GlobalAlloc, GlobalFlags

+  GMEM_FIXED* = 0

+  GMEM_MOVEABLE* = 2

+  GPTR* = 64

+  GHND* = 66

+  GMEM_DDESHARE* = 8192

+  GMEM_DISCARDABLE* = 256

+  GMEM_LOWER* = 4096

+  GMEM_NOCOMPACT* = 16

+  GMEM_NODISCARD* = 32

+  GMEM_NOT_BANKED* = 4096

+  GMEM_NOTIFY* = 16384

+  GMEM_SHARE* = 8192

+  GMEM_ZEROINIT* = 64

+  GMEM_DISCARDED* = 16384

+  GMEM_INVALID_HANDLE* = 32768

+  GMEM_LOCKCOUNT* = 255

+  # HeapAlloc, HeapReAlloc

+  HEAP_GENERATE_EXCEPTIONS* = 4

+  HEAP_NO_SERIALIZE* = 1

+  HEAP_ZERO_MEMORY* = 8

+  STATUS_NO_MEMORY* = 0xC0000017

+  STATUS_ACCESS_VIOLATION* = 0xC0000005

+  HEAP_REALLOC_IN_PLACE_ONLY* = 16

+  # ImageList_Create

+  ILC_COLOR* = 0

+  ILC_COLOR4* = 4

+  ILC_COLOR8* = 8

+  ILC_COLOR16* = 16

+  ILC_COLOR24* = 24

+  ILC_COLOR32* = 32

+  ILC_COLORDDB* = 254

+  ILC_MASK* = 1

+  ILC_PALETTE* = 2048

+  # ImageList_Draw, ImageList_DrawEx

+  ILD_BLEND25* = 2

+  ILD_BLEND50* = 4

+  ILD_SELECTED* = 4

+  ILD_BLEND* = 4

+  ILD_FOCUS* = 2

+  ILD_MASK* = 16

+  ILD_NORMAL* = 0

+  ILD_TRANSPARENT* = 1

+  CLR_NONE* = 0xFFFFFFFF

+  CLR_DEFAULT* = 0xFF000000

+  CLR_INVALID* = 0xFFFFFFFF

+  # ImageList_LoadImage

+                              #LR_DEFAULTCOLOR = 0;already above

+  LR_LOADFROMFILE* = 16

+  LR_LOADMAP3DCOLORS* = 4096

+  LR_LOADTRANSPARENT* = 32

+  # ImmConfigureIME

+  IME_CONFIG_GENERAL* = 1

+  IME_CONFIG_REGISTERWORD* = 2

+  IME_CONFIG_SELECTDICTIONARY* = 3

+  # ImmGetConversionList

+  GCL_CONVERSION* = 1

+  GCL_REVERSECONVERSION* = 2

+  GCL_REVERSE_LENGTH* = 3

+  # ImmGetGuideLine

+  GGL_LEVEL* = 1

+  GGL_INDEX* = 2

+  GGL_STRING* = 3

+  GGL_PRIVATE* = 4

+  GL_LEVEL_ERROR* = 2

+  GL_LEVEL_FATAL* = 1

+  GL_LEVEL_INFORMATION* = 4

+  GL_LEVEL_NOGUIDELINE* = 0

+  GL_LEVEL_WARNING* = 3

+  GL_ID_CANNOTSAVE* = 17

+  GL_ID_NOCONVERT* = 32

+  GL_ID_NODICTIONARY* = 16

+  GL_ID_NOMODULE* = 1

+  GL_ID_READINGCONFLICT* = 35

+  GL_ID_TOOMANYSTROKE* = 34

+  GL_ID_TYPINGERROR* = 33

+  GL_ID_UNKNOWN* = 0

+  GL_ID_INPUTREADING* = 36

+  GL_ID_INPUTRADICAL* = 37

+  GL_ID_INPUTCODE* = 38

+  GL_ID_CHOOSECANDIDATE* = 40

+  GL_ID_REVERSECONVERSION* = 41

+  # ImmGetProperty

+  IGP_PROPERTY* = 4

+  IGP_CONVERSION* = 8

+  IGP_SENTENCE* = 12

+  IGP_UI* = 16

+  IGP_SETCOMPSTR* = 20

+  IGP_SELECT* = 24

+  IME_PROP_AT_CARET* = 65536

+  IME_PROP_SPECIAL_UI* = 131072

+  IME_PROP_CANDLIST_START_FROM_1* = 262144

+  IME_PROP_UNICODE* = 524288

+  UI_CAP_2700* = 1

+  UI_CAP_ROT90* = 2

+  UI_CAP_ROTANY* = 4

+  SCS_CAP_COMPSTR* = 1

+  SCS_CAP_MAKEREAD* = 2

+  SELECT_CAP_CONVERSION* = 1

+  SELECT_CAP_SENTENCE* = 2

+  # ImmNotifyIME

+  NI_CHANGECANDIDATELIST* = 19

+  NI_CLOSECANDIDATE* = 17

+  NI_COMPOSITIONSTR* = 21

+  NI_OPENCANDIDATE* = 16

+  NI_SELECTCANDIDATESTR* = 18

+  NI_SETCANDIDATE_PAGESIZE* = 23

+  NI_SETCANDIDATE_PAGESTART* = 22

+  CPS_CANCEL* = 4

+  CPS_COMPLETE* = 1

+  CPS_CONVERT* = 2

+  CPS_REVERT* = 3

+  # ImmSetCompositionString

+  SCS_SETSTR* = 9

+  SCS_CHANGEATTR* = 18

+  SCS_CHANGECLAUSE* = 36

+  # ImmUnregisterWord

+  IME_REGWORD_STYLE_EUDC* = 1

+  IME_REGWORD_STYLE_USER_FIRST* = 0x80000000

+  IME_REGWORD_STYLE_USER_LAST* = -1

+  # InitializeSecurityDescriptor

+  SECURITY_DESCRIPTOR_REVISION* = 1

+  # IsTextUnicode

+  IS_TEXT_UNICODE_ASCII16* = 1

+  IS_TEXT_UNICODE_REVERSE_ASCII16* = 16

+  IS_TEXT_UNICODE_STATISTICS* = 2

+  IS_TEXT_UNICODE_REVERSE_STATISTICS* = 32

+  IS_TEXT_UNICODE_CONTROLS* = 4

+  IS_TEXT_UNICODE_REVERSE_CONTROLS* = 64

+  IS_TEXT_UNICODE_SIGNATURE* = 8

+  IS_TEXT_UNICODE_REVERSE_SIGNATURE* = 128

+  IS_TEXT_UNICODE_ILLEGAL_CHARS* = 256

+  IS_TEXT_UNICODE_ODD_LENGTH* = 512

+  IS_TEXT_UNICODE_NULL_BYTES* = 4096

+  IS_TEXT_UNICODE_UNICODE_MASK* = 15

+  IS_TEXT_UNICODE_REVERSE_MASK* = 240

+  IS_TEXT_UNICODE_NOT_UNICODE_MASK* = 3840

+  IS_TEXT_UNICODE_NOT_ASCII_MASK* = 61440

+  # JournalPlaybackProc, KeyboardProc

+  HC_GETNEXT* = 1

+  HC_SKIP* = 2

+  HC_SYSMODALOFF* = 5

+  HC_SYSMODALON* = 4

+  HC_NOREMOVE* = 3

+  # keybd_event

+  KEYEVENTF_EXTENDEDKEY* = 1

+  KEYEVENTF_KEYUP* = 2

+  # LoadBitmap

+  OBM_BTNCORNERS* = 32758

+  OBM_BTSIZE* = 32761

+  OBM_CHECK* = 32760

+  OBM_CHECKBOXES* = 32759

+  OBM_CLOSE* = 32754

+  OBM_COMBO* = 32738

+  OBM_DNARROW* = 32752

+  OBM_DNARROWD* = 32742

+  OBM_DNARROWI* = 32736

+  OBM_LFARROW* = 32750

+  OBM_LFARROWI* = 32734

+  OBM_LFARROWD* = 32740

+  OBM_MNARROW* = 32739

+  OBM_OLD_CLOSE* = 32767

+  OBM_OLD_DNARROW* = 32764

+  OBM_OLD_LFARROW* = 32762

+  OBM_OLD_REDUCE* = 32757

+  OBM_OLD_RESTORE* = 32755

+  OBM_OLD_RGARROW* = 32763

+  OBM_OLD_UPARROW* = 32765

+  OBM_OLD_ZOOM* = 32756

+  OBM_REDUCE* = 32749

+  OBM_REDUCED* = 32746

+  OBM_RESTORE* = 32747

+  OBM_RESTORED* = 32744

+  OBM_RGARROW* = 32751

+  OBM_RGARROWD* = 32741

+  OBM_RGARROWI* = 32735

+  OBM_SIZE* = 32766

+  OBM_UPARROW* = 32753

+  OBM_UPARROWD* = 32743

+  OBM_UPARROWI* = 32737

+  OBM_ZOOM* = 32748

+  OBM_ZOOMD* = 32745

+  # LoadLibraryEx

+  DONT_RESOLVE_DLL_REFERENCES* = 1

+  LOAD_LIBRARY_AS_DATAFILE* = 2

+  LOAD_WITH_ALTERED_SEARCH_PATH* = 8

+  # LocalAlloc, LocalFlags

+  LPTR* = 64

+  LHND* = 66

+  NONZEROLHND* = 2

+  NONZEROLPTR* = 0

+  LMEM_NONZEROLHND* = 2

+  LMEM_NONZEROLPTR* = 0

+  LMEM_FIXED* = 0

+  LMEM_MOVEABLE* = 2

+  LMEM_NOCOMPACT* = 16

+  LMEM_NODISCARD* = 32

+  LMEM_ZEROINIT* = 64

+  LMEM_MODIFY* = 128

+  LMEM_LOCKCOUNT* = 255

+  LMEM_DISCARDABLE* = 3840

+  LMEM_DISCARDED* = 16384

+  LMEM_INVALID_HANDLE* = 32768

+  # LockFileEx

+  LOCKFILE_FAIL_IMMEDIATELY* = 1

+  LOCKFILE_EXCLUSIVE_LOCK* = 2

+  # LogonUser

+                               # LZCopy, LZInit, LZRead

+                               # MessageBeep, MessageBox

+  MB_USERICON* = 0x00000080

+  MB_ICONASTERISK* = 0x00000040

+  MB_ICONEXCLAMATION* = 0x00000030

+  MB_ICONWARNING* = 0x00000030

+  MB_ICONERROR* = 0x00000010

+  MB_ICONHAND* = 0x00000010

+  MB_ICONQUESTION* = 0x00000020

+  MB_OK* = 0

+  MB_ABORTRETRYIGNORE* = 0x00000002

+  MB_APPLMODAL* = 0

+  MB_DEFAULT_DESKTOP_ONLY* = 0x00020000

+  MB_HELP* = 0x00004000

+  MB_RIGHT* = 0x00080000

+  MB_RTLREADING* = 0x00100000

+  MB_TOPMOST* = 0x00040000

+  MB_DEFBUTTON1* = 0

+  MB_DEFBUTTON2* = 0x00000100

+  MB_DEFBUTTON3* = 0x00000200

+  MB_DEFBUTTON4* = 0x00000300

+  MB_ICONINFORMATION* = 0x00000040

+  MB_ICONSTOP* = 0x00000010

+  MB_OKCANCEL* = 0x00000001

+  MB_RETRYCANCEL* = 0x00000005

+  MB_SERVICE_NOTIFICATION* = 0x00040000

+  MB_SETFOREGROUND* = 0x00010000

+  MB_SYSTEMMODAL* = 0x00001000

+  MB_TASKMODAL* = 0x00002000

+  MB_YESNO* = 0x00000004

+  MB_YESNOCANCEL* = 0x00000003

+  IDABORT* = 3

+  IDCANCEL* = 2

+  IDCLOSE* = 8

+  IDHELP* = 9

+  IDIGNORE* = 5

+  IDNO* = 7

+  IDOK* = 1

+  IDRETRY* = 4

+  IDYES* = 6

+  # MessageProc

+  MSGF_DIALOGBOX* = 0

+  MSGF_MENU* = 2

+  MSGF_NEXTWINDOW* = 6

+  MSGF_SCROLLBAR* = 5

+  MSGF_MAINLOOP* = 8

+  MSGF_USER* = 4096

+  # ModifyWorldTransform

+  MWT_IDENTITY* = 1

+  MWT_LEFTMULTIPLY* = 2

+  MWT_RIGHTMULTIPLY* = 3

+  # mouse_event

+  MOUSEEVENTF_ABSOLUTE* = 32768

+  MOUSEEVENTF_MOVE* = 1

+  MOUSEEVENTF_LEFTDOWN* = 2

+  MOUSEEVENTF_LEFTUP* = 4

+  MOUSEEVENTF_RIGHTDOWN* = 8

+  MOUSEEVENTF_RIGHTUP* = 16

+  MOUSEEVENTF_MIDDLEDOWN* = 32

+  MOUSEEVENTF_MIDDLEUP* = 64

+  # MoveFileEx

+  MOVEFILE_REPLACE_EXISTING* = 1

+  MOVEFILE_COPY_ALLOWED* = 2

+  MOVEFILE_DELAY_UNTIL_REBOOT* = 4

+  # MsgWaitForMultipleObjects, WaitForMultipleObjectsEx

+  WAIT_OBJECT_0* = 0

+  WAIT_ABANDONED_0* = 0x00000080

+  WAIT_TIMEOUT* = 0x00000102

+  WAIT_IO_COMPLETION* = 0x000000C0

+  WAIT_ABANDONED* = 0x00000080

+  WAIT_FAILED* = 0xFFFFFFFF

+  MAXIMUM_WAIT_OBJECTS* = 0x00000040

+  MAXIMUM_SUSPEND_COUNT* = 0x0000007F

+  # MultiByteToWideChar

+  MB_PRECOMPOSED* = 1

+  MB_COMPOSITE* = 2

+  MB_ERR_INVALID_CHARS* = 8

+  MB_USEGLYPHCHARS* = 4

+  # NDdeSetTrustedShare

+                              # NetAccessCheck

+                              # NetServerEnum

+                              # NetServiceControl

+                              # NetUserEnum

+                              # OpenProcessToken

+  TOKEN_ADJUST_DEFAULT* = 128

+  TOKEN_ADJUST_GROUPS* = 64

+  TOKEN_ADJUST_PRIVILEGES* = 32

+  TOKEN_ALL_ACCESS* = 0x000F00FF

+  TOKEN_ASSIGN_PRIMARY* = 1

+  TOKEN_DUPLICATE* = 2

+  TOKEN_EXECUTE* = 0x00020000

+  TOKEN_IMPERSONATE* = 4

+  TOKEN_QUERY* = 8

+  TOKEN_QUERY_SOURCE* = 16

+  TOKEN_READ* = 0x00020008

+  TOKEN_WRITE* = 0x000200E0

+  # OpenSCManager

+  SC_MANAGER_ALL_ACCESS* = 0x000F003F

+  SC_MANAGER_CONNECT* = 1

+  SC_MANAGER_CREATE_SERVICE* = 2

+  SC_MANAGER_ENUMERATE_SERVICE* = 4

+  SC_MANAGER_LOCK* = 8

+  SC_MANAGER_QUERY_LOCK_STATUS* = 16

+  SC_MANAGER_MODIFY_BOOT_CONFIG* = 32

+  # PostMessage

+  HWND_BROADCAST* = HWND(0xffff)

+

+const

+  # PrepareTape

+  TAPE_FORMAT* = 0x00000005

+  TAPE_LOAD* = 0

+  TAPE_LOCK* = 0x00000003

+  TAPE_TENSION* = 0x00000002

+  TAPE_UNLOAD* = 0x00000001

+  TAPE_UNLOCK* = 0x00000004

+  # PropertySheet

+  IS_PSREBOOTSYSTEM* = 3

+  IS_PSRESTARTWINDOWS* = 2

+  # PropSheetPageProc

+  PSPCB_CREATE* = 2

+  PSPCB_RELEASE* = 1

+  # PurgeComm

+  PURGE_TXABORT* = 1

+  PURGE_RXABORT* = 2

+  PURGE_TXCLEAR* = 4

+  PURGE_RXCLEAR* = 8

+  # QueryServiceObjectSecurity

+  OWNER_SECURITY_INFORMATION* = 0x00000001

+  GROUP_SECURITY_INFORMATION* = 0x00000002

+  DACL_SECURITY_INFORMATION* = 0x00000004

+  SACL_SECURITY_INFORMATION* = 0x00000008

+  # ReadEventLog, ReportEvent

+  EVENTLOG_FORWARDS_READ* = 4

+  EVENTLOG_BACKWARDS_READ* = 8

+  EVENTLOG_SEEK_READ* = 2

+  EVENTLOG_SEQUENTIAL_READ* = 1

+  EVENTLOG_ERROR_TYPE* = 1

+  EVENTLOG_WARNING_TYPE* = 2

+  EVENTLOG_INFORMATION_TYPE* = 4

+  EVENTLOG_AUDIT_SUCCESS* = 8

+  EVENTLOG_AUDIT_FAILURE* = 16

+  # RedrawWindow

+  RDW_ERASE* = 4

+  RDW_FRAME* = 1024

+  RDW_INTERNALPAINT* = 2

+  RDW_INVALIDATE* = 1

+  RDW_NOERASE* = 32

+  RDW_NOFRAME* = 2048

+  RDW_NOINTERNALPAINT* = 16

+  RDW_VALIDATE* = 8

+  RDW_ERASENOW* = 512

+  RDW_UPDATENOW* = 256

+  RDW_ALLCHILDREN* = 128

+  RDW_NOCHILDREN* = 64

+

+  # RegCreateKey

+  HKEY_CLASSES_ROOT* =     HKEY(0x80000000)

+  HKEY_CURRENT_USER* =     HKEY(0x80000001)

+  HKEY_LOCAL_MACHINE* =    HKEY(0x80000002)

+  HKEY_USERS* =            HKEY(0x80000003)

+  HKEY_PERFORMANCE_DATA* = HKEY(0x80000004)

+  HKEY_CURRENT_CONFIG* =   HKEY(0x80000005)

+  HKEY_DYN_DATA* =         HKEY(0x80000006)

+

+const

+  # RegCreateKeyEx

+  REG_OPTION_VOLATILE* = 0x00000001

+  REG_OPTION_NON_VOLATILE* = 0

+  REG_CREATED_NEW_KEY* = 0x00000001

+  REG_OPENED_EXISTING_KEY* = 0x00000002

+  # RegEnumValue

+  REG_BINARY* = 3

+  REG_DWORD* = 4

+  REG_DWORD_LITTLE_ENDIAN* = 4

+  REG_DWORD_BIG_ENDIAN* = 5

+  REG_EXPAND_SZ* = 2

+  REG_FULL_RESOURCE_DESCRIPTOR* = 9

+  REG_LINK* = 6

+  REG_MULTI_SZ* = 7

+  REG_NONE* = 0

+  REG_RESOURCE_LIST* = 8

+  REG_RESOURCE_REQUIREMENTS_LIST* = 10

+  REG_SZ* = 1

+  # RegisterHotKey

+  MOD_ALT* = 1

+  MOD_CONTROL* = 2

+  MOD_SHIFT* = 4

+  MOD_WIN* = 8

+  IDHOT_SNAPDESKTOP* = -2

+  IDHOT_SNAPWINDOW* = -1

+  # RegNotifyChangeKeyValue

+  REG_NOTIFY_CHANGE_NAME* = 0x00000001

+  REG_NOTIFY_CHANGE_ATTRIBUTES* = 0x00000002

+  REG_NOTIFY_CHANGE_LAST_SET* = 0x00000004

+  REG_NOTIFY_CHANGE_SECURITY* = 0x00000008

+  # ScrollWindowEx

+  SW_ERASE* = 4

+  SW_INVALIDATE* = 2

+  SW_SCROLLCHILDREN* = 1

+  # SendMessageTimeout

+  SMTO_ABORTIFHUNG* = 2

+  SMTO_BLOCK* = 1

+  SMTO_NORMAL* = 0

+  # SetBkMode

+  OPAQUE* = 2

+  TRANSPARENT* = 1

+  # SetDebugErrorLevel

+  SLE_ERROR* = 1

+  SLE_MINORERROR* = 2

+  SLE_WARNING* = 3

+  # SetErrorMode

+  SEM_FAILCRITICALERRORS* = 1

+  SEM_NOALIGNMENTFAULTEXCEPT* = 4

+  SEM_NOGPFAULTERRORBOX* = 2

+  SEM_NOOPENFILEERRORBOX* = 32768

+  # SetICMMode

+  ICM_ON* = 2

+  ICM_OFF* = 1

+  ICM_QUERY* = 3

+  # SetJob

+                              # Locale Information

+  LOCALE_ILANGUAGE* = 1

+  LOCALE_SLANGUAGE* = 2

+  LOCALE_SENGLANGUAGE* = 4097

+  LOCALE_SABBREVLANGNAME* = 3

+  LOCALE_SNATIVELANGNAME* = 4

+  LOCALE_ICOUNTRY* = 5

+  LOCALE_SCOUNTRY* = 6

+  LOCALE_SENGCOUNTRY* = 4098

+  LOCALE_SABBREVCTRYNAME* = 7

+  LOCALE_SNATIVECTRYNAME* = 8

+  LOCALE_IDEFAULTLANGUAGE* = 9

+  LOCALE_IDEFAULTCOUNTRY* = 10

+  LOCALE_IDEFAULTANSICODEPAGE* = 4100

+  LOCALE_IDEFAULTCODEPAGE* = 11

+  LOCALE_SLIST* = 12

+  LOCALE_IMEASURE* = 13

+  LOCALE_SDECIMAL* = 14

+  LOCALE_STHOUSAND* = 15

+  LOCALE_SGROUPING* = 16

+  LOCALE_IDIGITS* = 17

+  LOCALE_ILZERO* = 18

+  LOCALE_INEGNUMBER* = 4112

+  LOCALE_SCURRENCY* = 20

+  LOCALE_SMONDECIMALSEP* = 22

+  LOCALE_SMONTHOUSANDSEP* = 23

+  LOCALE_SMONGROUPING* = 24

+  LOCALE_ICURRDIGITS* = 25

+  LOCALE_ICURRENCY* = 27

+  LOCALE_INEGCURR* = 28

+  LOCALE_SDATE* = 29

+  LOCALE_STIME* = 30

+  LOCALE_STIMEFORMAT* = 4099

+  LOCALE_SSHORTDATE* = 31

+  LOCALE_SLONGDATE* = 32

+  LOCALE_IDATE* = 33

+  LOCALE_ILDATE* = 34

+  LOCALE_ITIME* = 35

+  LOCALE_ITLZERO* = 37

+  LOCALE_IDAYLZERO* = 38

+  LOCALE_IMONLZERO* = 39

+  LOCALE_S1159* = 40

+  LOCALE_S2359* = 41

+  LOCALE_ICALENDARTYPE* = 4105

+  LOCALE_IOPTIONALCALENDAR* = 4107

+  LOCALE_IFIRSTDAYOFWEEK* = 4108

+  LOCALE_IFIRSTWEEKOFYEAR* = 4109

+  LOCALE_SDAYNAME1* = 42

+  LOCALE_SDAYNAME2* = 43

+  LOCALE_SDAYNAME3* = 44

+  LOCALE_SDAYNAME4* = 45

+  LOCALE_SDAYNAME5* = 46

+  LOCALE_SDAYNAME6* = 47

+  LOCALE_SDAYNAME7* = 48

+  LOCALE_SABBREVDAYNAME1* = 49

+  LOCALE_SABBREVDAYNAME2* = 50

+  LOCALE_SABBREVDAYNAME3* = 51

+  LOCALE_SABBREVDAYNAME4* = 52

+  LOCALE_SABBREVDAYNAME5* = 53

+  LOCALE_SABBREVDAYNAME6* = 54

+  LOCALE_SABBREVDAYNAME7* = 55

+  LOCALE_SMONTHNAME1* = 56

+  LOCALE_SMONTHNAME2* = 57

+  LOCALE_SMONTHNAME3* = 58

+  LOCALE_SMONTHNAME4* = 59

+  LOCALE_SMONTHNAME5* = 60

+  LOCALE_SMONTHNAME6* = 61

+  LOCALE_SMONTHNAME7* = 62

+  LOCALE_SMONTHNAME8* = 63

+  LOCALE_SMONTHNAME9* = 64

+  LOCALE_SMONTHNAME10* = 65

+  LOCALE_SMONTHNAME11* = 66

+  LOCALE_SMONTHNAME12* = 67

+  LOCALE_SMONTHNAME13* = 4110

+  LOCALE_SABBREVMONTHNAME1* = 68

+  LOCALE_SABBREVMONTHNAME2* = 69

+  LOCALE_SABBREVMONTHNAME3* = 70

+  LOCALE_SABBREVMONTHNAME4* = 71

+  LOCALE_SABBREVMONTHNAME5* = 72

+  LOCALE_SABBREVMONTHNAME6* = 73

+  LOCALE_SABBREVMONTHNAME7* = 74

+  LOCALE_SABBREVMONTHNAME8* = 75

+  LOCALE_SABBREVMONTHNAME9* = 76

+  LOCALE_SABBREVMONTHNAME10* = 77

+  LOCALE_SABBREVMONTHNAME11* = 78

+  LOCALE_SABBREVMONTHNAME12* = 79

+  LOCALE_SABBREVMONTHNAME13* = 4111

+  LOCALE_SPOSITIVESIGN* = 80

+  LOCALE_SNEGATIVESIGN* = 81

+  LOCALE_IPOSSIGNPOSN* = 82

+  LOCALE_INEGSIGNPOSN* = 83

+  LOCALE_IPOSSYMPRECEDES* = 84

+  LOCALE_IPOSSEPBYSPACE* = 85

+  LOCALE_INEGSYMPRECEDES* = 86

+  LOCALE_INEGSEPBYSPACE* = 87

+  LOCALE_NOUSEROVERRIDE* = 0x80000000

+  LOCALE_USE_CP_ACP* = 0x40000000 # use the system ACP

+  LOCALE_RETURN_NUMBER* = 0x20000000 # return number instead

+  LOCALE_SISO639LANGNAME* = 0x00000059

+  LOCALE_SISO3166CTRYNAME* = 0x0000005A

+  # Calendar Type Information

+  CAL_ICALINTVALUE* = 1

+  CAL_IYEAROFFSETRANGE* = 3

+  CAL_SABBREVDAYNAME1* = 14

+  CAL_SABBREVDAYNAME2* = 15

+  CAL_SABBREVDAYNAME3* = 16

+  CAL_SABBREVDAYNAME4* = 17

+  CAL_SABBREVDAYNAME5* = 18

+  CAL_SABBREVDAYNAME6* = 19

+  CAL_SABBREVDAYNAME7* = 20

+  CAL_SABBREVMONTHNAME1* = 34

+  CAL_SABBREVMONTHNAME2* = 35

+  CAL_SABBREVMONTHNAME3* = 36

+  CAL_SABBREVMONTHNAME4* = 37

+  CAL_SABBREVMONTHNAME5* = 38

+  CAL_SABBREVMONTHNAME6* = 39

+  CAL_SABBREVMONTHNAME7* = 40

+  CAL_SABBREVMONTHNAME8* = 41

+  CAL_SABBREVMONTHNAME9* = 42

+  CAL_SABBREVMONTHNAME10* = 43

+  CAL_SABBREVMONTHNAME11* = 44

+  CAL_SABBREVMONTHNAME12* = 45

+  CAL_SABBREVMONTHNAME13* = 46

+  CAL_SCALNAME* = 2

+  CAL_SDAYNAME1* = 7

+  CAL_SDAYNAME2* = 8

+  CAL_SDAYNAME3* = 9

+  CAL_SDAYNAME4* = 10

+  CAL_SDAYNAME5* = 11

+  CAL_SDAYNAME6* = 12

+  CAL_SDAYNAME7* = 13

+  CAL_SERASTRING* = 4

+  CAL_SLONGDATE* = 6

+  CAL_SMONTHNAME1* = 21

+  CAL_SMONTHNAME2* = 22

+  CAL_SMONTHNAME3* = 23

+  CAL_SMONTHNAME4* = 24

+  CAL_SMONTHNAME5* = 25

+  CAL_SMONTHNAME6* = 26

+  CAL_SMONTHNAME7* = 27

+  CAL_SMONTHNAME8* = 28

+  CAL_SMONTHNAME9* = 29

+  CAL_SMONTHNAME10* = 30

+  CAL_SMONTHNAME11* = 31

+  CAL_SMONTHNAME12* = 32

+  CAL_SMONTHNAME13* = 33

+  CAL_SSHORTDATE* = 5

+  # SetProcessWorkingSetSize

+  PROCESS_SET_QUOTA* = 256

+  # SetPrinter

+                              # SetService

+                              # SetStretchBltMode

+  BLACKONWHITE* = 1

+  COLORONCOLOR* = 3

+  HALFTONE* = 4

+  STRETCH_ANDSCANS* = 1

+  STRETCH_DELETESCANS* = 3

+  STRETCH_HALFTONE* = 4

+  STRETCH_ORSCANS* = 2

+  WHITEONBLACK* = 2

+  # SetSystemCursor

+  OCR_NORMAL* = 32512

+  OCR_IBEAM* = 32513

+  OCR_WAIT* = 32514

+  OCR_CROSS* = 32515

+  OCR_UP* = 32516

+  OCR_SIZE* = 32640

+  OCR_ICON* = 32641

+  OCR_SIZENWSE* = 32642

+  OCR_SIZENESW* = 32643

+  OCR_SIZEWE* = 32644

+  OCR_SIZENS* = 32645

+  OCR_SIZEALL* = 32646

+  OCR_NO* = 32648

+  OCR_APPSTARTING* = 32650

+  # SetTapePosition

+  TAPE_ABSOLUTE_BLOCK* = 0x00000001

+  TAPE_LOGICAL_BLOCK* = 0x00000002

+  TAPE_REWIND* = 0

+  TAPE_SPACE_END_OF_DATA* = 0x00000004

+  TAPE_SPACE_FILEMARKS* = 0x00000006

+  TAPE_SPACE_RELATIVE_BLOCKS* = 0x00000005

+  TAPE_SPACE_SEQUENTIAL_FMKS* = 0x00000007

+  TAPE_SPACE_SEQUENTIAL_SMKS* = 0x00000009

+  TAPE_SPACE_SETMARKS* = 0x00000008

+  # SetUnhandledExceptionFilter

+  EXCEPTION_EXECUTE_HANDLER* = 1

+  EXCEPTION_CONTINUE_EXECUTION* = -1

+  EXCEPTION_CONTINUE_SEARCH* = 0

+

+  # SetWindowPos, DeferWindowPos

+  HWND_BOTTOM* =    HWND(1)

+  HWND_NOTOPMOST* = HWND(-2)

+  HWND_TOP* =       HWND(0)

+  HWND_TOPMOST* =   HWND(-1)

+

+const

+  SWP_DRAWFRAME* = 32

+  SWP_FRAMECHANGED* = 32

+  SWP_HIDEWINDOW* = 128

+  SWP_NOACTIVATE* = 16

+  SWP_NOCOPYBITS* = 256

+  SWP_NOMOVE* = 2

+  SWP_NOSIZE* = 1

+  SWP_NOREDRAW* = 8

+  SWP_NOZORDER* = 4

+  SWP_SHOWWINDOW* = 64

+  SWP_NOOWNERZORDER* = 512

+  SWP_NOREPOSITION* = 512

+  SWP_NOSENDCHANGING* = 1024

+  # SHAddToRecentDocs

+                              # SHAppBarMessage

+                              # SHChangeNotify

+                              # ShellProc

+  HSHELL_ACTIVATESHELLWINDOW* = 3

+  HSHELL_GETMINRECT* = 5

+  HSHELL_LANGUAGE* = 8

+  HSHELL_REDRAW* = 6

+  HSHELL_TASKMAN* = 7

+  HSHELL_WINDOWACTIVATED* = 4

+  HSHELL_WINDOWCREATED* = 1

+  HSHELL_WINDOWDESTROYED* = 2

+  # SHGetFileInfo

+                              # SHGetSpecialFolderLocation

+                              # ShowWindow

+  SW_HIDE* = 0

+  SW_MAXIMIZE* = 3

+  SW_MINIMIZE* = 6

+  SW_NORMAL* = 1

+  SW_RESTORE* = 9

+  SW_SHOW* = 5

+  SW_SHOWDEFAULT* = 10

+  SW_SHOWMAXIMIZED* = 3

+  SW_SHOWMINIMIZED* = 2

+  SW_SHOWMINNOACTIVE* = 7

+  SW_SHOWNA* = 8

+  SW_SHOWNOACTIVATE* = 4

+  SW_SHOWNORMAL* = 1

+  WPF_RESTORETOMAXIMIZED* = 2

+  WPF_SETMINPOSITION* = 1

+  # Sleep

+  INFINITE* = -1'i32

+  # SystemParametersInfo

+  SPI_GETBEEP* = 1

+  SPI_SETBEEP* = 2

+  SPI_GETMOUSE* = 3

+  SPI_SETMOUSE* = 4

+  SPI_GETBORDER* = 5

+  SPI_SETBORDER* = 6

+  SPI_GETKEYBOARDSPEED* = 10

+  SPI_SETKEYBOARDSPEED* = 11

+  SPI_LANGDRIVER* = 12

+  SPI_ICONHORIZONTALSPACING* = 13

+  SPI_GETSCREENSAVETIMEOUT* = 14

+  SPI_SETSCREENSAVETIMEOUT* = 15

+  SPI_GETSCREENSAVEACTIVE* = 16

+  SPI_SETSCREENSAVEACTIVE* = 17

+  SPI_GETGRIDGRANULARITY* = 18

+  SPI_SETGRIDGRANULARITY* = 19

+  SPI_SETDESKWALLPAPER* = 20

+  SPI_SETDESKPATTERN* = 21

+  SPI_GETKEYBOARDDELAY* = 22

+  SPI_SETKEYBOARDDELAY* = 23

+  SPI_ICONVERTICALSPACING* = 24

+  SPI_GETICONTITLEWRAP* = 25

+  SPI_SETICONTITLEWRAP* = 26

+  SPI_GETMENUDROPALIGNMENT* = 27

+  SPI_SETMENUDROPALIGNMENT* = 28

+  SPI_SETDOUBLECLKWIDTH* = 29

+  SPI_SETDOUBLECLKHEIGHT* = 30

+  SPI_GETICONTITLELOGFONT* = 31

+  SPI_SETDOUBLECLICKTIME* = 32

+  SPI_SETMOUSEBUTTONSWAP* = 33

+  SPI_SETICONTITLELOGFONT* = 34

+  SPI_GETFASTTASKSWITCH* = 35

+  SPI_SETFASTTASKSWITCH* = 36

+  SPI_SETDRAGFULLWINDOWS* = 37

+  SPI_GETDRAGFULLWINDOWS* = 38

+  SPI_GETNONCLIENTMETRICS* = 41

+  SPI_SETNONCLIENTMETRICS* = 42

+  SPI_GETMINIMIZEDMETRICS* = 43

+  SPI_SETMINIMIZEDMETRICS* = 44

+  SPI_GETICONMETRICS* = 45

+  SPI_SETICONMETRICS* = 46

+  SPI_SETWORKAREA* = 47

+  SPI_GETWORKAREA* = 48

+  SPI_SETPENWINDOWS* = 49

+  SPI_GETFILTERKEYS* = 50

+  SPI_SETFILTERKEYS* = 51

+  SPI_GETTOGGLEKEYS* = 52

+  SPI_SETTOGGLEKEYS* = 53

+  SPI_GETMOUSEKEYS* = 54

+  SPI_SETMOUSEKEYS* = 55

+  SPI_GETSHOWSOUNDS* = 56

+  SPI_SETSHOWSOUNDS* = 57

+  SPI_GETSTICKYKEYS* = 58

+  SPI_SETSTICKYKEYS* = 59

+  SPI_GETACCESSTIMEOUT* = 60

+  SPI_SETACCESSTIMEOUT* = 61

+  SPI_GETSERIALKEYS* = 62

+  SPI_SETSERIALKEYS* = 63

+  SPI_GETSOUNDSENTRY* = 64

+  SPI_SETSOUNDSENTRY* = 65

+  SPI_GETHIGHCONTRAST* = 66

+  SPI_SETHIGHCONTRAST* = 67

+  SPI_GETKEYBOARDPREF* = 68

+  SPI_SETKEYBOARDPREF* = 69

+  SPI_GETSCREENREADER* = 70

+  SPI_SETSCREENREADER* = 71

+  SPI_GETANIMATION* = 72

+  SPI_SETANIMATION* = 73

+  SPI_GETFONTSMOOTHING* = 74

+  SPI_SETFONTSMOOTHING* = 75

+  SPI_SETDRAGWIDTH* = 76

+  SPI_SETDRAGHEIGHT* = 77

+  SPI_SETHANDHELD* = 78

+  SPI_GETLOWPOWERTIMEOUT* = 79

+  SPI_GETPOWEROFFTIMEOUT* = 80

+  SPI_SETLOWPOWERTIMEOUT* = 81

+  SPI_SETPOWEROFFTIMEOUT* = 82

+  SPI_GETLOWPOWERACTIVE* = 83

+  SPI_GETPOWEROFFACTIVE* = 84

+  SPI_SETLOWPOWERACTIVE* = 85

+  SPI_SETPOWEROFFACTIVE* = 86

+  SPI_SETCURSORS* = 87

+  SPI_SETICONS* = 88

+  SPI_GETDEFAULTINPUTLANG* = 89

+  SPI_SETDEFAULTINPUTLANG* = 90

+  SPI_SETLANGTOGGLE* = 91

+  SPI_GETWINDOWSEXTENSION* = 92

+  SPI_SETMOUSETRAILS* = 93

+  SPI_GETMOUSETRAILS* = 94

+  SPI_GETSNAPTODEFBUTTON* = 95

+  SPI_SETSNAPTODEFBUTTON* = 96

+  SPI_SCREENSAVERRUNNING* = 97

+  SPI_SETSCREENSAVERRUNNING* = 97

+  SPI_GETMOUSEHOVERWIDTH* = 98

+  SPI_SETMOUSEHOVERWIDTH* = 99

+  SPI_GETMOUSEHOVERHEIGHT* = 100

+  SPI_SETMOUSEHOVERHEIGHT* = 101

+  SPI_GETMOUSEHOVERTIME* = 102

+  SPI_SETMOUSEHOVERTIME* = 103

+  SPI_GETWHEELSCROLLLINES* = 104

+  SPI_SETWHEELSCROLLLINES* = 105

+  SPI_GETMENUSHOWDELAY* = 106

+  SPI_SETMENUSHOWDELAY* = 107

+  SPI_GETSHOWIMEUI* = 110

+  SPI_SETSHOWIMEUI* = 111

+  # Windows Me/2000 and higher

+  SPI_GETMOUSESPEED* = 112

+  SPI_SETMOUSESPEED* = 113

+  SPI_GETSCREENSAVERRUNNING* = 114

+  SPI_GETDESKWALLPAPER* = 115

+  SPI_GETACTIVEWINDOWTRACKING* = 4096

+  SPI_SETACTIVEWINDOWTRACKING* = 4097

+  SPI_GETMENUANIMATION* = 4098

+  SPI_SETMENUANIMATION* = 4099

+  SPI_GETCOMBOBOXANIMATION* = 4100

+  SPI_SETCOMBOBOXANIMATION* = 4101

+  SPI_GETLISTBOXSMOOTHSCROLLING* = 4102

+  SPI_SETLISTBOXSMOOTHSCROLLING* = 4103

+  SPI_GETGRADIENTCAPTIONS* = 4104

+  SPI_SETGRADIENTCAPTIONS* = 4105

+  SPI_GETKEYBOARDCUES* = 4106

+  SPI_SETKEYBOARDCUES* = 4107

+  SPI_GETMENUUNDERLINES* = 4106

+  SPI_SETMENUUNDERLINES* = 4107

+  SPI_GETACTIVEWNDTRKZORDER* = 4108

+  SPI_SETACTIVEWNDTRKZORDER* = 4109

+  SPI_GETHOTTRACKING* = 4110

+  SPI_SETHOTTRACKING* = 4111

+  SPI_GETMENUFADE* = 4114

+  SPI_SETMENUFADE* = 4115

+  SPI_GETSELECTIONFADE* = 4116

+  SPI_SETSELECTIONFADE* = 4117

+  SPI_GETTOOLTIPANIMATION* = 4118

+  SPI_SETTOOLTIPANIMATION* = 4119

+  SPI_GETTOOLTIPFADE* = 4120

+  SPI_SETTOOLTIPFADE* = 4121

+  SPI_GETCURSORSHADOW* = 4122

+  SPI_SETCURSORSHADOW* = 4123

+  SPI_GETUIEFFECTS* = 4158

+  SPI_SETUIEFFECTS* = 4159

+  SPI_GETFOREGROUNDLOCKTIMEOUT* = 8192

+  SPI_SETFOREGROUNDLOCKTIMEOUT* = 8193

+  SPI_GETACTIVEWNDTRKTIMEOUT* = 8194

+  SPI_SETACTIVEWNDTRKTIMEOUT* = 8195

+  SPI_GETFOREGROUNDFLASHCOUNT* = 8196

+  SPI_SETFOREGROUNDFLASHCOUNT* = 8197

+  SPI_GETCARETWIDTH* = 8198

+  SPI_SETCARETWIDTH* = 8199

+  # Windows XP and higher

+  SPI_GETMOUSESONAR* = 4124

+  SPI_SETMOUSESONAR* = 4125

+  SPI_GETMOUSECLICKLOCK* = 4126

+  SPI_SETMOUSECLICKLOCK* = 4127

+  SPI_GETMOUSEVANISH* = 4128

+  SPI_SETMOUSEVANISH* = 4129

+  SPI_GETFLATMENU* = 4130

+  SPI_SETFLATMENU* = 4131

+  SPI_GETDROPSHADOW* = 4132

+  SPI_SETDROPSHADOW* = 4133

+  SPI_GETBLOCKSENDINPUTRESETS* = 4134

+  SPI_SETBLOCKSENDINPUTRESETS* = 4135

+  SPI_GETMOUSECLICKLOCKTIME* = 8200

+  SPI_SETMOUSECLICKLOCKTIME* = 8201

+  SPI_GETFONTSMOOTHINGTYPE* = 8202

+  SPI_SETFONTSMOOTHINGTYPE* = 8203

+  SPI_GETFONTSMOOTHINGCONTRAST* = 8204

+  SPI_SETFONTSMOOTHINGCONTRAST* = 8205

+  SPI_GETFOCUSBORDERWIDTH* = 8206

+  SPI_SETFOCUSBORDERWIDTH* = 8207

+  SPI_GETFOCUSBORDERHEIGHT* = 8208

+  SPI_SETFOCUSBORDERHEIGHT* = 8209

+  SPI_GETFONTSMOOTHINGORIENTATION* = 8210

+  SPI_SETFONTSMOOTHINGORIENTATION* = 8211

+  # constants for SPI_GETFONTSMOOTHINGTYPE and SPI_SETFONTSMOOTHINGTYPE:

+  FE_FONTSMOOTHINGSTANDARD* = 1

+  FE_FONTSMOOTHINGCLEARTYPE* = 2

+  FE_FONTSMOOTHINGDOCKING* = 32768

+  # constants for SPI_GETFONTSMOOTHINGORIENTATION and SPI_SETFONTSMOOTHINGORIENTATION:

+  FE_FONTSMOOTHINGORIENTATIONBGR* = 0

+  FE_FONTSMOOTHINGORIENTATIONRGB* = 1

+  # Flags

+  SPIF_UPDATEINIFILE* = 1

+  SPIF_SENDWININICHANGE* = 2

+  SPIF_SENDCHANGE* = 2

+  # TrackPopupMenu, TrackPopMenuEx

+  TPM_CENTERALIGN* = 0x00000004

+  TPM_LEFTALIGN* = 0

+  TPM_RIGHTALIGN* = 0x00000008

+  TPM_LEFTBUTTON* = 0

+  TPM_RIGHTBUTTON* = 0x00000002

+  TPM_HORIZONTAL* = 0

+  TPM_VERTICAL* = 0x00000040

+  # TranslateCharsetInfo

+  TCI_SRCCHARSET* = 1

+  TCI_SRCCODEPAGE* = 2

+  TCI_SRCFONTSIG* = 3

+  # VerFindFile

+  VFFF_ISSHAREDFILE* = 1

+  VFF_CURNEDEST* = 1

+  VFF_FILEINUSE* = 2

+  VFF_BUFFTOOSMALL* = 4

+  # VerInstallFile

+  VIFF_FORCEINSTALL* = 1

+  VIFF_DONTDELETEOLD* = 2

+  VIF_TEMPFILE* = 0x00000001

+  VIF_MISMATCH* = 0x00000002

+  VIF_SRCOLD* = 0x00000004

+  VIF_DIFFLANG* = 0x00000008

+  VIF_DIFFCODEPG* = 0x00000010

+  VIF_DIFFTYPE* = 0x00000020

+  VIF_WRITEPROT* = 0x00000040

+  VIF_FILEINUSE* = 0x00000080

+  VIF_OUTOFSPACE* = 0x00000100

+  VIF_ACCESSVIOLATION* = 0x00000200

+  VIF_SHARINGVIOLATION* = 0x00000400

+  VIF_CANNOTCREATE* = 0x00000800

+  VIF_CANNOTDELETE* = 0x00001000

+  VIF_CANNOTDELETECUR* = 0x00004000

+  VIF_CANNOTRENAME* = 0x00002000

+  VIF_OUTOFMEMORY* = 0x00008000

+  VIF_CANNOTREADSRC* = 0x00010000

+  VIF_CANNOTREADDST* = 0x00020000

+  VIF_BUFFTOOSMALL* = 0x00040000

+  # WideCharToMultiByte

+  WC_COMPOSITECHECK* = 512

+  WC_DISCARDNS* = 16

+  WC_SEPCHARS* = 32

+  WC_DEFAULTCHAR* = 64

+  # WinHelp

+  HELP_COMMAND* = 0x00000102

+  HELP_CONTENTS* = 0x00000003

+  HELP_CONTEXT* = 0x00000001

+  HELP_CONTEXTPOPUP* = 0x00000008

+  HELP_FORCEFILE* = 0x00000009

+  HELP_HELPONHELP* = 0x00000004

+  HELP_INDEX* = 0x00000003

+  HELP_KEY* = 0x00000101

+  HELP_MULTIKEY* = 0x00000201

+  HELP_PARTIALKEY* = 0x00000105

+  HELP_QUIT* = 0x00000002

+  HELP_SETCONTENTS* = 0x00000005

+  HELP_SETINDEX* = 0x00000005

+  HELP_CONTEXTMENU* = 0x0000000A

+  HELP_FINDER* = 0x0000000B

+  HELP_WM_HELP* = 0x0000000C

+  HELP_TCARD* = 0x00008000

+  HELP_TCARD_DATA* = 0x00000010

+  HELP_TCARD_OTHER_CALLER* = 0x00000011

+  # WNetAddConnectino2

+  CONNECT_UPDATE_PROFILE* = 1

+  # WNetConnectionDialog, WNetDisconnectDialog, WNetOpenEnum

+  RESOURCETYPE_DISK* = 1

+  RESOURCETYPE_PRINT* = 2

+  RESOURCETYPE_ANY* = 0

+  RESOURCE_CONNECTED* = 1

+  RESOURCE_GLOBALNET* = 2

+  RESOURCE_REMEMBERED* = 3

+  RESOURCEUSAGE_CONNECTABLE* = 1

+  RESOURCEUSAGE_CONTAINER* = 2

+  # WNetGetResourceInformation, WNetGetResourceParent

+  WN_BAD_NETNAME* = 0x00000043

+  WN_EXTENDED_ERROR* = 0x000004B8

+  WN_MORE_DATA* = 0x000000EA

+  WN_NO_NETWORK* = 0x000004C6

+  WN_SUCCESS* = 0

+  WN_ACCESS_DENIED* = 0x00000005

+  WN_BAD_PROVIDER* = 0x000004B4

+  WN_NOT_AUTHENTICATED* = 0x000004DC

+  # WNetGetUniversalName

+  UNIVERSAL_NAME_INFO_LEVEL* = 1

+  REMOTE_NAME_INFO_LEVEL* = 2

+  # GetExitCodeThread

+  STILL_ACTIVE* = 0x00000103

+  # COMMPROP structure

+  SP_SERIALCOMM* = 0x00000001

+  BAUD_075* = 0x00000001

+  BAUD_110* = 0x00000002

+  BAUD_134_5* = 0x00000004

+  BAUD_150* = 0x00000008

+  BAUD_300* = 0x00000010

+  BAUD_600* = 0x00000020

+  BAUD_1200* = 0x00000040

+  BAUD_1800* = 0x00000080

+  BAUD_2400* = 0x00000100

+  BAUD_4800* = 0x00000200

+  BAUD_7200* = 0x00000400

+  BAUD_9600* = 0x00000800

+  BAUD_14400* = 0x00001000

+  BAUD_19200* = 0x00002000

+  BAUD_38400* = 0x00004000

+  BAUD_56K* = 0x00008000

+  BAUD_57600* = 0x00040000

+  BAUD_115200* = 0x00020000

+  BAUD_128K* = 0x00010000

+  BAUD_USER* = 0x10000000

+  PST_FAX* = 0x00000021

+  PST_LAT* = 0x00000101

+  PST_MODEM* = 0x00000006

+  PST_NETWORK_BRIDGE* = 0x00000100

+  PST_PARALLELPORT* = 0x00000002

+  PST_RS232* = 0x00000001

+  PST_RS422* = 0x00000003

+  PST_RS423* = 0x00000004

+  PST_RS449* = 0x00000005

+  PST_SCANNER* = 0x00000022

+  PST_TCPIP_TELNET* = 0x00000102

+  PST_UNSPECIFIED* = 0

+  PST_X25* = 0x00000103

+  PCF_16BITMODE* = 0x00000200

+  PCF_DTRDSR* = 0x00000001

+  PCF_INTTIMEOUTS* = 0x00000080

+  PCF_PARITY_CHECK* = 0x00000008

+  PCF_RLSD* = 0x00000004

+  PCF_RTSCTS* = 0x00000002

+  PCF_SETXCHAR* = 0x00000020

+  PCF_SPECIALCHARS* = 0x00000100

+  PCF_TOTALTIMEOUTS* = 0x00000040

+  PCF_XONXOFF* = 0x00000010

+  SP_BAUD* = 0x00000002

+  SP_DATABITS* = 0x00000004

+  SP_HANDSHAKING* = 0x00000010

+  SP_PARITY* = 0x00000001

+  SP_PARITY_CHECK* = 0x00000020

+  SP_RLSD* = 0x00000040

+  SP_STOPBITS* = 0x00000008

+  DATABITS_5* = 1

+  DATABITS_6* = 2

+  DATABITS_7* = 4

+  DATABITS_8* = 8

+  DATABITS_16* = 16

+  DATABITS_16X* = 32

+  STOPBITS_10* = 1

+  STOPBITS_15* = 2

+  STOPBITS_20* = 4

+  PARITY_NONE* = 256

+  PARITY_ODD* = 512

+  PARITY_EVEN* = 1024

+  PARITY_MARK* = 2048

+  PARITY_SPACE* = 4096

+  COMMPROP_INITIALIZED* = 0xE73CF52E

+  # DCB structure

+  CBR_110* = 110

+  CBR_300* = 300

+  CBR_600* = 600

+  CBR_1200* = 1200

+  CBR_2400* = 2400

+  CBR_4800* = 4800

+  CBR_9600* = 9600

+  CBR_14400* = 14400

+  CBR_19200* = 19200

+  CBR_38400* = 38400

+  CBR_56000* = 56000

+  CBR_57600* = 57600

+  CBR_115200* = 115200

+  CBR_128000* = 128000

+  CBR_256000* = 256000

+  DTR_CONTROL_DISABLE* = 0

+  DTR_CONTROL_ENABLE* = 1

+  DTR_CONTROL_HANDSHAKE* = 2

+  RTS_CONTROL_DISABLE* = 0

+  RTS_CONTROL_ENABLE* = 1

+  RTS_CONTROL_HANDSHAKE* = 2

+  RTS_CONTROL_TOGGLE* = 3

+  EVENPARITY* = 2

+  MARKPARITY* = 3

+  NOPARITY* = 0

+  ODDPARITY* = 1

+  SPACEPARITY* = 4

+  ONESTOPBIT* = 0

+  ONE5STOPBITS* = 1

+  TWOSTOPBITS* = 2

+  # Debugging events

+  CREATE_PROCESS_DEBUG_EVENT* = 3

+  CREATE_THREAD_DEBUG_EVENT* = 2

+  EXCEPTION_DEBUG_EVENT* = 1

+  EXIT_PROCESS_DEBUG_EVENT* = 5

+  EXIT_THREAD_DEBUG_EVENT* = 4

+  LOAD_DLL_DEBUG_EVENT* = 6

+  OUTPUT_DEBUG_STRING_EVENT* = 8

+  UNLOAD_DLL_DEBUG_EVENT* = 7

+  RIP_EVENT* = 9

+  # PROCESS_HEAP_ENTRY structure

+  PROCESS_HEAP_REGION* = 1

+  PROCESS_HEAP_UNCOMMITTED_RANGE* = 2

+  PROCESS_HEAP_ENTRY_BUSY* = 4

+  PROCESS_HEAP_ENTRY_MOVEABLE* = 16

+  PROCESS_HEAP_ENTRY_DDESHARE* = 32

+  # Win32s

+  HINSTANCE_ERROR* = 32

+  # WIN32_STREAM_ID structure

+  BACKUP_DATA* = 1

+  BACKUP_EA_DATA* = 2

+  BACKUP_SECURITY_DATA* = 3

+  BACKUP_ALTERNATE_DATA* = 4

+  BACKUP_LINK* = 5

+  STREAM_MODIFIED_WHEN_READ* = 1

+  STREAM_CONTAINS_SECURITY* = 2

+  # STARTUPINFO structure

+  STARTF_USESHOWWINDOW* = 1

+  STARTF_USEPOSITION* = 4

+  STARTF_USESIZE* = 2

+  STARTF_USECOUNTCHARS* = 8

+  STARTF_USEFILLATTRIBUTE* = 16

+  STARTF_RUNFULLSCREEN* = 32

+  STARTF_FORCEONFEEDBACK* = 64

+  STARTF_FORCEOFFFEEDBACK* = 128

+  STARTF_USESTDHANDLES* = 256

+  STARTF_USEHOTKEY* = 512

+  # OSVERSIONINFO structure

+  VER_PLATFORM_WIN32s* = 0

+  VER_PLATFORM_WIN32_WINDOWS* = 1

+  VER_PLATFORM_WIN32_NT* = 2

+  # More versions

+  VER_SERVER_NT* = 0x80000000

+  VER_WORKSTATION_NT* = 0x40000000

+  VER_SUITE_SMALLBUSINESS* = 0x00000001

+  VER_SUITE_ENTERPRISE* = 0x00000002

+  VER_SUITE_BACKOFFICE* = 0x00000004

+  VER_SUITE_COMMUNICATIONS* = 0x00000008

+  VER_SUITE_TERMINAL* = 0x00000010

+  VER_SUITE_SMALLBUSINESS_RESTRICTED* = 0x00000020

+  VER_SUITE_EMBEDDEDNT* = 0x00000040

+  VER_SUITE_DATACENTER* = 0x00000080

+  VER_SUITE_SINGLEUSERTS* = 0x00000100

+  VER_SUITE_PERSONAL* = 0x00000200

+  VER_SUITE_BLADE* = 0x00000400

+  VER_SUITE_EMBEDDED_RESTRICTED* = 0x00000800

+  # PROPSHEETPAGE structure

+  MAXPROPPAGES* = 100

+  PSP_DEFAULT* = 0

+  PSP_DLGINDIRECT* = 1

+  PSP_HASHELP* = 32

+  PSP_USECALLBACK* = 128

+  PSP_USEHICON* = 2

+  PSP_USEICONID* = 4

+  PSP_USEREFPARENT* = 64

+  PSP_USETITLE* = 8

+  PSP_RTLREADING* = 16

+  # PROPSHEETHEADER structure

+  PSH_DEFAULT* = 0

+  PSH_HASHELP* = 512

+  PSH_MODELESS* = 1024

+  PSH_NOAPPLYNOW* = 128

+  PSH_PROPSHEETPAGE* = 8

+  PSH_PROPTITLE* = 1

+  PSH_USECALLBACK* = 256

+  PSH_USEHICON* = 2

+  PSH_USEICONID* = 4

+  PSH_USEPSTARTPAGE* = 64

+  PSH_WIZARD* = 32

+  PSH_RTLREADING* = 2048

+  PSCB_INITIALIZED* = 1

+  PSCB_PRECREATE* = 2

+  # PSN_APPLY message

+  PSNRET_NOERROR* = 0

+  PSNRET_INVALID_NOCHANGEPAGE* = 2

+  # Property Sheet

+  PSBTN_APPLYNOW* = 4

+  PSBTN_BACK* = 0

+  PSBTN_CANCEL* = 5

+  PSBTN_FINISH* = 2

+  PSBTN_HELP* = 6

+  PSBTN_NEXT* = 1

+  PSBTN_OK* = 3

+  PSWIZB_BACK* = 1

+  PSWIZB_NEXT* = 2

+  PSWIZB_FINISH* = 4

+  PSWIZB_DISABLEDFINISH* = 8

+  ID_PSREBOOTSYSTEM* = 3

+  ID_PSRESTARTWINDOWS* = 2

+  WIZ_BODYCX* = 184

+  WIZ_BODYX* = 92

+  WIZ_CXBMP* = 80

+  WIZ_CXDLG* = 276

+  WIZ_CYDLG* = 140

+

+  # VX_FIXEDFILEINFO structure

+  VS_FILE_INFO* = cast[MAKEINTRESOURCE](16)

+

+const

+  VS_VERSION_INFO* = 1

+  VS_FF_DEBUG* = 0x00000001

+  VS_FF_INFOINFERRED* = 0x00000010

+  VS_FF_PATCHED* = 0x00000004

+  VS_FF_PRERELEASE* = 0x00000002

+  VS_FF_PRIVATEBUILD* = 0x00000008

+  VS_FF_SPECIALBUILD* = 0x00000020

+  VOS_UNKNOWN* = 0

+  VOS_DOS* = 0x00010000

+  VOS_OS216* = 0x00020000

+  VOS_OS232* = 0x00030000

+  VOS_NT* = 0x00040000

+  VOS_DOS_WINDOWS16* = 0x00010001

+  VOS_DOS_WINDOWS32* = 0x00010004

+  VOS_OS216_PM16* = 0x00020002

+  VOS_OS232_PM32* = 0x00030003

+  VOS_NT_WINDOWS32* = 0x00040004

+  VFT_UNKNOWN* = 0

+  VFT_APP* = 0x00000001

+  VFT_DLL* = 0x00000002

+  VFT_DRV* = 0x00000003

+  VFT_FONT* = 0x00000004

+  VFT_VXD* = 0x00000005

+  VFT_STATIC_LIB* = 0x00000007

+  VFT2_UNKNOWN* = 0

+  VFT2_DRV_PRINTER* = 0x00000001

+  VFT2_DRV_KEYBOARD* = 0x00000002

+  VFT2_DRV_LANGUAGE* = 0x00000003

+  VFT2_DRV_DISPLAY* = 0x00000004

+  VFT2_DRV_MOUSE* = 0x00000005

+  VFT2_DRV_NETWORK* = 0x00000006

+  VFT2_DRV_SYSTEM* = 0x00000007

+  VFT2_DRV_INSTALLABLE* = 0x00000008

+  VFT2_DRV_SOUND* = 0x00000009

+  VFT2_FONT_RASTER* = 0x00000001

+  VFT2_FONT_VECTOR* = 0x00000002

+  VFT2_FONT_TRUETYPE* = 0x00000003

+  # PANOSE structure

+  PAN_ANY* = 0

+  PAN_NO_FIT* = 1

+  PAN_FAMILY_TEXT_DISPLAY* = 2

+  PAN_FAMILY_SCRIPT* = 3

+  PAN_FAMILY_DECORATIVE* = 4

+  PAN_FAMILY_PICTORIAL* = 5

+  PAN_SERIF_COVE* = 2

+  PAN_SERIF_OBTUSE_COVE* = 3

+  PAN_SERIF_SQUARE_COVE* = 4

+  PAN_SERIF_OBTUSE_SQUARE_COVE* = 5

+  PAN_SERIF_SQUARE* = 6

+  PAN_SERIF_THIN* = 7

+  PAN_SERIF_BONE* = 8

+  PAN_SERIF_EXAGGERATED* = 9

+  PAN_SERIF_TRIANGLE* = 10

+  PAN_SERIF_NORMAL_SANS* = 11

+  PAN_SERIF_OBTUSE_SANS* = 12

+  PAN_SERIF_PERP_SANS* = 13

+  PAN_SERIF_FLARED* = 14

+  PAN_SERIF_ROUNDED* = 15

+  PAN_WEIGHT_VERY_LIGHT* = 2

+  PAN_WEIGHT_LIGHT* = 3

+  PAN_WEIGHT_THIN* = 4

+  PAN_WEIGHT_BOOK* = 5

+  PAN_WEIGHT_MEDIUM* = 6

+  PAN_WEIGHT_DEMI* = 7

+  PAN_WEIGHT_BOLD* = 8

+  PAN_WEIGHT_HEAVY* = 9

+  PAN_WEIGHT_BLACK* = 10

+  PAN_WEIGHT_NORD* = 11

+  PAN_PROP_OLD_STYLE* = 2

+  PAN_PROP_MODERN* = 3

+  PAN_PROP_EVEN_WIDTH* = 4

+  PAN_PROP_EXPANDED* = 5

+  PAN_PROP_CONDENSED* = 6

+  PAN_PROP_VERY_EXPANDED* = 7

+  PAN_PROP_VERY_CONDENSED* = 8

+  PAN_PROP_MONOSPACED* = 9

+  PAN_CONTRAST_NONE* = 2

+  PAN_CONTRAST_VERY_LOW* = 3

+  PAN_CONTRAST_LOW* = 4

+  PAN_CONTRAST_MEDIUM_LOW* = 5

+  PAN_CONTRAST_MEDIUM* = 6

+  PAN_CONTRAST_MEDIUM_HIGH* = 7

+  PAN_CONTRAST_HIGH* = 8

+  PAN_CONTRAST_VERY_HIGH* = 9

+  PAN_STROKE_GRADUAL_DIAG* = 2

+  PAN_STROKE_GRADUAL_TRAN* = 3

+  PAN_STROKE_GRADUAL_VERT* = 4

+  PAN_STROKE_GRADUAL_HORZ* = 5

+  PAN_STROKE_RAPID_VERT* = 6

+  PAN_STROKE_RAPID_HORZ* = 7

+  PAN_STROKE_INSTANT_VERT* = 8

+  PAN_STRAIGHT_ARMS_HORZ* = 2

+  PAN_STRAIGHT_ARMS_WEDGE* = 3

+  PAN_STRAIGHT_ARMS_VERT* = 4

+  PAN_STRAIGHT_ARMS_SINGLE_SERIF* = 5

+  PAN_STRAIGHT_ARMS_DOUBLE_SERIF* = 6

+  PAN_BENT_ARMS_HORZ* = 7

+  PAN_BENT_ARMS_VERT* = 9

+  PAN_BENT_ARMS_WEDGE* = 8

+  PAN_BENT_ARMS_SINGLE_SERIF* = 10

+  PAN_BENT_ARMS_DOUBLE_SERIF* = 11

+  PAN_LETT_NORMAL_CONTACT* = 2

+  PAN_LETT_NORMAL_WEIGHTED* = 3

+  PAN_LETT_NORMAL_BOXED* = 4

+  PAN_LETT_NORMAL_FLATTENED* = 5

+  PAN_LETT_NORMAL_ROUNDED* = 6

+  PAN_LETT_NORMAL_OFF_CENTER* = 7

+  PAN_LETT_NORMAL_SQUARE* = 8

+  PAN_LETT_OBLIQUE_CONTACT* = 9

+  PAN_LETT_OBLIQUE_WEIGHTED* = 10

+  PAN_LETT_OBLIQUE_BOXED* = 11

+  PAN_LETT_OBLIQUE_FLATTENED* = 12

+  PAN_LETT_OBLIQUE_ROUNDED* = 13

+  PAN_LETT_OBLIQUE_OFF_CENTER* = 14

+  PAN_LETT_OBLIQUE_SQUARE* = 15

+  PAN_MIDLINE_STANDARD_TRIMMED* = 2

+  PAN_MIDLINE_STANDARD_POINTED* = 3

+  PAN_MIDLINE_STANDARD_SERIFED* = 4

+  PAN_MIDLINE_HIGH_TRIMMED* = 5

+  PAN_MIDLINE_HIGH_POINTED* = 6

+  PAN_MIDLINE_HIGH_SERIFED* = 7

+  PAN_MIDLINE_CONSTANT_TRIMMED* = 8

+  PAN_MIDLINE_CONSTANT_POINTED* = 9

+  PAN_MIDLINE_CONSTANT_SERIFED* = 10

+  PAN_MIDLINE_LOW_TRIMMED* = 11

+  PAN_MIDLINE_LOW_POINTED* = 12

+  PAN_MIDLINE_LOW_SERIFED* = 13

+  PAN_XHEIGHT_CONSTANT_SMALL* = 2

+  PAN_XHEIGHT_CONSTANT_STD* = 3

+  PAN_XHEIGHT_CONSTANT_LARGE* = 4

+  PAN_XHEIGHT_DUCKING_SMALL* = 5

+  PAN_XHEIGHT_DUCKING_STD* = 6

+  PAN_XHEIGHT_DUCKING_LARGE* = 7

+  # PALETTENTRY structure

+  PC_EXPLICIT* = 2

+  PC_NOCOLLAPSE* = 4

+  PC_RESERVED* = 1

+  # LOGBRUSH structure

+  BS_DIBPATTERN* = 5

+  BS_DIBPATTERN8X8* = 8

+  BS_DIBPATTERNPT* = 6

+  BS_HATCHED* = 2

+  BS_HOLLOW* = 1

+  BS_NULL* = 1

+  BS_PATTERN* = 3

+  BS_PATTERN8X8* = 7

+  BS_SOLID* = 0

+  # DEVMODE structure, field selection bits

+  DM_ORIENTATION* = 0x00000001

+  DM_PAPERSIZE* = 0x00000002

+  DM_PAPERLENGTH* = 0x00000004

+  DM_PAPERWIDTH* = 0x00000008

+  DM_SCALE* = 0x00000010

+  DM_POSITION* = 0x00000020

+  DM_NUP* = 0x00000040

+  DM_DISPLAYORIENTATION* = 0x00000080

+  DM_COPIES* = 0x00000100

+  DM_DEFAULTSOURCE* = 0x00000200

+  DM_PRINTQUALITY* = 0x00000400

+  DM_COLOR* = 0x00000800

+  DM_DUPLEX* = 0x00001000

+  DM_YRESOLUTION* = 0x00002000

+  DM_TTOPTION* = 0x00004000

+  DM_COLLATE* = 0x00008000

+  DM_FORMNAME* = 0x00010000

+  DM_LOGPIXELS* = 0x00020000

+  DM_BITSPERPEL* = 0x00040000

+  DM_PELSWIDTH* = 0x00080000

+  DM_PELSHEIGHT* = 0x00100000

+  DM_DISPLAYFLAGS* = 0x00200000

+  DM_DISPLAYFREQUENCY* = 0x00400000

+  DM_ICMMETHOD* = 0x00800000

+  DM_ICMINTENT* = 0x01000000

+  DM_MEDIATYPE* = 0x02000000

+  DM_DITHERTYPE* = 0x04000000

+  DM_PANNINGWIDTH* = 0x08000000

+  DM_PANNINGHEIGHT* = 0x10000000

+  DM_DISPLAYFIXEDOUTPUT* = 0x20000000

+  # orientation selections

+  DMORIENT_LANDSCAPE* = 2

+  DMORIENT_PORTRAIT* = 1

+  # paper selections

+  DMPAPER_LETTER* = 1

+  DMPAPER_LEGAL* = 5

+  DMPAPER_A4* = 9

+  DMPAPER_CSHEET* = 24

+  DMPAPER_DSHEET* = 25

+  DMPAPER_ESHEET* = 26

+  DMPAPER_LETTERSMALL* = 2

+  DMPAPER_TABLOID* = 3

+  DMPAPER_LEDGER* = 4

+  DMPAPER_STATEMENT* = 6

+  DMPAPER_EXECUTIVE* = 7

+  DMPAPER_A3* = 8

+  DMPAPER_A4SMALL* = 10

+  DMPAPER_A5* = 11

+  DMPAPER_B4* = 12

+  DMPAPER_B5* = 13

+  DMPAPER_FOLIO* = 14

+  DMPAPER_QUARTO* = 15

+  DMPAPER_10X14* = 16

+  DMPAPER_11X17* = 17

+  DMPAPER_NOTE* = 18

+  DMPAPER_ENV_9* = 19

+  DMPAPER_ENV_10* = 20

+  DMPAPER_ENV_11* = 21

+  DMPAPER_ENV_12* = 22

+  DMPAPER_ENV_14* = 23

+  DMPAPER_ENV_DL* = 27

+  DMPAPER_ENV_C5* = 28

+  DMPAPER_ENV_C3* = 29

+  DMPAPER_ENV_C4* = 30

+  DMPAPER_ENV_C6* = 31

+  DMPAPER_ENV_C65* = 32

+  DMPAPER_ENV_B4* = 33

+  DMPAPER_ENV_B5* = 34

+  DMPAPER_ENV_B6* = 35

+  DMPAPER_ENV_ITALY* = 36

+  DMPAPER_ENV_MONARCH* = 37

+  DMPAPER_ENV_PERSONAL* = 38

+  DMPAPER_FANFOLD_US* = 39

+  DMPAPER_FANFOLD_STD_GERMAN* = 40

+  DMPAPER_FANFOLD_LGL_GERMAN* = 41

+  DMPAPER_ISO_B4* = 42

+  DMPAPER_JAPANESE_POSTCARD* = 43

+  DMPAPER_9X11* = 44

+  DMPAPER_10X11* = 45

+  DMPAPER_15X11* = 46

+  DMPAPER_ENV_INVITE* = 47

+  DMPAPER_RESERVED_48* = 48

+  DMPAPER_RESERVED_49* = 49

+  DMPAPER_LETTER_EXTRA* = 50

+  DMPAPER_LEGAL_EXTRA* = 51

+  DMPAPER_TABLOID_EXTRA* = 52

+  DMPAPER_A4_EXTRA* = 53

+  DMPAPER_LETTER_TRANSVERSE* = 54

+  DMPAPER_A4_TRANSVERSE* = 55

+  DMPAPER_LETTER_EXTRA_TRANSVERSE* = 56

+  DMPAPER_A_PLUS* = 57

+  DMPAPER_B_PLUS* = 58

+  DMPAPER_LETTER_PLUS* = 59

+  DMPAPER_A4_PLUS* = 60

+  DMPAPER_A5_TRANSVERSE* = 61

+  DMPAPER_B5_TRANSVERSE* = 62

+  DMPAPER_A3_EXTRA* = 63

+  DMPAPER_A5_EXTRA* = 64

+  DMPAPER_B5_EXTRA* = 65

+  DMPAPER_A2* = 66

+  DMPAPER_A3_TRANSVERSE* = 67

+  DMPAPER_A3_EXTRA_TRANSVERSE* = 68

+  DMPAPER_DBL_JAPANESE_POSTCARD* = 69

+  DMPAPER_A6* = 70

+  DMPAPER_JENV_KAKU2* = 71

+  DMPAPER_JENV_KAKU3* = 72

+  DMPAPER_JENV_CHOU3* = 73

+  DMPAPER_JENV_CHOU4* = 74

+  DMPAPER_LETTER_ROTATED* = 75

+  DMPAPER_A3_ROTATED* = 76

+  DMPAPER_A4_ROTATED* = 77

+  DMPAPER_A5_ROTATED* = 78

+  DMPAPER_B4_JIS_ROTATED* = 79

+  DMPAPER_B5_JIS_ROTATED* = 80

+  DMPAPER_JAPANESE_POSTCARD_ROTATED* = 81

+  DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED* = 82

+  DMPAPER_A6_ROTATED* = 83

+  DMPAPER_JENV_KAKU2_ROTATED* = 84

+  DMPAPER_JENV_KAKU3_ROTATED* = 85

+  DMPAPER_JENV_CHOU3_ROTATED* = 86

+  DMPAPER_JENV_CHOU4_ROTATED* = 87

+  DMPAPER_B6_JIS* = 88

+  DMPAPER_B6_JIS_ROTATED* = 89

+  DMPAPER_12X11* = 90

+  DMPAPER_JENV_YOU4* = 91

+  DMPAPER_JENV_YOU4_ROTATED* = 92

+  DMPAPER_P16K* = 93

+  DMPAPER_P32K* = 94

+  DMPAPER_P32KBIG* = 95

+  DMPAPER_PENV_1* = 96

+  DMPAPER_PENV_2* = 97

+  DMPAPER_PENV_3* = 98

+  DMPAPER_PENV_4* = 99

+  DMPAPER_PENV_5* = 100

+  DMPAPER_PENV_6* = 101

+  DMPAPER_PENV_7* = 102

+  DMPAPER_PENV_8* = 103

+  DMPAPER_PENV_9* = 104

+  DMPAPER_PENV_10* = 105

+  DMPAPER_P16K_ROTATED* = 106

+  DMPAPER_P32K_ROTATED* = 107

+  DMPAPER_P32KBIG_ROTATED* = 108

+  DMPAPER_PENV_1_ROTATED* = 109

+  DMPAPER_PENV_2_ROTATED* = 110

+  DMPAPER_PENV_3_ROTATED* = 111

+  DMPAPER_PENV_4_ROTATED* = 112

+  DMPAPER_PENV_5_ROTATED* = 113

+  DMPAPER_PENV_6_ROTATED* = 114

+  DMPAPER_PENV_7_ROTATED* = 115

+  DMPAPER_PENV_8_ROTATED* = 116

+  DMPAPER_PENV_9_ROTATED* = 117

+  DMPAPER_PENV_10_ROTATED* = 118

+  DMPAPER_USER* = 256

+  # bin selections

+  DMBIN_UPPER* = 1

+  DMBIN_ONLYONE* = 1

+  DMBIN_LOWER* = 2

+  DMBIN_MIDDLE* = 3

+  DMBIN_MANUAL* = 4

+  DMBIN_ENVELOPE* = 5

+  DMBIN_ENVMANUAL* = 6

+  DMBIN_AUTO* = 7

+  DMBIN_TRACTOR* = 8

+  DMBIN_SMALLFMT* = 9

+  DMBIN_LARGEFMT* = 10

+  DMBIN_LARGECAPACITY* = 11

+  DMBIN_CASSETTE* = 14

+  DMBIN_FORMSOURCE* = 15

+  DMBIN_USER* = 256

+  # print qualities

+  DMRES_DRAFT* = -1

+  DMRES_LOW* = -2

+  DMRES_MEDIUM* = -3

+  DMRES_HIGH* = -4

+  # color enable/disable for color printers

+  DMCOLOR_MONOCHROME* = 1

+  DMCOLOR_COLOR* = 2

+  # duplex enable

+  DMDUP_SIMPLEX* = 1

+  DMDUP_VERTICAL* = 2

+  DMDUP_HORIZONTAL* = 3

+  # TrueType options

+  DMTT_BITMAP* = 1

+  DMTT_DOWNLOAD* = 2

+  DMTT_SUBDEV* = 3

+  # Collation selections

+  DMCOLLATE_TRUE* = 1

+  DMCOLLATE_FALSE* = 0

+  # DEVMODE dmDisplayOrientation specifiations

+  DMDO_DEFAULT* = 0

+  DMDO_90* = 1

+  DMDO_180* = 2

+  DMDO_270* = 3

+  # DEVMODE dmDisplayFixedOutput specifiations

+  DMDFO_DEFAULT* = 0

+  DMDFO_STRETCH* = 1

+  DMDFO_CENTER* = 2

+  # Deprecated

+  #DM_GRAYSCALE* = 1

+  #DM_INTERLACED* = 2

+  DMDISPLAYFLAGS_TEXTMODE* = 0x00000004

+  # dmNup , multiple logical page per physical page options

+  DMNUP_SYSTEM* = 1

+  DMNUP_ONEUP* = 2

+  # ICM methods

+  DMICMMETHOD_NONE* = 1

+  DMICMMETHOD_SYSTEM* = 2

+  DMICMMETHOD_DRIVER* = 3

+  DMICMMETHOD_DEVICE* = 4

+  DMICMMETHOD_USER* = 256

+  # ICM Intents

+  DMICM_SATURATE* = 1

+  DMICM_CONTRAST* = 2

+  DMICM_COLORMETRIC* = 3

+  DMICM_USER* = 256

+  # Media types

+  DMMEDIA_STANDARD* = 1

+  DMMEDIA_TRANSPARENCY* = 2

+  DMMEDIA_GLOSSY* = 3

+  DMMEDIA_USER* = 256

+  # Dither types

+  DMDITHER_NONE* = 1

+  DMDITHER_COARSE* = 2

+  DMDITHER_FINE* = 3

+  DMDITHER_LINEART* = 4

+  DMDITHER_GRAYSCALE* = 10

+  DMDITHER_USER* = 256

+  # RGNDATAHEADER structure

+  RDH_RECTANGLES* = 1

+  # TTPOLYGONHEADER structure

+  TT_POLYGON_TYPE* = 24

+  # TTPOLYCURVE structure

+  TT_PRIM_LINE* = 1

+  TT_PRIM_QSPLINE* = 2

+  # GCP_RESULTS structure

+  GCPCLASS_ARABIC* = 2

+  GCPCLASS_HEBREW* = 2

+  GCPCLASS_LATIN* = 1

+  GCPCLASS_LATINNUMBER* = 5

+  GCPCLASS_LOCALNUMBER* = 4

+  GCPCLASS_LATINNUMERICSEPARATOR* = 7

+  GCPCLASS_LATINNUMERICTERMINATOR* = 6

+  GCPCLASS_NEUTRAL* = 3

+  GCPCLASS_NUMERICSEPARATOR* = 8

+  GCPCLASS_PREBOUNDLTR* = 128

+  GCPCLASS_PREBOUNDRTL* = 64

+  GCPCLASS_POSTBOUNDLTR* = 32

+  GCPCLASS_POSTBOUNDRTL* = 16

+  GCPGLYPH_LINKBEFORE* = 32768

+  GCPGLYPH_LINKAFTER* = 16384

+  # RASTERIZER_STATUS structure

+  TT_AVAILABLE* = 1

+  TT_ENABLED* = 2

+  # COLORADJUSTMENT structure

+  CA_NEGATIVE* = 1

+  CA_LOG_FILTER* = 2

+  ILLUMINANT_DEVICE_DEFAULT* = 0

+  ILLUMINANT_A* = 1

+  ILLUMINANT_B* = 2

+  ILLUMINANT_C* = 3

+  ILLUMINANT_D50* = 4

+  ILLUMINANT_D55* = 5

+  ILLUMINANT_D65* = 6

+  ILLUMINANT_D75* = 7

+  ILLUMINANT_F2* = 8

+  ILLUMINANT_TUNGSTEN* = 1

+  ILLUMINANT_DAYLIGHT* = 3

+  ILLUMINANT_FLUORESCENT* = 8

+  ILLUMINANT_NTSC* = 3

+  # DOCINFO structure

+  DI_APPBANDING* = 1

+  # EMRMETAHEADER structure

+  EMR_HEADER* = 1

+  ENHMETA_SIGNATURE* = 1179469088

+  # RTF event masks

+  ENM_CHANGE* = 1

+  ENM_CORRECTTEXT* = 4194304

+  ENM_DROPFILES* = 1048576

+  ENM_KEYEVENTS* = 65536

+  ENM_MOUSEEVENTS* = 131072

+  ENM_PROTECTED* = 2097152

+  ENM_REQUESTRESIZE* = 262144

+  ENM_SCROLL* = 4

+  ENM_SELCHANGE* = 524288

+  ENM_UPDATE* = 2

+  ENM_NONE* = 0

+  # RTF styles

+  ES_DISABLENOSCROLL* = 8192

+  ES_EX_NOCALLOLEINIT* = 16777216

+  ES_NOIME* = 524288

+  ES_SAVESEL* = 32768

+  ES_SELFIME* = 262144

+  ES_SUNKEN* = 16384

+  ES_VERTICAL* = 4194304

+  ES_SELECTIONBAR* = 16777216

+  # EM_SETOPTIONS message

+  ECOOP_SET* = 1

+  ECOOP_OR* = 2

+  ECOOP_AND* = 3

+  ECOOP_XOR* = 4

+  ECO_AUTOWORDSELECTION* = 1

+  ECO_AUTOVSCROLL* = 64

+  ECO_AUTOHSCROLL* = 128

+  ECO_NOHIDESEL* = 256

+  ECO_READONLY* = 2048

+  ECO_WANTRETURN* = 4096

+  ECO_SAVESEL* = 32768

+  ECO_SELECTIONBAR* = 16777216

+  ECO_VERTICAL* = 4194304

+  # EM_SETCHARFORMAT message

+  SCF_WORD* = 2

+  SCF_SELECTION* = 1

+  # EM_STREAMOUT message

+  SF_TEXT* = 1

+  SF_RTF* = 2

+  SF_RTFNOOBJS* = 3

+  SF_TEXTIZED* = 4

+  SFF_SELECTION* = 32768

+  SFF_PLAINRTF* = 16384

+  # EM_FINDWORDBREAK message

+  WB_CLASSIFY* = 3

+  #WB_ISDELIMITER = 2;

+                              #     WB_LEFT = 0; already above

+  WB_LEFTBREAK* = 6

+  WB_PREVBREAK* = 6

+  WB_MOVEWORDLEFT* = 4

+  WB_MOVEWORDPREV* = 4

+  WB_MOVEWORDRIGHT* = 5

+  WB_MOVEWORDNEXT* = 5

+  #WB_RIGHT = 1;already above

+  WB_RIGHTBREAK* = 7

+  WB_NEXTBREAK* = 7

+  # EM_GETPUNCTUATION message

+  PC_LEADING* = 2

+  PC_FOLLOWING* = 1

+  PC_DELIMITER* = 4

+  PC_OVERFLOW* = 3

+  # EM_SETWORDWRAPMODE message

+  WBF_WORDWRAP* = 16

+  WBF_WORDBREAK* = 32

+  WBF_OVERFLOW* = 64

+  WBF_LEVEL1* = 128

+  WBF_LEVEL2* = 256

+  WBF_CUSTOM* = 512

+  WBF_BREAKAFTER* = 64

+  WBF_BREAKLINE* = 32

+  WBF_ISWHITE* = 16

+  # CHARFORMAT structure

+  CFM_BOLD* = 1

+  CFM_COLOR* = 1073741824

+  CFM_FACE* = 536870912

+  CFM_ITALIC* = 2

+  CFM_OFFSET* = 268435456

+  CFM_PROTECTED* = 16

+  CFM_SIZE* = 0x80000000

+  CFM_STRIKEOUT* = 8

+  CFM_UNDERLINE* = 4

+  CFE_AUTOCOLOR* = 1073741824

+  CFE_BOLD* = 1

+  CFE_ITALIC* = 2

+  CFE_STRIKEOUT* = 8

+  CFE_UNDERLINE* = 4

+  CFE_PROTECTED* = 16

+  # PARAFORMAT structure

+  PFM_ALIGNMENT* = 8

+  PFM_NUMBERING* = 32

+  PFM_OFFSET* = 4

+  PFM_OFFSETINDENT* = 0x80000000

+  PFM_RIGHTINDENT* = 2

+  PFM_STARTINDENT* = 1

+  PFM_TABSTOPS* = 16

+  PFN_BULLET* = 1

+  PFA_LEFT* = 1

+  PFA_RIGHT* = 2

+  PFA_CENTER* = 3

+  # SELCHANGE structure

+  SEL_EMPTY* = 0

+  SEL_TEXT* = 1

+  SEL_OBJECT* = 2

+  SEL_MULTICHAR* = 4

+  SEL_MULTIOBJECT* = 8

+  # RTF clipboard formats

+  CF_RTF* = "Rich Text Format"

+  CF_RETEXTOBJ* = "RichEdit Text and Objects"

+  # DRAWITEMSTRUCT structure

+  ODT_BUTTON* = 4

+  ODT_COMBOBOX* = 3

+  ODT_LISTBOX* = 2

+  ODT_LISTVIEW* = 102

+  ODT_MENU* = 1

+  ODT_STATIC* = 5

+  ODT_TAB* = 101

+  ODT_HEADER* = 100

+  ODA_DRAWENTIRE* = 1

+  ODA_FOCUS* = 4

+  ODA_SELECT* = 2

+  ODS_SELECTED* = 1

+  ODS_GRAYED* = 2

+  ODS_DISABLED* = 4

+  ODS_CHECKED* = 8

+  ODS_FOCUS* = 16

+  ODS_DEFAULT* = 32

+  ODS_HOTLIGHT* = 0x00000040

+  ODS_INACTIVE* = 0x00000080

+  ODS_NOACCEL* = 0x00000100

+  ODS_NOFOCUSRECT* = 0x00000200

+  ODS_COMBOBOXEDIT* = 0x00001000

+  # Common control styles

+  CCS_ADJUSTABLE* = 0x00000020

+  CCS_BOTTOM* = 0x00000003

+  CCS_NODIVIDER* = 0x00000040

+  CCS_NOMOVEY* = 0x00000002

+  CCS_NOPARENTALIGN* = 0x00000008

+  CCS_NORESIZE* = 0x00000004

+  CCS_TOP* = 0x00000001

+

+  # Common control window classes

+  ANIMATE_CLASSW* = "SysAnimate32"

+  HOTKEY_CLASSW* = "msctls_hotkey32"

+  PROGRESS_CLASSW* = "msctls_progress32"

+  STATUSCLASSNAMEW* = "msctls_statusbar32"

+  TOOLBARCLASSNAMEW* = "ToolbarWindow32"

+  TOOLTIPS_CLASSW* = "tooltips_class32"

+  TRACKBAR_CLASSW* = "msctls_trackbar32"

+  UPDOWN_CLASSW* = "msctls_updown32"

+  WC_HEADERW* = "SysHeader32"

+  WC_LISTVIEWW* = "SysListView32"

+  WC_TABCONTROLW* = "SysTabControl32"

+  WC_TREEVIEWW* = "SysTreeView32"

+

+  ANIMATE_CLASSA* = "SysAnimate32"

+  HOTKEY_CLASSA* = "msctls_hotkey32"

+  PROGRESS_CLASSA* = "msctls_progress32"

+  STATUSCLASSNAMEA* = "msctls_statusbar32"

+  TOOLBARCLASSNAMEA* = "ToolbarWindow32"

+  TOOLTIPS_CLASSA* = "tooltips_class32"

+  TRACKBAR_CLASSA* = "msctls_trackbar32"

+  UPDOWN_CLASSA* = "msctls_updown32"

+  WC_HEADERA* = "SysHeader32"

+  WC_LISTVIEWA* = "SysListView32"

+  WC_TABCONTROLA* = "SysTabControl32"

+  WC_TREEVIEWA* = "SysTreeView32"

+

+when defined(winUnicode):

+  const

+    ANIMATE_CLASS* = ANIMATE_CLASSW

+    HOTKEY_CLASS* = HOTKEY_CLASSW

+    PROGRESS_CLASS* = PROGRESS_CLASSW

+    STATUSCLASSNAME* = STATUSCLASSNAMEW

+    TOOLBARCLASSNAME* = TOOLBARCLASSNAMEW

+    TOOLTIPS_CLASS* = TOOLTIPS_CLASSW

+    TRACKBAR_CLASS* = TRACKBAR_CLASSW

+    UPDOWN_CLASS* = UPDOWN_CLASSW

+    WC_HEADER* = WC_HEADERW

+    WC_LISTVIEW* = WC_LISTVIEWW

+    WC_TABCONTROL* = WC_TABCONTROLW

+    WC_TREEVIEW* = WC_TREEVIEWW

+else:

+  const

+    ANIMATE_CLASS* = ANIMATE_CLASSA

+    HOTKEY_CLASS* = HOTKEY_CLASSA

+    PROGRESS_CLASS* = PROGRESS_CLASSA

+    STATUSCLASSNAME* = STATUSCLASSNAMEA

+    TOOLBARCLASSNAME* = TOOLBARCLASSNAMEA

+    TOOLTIPS_CLASS* = TOOLTIPS_CLASSA

+    TRACKBAR_CLASS* = TRACKBAR_CLASSA

+    UPDOWN_CLASS* = UPDOWN_CLASSA

+    WC_HEADER* = WC_HEADERA

+    WC_LISTVIEW* = WC_LISTVIEWA

+    WC_TABCONTROL* = WC_TABCONTROLA

+    WC_TREEVIEW* = WC_TREEVIEWA

+# UNICODE

+

+const

+  # Header control styles

+  HDS_BUTTONS* = 2

+  HDS_HIDDEN* = 8

+  HDS_HORZ* = 0

+  # HD_ITEM structure

+  HDI_BITMAP* = 16

+  HDI_FORMAT* = 4

+  HDI_HEIGHT* = 1

+  HDI_LPARAM* = 8

+  HDI_TEXT* = 2

+  HDI_WIDTH* = 1

+  HDF_CENTER* = 2

+  HDF_LEFT* = 0

+  HDF_RIGHT* = 1

+  HDF_RTLREADING* = 4

+  HDF_BITMAP* = 8192

+  HDF_OWNERDRAW* = 32768

+  HDF_STRING* = 16384

+  HDF_JUSTIFYMASK* = 3

+  # HD_HITTESTINFO structure

+  HHT_NOWHERE* = 1

+  HHT_ONDIVIDER* = 4

+  HHT_ONDIVOPEN* = 8

+  HHT_ONHEADER* = 2

+  HHT_TOLEFT* = 2048

+  HHT_TORIGHT* = 1024

+  # TBADDBITMAP structure

+  HINST_COMMCTRL* = HINST(-1)

+

+const

+  IDB_STD_LARGE_COLOR* = 1

+  IDB_STD_SMALL_COLOR* = 0

+  IDB_VIEW_LARGE_COLOR* = 5

+  IDB_VIEW_SMALL_COLOR* = 4

+  STD_COPY* = 1

+  STD_CUT* = 0

+  STD_DELETE* = 5

+  STD_FILENEW* = 6

+  STD_FILEOPEN* = 7

+  STD_FILESAVE* = 8

+  STD_FIND* = 12

+  STD_HELP* = 11

+  STD_PASTE* = 2

+  STD_PRINT* = 14

+  STD_PRINTPRE* = 9

+  STD_PROPERTIES* = 10

+  STD_REDOW* = 4

+  STD_REPLACE* = 13

+  STD_UNDO* = 3

+  VIEW_LARGEICONS* = 0

+  VIEW_SMALLICONS* = 1

+  VIEW_LIST* = 2

+  VIEW_DETAILS* = 3

+  VIEW_SORTNAME* = 4

+  VIEW_SORTSIZE* = 5

+  VIEW_SORTDATE* = 6

+  VIEW_SORTTYPE* = 7

+  # Toolbar styles

+  TBSTYLE_ALTDRAG* = 1024

+  TBSTYLE_TOOLTIPS* = 256

+  TBSTYLE_WRAPABLE* = 512

+  TBSTYLE_BUTTON* = 0

+  TBSTYLE_CHECK* = 2

+  TBSTYLE_CHECKGROUP* = 6

+  TBSTYLE_GROUP* = 4

+  TBSTYLE_SEP* = 1

+  # Toolbar states

+  TBSTATE_CHECKED* = 1

+  TBSTATE_ENABLED* = 4

+  TBSTATE_HIDDEN* = 8

+  TBSTATE_INDETERMINATE* = 16

+  TBSTATE_PRESSED* = 2

+  TBSTATE_WRAP* = 32

+  # Tooltip styles

+  TTS_ALWAYSTIP* = 1

+  TTS_NOPREFIX* = 2

+  # TOOLINFO structure

+  TTF_IDISHWND* = 1

+  TTF_CENTERTIP* = 2

+  TTF_RTLREADING* = 4

+  TTF_SUBCLASS* = 16

+  # TTM_SETDELAYTIME message

+  TTDT_AUTOMATIC* = 0

+  TTDT_AUTOPOP* = 2

+  TTDT_INITIAL* = 3

+  TTDT_RESHOW* = 1

+  # Status window

+  SBARS_SIZEGRIP* = 256

+  #SBARS_SIZEGRIP = 256;already above

+                              # DL_DRAGGING message

+  DL_MOVECURSOR* = 3

+  DL_COPYCURSOR* = 2

+  DL_STOPCURSOR* = 1

+  # Up-down control styles

+  UDS_ALIGNLEFT* = 8

+  UDS_ALIGNRIGHT* = 4

+  UDS_ARROWKEYS* = 32

+  UDS_AUTOBUDDY* = 16

+  UDS_HORZ* = 64

+  UDS_NOTHOUSANDS* = 128

+  UDS_SETBUDDYINT* = 2

+  UDS_WRAP* = 1

+  # UDM_SETRANGE message

+  UD_MAXVAL* = 32767

+  UD_MINVAL* = -32767

+  # HKM_GETHOTKEY message

+  HOTKEYF_ALT* = 4

+  HOTKEYF_CONTROL* = 2

+  HOTKEYF_EXT* = 8

+  HOTKEYF_SHIFT* = 1

+  # HKM_SETRULES message

+  HKCOMB_A* = 8

+  HKCOMB_C* = 4

+  HKCOMB_CA* = 64

+  HKCOMB_NONE* = 1

+  HKCOMB_S* = 2

+  HKCOMB_SA* = 32

+  HKCOMB_SC* = 16

+  HKCOMB_SCA* = 128

+  # Trackbar styles

+  TBS_HORZ* = 0

+  TBS_VERT* = 2

+  TBS_AUTOTICKS* = 1

+  TBS_NOTICKS* = 16

+  TBS_TOP* = 4

+  TBS_BOTTOM* = 0

+  TBS_LEFT* = 4

+  TBS_RIGHT* = 0

+  TBS_BOTH* = 8

+  TBS_ENABLESELRANGE* = 32

+  TBS_FIXEDLENGTH* = 64

+  TBS_NOTHUMB* = 128

+  TB_BOTTOM* = 7

+  TB_ENDTRACK* = 8

+  TB_LINEDOWN* = 1

+  TB_LINEUP* = 0

+  TB_PAGEDOWN* = 3

+  TB_PAGEUP* = 2

+  TB_THUMBPOSITION* = 4

+  TB_THUMBTRACK* = 5

+  TB_TOP* = 6

+  # List view styles

+  LVS_ALIGNLEFT* = 2048

+  LVS_ALIGNTOP* = 0

+  LVS_AUTOARRANGE* = 256

+  LVS_EDITLABELS* = 512

+  LVS_ICON* = 0

+  LVS_LIST* = 3

+  LVS_NOCOLUMNHEADER* = 16384

+  LVS_NOLABELWRAP* = 128

+  LVS_NOSCROLL* = 8192

+  LVS_NOSORTHEADER* = 32768

+  LVS_OWNERDRAWFIXED* = 1024

+  LVS_REPORT* = 1

+  LVS_SHAREIMAGELISTS* = 64

+  LVS_SHOWSELALWAYS* = 8

+  LVS_SINGLESEL* = 4

+  LVS_SMALLICON* = 2

+  LVS_SORTASCENDING* = 16

+  LVS_SORTDESCENDING* = 32

+  LVS_TYPESTYLEMASK* = 64512

+  LVSIL_NORMAL* = 0

+  LVSIL_SMALL* = 1

+  LVSIL_STATE* = 2

+  LVIS_CUT* = 4

+  LVIS_DROPHILITED* = 8

+  LVIS_FOCUSED* = 1

+  LVIS_SELECTED* = 2

+  LVIS_OVERLAYMASK* = 3840

+  LVIS_STATEIMAGEMASK* = 61440

+

+  LPSTR_TEXTCALLBACKW* = cast[LPWSTR](-1)

+  LPSTR_TEXTCALLBACKA* = cast[LPSTR](-1)

+when defined(winUnicode):

+  const LPSTR_TEXTCALLBACK*  = cast[LPWSTR](-1)

+else:

+  const LPSTR_TEXTCALLBACK*  = cast[LPSTR](-1)

+

+const

+  LVIF_TEXT* = 1

+  LVIF_IMAGE* = 2

+  LVIF_PARAM* = 4

+  LVIF_STATE* = 8

+  LVIF_DI_SETITEM* = 4096

+  # LVM_GETNEXTITEM structure

+  LVNI_ABOVE* = 256

+  LVNI_ALL* = 0

+  LVNI_BELOW* = 512

+  LVNI_TOLEFT* = 1024

+  LVNI_TORIGHT* = 2048

+  LVNI_CUT* = 4

+  LVNI_DROPHILITED* = 8

+  LVNI_FOCUSED* = 1

+  LVNI_SELECTED* = 2

+  # LV_FINDINFO structure

+  LVFI_PARAM* = 1

+  LVFI_PARTIAL* = 8

+  LVFI_STRING* = 2

+  LVFI_WRAP* = 32

+  LVFI_NEARESTXY* = 64

+  # LV_HITTESTINFO structure

+  LVHT_ABOVE* = 8

+  LVHT_BELOW* = 16

+  LVHT_NOWHERE* = 1

+  LVHT_ONITEMICON* = 2

+  LVHT_ONITEMLABEL* = 4

+  LVHT_ONITEMSTATEICON* = 8

+  LVHT_TOLEFT* = 64

+  LVHT_TORIGHT* = 32

+  # LV_COLUMN structure

+  LVCF_FMT* = 1

+  LVCF_SUBITEM* = 8

+  LVCF_TEXT* = 4

+  LVCF_WIDTH* = 2

+  LVCFMT_CENTER* = 2

+  LVCFMT_LEFT* = 0

+  LVCFMT_RIGHT* = 1

+  # ListView_GetItemRect

+  LVIR_BOUNDS* = 0

+  LVIR_ICON* = 1

+  LVIR_LABEL* = 2

+  LVIR_SELECTBOUNDS* = 3

+  # LVM_ARRANGE message

+  LVA_ALIGNLEFT* = 1

+  LVA_ALIGNTOP* = 2

+  LVA_DEFAULT* = 0

+  LVA_SNAPTOGRID* = 5

+  # LVM_SETCOLUMNWIDTH message

+  LVSCW_AUTOSIZE* = -1

+  LVSCW_AUTOSIZE_USEHEADER* = -2

+  # Tree View styles

+  TVS_DISABLEDRAGDROP* = 16

+  TVS_EDITLABELS* = 8

+  TVS_HASBUTTONS* = 1

+  TVS_HASLINES* = 2

+  TVS_LINESATROOT* = 4

+  TVS_SHOWSELALWAYS* = 32

+  # Tree View states

+  TVIS_BOLD* = 16

+  TVIS_CUT* = 4

+  TVIS_DROPHILITED* = 8

+  TVIS_EXPANDED* = 32

+  TVIS_EXPANDEDONCE* = 64

+  TVIS_FOCUSED* = 1

+  TVIS_OVERLAYMASK* = 3840

+  TVIS_SELECTED* = 2

+  TVIS_STATEIMAGEMASK* = 61440

+  TVIS_USERMASK* = 61440

+  # TV_ITEM structure

+  TVIF_CHILDREN* = 64

+  TVIF_HANDLE* = 16

+  TVIF_IMAGE* = 2

+  TVIF_PARAM* = 4

+  TVIF_SELECTEDIMAGE* = 32

+  TVIF_STATE* = 8

+  TVIF_TEXT* = 1

+  I_CHILDRENCALLBACK* = -1

+  I_IMAGECALLBACK* = -1

+  # TV_INSERTSTRUCT structure

+

+type

+  TTREEITEM* {.final, pure.} = object

+  HTREEITEM* = ptr TTREEITEM

+  PTREEITEM* = ptr TTREEITEM

+

+const

+  TVI_ROOT* =  cast[HTREEITEM](0xFFFF0000)

+  TVI_FIRST* = cast[HTREEITEM](0xFFFF0001)

+  TVI_LAST* =  cast[HTREEITEM](0xFFFF0002)

+  TVI_SORT* =  cast[HTREEITEM](0xFFFF0003)

+

+const

+  # TV_HITTESTINFO structure

+  TVHT_ABOVE* = 256

+  TVHT_BELOW* = 512

+  TVHT_NOWHERE* = 1

+  TVHT_ONITEM* = 70

+  TVHT_ONITEMBUTTON* = 16

+  TVHT_ONITEMICON* = 2

+  TVHT_ONITEMINDENT* = 8

+  TVHT_ONITEMLABEL* = 4

+  TVHT_ONITEMRIGHT* = 32

+  TVHT_ONITEMSTATEICON* = 64

+  TVHT_TOLEFT* = 2048

+  TVHT_TORIGHT* = 1024

+  # TVM_EXPAND message

+  TVE_COLLAPSE* = 1

+  TVE_COLLAPSERESET* = 32768

+  TVE_EXPAND* = 2

+  TVE_TOGGLE* = 3

+  # TVM_GETIMAGELIST message

+  TVSIL_NORMAL* = 0

+  TVSIL_STATE* = 2

+  # TVM_GETNEXTITEM message

+  TVGN_CARET* = 9

+  TVGN_CHILD* = 4

+  TVGN_DROPHILITE* = 8

+  TVGN_FIRSTVISIBLE* = 5

+  TVGN_NEXT* = 1

+  TVGN_NEXTVISIBLE* = 6

+  TVGN_PARENT* = 3

+  TVGN_PREVIOUS* = 2

+  TVGN_PREVIOUSVISIBLE* = 7

+  TVGN_ROOT* = 0

+  # TVN_SELCHANGED message

+  TVC_BYKEYBOARD* = 2

+  TVC_BYMOUSE* = 1

+  TVC_UNKNOWN* = 0

+  # Tab control styles

+  TCS_BUTTONS* = 256

+  TCS_FIXEDWIDTH* = 1024

+  TCS_FOCUSNEVER* = 32768

+  TCS_FOCUSONBUTTONDOWN* = 4096

+  TCS_FORCEICONLEFT* = 16

+  TCS_FORCELABELLEFT* = 32

+  TCS_MULTILINE* = 512

+  TCS_OWNERDRAWFIXED* = 8192

+  TCS_RAGGEDRIGHT* = 2048

+  TCS_RIGHTJUSTIFY* = 0

+  TCS_SINGLELINE* = 0

+  TCS_TABS* = 0

+  TCS_TOOLTIPS* = 16384

+  # TC_ITEM structure

+  TCIF_TEXT* = 1

+  TCIF_IMAGE* = 2

+  TCIF_PARAM* = 8

+  TCIF_RTLREADING* = 4

+  # TC_HITTESTINFO structure

+  TCHT_NOWHERE* = 1

+  TCHT_ONITEM* = 6

+  TCHT_ONITEMICON* = 2

+  TCHT_ONITEMLABEL* = 4

+  # Animation control styles

+  ACS_AUTOPLAY* = 4

+  ACS_CENTER* = 1

+  ACS_TRANSPARENT* = 2

+  # MODEMDEVCAPS structure

+  DIALOPTION_BILLING* = 64

+  DIALOPTION_QUIET* = 128

+  DIALOPTION_DIALTONE* = 256

+  MDMVOLFLAG_LOW* = 1

+  MDMVOLFLAG_MEDIUM* = 2

+  MDMVOLFLAG_HIGH* = 4

+  MDMVOL_LOW* = 0

+  MDMVOL_MEDIUM* = 1

+  MDMVOL_HIGH* = 2

+  MDMSPKRFLAG_OFF* = 1

+  MDMSPKRFLAG_DIAL* = 2

+  MDMSPKRFLAG_ON* = 4

+  MDMSPKRFLAG_CALLSETUP* = 8

+  MDMSPKR_OFF* = 0

+  MDMSPKR_DIAL* = 1

+  MDMSPKR_ON* = 2

+  MDMSPKR_CALLSETUP* = 3

+  MDM_BLIND_DIAL* = 512

+  MDM_CCITT_OVERRIDE* = 64

+  MDM_CELLULAR* = 8

+  MDM_COMPRESSION* = 1

+  MDM_ERROR_CONTROL* = 2

+  MDM_FLOWCONTROL_HARD* = 16

+  MDM_FLOWCONTROL_SOFT* = 32

+  MDM_FORCED_EC* = 4

+  MDM_SPEED_ADJUST* = 128

+  MDM_TONE_DIAL* = 256

+  MDM_V23_OVERRIDE* = 1024

+

+  # Languages

+                           #

+                           #  Language IDs.

+                           #

+                           #  The following two combinations of primary language ID and

+                           #  sublanguage ID have special semantics:

+                           #

+                           #    Primary Language ID   Sublanguage ID      Result

+                           #    -------------------   ---------------     ------------------------

+                           #    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral

+                           #    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language

+                           #    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language

+                           #    LANG_INVARIANT        SUBLANG_NEUTRAL     Invariant locale

+                           #

+                           #

+                           #  Primary language IDs.

+                           #

+  LANG_NEUTRAL* = 0x00000000

+  LANG_INVARIANT* = 0x0000007F

+  LANG_AFRIKAANS* = 0x00000036

+  LANG_ALBANIAN* = 0x0000001C

+  LANG_ARABIC* = 0x00000001

+  LANG_ARMENIAN* = 0x0000002B

+  LANG_ASSAMESE* = 0x0000004D

+  LANG_AZERI* = 0x0000002C

+  LANG_BASQUE* = 0x0000002D

+  LANG_BELARUSIAN* = 0x00000023

+  LANG_BENGALI* = 0x00000045

+  LANG_BULGARIAN* = 0x00000002

+  LANG_CATALAN* = 0x00000003

+  LANG_CHINESE* = 0x00000004

+  LANG_CROATIAN* = 0x0000001A

+  LANG_CZECH* = 0x00000005

+  LANG_DANISH* = 0x00000006

+  LANG_DIVEHI* = 0x00000065

+  LANG_DUTCH* = 0x00000013

+  LANG_ENGLISH* = 0x00000009

+  LANG_ESTONIAN* = 0x00000025

+  LANG_FAEROESE* = 0x00000038

+  LANG_FARSI* = 0x00000029

+  LANG_FINNISH* = 0x0000000B

+  LANG_FRENCH* = 0x0000000C

+  LANG_GALICIAN* = 0x00000056

+  LANG_GEORGIAN* = 0x00000037

+  LANG_GERMAN* = 0x00000007

+  LANG_GREEK* = 0x00000008

+  LANG_GUJARATI* = 0x00000047

+  LANG_HEBREW* = 0x0000000D

+  LANG_HINDI* = 0x00000039

+  LANG_HUNGARIAN* = 0x0000000E

+  LANG_ICELANDIC* = 0x0000000F

+  LANG_INDONESIAN* = 0x00000021

+  LANG_ITALIAN* = 0x00000010

+  LANG_JAPANESE* = 0x00000011

+  LANG_KANNADA* = 0x0000004B

+  LANG_KASHMIRI* = 0x00000060

+  LANG_KAZAK* = 0x0000003F

+  LANG_KONKANI* = 0x00000057

+  LANG_KOREAN* = 0x00000012

+  LANG_KYRGYZ* = 0x00000040

+  LANG_LATVIAN* = 0x00000026

+  LANG_LITHUANIAN* = 0x00000027

+  LANG_MACEDONIAN* = 0x0000002F # the Former Yugoslav Republic of Macedonia

+  LANG_MALAY* = 0x0000003E

+  LANG_MALAYALAM* = 0x0000004C

+  LANG_MANIPURI* = 0x00000058

+  LANG_MARATHI* = 0x0000004E

+  LANG_MONGOLIAN* = 0x00000050

+  LANG_NEPALI* = 0x00000061

+  LANG_NORWEGIAN* = 0x00000014

+  LANG_ORIYA* = 0x00000048

+  LANG_POLISH* = 0x00000015

+  LANG_PORTUGUESE* = 0x00000016

+  LANG_PUNJABI* = 0x00000046

+  LANG_ROMANIAN* = 0x00000018

+  LANG_RUSSIAN* = 0x00000019

+  LANG_SANSKRIT* = 0x0000004F

+  LANG_SERBIAN* = 0x0000001A

+  LANG_SINDHI* = 0x00000059

+  LANG_SLOVAK* = 0x0000001B

+  LANG_SLOVENIAN* = 0x00000024

+  LANG_SPANISH* = 0x0000000A

+  LANG_SWAHILI* = 0x00000041

+  LANG_SWEDISH* = 0x0000001D

+  LANG_SYRIAC* = 0x0000005A

+  LANG_TAMIL* = 0x00000049

+  LANG_TATAR* = 0x00000044

+  LANG_TELUGU* = 0x0000004A

+  LANG_THAI* = 0x0000001E

+  LANG_TURKISH* = 0x0000001F

+  LANG_UKRAINIAN* = 0x00000022

+  LANG_URDU* = 0x00000020

+  LANG_UZBEK* = 0x00000043

+  LANG_VIETNAMESE* = 0x0000002A

+  #

+                                #  Sublanguage IDs.

+                                #

+                                #  The name immediately following SUBLANG_ dictates which primary

+                                #  language ID that sublanguage ID can be combined with to form a

+                                #  valid language ID.

+                                #

+  SUBLANG_NEUTRAL* = 0x00000000 # language neutral

+  SUBLANG_DEFAULT* = 0x00000001 # user default

+  SUBLANG_SYS_DEFAULT* = 0x00000002 # system default

+  SUBLANG_ARABIC_SAUDI_ARABIA* = 0x00000001 # Arabic (Saudi Arabia)

+  SUBLANG_ARABIC_IRAQ* = 0x00000002 # Arabic (Iraq)

+  SUBLANG_ARABIC_EGYPT* = 0x00000003 # Arabic (Egypt)

+  SUBLANG_ARABIC_LIBYA* = 0x00000004 # Arabic (Libya)

+  SUBLANG_ARABIC_ALGERIA* = 0x00000005 # Arabic (Algeria)

+  SUBLANG_ARABIC_MOROCCO* = 0x00000006 # Arabic (Morocco)

+  SUBLANG_ARABIC_TUNISIA* = 0x00000007 # Arabic (Tunisia)

+  SUBLANG_ARABIC_OMAN* = 0x00000008 # Arabic (Oman)

+  SUBLANG_ARABIC_YEMEN* = 0x00000009 # Arabic (Yemen)

+  SUBLANG_ARABIC_SYRIA* = 0x0000000A # Arabic (Syria)

+  SUBLANG_ARABIC_JORDAN* = 0x0000000B # Arabic (Jordan)

+  SUBLANG_ARABIC_LEBANON* = 0x0000000C # Arabic (Lebanon)

+  SUBLANG_ARABIC_KUWAIT* = 0x0000000D # Arabic (Kuwait)

+  SUBLANG_ARABIC_UAE* = 0x0000000E # Arabic (U.A.E)

+  SUBLANG_ARABIC_BAHRAIN* = 0x0000000F # Arabic (Bahrain)

+  SUBLANG_ARABIC_QATAR* = 0x00000010 # Arabic (Qatar)

+  SUBLANG_AZERI_LATIN* = 0x00000001 # Azeri (Latin)

+  SUBLANG_AZERI_CYRILLIC* = 0x00000002 # Azeri (Cyrillic)

+  SUBLANG_CHINESE_TRADITIONAL* = 0x00000001 # Chinese (Taiwan)

+  SUBLANG_CHINESE_SIMPLIFIED* = 0x00000002 # Chinese (PR China)

+  SUBLANG_CHINESE_HONGKONG* = 0x00000003 # Chinese (Hong Kong S.A.R., P.R.C.)

+  SUBLANG_CHINESE_SINGAPORE* = 0x00000004 # Chinese (Singapore)

+  SUBLANG_CHINESE_MACAU* = 0x00000005 # Chinese (Macau S.A.R.)

+  SUBLANG_DUTCH* = 0x00000001 # Dutch

+  SUBLANG_DUTCH_BELGIAN* = 0x00000002 # Dutch (Belgian)

+  SUBLANG_ENGLISH_US* = 0x00000001 # English (USA)

+  SUBLANG_ENGLISH_UK* = 0x00000002 # English (UK)

+  SUBLANG_ENGLISH_AUS* = 0x00000003 # English (Australian)

+  SUBLANG_ENGLISH_CAN* = 0x00000004 # English (Canadian)

+  SUBLANG_ENGLISH_NZ* = 0x00000005 # English (New Zealand)

+  SUBLANG_ENGLISH_EIRE* = 0x00000006 # English (Irish)

+  SUBLANG_ENGLISH_SOUTH_AFRICA* = 0x00000007 # English (South Africa)

+  SUBLANG_ENGLISH_JAMAICA* = 0x00000008 # English (Jamaica)

+  SUBLANG_ENGLISH_CARIBBEAN* = 0x00000009 # English (Caribbean)

+  SUBLANG_ENGLISH_BELIZE* = 0x0000000A # English (Belize)

+  SUBLANG_ENGLISH_TRINIDAD* = 0x0000000B # English (Trinidad)

+  SUBLANG_ENGLISH_ZIMBABWE* = 0x0000000C # English (Zimbabwe)

+  SUBLANG_ENGLISH_PHILIPPINES* = 0x0000000D # English (Philippines)

+  SUBLANG_FRENCH* = 0x00000001 # French

+  SUBLANG_FRENCH_BELGIAN* = 0x00000002 # French (Belgian)

+  SUBLANG_FRENCH_CANADIAN* = 0x00000003 # French (Canadian)

+  SUBLANG_FRENCH_SWISS* = 0x00000004 # French (Swiss)

+  SUBLANG_FRENCH_LUXEMBOURG* = 0x00000005 # French (Luxembourg)

+  SUBLANG_FRENCH_MONACO* = 0x00000006 # French (Monaco)

+  SUBLANG_GERMAN* = 0x00000001 # German

+  SUBLANG_GERMAN_SWISS* = 0x00000002 # German (Swiss)

+  SUBLANG_GERMAN_AUSTRIAN* = 0x00000003 # German (Austrian)

+  SUBLANG_GERMAN_LUXEMBOURG* = 0x00000004 # German (Luxembourg)

+  SUBLANG_GERMAN_LIECHTENSTEIN* = 0x00000005 # German (Liechtenstein)

+  SUBLANG_ITALIAN* = 0x00000001 # Italian

+  SUBLANG_ITALIAN_SWISS* = 0x00000002 # Italian (Swiss)

+  SUBLANG_KASHMIRI_SASIA* = 0x00000002 # Kashmiri (South Asia)

+  SUBLANG_KASHMIRI_INDIA* = 0x00000002 # For app compatibility only

+  SUBLANG_KOREAN* = 0x00000001 # Korean (Extended Wansung)

+  SUBLANG_LITHUANIAN* = 0x00000001 # Lithuanian

+  SUBLANG_MALAY_MALAYSIA* = 0x00000001 # Malay (Malaysia)

+  SUBLANG_MALAY_BRUNEI_DARUSSALAM* = 0x00000002 # Malay (Brunei Darussalam)

+  SUBLANG_NEPALI_INDIA* = 0x00000002 # Nepali (India)

+  SUBLANG_NORWEGIAN_BOKMAL* = 0x00000001 # Norwegian (Bokmal)

+  SUBLANG_NORWEGIAN_NYNORSK* = 0x00000002 # Norwegian (Nynorsk)

+  SUBLANG_PORTUGUESE* = 0x00000002 # Portuguese

+  SUBLANG_PORTUGUESE_BRAZILIAN* = 0x00000001 # Portuguese (Brazilian)

+  SUBLANG_SERBIAN_LATIN* = 0x00000002 # Serbian (Latin)

+  SUBLANG_SERBIAN_CYRILLIC* = 0x00000003 # Serbian (Cyrillic)

+  SUBLANG_SPANISH* = 0x00000001 # Spanish (Castilian)

+  SUBLANG_SPANISH_MEXICAN* = 0x00000002 # Spanish (Mexican)

+  SUBLANG_SPANISH_MODERN* = 0x00000003 # Spanish (Spain)

+  SUBLANG_SPANISH_GUATEMALA* = 0x00000004 # Spanish (Guatemala)

+  SUBLANG_SPANISH_COSTA_RICA* = 0x00000005 # Spanish (Costa Rica)

+  SUBLANG_SPANISH_PANAMA* = 0x00000006 # Spanish (Panama)

+  SUBLANG_SPANISH_DOMINICAN_REPUBLIC* = 0x00000007 # Spanish (Dominican Republic)

+  SUBLANG_SPANISH_VENEZUELA* = 0x00000008 # Spanish (Venezuela)

+  SUBLANG_SPANISH_COLOMBIA* = 0x00000009 # Spanish (Colombia)

+  SUBLANG_SPANISH_PERU* = 0x0000000A # Spanish (Peru)

+  SUBLANG_SPANISH_ARGENTINA* = 0x0000000B # Spanish (Argentina)

+  SUBLANG_SPANISH_ECUADOR* = 0x0000000C # Spanish (Ecuador)

+  SUBLANG_SPANISH_CHILE* = 0x0000000D # Spanish (Chile)

+  SUBLANG_SPANISH_URUGUAY* = 0x0000000E # Spanish (Uruguay)

+  SUBLANG_SPANISH_PARAGUAY* = 0x0000000F # Spanish (Paraguay)

+  SUBLANG_SPANISH_BOLIVIA* = 0x00000010 # Spanish (Bolivia)

+  SUBLANG_SPANISH_EL_SALVADOR* = 0x00000011 # Spanish (El Salvador)

+  SUBLANG_SPANISH_HONDURAS* = 0x00000012 # Spanish (Honduras)

+  SUBLANG_SPANISH_NICARAGUA* = 0x00000013 # Spanish (Nicaragua)

+  SUBLANG_SPANISH_PUERTO_RICO* = 0x00000014 # Spanish (Puerto Rico)

+  SUBLANG_SWEDISH* = 0x00000001 # Swedish

+  SUBLANG_SWEDISH_FINLAND* = 0x00000002 # Swedish (Finland)

+  SUBLANG_URDU_PAKISTAN* = 0x00000001 # Urdu (Pakistan)

+  SUBLANG_URDU_INDIA* = 0x00000002 # Urdu (India)

+  SUBLANG_UZBEK_LATIN* = 0x00000001 # Uzbek (Latin)

+  SUBLANG_UZBEK_CYRILLIC* = 0x00000002 # Uzbek (Cyrillic)

+                                       #

+                                       #  Sorting IDs.

+                                       #

+  SORT_DEFAULT* = 0x00000000  # sorting default

+  SORT_JAPANESE_XJIS* = 0x00000000 # Japanese XJIS order

+  SORT_JAPANESE_UNICODE* = 0x00000001 # Japanese Unicode order

+  SORT_CHINESE_BIG5* = 0x00000000 # Chinese BIG5 order

+  SORT_CHINESE_PRCP* = 0x00000000 # PRC Chinese Phonetic order

+  SORT_CHINESE_UNICODE* = 0x00000001 # Chinese Unicode order

+  SORT_CHINESE_PRC* = 0x00000002 # PRC Chinese Stroke Count order

+  SORT_CHINESE_BOPOMOFO* = 0x00000003 # Traditional Chinese Bopomofo order

+  SORT_KOREAN_KSC* = 0x00000000 # Korean KSC order

+  SORT_KOREAN_UNICODE* = 0x00000001 # Korean Unicode order

+  SORT_GERMAN_PHONE_BOOK* = 0x00000001 # German Phone Book order

+  SORT_HUNGARIAN_DEFAULT* = 0x00000000 # Hungarian Default order

+  SORT_HUNGARIAN_TECHNICAL* = 0x00000001 # Hungarian Technical order

+  SORT_GEORGIAN_TRADITIONAL* = 0x00000000 # Georgian Traditional order

+  SORT_GEORGIAN_MODERN* = 0x00000001 # Georgian Modern order

+

+                                     # SYSTEM_INFO structure

+  PROCESSOR_INTEL_386* = 386

+  PROCESSOR_INTEL_486* = 486

+  PROCESSOR_INTEL_PENTIUM* = 586

+  PROCESSOR_MIPS_R4000* = 4000

+  PROCESSOR_ALPHA_21064* = 21064

+  # FSCTL_SET_COMPRESSION

+  COMPRESSION_FORMAT_NONE* = 0

+  COMPRESSION_FORMAT_DEFAULT* = 1

+  COMPRESSION_FORMAT_LZNT1* = 2

+  # TAPE_GET_DRIVE_PARAMETERS structure

+  TAPE_DRIVE_COMPRESSION* = 131072

+  TAPE_DRIVE_ECC* = 65536

+  TAPE_DRIVE_ERASE_BOP_ONLY* = 64

+  TAPE_DRIVE_ERASE_LONG* = 32

+  TAPE_DRIVE_ERASE_IMMEDIATE* = 128

+  TAPE_DRIVE_ERASE_SHORT* = 16

+  TAPE_DRIVE_FIXED* = 1

+  TAPE_DRIVE_FIXED_BLOCK* = 1024

+  TAPE_DRIVE_INITIATOR* = 4

+  TAPE_DRIVE_PADDING* = 262144

+  TAPE_DRIVE_GET_ABSOLUTE_BLK* = 1048576

+  TAPE_DRIVE_GET_LOGICAL_BLK* = 2097152

+  TAPE_DRIVE_REPORT_SMKS* = 524288

+  TAPE_DRIVE_SELECT* = 2

+  TAPE_DRIVE_SET_EOT_WZ_SIZE* = 4194304

+  TAPE_DRIVE_TAPE_CAPACITY* = 256

+  TAPE_DRIVE_TAPE_REMAINING* = 512

+  TAPE_DRIVE_VARIABLE_BLOCK* = 2048

+  TAPE_DRIVE_WRITE_PROTECT* = 4096

+  TAPE_DRIVE_ABS_BLK_IMMED* = -2147475456

+  TAPE_DRIVE_ABSOLUTE_BLK* = -2147479552

+  TAPE_DRIVE_END_OF_DATA* = -2147418112

+  TAPE_DRIVE_FILEMARKS* = -2147221504

+  TAPE_DRIVE_LOAD_UNLOAD* = -2147483647

+  TAPE_DRIVE_LOAD_UNLD_IMMED* = -2147483616

+  TAPE_DRIVE_LOCK_UNLOCK* = -2147483644

+  TAPE_DRIVE_LOCK_UNLK_IMMED* = -2147483520

+  TAPE_DRIVE_LOG_BLK_IMMED* = -2147450880

+  TAPE_DRIVE_LOGICAL_BLK* = -2147467264

+  TAPE_DRIVE_RELATIVE_BLKS* = -2147352576

+  TAPE_DRIVE_REVERSE_POSITION* = -2143289344

+  TAPE_DRIVE_REWIND_IMMEDIATE* = -2147483640

+  TAPE_DRIVE_SEQUENTIAL_FMKS* = -2146959360

+  TAPE_DRIVE_SEQUENTIAL_SMKS* = -2145386496

+  TAPE_DRIVE_SET_BLOCK_SIZE* = -2147483632

+  TAPE_DRIVE_SET_COMPRESSION* = -2147483136

+  TAPE_DRIVE_SET_ECC* = -2147483392

+  TAPE_DRIVE_SET_PADDING* = -2147482624

+  TAPE_DRIVE_SET_REPORT_SMKS* = -2147481600

+  TAPE_DRIVE_SETMARKS* = -2146435072

+  TAPE_DRIVE_SPACE_IMMEDIATE* = -2139095040

+  TAPE_DRIVE_TENSION* = -2147483646

+  TAPE_DRIVE_TENSION_IMMED* = -2147483584

+  TAPE_DRIVE_WRITE_FILEMARKS* = -2113929216

+  TAPE_DRIVE_WRITE_LONG_FMKS* = -2013265920

+  TAPE_DRIVE_WRITE_MARK_IMMED* = -1879048192

+  TAPE_DRIVE_WRITE_SETMARKS* = -2130706432

+  TAPE_DRIVE_WRITE_SHORT_FMKS* = -2080374784

+  # Standard rights

+  STANDARD_RIGHTS_REQUIRED* = 0x000F0000

+  STANDARD_RIGHTS_WRITE* = 0x00020000

+  STANDARD_RIGHTS_READ* = 0x00020000

+  STANDARD_RIGHTS_EXECUTE* = 0x00020000

+  STANDARD_RIGHTS_ALL* = 0x001F0000

+  SPECIFIC_RIGHTS_ALL* = 0x0000FFFF

+

+  FILE_GENERIC_READ* = STANDARD_RIGHTS_READ or

+      FILE_READ_DATA or

+      FILE_READ_ATTRIBUTES or

+      FILE_READ_EA or

+      SYNCHRONIZE

+  FILE_GENERIC_WRITE* = STANDARD_RIGHTS_WRITE or

+      FILE_WRITE_DATA or

+      FILE_WRITE_ATTRIBUTES or

+      FILE_WRITE_EA or

+      FILE_APPEND_DATA or

+      SYNCHRONIZE

+  FILE_GENERIC_EXECUTE* = STANDARD_RIGHTS_EXECUTE or

+      FILE_READ_ATTRIBUTES or

+      FILE_EXECUTE or

+      SYNCHRONIZE

+  FILE_ALL_ACCESS* = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x1FF

+

+  # ACCESS_MASK

+  MAXIMUM_ALLOWED* = 0x02000000

+  GENERIC_ALL* = 0x10000000

+  # SID

+  SECURITY_NULL_RID* = 0

+  SECURITY_WORLD_RID* = 0

+  SECURITY_LOCAL_RID* = 0

+  SECURITY_CREATOR_OWNER_RID* = 0

+  SECURITY_CREATOR_GROUP_RID* = 0x00000001

+  SECURITY_DIALUP_RID* = 0x00000001

+  SECURITY_NETWORK_RID* = 0x00000002

+  SECURITY_BATCH_RID* = 0x00000003

+  SECURITY_INTERACTIVE_RID* = 0x00000004

+  SECURITY_LOGON_IDS_RID* = 0x00000005

+  SECURITY_LOGON_IDS_RID_COUNT* = 0x00000003

+  SECURITY_SERVICE_RID* = 0x00000006

+  SECURITY_LOCAL_SYSTEM_RID* = 0x00000012

+  SECURITY_BUILTIN_DOMAIN_RID* = 0x00000020

+  DOMAIN_USER_RID_ADMIN* = 0x000001F4

+  DOMAIN_USER_RID_GUEST* = 0x000001F5

+  DOMAIN_GROUP_RID_ADMINS* = 0x00000200

+  DOMAIN_GROUP_RID_USERS* = 0x00000201

+  DOMAIN_ALIAS_RID_ADMINS* = 0x00000220

+  DOMAIN_ALIAS_RID_USERS* = 0x00000221

+  DOMAIN_ALIAS_RID_GUESTS* = 0x00000222

+  DOMAIN_ALIAS_RID_POWER_USERS* = 0x00000223

+  DOMAIN_ALIAS_RID_ACCOUNT_OPS* = 0x00000224

+  DOMAIN_ALIAS_RID_SYSTEM_OPS* = 0x00000225

+  DOMAIN_ALIAS_RID_PRINT_OPS* = 0x00000226

+  DOMAIN_ALIAS_RID_BACKUP_OPS* = 0x00000227

+  DOMAIN_ALIAS_RID_REPLICATOR* = 0x00000228

+  # TOKEN_GROUPS structure

+  SE_GROUP_MANDATORY* = 0x00000001

+  SE_GROUP_ENABLED_BY_DEFAULT* = 0x00000002

+  SE_GROUP_ENABLED* = 0x00000004

+  SE_GROUP_OWNER* = 0x00000008

+  SE_GROUP_LOGON_ID* = 0xC0000000

+  # ACL Defines

+  ACL_REVISION* = 2

+  # ACE_HEADER structure

+  ACCESS_ALLOWED_ACE_TYPE* = 0x00000000

+  ACCESS_DENIED_ACE_TYPE* = 0x00000001

+  SYSTEM_AUDIT_ACE_TYPE* = 0x00000002

+  SYSTEM_ALARM_ACE_TYPE* = 0x00000003

+  # ACE flags in the ACE_HEADER structure

+  OBJECT_INHERIT_ACE* = 0x00000001

+  CONTAINER_INHERIT_ACE* = 0x00000002

+  NO_PROPAGATE_INHERIT_ACE* = 0x00000004

+  INHERIT_ONLY_ACE* = 0x00000008

+  SUCCESSFUL_ACCESS_ACE_FLAG* = 0x00000040

+  FAILED_ACCESS_ACE_FLAG* = 0x00000080

+  # SECURITY_DESCRIPTOR_CONTROL

+                                       #SECURITY_DESCRIPTOR_REVISION = 1;already defined above

+  SECURITY_DESCRIPTOR_MIN_LENGTH* = 20

+  SE_OWNER_DEFAULTED* = 1

+  SE_GROUP_DEFAULTED* = 2

+  SE_DACL_PRESENT* = 4

+  SE_DACL_DEFAULTED* = 8

+  SE_SACL_PRESENT* = 16

+  SE_SACL_DEFAULTED* = 32

+  SE_SELF_RELATIVE* = 32768

+  # PRIVILEGE_SET

+  SE_PRIVILEGE_ENABLED_BY_DEFAULT* = 0x00000001

+  SE_PRIVILEGE_ENABLED* = 0x00000002

+  SE_PRIVILEGE_USED_FOR_ACCESS* = 0x80000000

+  PRIVILEGE_SET_ALL_NECESSARY* = 0x00000001

+  # OPENFILENAME structure

+  OFN_ALLOWMULTISELECT* = 0x00000200

+  OFN_CREATEPROMPT* = 0x00002000

+  OFN_ENABLEHOOK* = 0x00000020

+  OFN_ENABLETEMPLATE* = 0x00000040

+  OFN_ENABLETEMPLATEHANDLE* = 0x00000080

+  OFN_EXPLORER* = 0x00080000

+  OFN_EXTENSIONDIFFERENT* = 0x00000400

+  OFN_FILEMUSTEXIST* = 0x00001000

+  OFN_HIDEREADONLY* = 0x00000004

+  OFN_LONGNAMES* = 0x00200000

+  OFN_NOCHANGEDIR* = 0x00000008

+  OFN_NODEREFERENCELINKS* = 0x00100000

+  OFN_NOLONGNAMES* = 0x00040000

+  OFN_NONETWORKBUTTON* = 0x00020000

+  OFN_NOREADONLYRETURN* = 0x00008000

+  OFN_NOTESTFILECREATE* = 0x00010000

+  OFN_NOVALIDATE* = 0x00000100

+  OFN_OVERWRITEPROMPT* = 0x00000002

+  OFN_PATHMUSTEXIST* = 0x00000800

+  OFN_READONLY* = 0x00000001

+  OFN_SHAREAWARE* = 0x00004000

+  OFN_SHOWHELP* = 0x00000010

+  # SHAREVISTRING message

+  OFN_SHAREFALLTHROUGH* = 0x00000002

+  OFN_SHARENOWARN* = 0x00000001

+  OFN_SHAREWARN* = 0

+  # Open/Save notifications

+  CDN_INITDONE* = 0xFFFFFDA7

+  CDN_SELCHANGE* = 0xFFFFFDA6

+  CDN_FOLDERCHANGE* = 0xFFFFFDA5

+  CDN_SHAREVIOLATION* = 0xFFFFFDA4

+  CDN_HELP* = 0xFFFFFDA3

+  CDN_FILEOK* = 0xFFFFFDA2

+  CDN_TYPECHANGE* = 0xFFFFFDA1

+  # Open/Save messages

+  CDM_GETFILEPATH* = 0x00000465

+  CDM_GETFOLDERIDLIST* = 0x00000467

+  CDM_GETFOLDERPATH* = 0x00000466

+  CDM_GETSPEC* = 0x00000464

+  CDM_HIDECONTROL* = 0x00000469

+  CDM_SETCONTROLTEXT* = 0x00000468

+  CDM_SETDEFEXT* = 0x0000046A

+  # CHOOSECOLOR structure

+  CC_ENABLEHOOK* = 0x00000010

+  CC_ENABLETEMPLATE* = 0x00000020

+  CC_ENABLETEMPLATEHANDLE* = 0x00000040

+  CC_FULLOPEN* = 0x00000002

+  CC_PREVENTFULLOPEN* = 0x00000004

+  CC_RGBINIT* = 0x00000001

+  CC_SHOWHELP* = 0x00000008

+  CC_SOLIDCOLOR* = 0x00000080

+  # FINDREPLACE structure

+  FR_DIALOGTERM* = 0x00000040

+  FR_DOWN* = 0x00000001

+  FR_ENABLEHOOK* = 0x00000100

+  FR_ENABLETEMPLATE* = 0x00000200

+  FR_ENABLETEMPLATEHANDLE* = 0x00002000

+  FR_FINDNEXT* = 0x00000008

+  FR_HIDEUPDOWN* = 0x00004000

+  FR_HIDEMATCHCASE* = 0x00008000

+  FR_HIDEWHOLEWORD* = 0x00010000

+  FR_MATCHCASE* = 0x00000004

+  FR_NOMATCHCASE* = 0x00000800

+  FR_NOUPDOWN* = 0x00000400

+  FR_NOWHOLEWORD* = 0x00001000

+  FR_REPLACE* = 0x00000010

+  FR_REPLACEALL* = 0x00000020

+  FR_SHOWHELP* = 0x00000080

+  FR_WHOLEWORD* = 0x00000002

+  # CHOOSEFONT structure

+  CF_APPLY* = 0x00000200

+  CF_ANSIONLY* = 0x00000400

+  CF_BOTH* = 0x00000003

+  CF_TTONLY* = 0x00040000

+  CF_EFFECTS* = 0x00000100

+  CF_ENABLEHOOK* = 0x00000008

+  CF_ENABLETEMPLATE* = 0x00000010

+  CF_ENABLETEMPLATEHANDLE* = 0x00000020

+  CF_FIXEDPITCHONLY* = 0x00004000

+  CF_FORCEFONTEXIST* = 0x00010000

+  CF_INITTOLOGFONTSTRUCT* = 0x00000040

+  CF_LIMITSIZE* = 0x00002000

+  CF_NOOEMFONTS* = 0x00000800

+  CF_NOFACESEL* = 0x00080000

+  CF_NOSCRIPTSEL* = 0x00800000

+  CF_NOSTYLESEL* = 0x00100000

+  CF_NOSIZESEL* = 0x00200000

+  CF_NOSIMULATIONS* = 0x00001000

+  CF_NOVECTORFONTS* = 0x00000800

+  CF_NOVERTFONTS* = 0x01000000

+  CF_PRINTERFONTS* = 0x00000002

+  CF_SCALABLEONLY* = 0x00020000

+  CF_SCREENFONTS* = 0x00000001

+  CF_SCRIPTSONLY* = 0x00000400

+  CF_SELECTSCRIPT* = 0x00400000

+  CF_SHOWHELP* = 0x00000004

+  CF_USESTYLE* = 0x00000080

+  CF_WYSIWYG* = 0x00008000

+  BOLD_FONTTYPE* = 0x00000100

+  ITALIC_FONTTYPE* = 0x00000200

+  PRINTER_FONTTYPE* = 0x00004000

+  REGULAR_FONTTYPE* = 0x00000400

+  SCREEN_FONTTYPE* = 0x00002000

+  SIMULATED_FONTTYPE* = 0x00008000

+  # Common dialog messages

+  COLOROKSTRINGW* = "commdlg_ColorOK"

+  FILEOKSTRINGW* = "commdlg_FileNameOK"

+  FINDMSGSTRINGW* = "commdlg_FindReplace"

+  HELPMSGSTRINGW* = "commdlg_help"

+  LBSELCHSTRINGW* = "commdlg_LBSelChangedNotify"

+  SETRGBSTRINGW* = "commdlg_SetRGBColor"

+  SHAREVISTRINGW* = "commdlg_ShareViolation"

+  COLOROKSTRINGA* = "commdlg_ColorOK"

+  FILEOKSTRINGA* = "commdlg_FileNameOK"

+  FINDMSGSTRINGA* = "commdlg_FindReplace"

+  HELPMSGSTRINGA* = "commdlg_help"

+  LBSELCHSTRINGA* = "commdlg_LBSelChangedNotify"

+  SETRGBSTRINGA* = "commdlg_SetRGBColor"

+  SHAREVISTRINGA* = "commdlg_ShareViolation"

+

+when defined(winUnicode):

+  const

+    COLOROKSTRING* = COLOROKSTRINGW

+    FILEOKSTRING* = FILEOKSTRINGW

+    FINDMSGSTRING* = FINDMSGSTRINGW

+    HELPMSGSTRING* = HELPMSGSTRINGW

+    LBSELCHSTRING* = LBSELCHSTRINGW

+    SETRGBSTRING* = SETRGBSTRINGW

+    SHAREVISTRING* = SHAREVISTRINGW

+else:

+  const

+    COLOROKSTRING* = COLOROKSTRINGA

+    FILEOKSTRING* = FILEOKSTRINGA

+    FINDMSGSTRING* = FINDMSGSTRINGA

+    HELPMSGSTRING* = HELPMSGSTRINGA

+    LBSELCHSTRING* = LBSELCHSTRINGA

+    SETRGBSTRING* = SETRGBSTRINGA

+    SHAREVISTRING* = SHAREVISTRINGA

+

+const

+  # LBSELCHSTRING message

+  CD_LBSELCHANGE* = 0

+  CD_LBSELADD* = 2

+  CD_LBSELSUB* = 1

+  CD_LBSELNOITEMS* = -1

+  # DEVNAMES structure

+  DN_DEFAULTPRN* = 1

+  # PRINTDLG structure

+  PD_ALLPAGES* = 0

+  PD_COLLATE* = 16

+  PD_DISABLEPRINTTOFILE* = 524288

+  PD_ENABLEPRINTHOOK* = 4096

+  PD_ENABLEPRINTTEMPLATE* = 16384

+  PD_ENABLEPRINTTEMPLATEHANDLE* = 65536

+  PD_ENABLESETUPHOOK* = 8192

+  PD_ENABLESETUPTEMPLATE* = 32768

+  PD_ENABLESETUPTEMPLATEHANDLE* = 131072

+  PD_HIDEPRINTTOFILE* = 1048576

+  PD_NOPAGENUMS* = 8

+  PD_NOSELECTION* = 4

+  PD_NOWARNING* = 128

+  PD_PAGENUMS* = 2

+  PD_PRINTSETUP* = 64

+  PD_PRINTTOFILE* = 32

+  PD_RETURNDC* = 256

+  PD_RETURNDEFAULT* = 1024

+  PD_RETURNIC* = 512

+  PD_SELECTION* = 1

+  PD_SHOWHELP* = 2048

+  PD_USEDEVMODECOPIES* = 262144

+  PD_USEDEVMODECOPIESANDCOLLATE* = 262144

+  # PAGESETUPDLG structure

+  PSD_DEFAULTMINMARGINS* = 0

+  PSD_DISABLEMARGINS* = 16

+  PSD_DISABLEORIENTATION* = 256

+  PSD_DISABLEPAGEPAINTING* = 524288

+  PSD_DISABLEPAPER* = 512

+  PSD_DISABLEPRINTER* = 32

+  PSD_ENABLEPAGEPAINTHOOK* = 262144

+  PSD_ENABLEPAGESETUPHOOK* = 8192

+  PSD_ENABLEPAGESETUPTEMPLATE* = 32768

+  PSD_ENABLEPAGESETUPTEMPLATEHANDLE* = 131072

+  PSD_INHUNDREDTHSOFMILLIMETERS* = 8

+  PSD_INTHOUSANDTHSOFINCHES* = 4

+  PSD_INWININIINTLMEASURE* = 0

+  PSD_MARGINS* = 2

+  PSD_MINMARGINS* = 1

+  PSD_NOWARNING* = 128

+  PSD_RETURNDEFAULT* = 1024

+  PSD_SHOWHELP* = 2048

+  # WM_SHOWWINDOW message

+  SW_OTHERUNZOOM* = 4

+  SW_OTHERZOOM* = 2

+  SW_PARENTCLOSING* = 1

+  SW_PARENTOPENING* = 3

+  # Virtual Key codes

+  VK_LBUTTON* = 1

+  VK_RBUTTON* = 2

+  VK_CANCEL* = 3

+  VK_MBUTTON* = 4

+  VK_BACK* = 8

+  VK_TAB* = 9

+  VK_CLEAR* = 12

+  VK_RETURN* = 13

+  VK_SHIFT* = 16

+  VK_CONTROL* = 17

+  VK_MENU* = 18

+  VK_PAUSE* = 19

+  VK_CAPITAL* = 20

+  VK_ESCAPE* = 27

+  VK_SPACE* = 32

+  VK_PRIOR* = 33

+  VK_NEXT* = 34

+  VK_END* = 35

+  VK_HOME* = 36

+  VK_LEFT* = 37

+  VK_UP* = 38

+  VK_RIGHT* = 39

+  VK_DOWN* = 40

+  VK_SELECT* = 41

+  VK_PRINT* = 42

+  VK_EXECUTE* = 43

+  VK_SNAPSHOT* = 44

+  VK_INSERT* = 45

+  VK_DELETE* = 46

+  VK_HELP* = 47

+  VK_0* = 48

+  VK_1* = 49

+  VK_2* = 50

+  VK_3* = 51

+  VK_4* = 52

+  VK_5* = 53

+  VK_6* = 54

+  VK_7* = 55

+  VK_8* = 56

+  VK_9* = 57

+  VK_A* = 65

+  VK_B* = 66

+  VK_C* = 67

+  VK_D* = 68

+  VK_E* = 69

+  VK_F* = 70

+  VK_G* = 71

+  VK_H* = 72

+  VK_I* = 73

+  VK_J* = 74

+  VK_K* = 75

+  VK_L* = 76

+  VK_M* = 77

+  VK_N* = 78

+  VK_O* = 79

+  VK_P* = 80

+  VK_Q* = 81

+  VK_R* = 82

+  VK_S* = 83

+  VK_T* = 84

+  VK_U* = 85

+  VK_V* = 86

+  VK_W* = 87

+  VK_X* = 88

+  VK_Y* = 89

+  VK_Z* = 90

+  VK_LWIN* = 91

+  VK_RWIN* = 92

+  VK_APPS* = 93

+  VK_NUMPAD0* = 96

+  VK_NUMPAD1* = 97

+  VK_NUMPAD2* = 98

+  VK_NUMPAD3* = 99

+  VK_NUMPAD4* = 100

+  VK_NUMPAD5* = 101

+  VK_NUMPAD6* = 102

+  VK_NUMPAD7* = 103

+  VK_NUMPAD8* = 104

+  VK_NUMPAD9* = 105

+  VK_MULTIPLY* = 106

+  VK_ADD* = 107

+  VK_SEPARATOR* = 108

+  VK_SUBTRACT* = 109

+  VK_DECIMAL* = 110

+  VK_DIVIDE* = 111

+  VK_F1* = 112

+  VK_F2* = 113

+  VK_F3* = 114

+  VK_F4* = 115

+  VK_F5* = 116

+  VK_F6* = 117

+  VK_F7* = 118

+  VK_F8* = 119

+  VK_F9* = 120

+  VK_F10* = 121

+  VK_F11* = 122

+  VK_F12* = 123

+  VK_F13* = 124

+  VK_F14* = 125

+  VK_F15* = 126

+  VK_F16* = 127

+  VK_F17* = 128

+  VK_F18* = 129

+  VK_F19* = 130

+  VK_F20* = 131

+  VK_F21* = 132

+  VK_F22* = 133

+  VK_F23* = 134

+  VK_F24* = 135

+  # GetAsyncKeyState

+  VK_NUMLOCK* = 144

+  VK_SCROLL* = 145

+  VK_LSHIFT* = 160

+  VK_LCONTROL* = 162

+  VK_LMENU* = 164

+  VK_RSHIFT* = 161

+  VK_RCONTROL* = 163

+  VK_RMENU* = 165

+  # ImmGetVirtualKey

+  VK_PROCESSKEY* = 229

+  # Keystroke Message Flags

+  KF_ALTDOWN* = 8192

+  KF_DLGMODE* = 2048

+  KF_EXTENDED* = 256

+  KF_MENUMODE* = 4096

+  KF_REPEAT* = 16384

+  KF_UP* = 32768

+  # GetKeyboardLayoutName

+  KL_NAMELENGTH* = 9

+  # WM_ACTIVATE message

+  WA_ACTIVE* = 1

+  WA_CLICKACTIVE* = 2

+  WA_INACTIVE* = 0

+  # WM_ACTIVATE message

+  PWR_CRITICALRESUME* = 3

+  PWR_SUSPENDREQUEST* = 1

+  PWR_SUSPENDRESUME* = 2

+  PWR_FAIL* = -1

+  PWR_OK* = 1

+  # WM_NOTIFYFORMAT message

+  NF_QUERY* = 3

+  NF_REQUERY* = 4

+  NFR_ANSI* = 1

+  NFR_UNICODE* = 2

+  # WM_SIZING message

+  WMSZ_BOTTOM* = 6

+  WMSZ_BOTTOMLEFT* = 7

+  WMSZ_BOTTOMRIGHT* = 8

+  WMSZ_LEFT* = 1

+  WMSZ_RIGHT* = 2

+  WMSZ_TOP* = 3

+  WMSZ_TOPLEFT* = 4

+  WMSZ_TOPRIGHT* = 5

+  # WM_MOUSEACTIVATE message

+  MA_ACTIVATE* = 1

+  MA_ACTIVATEANDEAT* = 2

+  MA_NOACTIVATE* = 3

+  MA_NOACTIVATEANDEAT* = 4

+  # WM_SIZE message

+  SIZE_MAXHIDE* = 4

+  SIZE_MAXIMIZED* = 2

+  SIZE_MAXSHOW* = 3

+  SIZE_MINIMIZED* = 1

+  SIZE_RESTORED* = 0

+  # WM_NCCALCSIZE message

+  WVR_ALIGNTOP* = 16

+  WVR_ALIGNLEFT* = 32

+  WVR_ALIGNBOTTOM* = 64

+  WVR_ALIGNRIGHT* = 128

+  WVR_HREDRAW* = 256

+  WVR_VREDRAW* = 512

+  WVR_REDRAW* = 768

+  WVR_VALIDRECTS* = 1024

+  # WM_NCHITTEST message

+  HTBOTTOM* = 15

+  HTBOTTOMLEFT* = 16

+  HTBOTTOMRIGHT* = 17

+  HTCAPTION* = 2

+  HTCLIENT* = 1

+  HTERROR* = -2

+  HTGROWBOX* = 4

+  HTHSCROLL* = 6

+  HTLEFT* = 10

+  HTMENU* = 5

+  HTNOWHERE* = 0

+  HTREDUCE* = 8

+  HTRIGHT* = 11

+  HTSIZE* = 4

+  HTSYSMENU* = 3

+  HTTOP* = 12

+  HTTOPLEFT* = 13

+  HTTOPRIGHT* = 14

+  HTTRANSPARENT* = -1

+  HTVSCROLL* = 7

+  HTZOOM* = 9

+  # Mouse messages

+  MK_CONTROL* = 8

+  MK_LBUTTON* = 1

+  MK_MBUTTON* = 16

+  MK_RBUTTON* = 2

+  MK_SHIFT* = 4

+  # WNDCLASS structure

+  CS_BYTEALIGNCLIENT* = 4096

+  CS_BYTEALIGNWINDOW* = 8192

+  CS_CLASSDC* = 64

+  CS_DBLCLKS* = 8

+  CS_GLOBALCLASS* = 16384

+  CS_HREDRAW* = 2

+  CS_KEYCVTWINDOW* = 4

+  CS_NOCLOSE* = 512

+  CS_NOKEYCVT* = 256

+  CS_OWNDC* = 32

+  CS_PARENTDC* = 128

+  CS_SAVEBITS* = 2048

+  CS_VREDRAW* = 1

+  DLGWINDOWEXTRA* = 30

+  # ACCEL structure

+  FALT* = 16

+  FCONTROL* = 8

+  FNOINVERT* = 2

+  FSHIFT* = 4

+  FVIRTKEY* = 1

+  # WM_MENUCHAR return constants

+  MNC_IGNORE* = 0

+  MNC_CLOSE* = 1

+  MNC_EXECUTE* = 2

+  MNC_SELECT* = 3

+  # MENUINFO structure

+  MIM_MAXHEIGHT* = 1

+  MIM_BACKGROUND* = 2

+  MIM_HELPID* = 4

+  MIM_MENUDATA* = 8

+  MIM_STYLE* = 16

+  MIM_APPLYTOSUBMENUS* = 0x80000000

+  MNS_CHECKORBMP* = 0x04000000

+  MNS_NOTIFYBYPOS* = 0x08000000

+  MNS_AUTODISMISS* = 0x10000000

+  MNS_DRAGDROP* = 0x20000000

+  MNS_MODELESS* = 0x40000000

+  MNS_NOCHECK* = 0x80000000

+  # MENUITEMINFO structure

+  MIIM_CHECKMARKS* = 8

+  MIIM_DATA* = 32

+  MIIM_ID* = 2

+  MIIM_STATE* = 1

+  MIIM_SUBMENU* = 4

+  MIIM_TYPE* = 16

+  MIIM_STRING* = 64

+  MIIM_BITMAP* = 128

+  MIIM_FTYPE* = 256

+  MFT_BITMAP* = 0x00000004

+  MFT_MENUBARBREAK* = 0x00000020

+  MFT_MENUBREAK* = 0x00000040

+  MFT_OWNERDRAW* = 0x00000100

+  MFT_RADIOCHECK* = 0x00000200

+  MFT_RIGHTJUSTIFY* = 0x00004000

+  MFT_SEPARATOR* = 0x00000800

+  MFT_RIGHTORDER* = 0x00002000

+  MFT_STRING* = 0

+  MFS_CHECKED* = 0x00000008

+  MFS_DEFAULT* = 0x00001000

+  MFS_DISABLED* = 0x00000003

+  MFS_ENABLED* = 0

+  MFS_GRAYED* = 0x00000003

+  MFS_HILITE* = 0x00000080

+  MFS_UNCHECKED* = 0

+  MFS_UNHILITE* = 0

+  HBMMENU_CALLBACK* = - 1

+  HBMMENU_SYSTEM* = 1

+  HBMMENU_MBAR_RESTORE* = 2

+  HBMMENU_MBAR_MINIMIZE* = 3

+  HBMMENU_MBAR_CLOSE* = 5

+  HBMMENU_MBAR_CLOSE_D* = 6

+  HBMMENU_MBAR_MINIMIZE_D* = 7

+  HBMMENU_POPUP_CLOSE* = 8

+  HBMMENU_POPUP_RESTORE* = 9

+  HBMMENU_POPUP_MAXIMIZE* = 10

+  HBMMENU_POPUP_MINIMIZE* = 11

+  # SERIALKEYS structure

+  SERKF_AVAILABLE* = 2

+  SERKF_INDICATOR* = 4

+  SERKF_SERIALKEYSON* = 1

+  # FILTERKEYS structure

+  FKF_AVAILABLE* = 2

+  FKF_CLICKON* = 64

+  FKF_FILTERKEYSON* = 1

+  FKF_HOTKEYACTIVE* = 4

+  FKF_HOTKEYSOUND* = 16

+  FKF_CONFIRMHOTKEY* = 8

+  FKF_INDICATOR* = 32

+  # HELPINFO structure

+  HELPINFO_MENUITEM* = 2

+  HELPINFO_WINDOW* = 1

+  # WM_PRINT message

+  PRF_CHECKVISIBLE* = 0x00000001

+  PRF_CHILDREN* = 0x00000010

+  PRF_CLIENT* = 0x00000004

+  PRF_ERASEBKGND* = 0x00000008

+  PRF_NONCLIENT* = 0x00000002

+  PRF_OWNED* = 0x00000020

+

+  # MapWindowPoints

+  HWND_DESKTOP* = HWND(0)

+

+const

+  # WM_SYSCOMMAND message

+  SC_CLOSE* = 61536

+  SC_CONTEXTHELP* = 61824

+  SC_DEFAULT* = 61792

+  SC_HOTKEY* = 61776

+  SC_HSCROLL* = 61568

+  SC_KEYMENU* = 61696

+  SC_MAXIMIZE* = 61488

+  SC_ZOOM* = 61488

+  SC_MINIMIZE* = 61472

+  SC_ICON* = 61472

+  SC_MONITORPOWER* = 61808

+  SC_MOUSEMENU* = 61584

+  SC_MOVE* = 61456

+  SC_NEXTWINDOW* = 61504

+  SC_PREVWINDOW* = 61520

+  SC_RESTORE* = 61728

+  SC_SCREENSAVE* = 61760

+  SC_SIZE* = 61440

+  SC_TASKLIST* = 61744

+  SC_VSCROLL* = 61552

+  # DM_GETDEFID message

+  DC_HASDEFID* = 21323

+  # WM_GETDLGCODE message

+  DLGC_BUTTON* = 8192

+  DLGC_DEFPUSHBUTTON* = 16

+  DLGC_HASSETSEL* = 8

+  DLGC_RADIOBUTTON* = 64

+  DLGC_STATIC* = 256

+  DLGC_UNDEFPUSHBUTTON* = 32

+  DLGC_WANTALLKEYS* = 4

+  DLGC_WANTARROWS* = 1

+  DLGC_WANTCHARS* = 128

+  DLGC_WANTMESSAGE* = 4

+  DLGC_WANTTAB* = 2

+  # EM_SETMARGINS message

+  EC_LEFTMARGIN* = 1

+  EC_RIGHTMARGIN* = 2

+  EC_USEFONTINFO* = 65535

+  # LB_SETCOUNT message

+  LB_ERR* = -1

+  LB_ERRSPACE* = -2

+  LB_OKAY* = 0

+  # CB_DIR message

+  CB_ERR* = -1

+  CB_ERRSPACE* = -2

+  # WM_IME_CONTROL message

+  IMC_GETCANDIDATEPOS* = 7

+  IMC_GETCOMPOSITIONFONT* = 9

+  IMC_GETCOMPOSITIONWINDOW* = 11

+  IMC_GETSTATUSWINDOWPOS* = 15

+  IMC_CLOSESTATUSWINDOW* = 33

+  IMC_OPENSTATUSWINDOW* = 34

+  IMC_SETCANDIDATEPOS* = 8

+  IMC_SETCOMPOSITIONFONT* = 10

+  IMC_SETCOMPOSITIONWINDOW* = 12

+  IMC_SETSTATUSWINDOWPOS* = 16

+  # WM_IME_CONTROL message

+  IMN_CHANGECANDIDATE* = 3

+  IMN_CLOSECANDIDATE* = 4

+  IMN_CLOSESTATUSWINDOW* = 1

+  IMN_GUIDELINE* = 13

+  IMN_OPENCANDIDATE* = 5

+  IMN_OPENSTATUSWINDOW* = 2

+  IMN_SETCANDIDATEPOS* = 9

+  IMN_SETCOMPOSITIONFONT* = 10

+  IMN_SETCOMPOSITIONWINDOW* = 11

+  IMN_SETCONVERSIONMODE* = 6

+  IMN_SETOPENSTATUS* = 8

+  IMN_SETSENTENCEMODE* = 7

+  IMN_SETSTATUSWINDOWPOS* = 12

+  IMN_PRIVATE* = 14

+  # STICKYKEYS structure

+  SKF_AUDIBLEFEEDBACK* = 64

+  SKF_AVAILABLE* = 2

+  SKF_CONFIRMHOTKEY* = 8

+  SKF_HOTKEYACTIVE* = 4

+  SKF_HOTKEYSOUND* = 16

+  SKF_INDICATOR* = 32

+  SKF_STICKYKEYSON* = 1

+  SKF_TRISTATE* = 128

+  SKF_TWOKEYSOFF* = 256

+  # MOUSEKEYS structure

+  MKF_AVAILABLE* = 2

+  MKF_CONFIRMHOTKEY* = 8

+  MKF_HOTKEYACTIVE* = 4

+  MKF_HOTKEYSOUND* = 16

+  MKF_INDICATOR* = 32

+  MKF_MOUSEKEYSON* = 1

+  MKF_MODIFIERS* = 64

+  MKF_REPLACENUMBERS* = 128

+  # SOUNDSENTRY structure

+  SSF_AVAILABLE* = 2

+  SSF_SOUNDSENTRYON* = 1

+  SSTF_BORDER* = 2

+  SSTF_CHARS* = 1

+  SSTF_DISPLAY* = 3

+  SSTF_NONE* = 0

+  SSGF_DISPLAY* = 3

+  SSGF_NONE* = 0

+  SSWF_CUSTOM* = 4

+  SSWF_DISPLAY* = 3

+  SSWF_NONE* = 0

+  SSWF_TITLE* = 1

+  SSWF_WINDOW* = 2

+  # ACCESSTIMEOUT structure

+  ATF_ONOFFFEEDBACK* = 2

+  ATF_TIMEOUTON* = 1

+  # HIGHCONTRAST structure

+  HCF_AVAILABLE* = 2

+  HCF_CONFIRMHOTKEY* = 8

+  HCF_HIGHCONTRASTON* = 1

+  HCF_HOTKEYACTIVE* = 4

+  HCF_HOTKEYAVAILABLE* = 64

+  HCF_HOTKEYSOUND* = 16

+  HCF_INDICATOR* = 32

+  # TOGGLEKEYS structure

+  TKF_AVAILABLE* = 2

+  TKF_CONFIRMHOTKEY* = 8

+  TKF_HOTKEYACTIVE* = 4

+  TKF_HOTKEYSOUND* = 16

+  TKF_TOGGLEKEYSON* = 1

+  # Installable Policy

+  PP_DISPLAYERRORS* = 1

+  # SERVICE_INFO structure

+  RESOURCEDISPLAYTYPE_DOMAIN* = 1

+  RESOURCEDISPLAYTYPE_FILE* = 4

+  RESOURCEDISPLAYTYPE_GENERIC* = 0

+  RESOURCEDISPLAYTYPE_GROUP* = 5

+  RESOURCEDISPLAYTYPE_SERVER* = 2

+  RESOURCEDISPLAYTYPE_SHARE* = 3

+  # KEY_EVENT_RECORD structure

+  CAPSLOCK_ON* = 128

+  ENHANCED_KEY* = 256

+  LEFT_ALT_PRESSED* = 2

+  LEFT_CTRL_PRESSED* = 8

+  NUMLOCK_ON* = 32

+  RIGHT_ALT_PRESSED* = 1

+  RIGHT_CTRL_PRESSED* = 4

+  SCROLLLOCK_ON* = 64

+  SHIFT_PRESSED* = 16

+  # MOUSE_EVENT_RECORD structure

+  FROM_LEFT_1ST_BUTTON_PRESSED* = 1

+  RIGHTMOST_BUTTON_PRESSED* = 2

+  FROM_LEFT_2ND_BUTTON_PRESSED* = 4

+  FROM_LEFT_3RD_BUTTON_PRESSED* = 8

+  FROM_LEFT_4TH_BUTTON_PRESSED* = 16

+  DOUBLE_CLICK* = 2

+  MOUSE_MOVED* = 1

+  # INPUT_RECORD structure

+  KEY_EVENT* = 1

+  cMOUSE_EVENT* = 2

+  WINDOW_BUFFER_SIZE_EVENT* = 4

+  MENU_EVENT* = 8

+  FOCUS_EVENT* = 16

+  # BITMAPINFOHEADER structure

+  BI_RGB* = 0

+  BI_RLE8* = 1

+  BI_RLE4* = 2

+  BI_BITFIELDS* = 3

+  # Extensions to OpenGL

+                              # ChoosePixelFormat

+  PFD_DOUBLEBUFFER* = 0x00000001

+  PFD_STEREO* = 0x00000002

+  PFD_DRAW_TO_WINDOW* = 0x00000004

+  PFD_DRAW_TO_BITMAP* = 0x00000008

+  PFD_SUPPORT_GDI* = 0x00000010

+  PFD_SUPPORT_OPENGL* = 0x00000020

+  PFD_DEPTH_DONTCARE* = 0x20000000

+  PFD_DOUBLEBUFFER_DONTCARE* = 0x40000000

+  PFD_STEREO_DONTCARE* = 0x80000000

+  PFD_TYPE_RGBA* = 0

+  PFD_TYPE_COLORINDEX* = 1

+  PFD_MAIN_PLANE* = 0

+  PFD_OVERLAY_PLANE* = 1

+  PFD_UNDERLAY_PLANE* = -1

+  # wglUseFontOutlines

+  WGL_FONT_LINES* = 0

+  WGL_FONT_POLYGONS* = 1

+  PFD_GENERIC_FORMAT* = 0x00000040

+  PFD_NEED_PALETTE* = 0x00000080

+  PFD_NEED_SYSTEM_PALETTE* = 0x00000100

+  PFD_SWAP_EXCHANGE* = 0x00000200

+  PFD_SWAP_COPY* = 0x00000400

+  PFD_SWAP_LAYER_BUFFERS* = 0x00000800

+  PFD_GENERIC_ACCELERATED* = 0x00001000

+  PFD_SUPPORT_DIRECTDRAW* = 0x00002000

+  TMPF_FIXED_PITCH* = 0x00000001

+  TMPF_VECTOR* = 0x00000002

+  TMPF_TRUETYPE* = 0x00000004

+  TMPF_DEVICE* = 0x00000008

+  WM_CTLCOLOR* = 25

+  LWA_COLORKEY* = 0x00000001

+  LWA_ALPHA* = 0x00000002

+  ULW_COLORKEY* = 0x00000001

+  ULW_ALPHA* = 0x00000002

+  ULW_OPAQUE* = 0x00000004

+  WS_EX_LAYERED* = 0x00080000

+  WS_EX_NOINHERITLAYOUT* = 0x00100000

+  WS_EX_LAYOUTRTL* = 0x00400000

+  WS_EX_COMPOSITED* = 0x02000000

+  WS_EX_NOACTIVATE* = 0x08000000

+  C3_LEXICAL* = 1024

+

+# --------------------- old stuff, need to organize! ---------------

+                     # BEGINNING of windowsx.h stuff from old headers:

+

+                     # was #define dname(params) def_expr

+proc GetFirstChild*(h: HWND): HWND

+  # was #define dname(params) def_expr

+proc GetNextSibling*(h: HWND): HWND

+  # was #define dname(params) def_expr

+proc GetWindowID*(h: HWND): int32

+  # was #define dname(params) def_expr

+proc SubclassWindow*(h: HWND, p: LONG): LONG

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_COMMAND_CMD*(w, L: int32): int32

+  # return type might be wrong

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_COMMAND_ID*(w, L: int32): int32

+  # return type might be wrong

+  # was #define dname(params) def_expr

+  # argument types are unknown

+proc GET_WM_CTLCOLOR_HDC*(w, L, msg: int32): HDC

+  # was #define dname(params) def_expr

+  # argument types are unknown

+proc GET_WM_CTLCOLOR_HWND*(w, L, msg: int32): HWND

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_HSCROLL_CODE*(w, L: int32): int32

+  # return type might be wrong

+  # was #define dname(params) def_expr

+  # argument types are unknown

+proc GET_WM_HSCROLL_HWND*(w, L: int32): HWND

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_HSCROLL_POS*(w, L: int32): int32

+  # return type might be wrong

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_MDIACTIVATE_FACTIVATE*(h, a, b: int32): int32

+  # return type might be wrong

+  # was #define dname(params) def_expr

+  # argument types are unknown

+proc GET_WM_MDIACTIVATE_HWNDACTIVATE*(a, b: int32): HWND

+  # was #define dname(params) def_expr

+  # argument types are unknown

+proc GET_WM_MDIACTIVATE_HWNDDEACT*(a, b: int32): HWND

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_VSCROLL_CODE*(w, L: int32): int32

+  # return type might be wrong

+  # was #define dname(params) def_expr

+  # argument types are unknown

+proc GET_WM_VSCROLL_HWND*(w, L: int32): HWND

+  # was #define dname(params) def_expr

+  # argument types are unknown

+  # return type might be wrong

+proc GET_WM_VSCROLL_POS*(w, L: int32): int32

+  # return type might be wrong

+  #  Not convertable by H2PAS

+  #  #define FORWARD_WM_CLOSE(h, fn)                 CRACK_VOID_F(fn,(h, WM_CLOSE, 0, 0))

+  #  #define FORWARD_WM_COMMAND(h, id, c, n, fn)     CRACK_VOID_F(fn,(h, WM_COMMAND, MAKEWPARAM(id,n), (LPARAM)c))

+  #  #define FORWARD_WM_CREATE(h, p, fn)             CRACK_BOOL_F(fn,(h, WM_CREATE, 0, (LPARAM)p))

+  #  #define FORWARD_WM_DESTROY(h, fn)               CRACK_VOID_F(fn,(h, WM_DESTROY, 0, 0))

+  #  #define FORWARD_WM_ENABLE(h, e, fn)             CRACK_VOID_F(fn,(h, WM_ENABLE, (WPARAM)e, 0))

+  #  #define FORWARD_WM_INITDIALOG(h, c, L, fn)      CRACK_BOOL_F(fn,(h, WM_INITDIALOG, (WPARAM)c, L))

+  #  #define FORWARD_WM_MDICASCADE(h, c, fn)         CRACK_BOOL_F(fn,(h, WM_MDICASCADE, (WPARAM)c, 0))

+  #  #define FORWARD_WM_MDIDESTROY(h, d, fn)         CRACK_VOID_F(fn,(h, WM_MDIDESTROY, (WPARAM)d, 0))

+  #  #define FORWARD_WM_MDIGETACTIVE(h, fn)          CRACK_HWND_F(fn,(h, WM_MDIGETACTIVE, 0, 0))

+  #  #define FORWARD_WM_MDIICONARRANGE(h, fn)        CRACK_VOID_F(fn,(h, WM_MDIICONARRANGE, 0, 0))

+  #  #define FORWARD_WM_MDISETMENU(h, fr, hf, hw, fn) CRACK_HMENU_F(fn,(h, WM_MDISETMENU, (WPARAM)((fr) ? (hf) : 0), (LPARAM)(hw)))

+  #  #define FORWARD_WM_MDITILE(h, c, fn)            CRACK_BOOL_F(fn,(h, WM_MDITILE, (WPARAM)(c), 0))

+  #  #define FORWARD_WM_PAINT(h, fn)                 CRACK_VOID_F(fn,(h, WM_PAINT, 0, 0))

+  #  #define FORWARD_WM_QUERYENDSESSION(h, fn)       CRACK_BOOL_F(fn,(h, WM_QUERYENDSESSION, 0, 0))

+  #  #define FORWARD_WM_SIZE(h, state, cx, cy, fn)   CRACK_VOID_F(fn,(h, WM_SIZE, (WPARAM)state, MAKELPARAM(cx, cy)))

+  #  #define FORWARD_WM_SYSCOMMAND(h, c, x, y, fn)   CRACK_VOID_F(fn,(h, WM_SYSCOMMAND, (WPARAM)c, MAKELPARAM(x, y)))

+  #

+  #  #define HANDLE_WM_CLOSE(h, w, L, fn)            CRACK_ZERO_F(fn,(h));

+  #  #define HANDLE_WM_COMMAND(h, w, L, fn)          CRACK_ZERO_F(fn,(h, SEXT_LOWORD(w), (HWND)L, HIWORD(w)))

+  #  #define HANDLE_WM_CREATE(h, w, L, fn)           (LRESULT)((fn(h, (CREATESTRUCT  )L)) ? 0 : -1)

+  #  #define HANDLE_WM_DESTROY(h, w, L, fn)          CRACK_ZERO_F(fn,(h))

+  #  #define HANDLE_WM_ENABLE(h, w, L, fn)           CRACK_ZERO_F(fn,(h, (WINBOOL)w))

+  #  #define HANDLE_WM_INITDIALOG(h, w, L, fn)       CRACK_LONG_F(fn,(h, (HWND)w, L))

+  #  #define HANDLE_WM_MDICASCADE(h, w, L, fn)       CRACK_LONG_F(fn, (h, (UINT)w)

+  #  #define HANDLE_WM_MDIDESTROY(h, w, L, fn)       CRACK_ZERO_F(fn,(h, (HWND)w))

+  #  #define HANDLE_WM_MDIGETACTIVE(h, w, L, fn)     CRACK_LONG_F(fn,(h))

+  #  #define HANDLE_WM_MDIICONARRANGE(h, w, L, fn)   CRACK_ZERO_F(fn,(h))

+  #  #define HANDLE_WM_MDISETMENU(h, w, L, fn)       CRACK_LONG_F(fn,(h, (WINBOOL)w, (HMENU)w, (HMENU)L)

+  #  #define HANDLE_WM_MDITILE(h, w, L, fn)          CRACK_LONG_F(fn,(h, (UINT)w))

+  #  #define HANDLE_WM_PAINT(h, w, L, fn)            CRACK_ZERO_F(fn,(h))

+  #  #define HANDLE_WM_QUERYENDSESSION(h, w, L, fn)  MAKELRESULT(fn(h), 0)

+  #  #define HANDLE_WM_SIZE(h, w, L, fn)             CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(L), SEXT_HIWORD(L)))

+  #  #define HANDLE_WM_SYSCOMMAND(h, w, L, fn)       CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(L), SEXT_HIWORD(L)))

+  #

+  # Totally disgusting! get wParam and lParam from the environment !

+  #  Not convertable by H2PAS

+  #  #define HANDLE_MSG(h, message, fn) case message: return HANDLE_##message(h, wParam, lParam, fn)

+  #

+  # END OF windowsx.h stuff from old headers

+  # ------------------------------------------------------------------

+

+const

+  # BEGINNING of shellapi.h stuff from old headers

+  SE_ERR_SHARE* = 26

+  SE_ERR_ASSOCINCOMPLETE* = 27

+  SE_ERR_DDETIMEOUT* = 28

+  SE_ERR_DDEFAIL* = 29

+  SE_ERR_DDEBUSY* = 30

+  SE_ERR_NOASSOC* = 31

+  # END OF shellapi.h stuff from old headers

+                       #

+                       # ------------------------------------------------------------------

+                       # From ddeml.h in old Cygnus headers

+  XCLASS_BOOL* = 0x00001000

+  XCLASS_DATA* = 0x00002000

+  XCLASS_FLAGS* = 0x00004000

+  XCLASS_MASK* = 0x0000FC00

+  XCLASS_NOTIFICATION* = 0x00008000

+  XTYPF_NOBLOCK* = 0x00000002

+  XTYP_ADVDATA* = 0x00004010

+  XTYP_ADVREQ* = 0x00002022

+  XTYP_ADVSTART* = 0x00001030

+  XTYP_ADVSTOP* = 0x00008040

+  XTYP_CONNECT* = 0x00001062

+  XTYP_CONNECT_CONFIRM* = 0x00008072

+  XTYP_DISCONNECT* = 0x000080C2

+  XTYP_EXECUTE* = 0x00004050

+  XTYP_POKE* = 0x00004090

+  XTYP_REQUEST* = 0x000020B0

+  XTYP_WILDCONNECT* = 0x000020E2

+  XTYP_REGISTER* = 0x000080A2

+  XTYP_ERROR* = 0x00008002

+  XTYP_XACT_COMPLETE* = 0x00008080

+  XTYP_UNREGISTER* = 0x000080D2

+  DMLERR_DLL_USAGE* = 0x00004004

+  DMLERR_INVALIDPARAMETER* = 0x00004006

+  DMLERR_NOTPROCESSED* = 0x00004009

+  DMLERR_POSTMSG_FAILED* = 0x0000400C

+  DMLERR_SERVER_DIED* = 0x0000400E

+  DMLERR_SYS_ERROR* = 0x0000400F

+  DMLERR_BUSY* = 0x00004001

+  DMLERR_DATAACKTIMEOUT* = 0x00004002

+  DMLERR_ADVACKTIMEOUT* = 0x00004000

+  DMLERR_DLL_NOT_INITIALIZED* = 0x00004003

+  DMLERR_LOW_MEMORY* = 0x00004007

+  DMLERR_MEMORY_ERROR* = 0x00004008

+  DMLERR_POKEACKTIMEOUT* = 0x0000400B

+  DMLERR_NO_CONV_ESTABLISHED* = 0x0000400A

+  DMLERR_REENTRANCY* = 0x0000400D

+  DMLERR_UNFOUND_QUEUE_ID* = 0x00004011

+  DMLERR_UNADVACKTIMEOUT* = 0x00004010

+  DMLERR_EXECACKTIMEOUT* = 0x00004005

+  DDE_FACK* = 0x00008000

+  DDE_FNOTPROCESSED* = 0x00000000

+  DNS_REGISTER* = 0x00000001

+  DNS_UNREGISTER* = 0x00000002

+  CP_WINANSI* = 1004

+  CP_WINUNICODE* = 1200

+  #  Not convertable by H2PAS

+                              #  #define EXPENTRY CALLBACK

+  APPCLASS_STANDARD* = 0x00000000

+  # End of stuff from ddeml.h in old Cygnus headers

+

+  BKMODE_LAST* = 2

+  CTLCOLOR_MSGBOX* = 0

+  CTLCOLOR_EDIT* = 1

+  CTLCOLOR_LISTBOX* = 2

+  CTLCOLOR_BTN* = 3

+  CTLCOLOR_DLG* = 4

+  CTLCOLOR_SCROLLBAR* = 5

+  CTLCOLOR_STATIC* = 6

+  CTLCOLOR_MAX* = 7

+  META_SETMAPMODE* = 0x00000103

+  META_SETWINDOWORG* = 0x0000020B

+  META_SETWINDOWEXT* = 0x0000020C

+  POLYFILL_LAST* = 2

+  STATUS_WAIT_0* = 0x00000000

+  STATUS_ABANDONED_WAIT_0* = 0x00000080

+  STATUS_USER_APC* = 0x000000C0

+  STATUS_TIMEOUT* = 0x00000102

+  STATUS_PENDING* = 0x00000103

+  STATUS_GUARD_PAGE_VIOLATION* = 0x80000001

+  STATUS_DATATYPE_MISALIGNMENT* = 0x80000002

+  STATUS_BREAKPOINT* = 0x80000003

+  STATUS_SINGLE_STEP* = 0x80000004

+  STATUS_IN_PAGE_ERROR* = 0xC0000006

+  STATUS_INVALID_HANDLE* = 0xC0000008

+  STATUS_ILLEGAL_INSTRUCTION* = 0xC000001D

+  STATUS_NONCONTINUABLE_EXCEPTION* = 0xC0000025

+  STATUS_INVALID_DISPOSITION* = 0xC0000026

+  STATUS_ARRAY_BOUNDS_EXCEEDED* = 0xC000008C

+  STATUS_FLOAT_DENORMAL_OPERAND* = 0xC000008D

+  STATUS_FLOAT_DIVIDE_BY_ZERO* = 0xC000008E

+  STATUS_FLOAT_INEXACT_RESULT* = 0xC000008F

+  STATUS_FLOAT_INVALID_OPERATION* = 0xC0000090

+  STATUS_FLOAT_OVERFLOW* = 0xC0000091

+  STATUS_FLOAT_STACK_CHECK* = 0xC0000092

+  STATUS_FLOAT_UNDERFLOW* = 0xC0000093

+  STATUS_INTEGER_DIVIDE_BY_ZERO* = 0xC0000094

+  STATUS_INTEGER_OVERFLOW* = 0xC0000095

+  STATUS_PRIVILEGED_INSTRUCTION* = 0xC0000096

+  STATUS_STACK_OVERFLOW* = 0xC00000FD

+  STATUS_CONTROL_C_EXIT* = 0xC000013A

+  PROCESSOR_ARCHITECTURE_INTEL* = 0

+  PROCESSOR_ARCHITECTURE_MIPS* = 1

+  PROCESSOR_ARCHITECTURE_ALPHA* = 2

+  PROCESSOR_ARCHITECTURE_PPC* = 3

+

+const

+  SIZEFULLSCREEN* = SIZE_MAXIMIZED

+  SIZENORMAL* = SIZE_RESTORED

+  SIZEICONIC* = SIZE_MINIMIZED

+

+const

+  EXCEPTION_READ_FAULT* = 0   # Access violation was caused by a read

+  EXCEPTION_WRITE_FAULT* = 1  # Access violation was caused by a write

+

+when defined(cpuia64):

+  const

+    EXCEPTION_EXECUTE_FAULT* = 2 # Access violation was caused by an instruction fetch

+else:

+  const

+    EXCEPTION_EXECUTE_FAULT* = 8

+when defined(cpupowerpc32):

+  # ppc

+  const

+    CONTEXT_CONTROL* = 1

+    CONTEXT_FLOATING_POINT* = 2

+    CONTEXT_INTEGER* = 4

+    CONTEXT_DEBUG_REGISTERS* = 8

+    CONTEXT_FULL* = CONTEXT_CONTROL or CONTEXT_FLOATING_POINT or CONTEXT_INTEGER

+    CONTEXT_DEBUGGER* = CONTEXT_FULL

+when defined(cpui386):

+  # x86

+  # The doc refered me to winnt.h, so I had to look...

+  const

+    SIZE_OF_80387_REGISTERS* = 80 # Values for contextflags

+    CONTEXT_i386* = 0x00010000 # this assumes that i386 and

+    CONTEXT_i486* = 0x00010000 # i486 have identical context records

+    CONTEXT_CONTROL* = CONTEXT_i386 or 1 # SS:SP, CS:IP, FLAGS, BP

+    CONTEXT_INTEGER* = CONTEXT_i386 or 2 # AX, BX, CX, DX, SI, DI

+    CONTEXT_SEGMENTS* = CONTEXT_i386 or 4 # DS, ES, FS, GS

+    CONTEXT_FLOATING_POINT* = CONTEXT_i386 or 8 # 387 state

+    CONTEXT_DEBUG_REGISTERS* = CONTEXT_i386 or 0x00000010 # DB 0-3,6,7

+    CONTEXT_EXTENDED_REGISTERS* = CONTEXT_i386 or 0x00000020 # cpu specific extensions

+    CONTEXT_FULL* = (CONTEXT_CONTROL or CONTEXT_INTEGER) or CONTEXT_SEGMENTS

+    CONTEXT_ALL* = CONTEXT_FULL or CONTEXT_FLOATING_POINT or

+        CONTEXT_DEBUG_REGISTERS or CONTEXT_EXTENDED_REGISTERS # our own invention

+    FLAG_TRACE_BIT* = 0x00000100

+    CONTEXT_DEBUGGER* = CONTEXT_FULL or CONTEXT_FLOATING_POINT

+when defined(cpux86_64):

+  const

+    INITIAL_MXCSR* = 0x00001F80 # initial MXCSR value

+    INITIAL_FPCSR* = 0x0000027F # initial FPCSR value

+    CONTEXT_AMD64* = 0x00100000

+    CONTEXT_CONTROL* = (CONTEXT_AMD64 or 0x00000001)

+    CONTEXT_INTEGER* = (CONTEXT_AMD64 or 0x00000002)

+    CONTEXT_SEGMENTS* = (CONTEXT_AMD64 or 0x00000004)

+    CONTEXT_FLOATING_POINT* = (CONTEXT_AMD64 or 0x00000008)

+    CONTEXT_DEBUG_REGISTERS* = (CONTEXT_AMD64 or 0x00000010)

+    CONTEXT_FULL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_FLOATING_POINT

+    CONTEXT_ALL* = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or

+        CONTEXT_FLOATING_POINT or CONTEXT_DEBUG_REGISTERS

+    CONTEXT_EXCEPTION_ACTIVE* = 0x08000000

+    CONTEXT_SERVICE_ACTIVE* = 0x10000000

+    CONTEXT_EXCEPTION_REQUEST* = 0x40000000

+    CONTEXT_EXCEPTION_REPORTING* = 0x80000000

+

+const

+  FILTER_TEMP_DUPLICATE_ACCOUNT* = 0x00000001

+  FILTER_NORMAL_ACCOUNT* = 0x00000002

+  FILTER_INTERDOMAIN_TRUST_ACCOUNT* = 0x00000008

+  FILTER_WORKSTATION_TRUST_ACCOUNT* = 0x00000010

+  FILTER_SERVER_TRUST_ACCOUNT* = 0x00000020

+  LOGON32_LOGON_INTERACTIVE* = 0x00000002

+  LOGON32_LOGON_BATCH* = 0x00000004

+  LOGON32_LOGON_SERVICE* = 0x00000005

+  LOGON32_PROVIDER_DEFAULT* = 0x00000000

+  LOGON32_PROVIDER_WINNT35* = 0x00000001

+  QID_SYNC* = 0xFFFFFFFF

+  # Magic numbers in PE executable header.

+                              # e_magic field

+  IMAGE_DOS_SIGNATURE* = 0x00005A4D

+  # nt_signature field

+  IMAGE_NT_SIGNATURE* = 0x00004550

+  # Severity values

+  SEVERITY_SUCCESS* = 0

+  SEVERITY_ERROR* = 1

+  # Variant type codes (wtypes.h).

+                              #    Some, not all though

+  VT_EMPTY* = 0

+  VT_NULL* = 1

+  VT_I2* = 2

+  VT_I4* = 3

+  VT_R4* = 4

+  VT_R8* = 5

+  VT_BSTR* = 8

+  VT_ERROR* = 10

+  VT_BOOL* = 11

+  VT_UI1* = 17

+  VT_BYREF* = 0x00004000

+  VT_RESERVED* = 0x00008000

+

+const

+  # Define the facility codes

+  FACILITY_WINDOWS* = 8

+  FACILITY_STORAGE* = 3

+  FACILITY_RPC* = 1

+  FACILITY_SSPI* = 9

+  FACILITY_WIN32* = 7

+  FACILITY_CONTROL* = 10

+  FACILITY_NULL* = 0

+  FACILITY_INTERNET* = 12

+  FACILITY_ITF* = 4

+  FACILITY_DISPATCH* = 2

+  FACILITY_CERT* = 11         # Manually added, bug 2672

+  ICON_SMALL* = 0

+  ICON_BIG* = 1

+  # For the TrackMouseEvent

+  TME_HOVER* = 0x00000001

+  TME_LEAVE* = 0x00000002

+  TME_QUERY* = 0x40000000

+  TME_CANCEL* = DWORD(0x80000000)

+  HOVER_DEFAULT* = DWORD(0xFFFFFFFF) # Manually added, bug 3270

+  COLOR_HOTLIGHT* = 26

+  COLOR_GRADIENTACTIVECAPTION* = 27

+  COLOR_GRADIENTINACTIVECAPTION* = 28

+  COLOR_MENUHILIGHT* = 29

+  COLOR_MENUBAR* = 30

+  WM_APP* = 0x00008000

+  SYSRGN* = 4

+  UIS_SET* = 1

+  UIS_CLEAR* = 2

+  UIS_INITIALIZE* = 3

+  UISF_HIDEFOCUS* = 0x00000001

+  UISF_HIDEACCEL* = 0x00000002

+  UISF_ACTIVE* = 0x00000004

+

+type

+  # WARNING

+                              #      the variable argument list

+                              #      is not implemented for FPC

+                              #      va_list is just a dummy record

+                              #      MvdV: Nevertheless it should be a pointer type, not a record

+  va_list* = cstring

+  TABC* {.final, pure.} = object

+    abcA*: int32

+    abcB*: UINT

+    abcC*: int32

+

+  LPABC* = ptr TABC

+  PABC* = ptr TABC

+  TABCFLOAT* {.final, pure.} = object

+    abcfA*: float32

+    abcfB*: float32

+    abcfC*: float32

+  LPABCFLOAT* = ptr TABCFLOAT

+  PABCFLOAT* = ptr TABCFLOAT

+

+  TACCEL* {.final, pure.} = object

+    fVirt*: int8

+    key*: int16

+    cmd*: int16

+  LPACCEL* = ptr TACCEL

+  PACCEL* = ptr TACCEL

+  ACE_HEADER* {.final, pure.} = object

+    AceType*: int8

+    AceFlags*: int8

+    AceSize*: int16

+

+  TACE_HEADER* = ACE_HEADER

+  PACE_HEADER* = ptr ACE_HEADER

+  ACCESS_MASK* = DWORD

+  REGSAM* = ACCESS_MASK

+  ACCESS_ALLOWED_ACE* {.final, pure.} = object

+    Header*: ACE_HEADER

+    Mask*: ACCESS_MASK

+    SidStart*: DWORD

+

+  TACCESS_ALLOWED_ACE* = ACCESS_ALLOWED_ACE

+  PACCESS_ALLOWED_ACE* = ptr ACCESS_ALLOWED_ACE

+  ACCESS_DENIED_ACE* {.final, pure.} = object

+    Header*: ACE_HEADER

+    Mask*: ACCESS_MASK

+    SidStart*: DWORD

+

+  TACCESS_DENIED_ACE* = ACCESS_DENIED_ACE

+  ACCESSTIMEOUT* {.final, pure.} = object

+    cbSize*: UINT

+    dwFlags*: DWORD

+    iTimeOutMSec*: DWORD

+

+  TACCESSTIMEOUT* = ACCESSTIMEOUT

+  PACCESSTIMEOUT* = ptr ACCESSTIMEOUT

+  ACL* {.final, pure.} = object

+    AclRevision*: int8

+    Sbz1*: int8

+    AclSize*: int16

+    AceCount*: int16

+    Sbz2*: int16

+

+  PACL* = ptr ACL

+  TACL* = ACL

+  TACL_REVISION_INFORMATION* {.final, pure.} = object

+    AclRevision*: DWORD

+  PACLREVISIONINFORMATION* = ptr TACL_REVISION_INFORMATION

+

+  TACL_SIZE_INFORMATION* {.final, pure.} = object

+    AceCount*: DWORD

+    AclBytesInUse*: DWORD

+    AclBytesFree*: DWORD

+  PACLSIZEINFORMATION* = ptr TACL_SIZE_INFORMATION

+  ACTION_HEADER* {.final, pure.} = object

+    transport_id*: ULONG

+    action_code*: USHORT

+    reserved*: USHORT

+

+  TACTIONHEADER* = ACTION_HEADER

+  PACTIONHEADER* = ptr ACTION_HEADER

+  ADAPTER_STATUS* {.final, pure.} = object

+    adapter_address*: array[0..5, UCHAR]

+    rev_major*: UCHAR

+    reserved0*: UCHAR

+    adapter_type*: UCHAR

+    rev_minor*: UCHAR

+    duration*: int16

+    frmr_recv*: int16

+    frmr_xmit*: int16

+    iframe_recv_err*: int16

+    xmit_aborts*: int16

+    xmit_success*: DWORD

+    recv_success*: DWORD

+    iframe_xmit_err*: int16

+    recv_buff_unavail*: int16

+    t1_timeouts*: int16

+    ti_timeouts*: int16

+    reserved1*: DWORD

+    free_ncbs*: int16

+    max_cfg_ncbs*: int16

+    max_ncbs*: int16

+    xmit_buf_unavail*: int16

+    max_dgram_size*: int16

+    pending_sess*: int16

+    max_cfg_sess*: int16

+    max_sess*: int16

+    max_sess_pkt_size*: int16

+    name_count*: int16

+

+  TADAPTERSTATUS* = ADAPTER_STATUS

+  PADAPTERSTATUS* = ptr ADAPTER_STATUS

+  ADDJOB_INFO_1* {.final, pure.} = object

+    Path*: LPTSTR

+    JobId*: DWORD

+

+  TADDJOB_INFO_1* = ADDJOB_INFO_1

+  PADDJOB_INFO_1* = ptr ADDJOB_INFO_1

+  ANIMATIONINFO* {.final, pure.} = object

+    cbSize*: UINT

+    iMinAnimate*: int32

+

+  LPANIMATIONINFO* = ptr ANIMATIONINFO

+  TANIMATIONINFO* = ANIMATIONINFO

+  PANIMATIONINFO* = ptr ANIMATIONINFO

+

+  APPBARDATA* {.final, pure.} = object

+    cbSize*: DWORD

+    hWnd*: HWND

+    uCallbackMessage*: UINT

+    uEdge*: UINT

+    rc*: RECT

+    lParam*: LPARAM

+

+  TAppBarData* = APPBARDATA

+  PAppBarData* = ptr APPBARDATA

+  BITMAP* {.final, pure.} = object

+    bmType*: LONG

+    bmWidth*: LONG

+    bmHeight*: LONG

+    bmWidthBytes*: LONG

+    bmPlanes*: int16

+    bmBitsPixel*: int16

+    bmBits*: LPVOID

+

+  PBITMAP* = ptr BITMAP

+  NPBITMAP* = ptr BITMAP

+  LPBITMAP* = ptr BITMAP

+  TBITMAP* = BITMAP

+  BITMAPCOREHEADER* {.final, pure.} = object

+    bcSize*: DWORD

+    bcWidth*: int16

+    bcHeight*: int16

+    bcPlanes*: int16

+    bcBitCount*: int16

+

+  TBITMAPCOREHEADER* = BITMAPCOREHEADER

+  PBITMAPCOREHEADER* = ptr BITMAPCOREHEADER

+  RGBTRIPLE* {.final, pure.} = object

+    rgbtBlue*: int8

+    rgbtGreen*: int8

+    rgbtRed*: int8

+

+  TRGBTRIPLE* = RGBTRIPLE

+  PRGBTRIPLE* = ptr RGBTRIPLE

+  BITMAPCOREINFO* {.final, pure.} = object

+    bmciHeader*: BITMAPCOREHEADER

+    bmciColors*: array[0..0, RGBTRIPLE]

+

+  PBITMAPCOREINFO* = ptr BITMAPCOREINFO

+  LPBITMAPCOREINFO* = ptr BITMAPCOREINFO

+  TBITMAPCOREINFO* = BITMAPCOREINFO # error

+                                    #  WORD    bfReserved1;

+                                    #  WORD    bfReserved2;

+                                    # in declarator_list

+  BITMAPINFOHEADER* {.final, pure.} = object

+    biSize*: DWORD

+    biWidth*: LONG

+    biHeight*: LONG

+    biPlanes*: int16

+    biBitCount*: int16

+    biCompression*: DWORD

+    biSizeImage*: DWORD

+    biXPelsPerMeter*: LONG

+    biYPelsPerMeter*: LONG

+    biClrUsed*: DWORD

+    biClrImportant*: DWORD

+

+  LPBITMAPINFOHEADER* = ptr BITMAPINFOHEADER

+  TBITMAPINFOHEADER* = BITMAPINFOHEADER

+  PBITMAPINFOHEADER* = ptr BITMAPINFOHEADER

+  RGBQUAD* {.final, pure.} = object

+    rgbBlue*: int8

+    rgbGreen*: int8

+    rgbRed*: int8

+    rgbReserved*: int8

+

+  TRGBQUAD* = RGBQUAD

+  PRGBQUAD* = ptr RGBQUAD

+  BITMAPINFO* {.final, pure.} = object

+    bmiHeader*: BITMAPINFOHEADER

+    bmiColors*: array[0..0, RGBQUAD]

+

+  LPBITMAPINFO* = ptr BITMAPINFO

+  PBITMAPINFO* = ptr BITMAPINFO

+  TBITMAPINFO* = BITMAPINFO

+  FXPT2DOT30* = int32

+  LPFXPT2DOT30* = ptr FXPT2DOT30

+  TPFXPT2DOT30* = FXPT2DOT30

+  PPFXPT2DOT30* = ptr FXPT2DOT30

+  CIEXYZ* {.final, pure.} = object

+    ciexyzX*: FXPT2DOT30

+    ciexyzY*: FXPT2DOT30

+    ciexyzZ*: FXPT2DOT30

+

+  LPCIEXYZ* = ptr CIEXYZ

+  TPCIEXYZ* = CIEXYZ

+  PCIEXYZ* = ptr CIEXYZ

+  CIEXYZTRIPLE* {.final, pure.} = object

+    ciexyzRed*: CIEXYZ

+    ciexyzGreen*: CIEXYZ

+    ciexyzBlue*: CIEXYZ

+

+  LPCIEXYZTRIPLE* = ptr CIEXYZTRIPLE

+  TCIEXYZTRIPLE* = CIEXYZTRIPLE

+  PCIEXYZTRIPLE* = ptr CIEXYZTRIPLE

+  BITMAPV4HEADER* {.final, pure.} = object

+    bV4Size*: DWORD

+    bV4Width*: LONG

+    bV4Height*: LONG

+    bV4Planes*: int16

+    bV4BitCount*: int16

+    bV4V4Compression*: DWORD

+    bV4SizeImage*: DWORD

+    bV4XPelsPerMeter*: LONG

+    bV4YPelsPerMeter*: LONG

+    bV4ClrUsed*: DWORD

+    bV4ClrImportant*: DWORD

+    bV4RedMask*: DWORD

+    bV4GreenMask*: DWORD

+    bV4BlueMask*: DWORD

+    bV4AlphaMask*: DWORD

+    bV4CSType*: DWORD

+    bV4Endpoints*: CIEXYZTRIPLE

+    bV4GammaRed*: DWORD

+    bV4GammaGreen*: DWORD

+    bV4GammaBlue*: DWORD

+

+  LPBITMAPV4HEADER* = ptr BITMAPV4HEADER

+  TBITMAPV4HEADER* = BITMAPV4HEADER

+  PBITMAPV4HEADER* = ptr BITMAPV4HEADER

+  BITMAPFILEHEADER* {.final, pure.} = object

+    bfType*: int16

+    bfSize*: DWord

+    bfReserved1*: int16

+    bfReserved2*: int16

+    bfOffBits*: DWord

+

+  BLOB* {.final, pure.} = object

+    cbSize*: ULONG

+    pBlobData*: ptr int8

+

+  TBLOB* = BLOB

+  PBLOB* = ptr BLOB

+  SHITEMID* {.final, pure.} = object

+    cb*: USHORT

+    abID*: array[0..0, int8]

+

+  LPSHITEMID* = ptr SHITEMID

+  LPCSHITEMID* = ptr SHITEMID

+  TSHITEMID* = SHITEMID

+  PSHITEMID* = ptr SHITEMID

+  ITEMIDLIST* {.final, pure.} = object

+    mkid*: SHITEMID

+

+  LPITEMIDLIST* = ptr ITEMIDLIST

+  LPCITEMIDLIST* = ptr ITEMIDLIST

+  TITEMIDLIST* = ITEMIDLIST

+  PITEMIDLIST* = ptr ITEMIDLIST

+  BROWSEINFO* {.final, pure.} = object

+    hwndOwner*: HWND

+    pidlRoot*: LPCITEMIDLIST

+    pszDisplayName*: LPSTR

+    lpszTitle*: LPCSTR

+    ulFlags*: UINT

+    lpfn*: BFFCALLBACK

+    lParam*: LPARAM

+    iImage*: int32

+

+  LPBROWSEINFO* = ptr BROWSEINFO

+  Tbrowseinfo* = BROWSEINFO

+  PBROWSEINFO* = ptr BROWSEINFO

+

+  BY_HANDLE_FILE_INFORMATION* {.final, pure.} = object

+    dwFileAttributes*: DWORD

+    ftCreationTime*: FILETIME

+    ftLastAccessTime*: FILETIME

+    ftLastWriteTime*: FILETIME

+    dwVolumeSerialNumber*: DWORD

+    nFileSizeHigh*: DWORD

+    nFileSizeLow*: DWORD

+    nNumberOfLinks*: DWORD

+    nFileIndexHigh*: DWORD

+    nFileIndexLow*: DWORD

+

+  LPBY_HANDLE_FILE_INFORMATION* = ptr BY_HANDLE_FILE_INFORMATION

+  TBYHANDLEFILEINFORMATION* = BY_HANDLE_FILE_INFORMATION

+  PBYHANDLEFILEINFORMATION* = ptr BY_HANDLE_FILE_INFORMATION

+  FIXED* {.final, pure.} = object

+    fract*: int16

+    value*: SHORT

+

+  TFIXED* = FIXED

+  PFIXED* = ptr FIXED

+  POINTFX* {.final, pure.} = object

+    x*: FIXED

+    y*: FIXED

+

+  TPOINTFX* = POINTFX

+  PPOINTFX* = ptr POINTFX

+

+  TSmallPoint* {.final, pure.} = object

+    X*, Y*: SHORT

+

+  CANDIDATEFORM* {.final, pure.} = object

+    dwIndex*: DWORD

+    dwStyle*: DWORD

+    ptCurrentPos*: POINT

+    rcArea*: RECT

+

+  LPCANDIDATEFORM* = ptr CANDIDATEFORM

+  TCANDIDATEFORM* = CANDIDATEFORM

+  PCANDIDATEFORM* = ptr CANDIDATEFORM

+  CANDIDATELIST* {.final, pure.} = object

+    dwSize*: DWORD

+    dwStyle*: DWORD

+    dwCount*: DWORD

+    dwSelection*: DWORD

+    dwPageStart*: DWORD

+    dwPageSize*: DWORD

+    dwOffset*: array[0..0, DWORD]

+

+  LPCANDIDATELIST* = ptr CANDIDATELIST

+  TCANDIDATELIST* = CANDIDATELIST

+  PCANDIDATELIST* = ptr CANDIDATELIST

+  CREATESTRUCT* {.final, pure.} = object

+    lpCreateParams*: LPVOID

+    hInstance*: HINST

+    hMenu*: HMENU

+    hwndParent*: HWND

+    cy*: int32

+    cx*: int32

+    y*: int32

+    x*: int32

+    style*: LONG

+    lpszName*: LPCTSTR

+    lpszClass*: LPCTSTR

+    dwExStyle*: DWORD

+

+  LPCREATESTRUCT* = ptr CREATESTRUCT

+  TCREATESTRUCT* = CREATESTRUCT

+  PCREATESTRUCT* = ptr CREATESTRUCT

+  CBT_CREATEWND* {.final, pure.} = object

+    lpcs*: LPCREATESTRUCT

+    hwndInsertAfter*: HWND

+

+  TCBT_CREATEWND* = CBT_CREATEWND

+  PCBT_CREATEWND* = ptr CBT_CREATEWND

+  CBTACTIVATESTRUCT* {.final, pure.} = object

+    fMouse*: WINBOOL

+    hWndActive*: HWND

+

+  TCBTACTIVATESTRUCT* = CBTACTIVATESTRUCT

+  PCBTACTIVATESTRUCT* = ptr CBTACTIVATESTRUCT

+  CHAR_INFO* {.final, pure.} = object

+    UnicodeChar*: WCHAR

+    Attributes*: int16        # other union part: AsciiChar : CHAR

+

+  TCHAR_INFO* = CHAR_INFO

+  PCHAR_INFO* = ptr CHAR_INFO

+  CHARFORMAT* {.final, pure.} = object

+    cbSize*: UINT

+    dwMask*: DWORD

+    dwEffects*: DWORD

+    yHeight*: LONG

+    yOffset*: LONG

+    crTextColor*: COLORREF

+    bCharSet*: int8

+    bPitchAndFamily*: int8

+    szFaceName*: array[0..(LF_FACESIZE) - 1, TCHAR]

+

+  Tcharformat* = CHARFORMAT

+  Pcharformat* = ptr CHARFORMAT

+  CHARRANGE* {.final, pure.} = object

+    cpMin*: LONG

+    cpMax*: LONG

+

+  Tcharrange* = CHARRANGE

+  Pcharrange* = ptr CHARRANGE

+  CHARSET* {.final, pure.} = object

+    aflBlock*: array[0..2, DWORD]

+    flLang*: DWORD

+

+  TCHARSET* = CHARSET

+  PCHARSET* = ptr CHARSET

+  FONTSIGNATURE* {.final, pure.} = object

+    fsUsb*: array[0..3, DWORD]

+    fsCsb*: array[0..1, DWORD]

+

+  LPFONTSIGNATURE* = ptr FONTSIGNATURE

+  TFONTSIGNATURE* = FONTSIGNATURE

+  PFONTSIGNATURE* = ptr FONTSIGNATURE

+  CHARSETINFO* {.final, pure.} = object

+    ciCharset*: UINT

+    ciACP*: UINT

+    fs*: FONTSIGNATURE

+

+  LPCHARSETINFO* = ptr CHARSETINFO

+  TCHARSETINFO* = CHARSETINFO

+  PCHARSETINFO* = ptr CHARSETINFO

+  #CHOOSECOLOR = record confilcts with function ChooseColor

+  TCHOOSECOLOR* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hInstance*: HWND

+    rgbResult*: COLORREF

+    lpCustColors*: ptr COLORREF

+    Flags*: DWORD

+    lCustData*: LPARAM

+    lpfnHook*: LPCCHOOKPROC

+    lpTemplateName*: LPCTSTR

+

+  LPCHOOSECOLOR* = ptr TCHOOSECOLOR

+  PCHOOSECOLOR* = ptr TCHOOSECOLOR

+  LOGFONT* {.final, pure.} = object

+    lfHeight*: LONG

+    lfWidth*: LONG

+    lfEscapement*: LONG

+    lfOrientation*: LONG

+    lfWeight*: LONG

+    lfItalic*: int8

+    lfUnderline*: int8

+    lfStrikeOut*: int8

+    lfCharSet*: int8

+    lfOutPrecision*: int8

+    lfClipPrecision*: int8

+    lfQuality*: int8

+    lfPitchAndFamily*: int8

+    lfFaceName*: array[0..(LF_FACESIZE) - 1, TCHAR]

+

+  LPLOGFONT* = ptr LOGFONT

+  TLOGFONT* = LOGFONT

+  TLOGFONTA* = LOGFONT

+  PLOGFONT* = ptr LOGFONT

+  PLOGFONTA* = PLOGFONT

+  LOGFONTW* {.final, pure.} = object

+    lfHeight*: LONG

+    lfWidth*: LONG

+    lfEscapement*: LONG

+    lfOrientation*: LONG

+    lfWeight*: LONG

+    lfItalic*: int8

+    lfUnderline*: int8

+    lfStrikeOut*: int8

+    lfCharSet*: int8

+    lfOutPrecision*: int8

+    lfClipPrecision*: int8

+    lfQuality*: int8

+    lfPitchAndFamily*: int8

+    lfFaceName*: array[0..LF_FACESIZE - 1, WCHAR]

+

+  LPLOGFONTW* = ptr LOGFONTW

+  NPLOGFONTW* = ptr LOGFONTW

+  TLogFontW* = LOGFONTW

+  PLogFontW* = ptr TLogFontW

+  TCHOOSEFONT* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hDC*: HDC

+    lpLogFont*: LPLOGFONT

+    iPointSize*: WINT

+    Flags*: DWORD

+    rgbColors*: DWORD

+    lCustData*: LPARAM

+    lpfnHook*: LPCFHOOKPROC

+    lpTemplateName*: LPCTSTR

+    hInstance*: HINST

+    lpszStyle*: LPTSTR

+    nFontType*: int16

+    MISSING_ALIGNMENT*: int16

+    nSizeMin*: WINT

+    nSizeMax*: WINT

+

+  LPCHOOSEFONT* = ptr TCHOOSEFONT

+  PCHOOSEFONT* = ptr TCHOOSEFONT

+  CIDA* {.final, pure.} = object

+    cidl*: UINT

+    aoffset*: array[0..0, UINT]

+

+  LPIDA* = ptr CIDA

+  TIDA* = CIDA

+  PIDA* = ptr CIDA

+  CLIENTCREATESTRUCT* {.final, pure.} = object

+    hWindowMenu*: HANDLE

+    idFirstChild*: UINT

+

+  LPCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT

+  TCLIENTCREATESTRUCT* = CLIENTCREATESTRUCT

+  PCLIENTCREATESTRUCT* = ptr CLIENTCREATESTRUCT

+  CMINVOKECOMMANDINFO* {.final, pure.} = object

+    cbSize*: DWORD

+    fMask*: DWORD

+    hwnd*: HWND

+    lpVerb*: LPCSTR

+    lpParameters*: LPCSTR

+    lpDirectory*: LPCSTR

+    nShow*: int32

+    dwHotKey*: DWORD

+    hIcon*: HANDLE

+

+  LPCMINVOKECOMMANDINFO* = ptr CMINVOKECOMMANDINFO

+  TCMInvokeCommandInfo* = CMINVOKECOMMANDINFO

+  PCMInvokeCommandInfo* = ptr CMINVOKECOMMANDINFO

+  COLORADJUSTMENT* {.final, pure.} = object

+    caSize*: int16

+    caFlags*: int16

+    caIlluminantIndex*: int16

+    caRedGamma*: int16

+    caGreenGamma*: int16

+    caBlueGamma*: int16

+    caReferenceBlack*: int16

+    caReferenceWhite*: int16

+    caContrast*: SHORT

+    caBrightness*: SHORT

+    caColorfulness*: SHORT

+    caRedGreenTint*: SHORT

+

+  LPCOLORADJUSTMENT* = ptr COLORADJUSTMENT

+  TCOLORADJUSTMENT* = COLORADJUSTMENT

+  PCOLORADJUSTMENT* = ptr COLORADJUSTMENT

+  COLORMAP* {.final, pure.} = object

+    `from`*: COLORREF

+    `to`*: COLORREF          # XXX!

+

+  LPCOLORMAP* = ptr COLORMAP

+  TCOLORMAP* = COLORMAP

+  PCOLORMAP* = ptr COLORMAP

+  DCB* {.final, pure.} = object

+    DCBlength*: DWORD

+    BaudRate*: DWORD

+    flags*: DWORD

+    wReserved*: int16

+    XonLim*: int16

+    XoffLim*: int16

+    ByteSize*: int8

+    Parity*: int8

+    StopBits*: int8

+    XonChar*: char

+    XoffChar*: char

+    ErrorChar*: char

+    EofChar*: char

+    EvtChar*: char

+    wReserved1*: int16

+

+  LPDCB* = ptr DCB

+  TDCB* = DCB

+  PDCB* = ptr DCB

+

+const

+  bm_DCB_fBinary* = 0x00000001

+  bp_DCB_fBinary* = 0

+  bm_DCB_fParity* = 0x00000002

+  bp_DCB_fParity* = 1

+  bm_DCB_fOutxCtsFlow* = 0x00000004

+  bp_DCB_fOutxCtsFlow* = 2

+  bm_DCB_fOutxDsrFlow* = 0x00000008

+  bp_DCB_fOutxDsrFlow* = 3

+  bm_DCB_fDtrControl* = 0x00000030

+  bp_DCB_fDtrControl* = 4

+  bm_DCB_fDsrSensitivity* = 0x00000040

+  bp_DCB_fDsrSensitivity* = 6

+  bm_DCB_fTXContinueOnXoff* = 0x00000080

+  bp_DCB_fTXContinueOnXoff* = 7

+  bm_DCB_fOutX* = 0x00000100

+  bp_DCB_fOutX* = 8

+  bm_DCB_fInX* = 0x00000200

+  bp_DCB_fInX* = 9

+  bm_DCB_fErrorChar* = 0x00000400

+  bp_DCB_fErrorChar* = 10

+  bm_DCB_fNull* = 0x00000800

+  bp_DCB_fNull* = 11

+  bm_DCB_fRtsControl* = 0x00003000

+  bp_DCB_fRtsControl* = 12

+  bm_DCB_fAbortOnError* = 0x00004000

+  bp_DCB_fAbortOnError* = 14

+  bm_DCB_fDummy2* = 0xFFFF8000

+  bp_DCB_fDummy2* = 15

+

+proc fBinary*(a: var DCB): DWORD

+proc set_fBinary*(a: var DCB, fBinary: DWORD)

+proc fParity*(a: var DCB): DWORD

+proc set_fParity*(a: var DCB, fParity: DWORD)

+proc fOutxCtsFlow*(a: var DCB): DWORD

+proc set_fOutxCtsFlow*(a: var DCB, fOutxCtsFlow: DWORD)

+proc fOutxDsrFlow*(a: var DCB): DWORD

+proc set_fOutxDsrFlow*(a: var DCB, fOutxDsrFlow: DWORD)

+proc fDtrControl*(a: var DCB): DWORD

+proc set_fDtrControl*(a: var DCB, fDtrControl: DWORD)

+proc fDsrSensitivity*(a: var DCB): DWORD

+proc set_fDsrSensitivity*(a: var DCB, fDsrSensitivity: DWORD)

+proc fTXContinueOnXoff*(a: var DCB): DWORD

+proc set_fTXContinueOnXoff*(a: var DCB, fTXContinueOnXoff: DWORD)

+proc fOutX*(a: var DCB): DWORD

+proc set_fOutX*(a: var DCB, fOutX: DWORD)

+proc fInX*(a: var DCB): DWORD

+proc set_fInX*(a: var DCB, fInX: DWORD)

+proc fErrorChar*(a: var DCB): DWORD

+proc set_fErrorChar*(a: var DCB, fErrorChar: DWORD)

+proc fNull*(a: var DCB): DWORD

+proc set_fNull*(a: var DCB, fNull: DWORD)

+proc fRtsControl*(a: var DCB): DWORD

+proc set_fRtsControl*(a: var DCB, fRtsControl: DWORD)

+proc fAbortOnError*(a: var DCB): DWORD

+proc set_fAbortOnError*(a: var DCB, fAbortOnError: DWORD)

+proc fDummy2*(a: var DCB): DWORD

+proc set_fDummy2*(a: var DCB, fDummy2: DWORD)

+type

+  COMMCONFIG* {.final, pure.} = object

+    dwSize*: DWORD

+    wVersion*: int16

+    wReserved*: int16

+    dcb*: DCB

+    dwProviderSubType*: DWORD

+    dwProviderOffset*: DWORD

+    dwProviderSize*: DWORD

+    wcProviderData*: array[0..0, WCHAR]

+

+  LPCOMMCONFIG* = ptr COMMCONFIG

+  TCOMMCONFIG* = COMMCONFIG

+  PCOMMCONFIG* = ptr COMMCONFIG

+  COMMPROP* {.final, pure.} = object

+    wPacketLength*: int16

+    wPacketVersion*: int16

+    dwServiceMask*: DWORD

+    dwReserved1*: DWORD

+    dwMaxTxQueue*: DWORD

+    dwMaxRxQueue*: DWORD

+    dwMaxBaud*: DWORD

+    dwProvSubType*: DWORD

+    dwProvCapabilities*: DWORD

+    dwSettableParams*: DWORD

+    dwSettableBaud*: DWORD

+    wSettableData*: int16

+    wSettableStopParity*: int16

+    dwCurrentTxQueue*: DWORD

+    dwCurrentRxQueue*: DWORD

+    dwProvSpec1*: DWORD

+    dwProvSpec2*: DWORD

+    wcProvChar*: array[0..0, WCHAR]

+

+  LPCOMMPROP* = ptr COMMPROP

+  TCOMMPROP* = COMMPROP

+  PCOMMPROP* = ptr COMMPROP

+  COMMTIMEOUTS* {.final, pure.} = object

+    ReadIntervalTimeout*: DWORD

+    ReadTotalTimeoutMultiplier*: DWORD

+    ReadTotalTimeoutConstant*: DWORD

+    WriteTotalTimeoutMultiplier*: DWORD

+    WriteTotalTimeoutConstant*: DWORD

+

+  LPCOMMTIMEOUTS* = ptr COMMTIMEOUTS

+  TCOMMTIMEOUTS* = COMMTIMEOUTS

+  PCOMMTIMEOUTS* = ptr COMMTIMEOUTS

+  COMPAREITEMSTRUCT* {.final, pure.} = object

+    CtlType*: UINT

+    CtlID*: UINT

+    hwndItem*: HWND

+    itemID1*: UINT

+    itemData1*: ULONG_PTR

+    itemID2*: UINT

+    itemData2*: ULONG_PTR

+

+  TCOMPAREITEMSTRUCT* = COMPAREITEMSTRUCT

+  PCOMPAREITEMSTRUCT* = ptr COMPAREITEMSTRUCT

+  COMPCOLOR* {.final, pure.} = object

+    crText*: COLORREF

+    crBackground*: COLORREF

+    dwEffects*: DWORD

+

+  TCOMPCOLOR* = COMPCOLOR

+  PCOMPCOLOR* = ptr COMPCOLOR

+  COMPOSITIONFORM* {.final, pure.} = object

+    dwStyle*: DWORD

+    ptCurrentPos*: POINT

+    rcArea*: RECT

+

+  LPCOMPOSITIONFORM* = ptr COMPOSITIONFORM

+  TCOMPOSITIONFORM* = COMPOSITIONFORM

+  PCOMPOSITIONFORM* = ptr COMPOSITIONFORM #     TComStatFlags = set of (fCtsHold, fDsrHold, fRlsdHold , fXoffHold ,

+                                          #                    fXoffSent , fEof ,  fTxim  , fReserved);

+  COMSTAT* {.final, pure.} = object

+    flag0*: DWORD             # can't use tcomstatflags, set packing issues

+                              # and conflicts with macro's

+    cbInQue*: DWORD

+    cbOutQue*: DWORD

+

+  LPCOMSTAT* = ptr COMSTAT

+  TCOMSTAT* = COMSTAT

+  PCOMSTAT* = ptr COMSTAT

+

+const

+  bm_COMSTAT_fCtsHold* = 0x00000001

+  bp_COMSTAT_fCtsHold* = 0

+  bm_COMSTAT_fDsrHold* = 0x00000002

+  bp_COMSTAT_fDsrHold* = 1

+  bm_COMSTAT_fRlsdHold* = 0x00000004

+  bp_COMSTAT_fRlsdHold* = 2

+  bm_COMSTAT_fXoffHold* = 0x00000008

+  bp_COMSTAT_fXoffHold* = 3

+  bm_COMSTAT_fXoffSent* = 0x00000010

+  bp_COMSTAT_fXoffSent* = 4

+  bm_COMSTAT_fEof* = 0x00000020

+  bp_COMSTAT_fEof* = 5

+  bm_COMSTAT_fTxim* = 0x00000040

+  bp_COMSTAT_fTxim* = 6

+  bm_COMSTAT_fReserved* = 0xFFFFFF80

+  bp_COMSTAT_fReserved* = 7

+

+proc fCtsHold*(a: var COMSTAT): DWORD

+  # should be renamed to get_<x>?

+proc set_fCtsHold*(a: var COMSTAT, fCtsHold: DWORD)

+proc fDsrHold*(a: var COMSTAT): DWORD

+proc set_fDsrHold*(a: var COMSTAT, fDsrHold: DWORD)

+proc fRlsdHold*(a: var COMSTAT): DWORD

+proc set_fRlsdHold*(a: var COMSTAT, fRlsdHold: DWORD)

+proc fXoffHold*(a: var COMSTAT): DWORD

+proc set_fXoffHold*(a: var COMSTAT, fXoffHold: DWORD)

+proc fXoffSent*(a: var COMSTAT): DWORD

+proc set_fXoffSent*(a: var COMSTAT, fXoffSent: DWORD)

+proc fEof*(a: var COMSTAT): DWORD

+proc set_fEof*(a: var COMSTAT, fEof: DWORD)

+proc fTxim*(a: var COMSTAT): DWORD

+proc set_fTxim*(a: var COMSTAT, fTxim: DWORD)

+proc fReserved*(a: var COMSTAT): DWORD

+proc set_fReserved*(a: var COMSTAT, fReserved: DWORD)

+type

+  CONSOLE_CURSOR_INFO* {.final, pure.} = object

+    dwSize*: DWORD

+    bVisible*: WINBOOL

+

+  PCONSOLE_CURSOR_INFO* = ptr CONSOLE_CURSOR_INFO

+  TCONSOLECURSORINFO* = CONSOLE_CURSOR_INFO

+  TCURSORINFO* = CONSOLE_CURSOR_INFO

+  COORD* {.final, pure.} = object

+    X*: SHORT

+    Y*: SHORT

+

+  TCOORD* = COORD

+  PCOORD* = ptr COORD

+  SMALL_RECT* {.final, pure.} = object

+    Left*: SHORT

+    Top*: SHORT

+    Right*: SHORT

+    Bottom*: SHORT

+

+  TSMALL_RECT* = SMALL_RECT

+  PSMALL_RECT* = ptr SMALL_RECT

+  CONSOLE_SCREEN_BUFFER_INFO* {.final, pure.} = object

+    dwSize*: COORD

+    dwCursorPosition*: COORD

+    wAttributes*: int16

+    srWindow*: SMALL_RECT

+    dwMaximumWindowSize*: COORD

+

+  PCONSOLE_SCREEN_BUFFER_INFO* = ptr CONSOLE_SCREEN_BUFFER_INFO

+  TCONSOLESCREENBUFFERINFO* = CONSOLE_SCREEN_BUFFER_INFO

+

+when defined(i386):

+  type

+    FLOATING_SAVE_AREA* {.final, pure.} = object

+      ControlWord*: DWORD

+      StatusWord*: DWORD

+      TagWord*: DWORD

+      ErrorOffset*: DWORD

+      ErrorSelector*: DWORD

+      DataOffset*: DWORD

+      DataSelector*: DWORD

+      RegisterArea*: array[0..79, int8]

+      Cr0NpxState*: DWORD

+

+    TFLOATINGSAVEAREA* = FLOATING_SAVE_AREA

+    PFLOATINGSAVEAREA* = ptr FLOATING_SAVE_AREA

+    CONTEXT* {.final, pure.} = object

+      ContextFlags*: DWORD

+      Dr0*: DWORD

+      Dr1*: DWORD

+      Dr2*: DWORD

+      Dr3*: DWORD

+      Dr6*: DWORD

+      Dr7*: DWORD

+      FloatSave*: FLOATING_SAVE_AREA

+      SegGs*: DWORD

+      SegFs*: DWORD

+      SegEs*: DWORD

+      SegDs*: DWORD

+      Edi*: DWORD

+      Esi*: DWORD

+      Ebx*: DWORD

+      Edx*: DWORD

+      Ecx*: DWORD

+      Eax*: DWORD

+      Ebp*: DWORD

+      Eip*: DWORD

+      SegCs*: DWORD

+      EFlags*: DWORD

+      Esp*: DWORD

+      SegSs*: DWORD

+

+when defined(x86_64):

+  #

+  # Define 128-bit 16-byte aligned xmm register type.

+  #

+  type

+    M128A* {.final, pure.} = object

+      Low*: ULONGLONG

+      High*: LONGLONG

+

+    TM128A* = M128A

+    PM128A* = TM128A #

+  type

+                     # Format of data for 32-bit fxsave/fxrstor instructions.

+                     #

+                     #typedef struct _XMM_SAVE_AREA32 {

+    XMM_SAVE_AREA32* {.final, pure.} = object

+      ControlWord*: int16

+      StatusWord*: int16

+      TagWord*: int8

+      Reserved1*: int8

+      ErrorOpcode*: int16

+      ErrorOffset*: DWORD

+      ErrorSelector*: int16

+      Reserved2*: int16

+      DataOffset*: DWORD

+      DataSelector*: int16

+      Reserved3*: int16

+      MxCsr*: DWORD

+      MxCsr_Mask*: DWORD

+      FloatRegisters*: array[0..7, M128A]

+      XmmRegisters*: array[0..16, M128A]

+      Reserved4*: array[0..95, int8]

+

+    TXmmSaveArea* = XMM_SAVE_AREA32

+    PXmmSaveArea* = ptr TXmmSaveArea

+  type

+    CONTEXT* {.final, pure.} = object

+      P1Home*: DWORD64

+      P2Home*: DWORD64

+      P3Home*: DWORD64

+      P4Home*: DWORD64

+      P5Home*: DWORD64

+      P6Home*: DWORD64        #

+                              # Control flags.

+                              #

+      ContextFlags*: DWORD

+      MxCsr*: DWORD           #

+                              # Segment Registers and processor flags.

+                              #

+      SegCs*: int16

+      SegDs*: int16

+      SegEs*: int16

+      SegFs*: int16

+      SegGs*: int16

+      SegSs*: int16

+      EFlags*: DWORD          #

+                              # Debug registers

+                              #

+      Dr0*: DWORD64

+      Dr1*: DWORD64

+      Dr2*: DWORD64

+      Dr3*: DWORD64

+      Dr6*: DWORD64

+      Dr7*: DWORD64           #

+                              # Integer registers.

+                              #

+      Rax*: DWORD64

+      Rcx*: DWORD64

+      Rdx*: DWORD64

+      Rbx*: DWORD64

+      Rsp*: DWORD64

+      Rbp*: DWORD64

+      Rsi*: DWORD64

+      Rdi*: DWORD64

+      R8*: DWORD64

+      R9*: DWORD64

+      R10*: DWORD64

+      R11*: DWORD64

+      R12*: DWORD64

+      R13*: DWORD64

+      R14*: DWORD64

+      R15*: DWORD64           #

+                              # Program counter.

+                              #

+      Rip*: DWORD64           #

+                              # Floating point state.

+                              #

+      FltSave*: XMM_SAVE_AREA32 # MWE: only translated the FltSave part of the union

+                                #

+                                # Vector registers.

+                                #

+      VectorRegister*: array[0..25, M128A]

+      VectorControl*: DWORD64 #

+                              # Special debug control registers.

+                              #

+      DebugControl*: DWORD64

+      LastBranchToRip*: DWORD64

+      LastBranchFromRip*: DWORD64

+      LastExceptionToRip*: DWORD64

+      LastExceptionFromRip*: DWORD64

+

+when defined(powerpc32):

+  # ppc

+  # Floating point registers returned when CONTEXT_FLOATING_POINT is set

+  # Integer registers returned when CONTEXT_INTEGER is set.

+  # Condition register

+  # Fixed point exception register

+  # The following are set when CONTEXT_CONTROL is set.

+  # Machine status register

+  # Instruction address register

+  # Link register

+  # Control register

+  # Control which context values are returned

+  # Registers returned if CONTEXT_DEBUG_REGISTERS is set.

+  # Breakpoint Register 1

+  # Breakpoint Register 2

+  # Breakpoint Register 3

+  # Breakpoint Register 4

+  # Breakpoint Register 5

+  # Breakpoint Register 6

+  # Debug Status Register

+  # Debug Control Register

+  type

+    CONTEXT* {.final, pure.} = object

+      Fpr0*: float64

+      Fpr1*: float64

+      Fpr2*: float64

+      Fpr3*: float64

+      Fpr4*: float64

+      Fpr5*: float64

+      Fpr6*: float64

+      Fpr7*: float64

+      Fpr8*: float64

+      Fpr9*: float64

+      Fpr10*: float64

+      Fpr11*: float64

+      Fpr12*: float64

+      Fpr13*: float64

+      Fpr14*: float64

+      Fpr15*: float64

+      Fpr16*: float64

+      Fpr17*: float64

+      Fpr18*: float64

+      Fpr19*: float64

+      Fpr20*: float64

+      Fpr21*: float64

+      Fpr22*: float64

+      Fpr23*: float64

+      Fpr24*: float64

+      Fpr25*: float64

+      Fpr26*: float64

+      Fpr27*: float64

+      Fpr28*: float64

+      Fpr29*: float64

+      Fpr30*: float64

+      Fpr31*: float64

+      Fpscr*: float64

+      Gpr0*: DWORD

+      Gpr1*: DWORD

+      Gpr2*: DWORD

+      Gpr3*: DWORD

+      Gpr4*: DWORD

+      Gpr5*: DWORD

+      Gpr6*: DWORD

+      Gpr7*: DWORD

+      Gpr8*: DWORD

+      Gpr9*: DWORD

+      Gpr10*: DWORD

+      Gpr11*: DWORD

+      Gpr12*: DWORD

+      Gpr13*: DWORD

+      Gpr14*: DWORD

+      Gpr15*: DWORD

+      Gpr16*: DWORD

+      Gpr17*: DWORD

+      Gpr18*: DWORD

+      Gpr19*: DWORD

+      Gpr20*: DWORD

+      Gpr21*: DWORD

+      Gpr22*: DWORD

+      Gpr23*: DWORD

+      Gpr24*: DWORD

+      Gpr25*: DWORD

+      Gpr26*: DWORD

+      Gpr27*: DWORD

+      Gpr28*: DWORD

+      Gpr29*: DWORD

+      Gpr30*: DWORD

+      Gpr31*: DWORD

+      Cr*: DWORD

+      Xer*: DWORD

+      Msr*: DWORD

+      Iar*: DWORD

+      Lr*: DWORD

+      Ctr*: DWORD

+      ContextFlags*: DWORD

+      Fill*: array[0..2, DWORD]

+      Dr0*: DWORD

+      Dr1*: DWORD

+      Dr2*: DWORD

+      Dr3*: DWORD

+      Dr4*: DWORD

+      Dr5*: DWORD

+      Dr6*: DWORD

+      Dr7*: DWORD

+

+type

+  LPCONTEXT* = ptr CONTEXT

+  TCONTEXT* = CONTEXT

+  PCONTEXT* = ptr CONTEXT

+

+type

+  LIST_ENTRY* {.final, pure.} = object

+    Flink*: ptr LIST_ENTRY

+    Blink*: ptr LIST_ENTRY

+

+  TLISTENTRY* = LIST_ENTRY

+  PLISTENTRY* = ptr LIST_ENTRY

+  CRITICAL_SECTION_DEBUG* {.final, pure.} = object

+    `type`*: int16

+    CreatorBackTraceIndex*: int16

+    CriticalSection*: ptr TCRITICAL_SECTION

+    ProcessLocksList*: LIST_ENTRY

+    EntryCount*: DWORD

+    ContentionCount*: DWORD

+    Depth*: DWORD

+    OwnerBackTrace*: array[0..4, PVOID]

+

+  TRTL_CRITICAL_SECTION* {.final, pure.} = object

+    DebugInfo*: ptr CRITICAL_SECTION_DEBUG

+    LockCount*: int32

+    RecursionCount*: int32

+    OwningThread*: Handle

+    LockSemaphore*: Handle

+    Reserved*: DWORD

+

+  PRTLCriticalSection* = ptr TRTLCriticalSection

+

+  LPCRITICAL_SECTION_DEBUG* = ptr CRITICAL_SECTION_DEBUG

+  PCRITICAL_SECTION_DEBUG* = ptr CRITICAL_SECTION_DEBUG

+  TCRITICALSECTIONDEBUG* = CRITICAL_SECTION_DEBUG

+  TCRITICAL_SECTION* = TRTLCriticalSection

+  PCRITICAL_SECTION* = PRTLCriticalSection

+  LPCRITICAL_SECTION* = PRTLCriticalSection

+  SECURITY_QUALITY_OF_SERVICE* {.final, pure.} = object

+    len*: DWORD

+    ImpersonationLevel*: SECURITY_IMPERSONATION_LEVEL

+    ContextTrackingMode*: WINBOOL

+    EffectiveOnly*: bool

+

+  PSECURITY_QUALITY_OF_SERVICE* = ptr SECURITY_QUALITY_OF_SERVICE

+  TSECURITYQUALITYOFSERVICE* = SECURITY_QUALITY_OF_SERVICE

+  CONVCONTEXT* {.final, pure.} = object

+    cb*: UINT

+    wFlags*: UINT

+    wCountryID*: UINT

+    iCodePage*: int32

+    dwLangID*: DWORD

+    dwSecurity*: DWORD

+    qos*: SECURITY_QUALITY_OF_SERVICE

+

+  TCONVCONTEXT* = CONVCONTEXT

+  PCONVCONTEXT* = ptr CONVCONTEXT

+  CONVINFO* {.final, pure.} = object

+    cb*: DWORD

+    hUser*: DWORD

+    hConvPartner*: HCONV

+    hszSvcPartner*: HSZ

+    hszServiceReq*: HSZ

+    hszTopic*: HSZ

+    hszItem*: HSZ

+    wFmt*: UINT

+    wType*: UINT

+    wStatus*: UINT

+    wConvst*: UINT

+    wLastError*: UINT

+    hConvList*: HCONVLIST

+    ConvCtxt*: CONVCONTEXT

+    hwnd*: HWND

+    hwndPartner*: HWND

+

+  TCONVINFO* = CONVINFO

+  PCONVINFO* = ptr CONVINFO

+  COPYDATASTRUCT* {.final, pure.} = object

+    dwData*: DWORD

+    cbData*: DWORD

+    lpData*: PVOID

+

+  TCOPYDATASTRUCT* = COPYDATASTRUCT

+  PCOPYDATASTRUCT* = ptr COPYDATASTRUCT

+  CPINFO* {.final, pure.} = object

+    MaxCharSize*: UINT

+    DefaultChar*: array[0..(MAX_DEFAULTCHAR) - 1, int8]

+    LeadByte*: array[0..(MAX_LEADBYTES) - 1, int8]

+

+  LPCPINFO* = ptr CPINFO

+  Tcpinfo* = CPINFO

+  Pcpinfo* = ptr CPINFO

+  CPLINFO* {.final, pure.} = object

+    idIcon*: int32

+    idName*: int32

+    idInfo*: int32

+    lData*: LONG

+

+  TCPLINFO* = CPLINFO

+  PCPLINFO* = ptr CPLINFO

+  CREATE_PROCESS_DEBUG_INFO* {.final, pure.} = object

+    hFile*: HANDLE

+    hProcess*: HANDLE

+    hThread*: HANDLE

+    lpBaseOfImage*: LPVOID

+    dwDebugInfoFileOffset*: DWORD

+    nDebugInfoSize*: DWORD

+    lpThreadLocalBase*: LPVOID

+    lpStartAddress*: LPTHREAD_START_ROUTINE

+    lpImageName*: LPVOID

+    fUnicode*: int16

+

+  TCREATEPROCESSDEBUGINFO* = CREATE_PROCESS_DEBUG_INFO

+  PCREATEPROCESSDEBUGINFO* = ptr CREATE_PROCESS_DEBUG_INFO

+  CREATE_THREAD_DEBUG_INFO* {.final, pure.} = object

+    hThread*: HANDLE

+    lpThreadLocalBase*: LPVOID

+    lpStartAddress*: LPTHREAD_START_ROUTINE

+

+  TCREATETHREADDEBUGINFO* = CREATE_THREAD_DEBUG_INFO

+  PCREATETHREADDEBUGINFO* = ptr CREATE_THREAD_DEBUG_INFO

+  #

+                                                         #   TODO: sockets

+                                                         #  typedef struct _SOCKET_ADDRESS {

+                                                         #    LPSOCKADDR lpSockaddr ;

+                                                         #    INT iSockaddrLength ;

+                                                         #  } SOCKET_ADDRESS,  PSOCKET_ADDRESS,  LPSOCKET_ADDRESS;

+                                                         #   }

+                                                         #  {

+                                                         #  typedef struct _CSADDR_INFO {

+                                                         #    SOCKET_ADDRESS  LocalAddr;

+                                                         #    SOCKET_ADDRESS  RemoteAddr;

+                                                         #    INT             iSocketType;

+                                                         #    INT             iProtocol;

+                                                         #  } CSADDR_INFO;

+                                                         #

+  CURRENCYFMT* {.final, pure.} = object

+    NumDigits*: UINT

+    LeadingZero*: UINT

+    Grouping*: UINT

+    lpDecimalSep*: LPTSTR

+    lpThousandSep*: LPTSTR

+    NegativeOrder*: UINT

+    PositiveOrder*: UINT

+    lpCurrencySymbol*: LPTSTR

+

+  Tcurrencyfmt* = CURRENCYFMT

+  Pcurrencyfmt* = ptr CURRENCYFMT

+  CURSORSHAPE* {.final, pure.} = object

+    xHotSpot*: int32

+    yHotSpot*: int32

+    cx*: int32

+    cy*: int32

+    cbWidth*: int32

+    Planes*: int8

+    BitsPixel*: int8

+

+  LPCURSORSHAPE* = ptr CURSORSHAPE

+  TCURSORSHAPE* = CURSORSHAPE

+  PCURSORSHAPE* = ptr CURSORSHAPE

+  CWPRETSTRUCT* {.final, pure.} = object

+    lResult*: LRESULT

+    lParam*: LPARAM

+    wParam*: WPARAM

+    message*: DWORD

+    hwnd*: HWND

+

+  TCWPRETSTRUCT* = CWPRETSTRUCT

+  PCWPRETSTRUCT* = ptr CWPRETSTRUCT

+  CWPSTRUCT* {.final, pure.} = object

+    lParam*: LPARAM

+    wParam*: WPARAM

+    message*: UINT

+    hwnd*: HWND

+

+  TCWPSTRUCT* = CWPSTRUCT

+  PCWPSTRUCT* = ptr CWPSTRUCT

+  DATATYPES_INFO_1* {.final, pure.} = object

+    pName*: LPTSTR

+

+  TDATATYPESINFO1* = DATATYPES_INFO_1

+  PDATATYPESINFO1* = ptr DATATYPES_INFO_1

+  DDEACK* {.final, pure.} = object

+    flag0*: int16

+

+  TDDEACK* = DDEACK

+  PDDEACK* = ptr DDEACK

+

+const

+  bm_DDEACK_bAppReturnCode* = 0x000000FF'i16

+  bp_DDEACK_bAppReturnCode* = 0'i16

+  bm_DDEACK_reserved* = 0x00003F00'i16

+  bp_DDEACK_reserved* = 8'i16

+  bm_DDEACK_fBusy* = 0x00004000'i16

+  bp_DDEACK_fBusy* = 14'i16

+  bm_DDEACK_fAck* = 0x00008000'i16

+  bp_DDEACK_fAck* = 15'i16

+

+proc bAppReturnCode*(a: var DDEACK): int16

+proc set_bAppReturnCode*(a: var DDEACK, bAppReturnCode: int16)

+proc reserved*(a: var DDEACK): int16

+proc set_reserved*(a: var DDEACK, reserved: int16)

+proc fBusy*(a: var DDEACK): int16

+proc set_fBusy*(a: var DDEACK, fBusy: int16)

+proc fAck*(a: var DDEACK): int16

+proc set_fAck*(a: var DDEACK, fAck: int16)

+type

+  DDEADVISE* {.final, pure.} = object

+    flag0*: int16

+    cfFormat*: SHORT

+

+  TDDEADVISE* = DDEADVISE

+  PDDEADVISE* = ptr DDEADVISE

+

+const

+  bm_DDEADVISE_reserved* = 0x00003FFF'i16

+  bp_DDEADVISE_reserved* = 0'i16

+  bm_DDEADVISE_fDeferUpd* = 0x00004000'i16

+  bp_DDEADVISE_fDeferUpd* = 14'i16

+  bm_DDEADVISE_fAckReq* = 0x00008000'i16

+  bp_DDEADVISE_fAckReq* = 15'i16

+

+proc reserved*(a: var DDEADVISE): int16

+proc set_reserved*(a: var DDEADVISE, reserved: int16)

+proc fDeferUpd*(a: var DDEADVISE): int16

+proc set_fDeferUpd*(a: var DDEADVISE, fDeferUpd: int16)

+proc fAckReq*(a: var DDEADVISE): int16

+proc set_fAckReq*(a: var DDEADVISE, fAckReq: int16)

+type

+  DDEDATA* {.final, pure.} = object

+    flag0*: int16

+    cfFormat*: SHORT

+    Value*: array[0..0, int8]

+

+  PDDEDATA* = ptr DDEDATA

+

+const

+  bm_DDEDATA_unused* = 0x00000FFF'i16

+  bp_DDEDATA_unused* = 0'i16

+  bm_DDEDATA_fResponse* = 0x00001000'i16

+  bp_DDEDATA_fResponse* = 12'i16

+  bm_DDEDATA_fRelease* = 0x00002000'i16

+  bp_DDEDATA_fRelease* = 13'i16

+  bm_DDEDATA_reserved* = 0x00004000'i16

+  bp_DDEDATA_reserved* = 14'i16

+  bm_DDEDATA_fAckReq* = 0x00008000'i16

+  bp_DDEDATA_fAckReq* = 15'i16

+

+proc unused*(a: var DDEDATA): int16

+proc set_unused*(a: var DDEDATA, unused: int16)

+proc fResponse*(a: var DDEDATA): int16

+proc set_fResponse*(a: var DDEDATA, fResponse: int16)

+proc fRelease*(a: var DDEDATA): int16

+proc set_fRelease*(a: var DDEDATA, fRelease: int16)

+proc reserved*(a: var DDEDATA): int16

+proc set_reserved*(a: var DDEDATA, reserved: int16)

+proc fAckReq*(a: var DDEDATA): int16

+proc set_fAckReq*(a: var DDEDATA, fAckReq: int16)

+type

+  DDELN* {.final, pure.} = object

+    flag0*: int16

+    cfFormat*: SHORT

+

+  TDDELN* = DDELN

+  PDDELN* = ptr DDELN

+

+const

+  bm_DDELN_unused* = 0x00001FFF'i16

+  bp_DDELN_unused* = 0'i16

+  bm_DDELN_fRelease* = 0x00002000'i16

+  bp_DDELN_fRelease* = 13'i16

+  bm_DDELN_fDeferUpd* = 0x00004000'i16

+  bp_DDELN_fDeferUpd* = 14'i16

+  bm_DDELN_fAckReq* = 0x00008000'i16

+  bp_DDELN_fAckReq* = 15'i16

+

+proc unused*(a: var DDELN): int16

+proc set_unused*(a: var DDELN, unused: int16)

+proc fRelease*(a: var DDELN): int16

+proc set_fRelease*(a: var DDELN, fRelease: int16)

+proc fDeferUpd*(a: var DDELN): int16

+proc set_fDeferUpd*(a: var DDELN, fDeferUpd: int16)

+proc fAckReq*(a: var DDELN): int16

+proc set_fAckReq*(a: var DDELN, fAckReq: int16)

+type

+  DDEML_MSG_HOOK_DATA* {.final, pure.} = object

+    uiLo*: UINT

+    uiHi*: UINT

+    cbData*: DWORD

+    Data*: array[0..7, DWORD]

+

+  TDDEMLMSGHOOKDATA* = DDEML_MSG_HOOK_DATA

+  PDDEMLMSGHOOKDATA* = ptr DDEML_MSG_HOOK_DATA

+  DDEPOKE* {.final, pure.} = object

+    flag0*: int16

+    cfFormat*: SHORT

+    Value*: array[0..0, int8]

+

+  TDDEPOKE* = DDEPOKE

+  PDDEPOKE* = ptr DDEPOKE

+

+const

+  bm_DDEPOKE_unused* = 0x00001FFF'i16

+  bp_DDEPOKE_unused* = 0'i16

+  bm_DDEPOKE_fRelease* = 0x00002000'i16

+  bp_DDEPOKE_fRelease* = 13'i16

+  bm_DDEPOKE_fReserved* = 0x0000C000'i16

+  bp_DDEPOKE_fReserved* = 14'i16

+

+proc unused*(a: var DDEPOKE): int16

+proc set_unused*(a: var DDEPOKE, unused: int16)

+proc fRelease*(a: var DDEPOKE): int16

+proc set_fRelease*(a: var DDEPOKE, fRelease: int16)

+proc fReserved*(a: var DDEPOKE): int16

+proc set_fReserved*(a: var DDEPOKE, fReserved: int16)

+type

+  DDEUP* {.final, pure.} = object

+    flag0*: int16

+    cfFormat*: SHORT

+    rgb*: array[0..0, int8]

+

+  TDDEUP* = DDEUP

+  PDDEUP* = ptr DDEUP

+

+const

+  bm_DDEUP_unused* = 0x00000FFF'i16

+  bp_DDEUP_unused* = 0'i16

+  bm_DDEUP_fAck* = 0x00001000'i16

+  bp_DDEUP_fAck* = 12'i16

+  bm_DDEUP_fRelease* = 0x00002000'i16

+  bp_DDEUP_fRelease* = 13'i16

+  bm_DDEUP_fReserved* = 0x00004000'i16

+  bp_DDEUP_fReserved* = 14'i16

+  bm_DDEUP_fAckReq* = 0x00008000'i16

+  bp_DDEUP_fAckReq* = 15'i16

+

+proc unused*(a: var DDEUP): int16

+proc set_unused*(a: var DDEUP, unused: int16)

+proc fAck*(a: var DDEUP): int16

+proc set_fAck*(a: var DDEUP, fAck: int16)

+proc fRelease*(a: var DDEUP): int16

+proc set_fRelease*(a: var DDEUP, fRelease: int16)

+proc fReserved*(a: var DDEUP): int16

+proc set_fReserved*(a: var DDEUP, fReserved: int16)

+proc fAckReq*(a: var DDEUP): int16

+proc set_fAckReq*(a: var DDEUP, fAckReq: int16)

+type

+  EXCEPTION_RECORD* {.final, pure.} = object

+    ExceptionCode*: DWORD

+    ExceptionFlags*: DWORD

+    ExceptionRecord*: ptr EXCEPTION_RECORD

+    ExceptionAddress*: PVOID

+    NumberParameters*: DWORD

+    ExceptionInformation*: array[0..(EXCEPTION_MAXIMUM_PARAMETERS) - 1,

+                                 ULONG_PTR]

+

+  PEXCEPTION_RECORD* = ptr EXCEPTION_RECORD

+  TEXCEPTIONRECORD* = EXCEPTION_RECORD

+  EXCEPTION_DEBUG_INFO* {.final, pure.} = object

+    ExceptionRecord*: EXCEPTION_RECORD

+    dwFirstChance*: DWORD

+

+  PEXCEPTION_DEBUG_INFO* = ptr EXCEPTION_DEBUG_INFO

+  TEXCEPTIONDEBUGINFO* = EXCEPTION_DEBUG_INFO

+  EXCEPTION_RECORD32* {.final, pure.} = object

+    ExceptionCode*: DWORD

+    ExceptionFlags*: DWORD

+    ExceptionRecord*: DWORD

+    ExceptionAddress*: DWORD

+    NumberParameters*: DWORD

+    ExceptionInformation*: array[0..(EXCEPTION_MAXIMUM_PARAMETERS) - 1, DWORD]

+

+  PEXCEPTION_RECORD32* = ptr EXCEPTION_RECORD32

+  TExceptionRecord32* = EXCEPTION_RECORD32

+  EXCEPTION_DEBUG_INFO32* {.final, pure.} = object

+    ExceptionRecord*: EXCEPTION_RECORD32

+    dwFirstChance*: DWORD

+

+  PEXCEPTION_DEBUG_INFO32* = ptr EXCEPTION_DEBUG_INFO32

+  TExceptionDebugInfo32* = EXCEPTION_DEBUG_INFO32

+  EXCEPTION_RECORD64* {.final, pure.} = object

+    ExceptionCode*: DWORD

+    ExceptionFlags*: DWORD

+    ExceptionRecord*: DWORD64

+    ExceptionAddress*: DWORD64

+    NumberParameters*: DWORD

+    unusedAlignment*: DWORD

+    ExceptionInformation*: array[0..(EXCEPTION_MAXIMUM_PARAMETERS) - 1, DWORD64]

+

+  PEXCEPTION_RECORD64* = ptr EXCEPTION_RECORD64

+  TExceptionRecord64* = EXCEPTION_RECORD64

+  EXCEPTION_DEBUG_INFO64* {.final, pure.} = object

+    ExceptionRecord*: EXCEPTION_RECORD64

+    dwFirstChance*: DWORD

+

+  PEXCEPTION_DEBUG_INFO64* = ptr EXCEPTION_DEBUG_INFO64

+  TExceptionDebugInfo64* = EXCEPTION_DEBUG_INFO64

+  EXIT_PROCESS_DEBUG_INFO* {.final, pure.} = object

+    dwExitCode*: DWORD

+

+  TEXITPROCESSDEBUGINFO* = EXIT_PROCESS_DEBUG_INFO

+  PEXITPROCESSDEBUGINFO* = ptr EXIT_PROCESS_DEBUG_INFO

+  EXIT_THREAD_DEBUG_INFO* {.final, pure.} = object

+    dwExitCode*: DWORD

+

+  TEXITTHREADDEBUGINFO* = EXIT_THREAD_DEBUG_INFO

+  PEXITTHREADDEBUGINFO* = ptr EXIT_THREAD_DEBUG_INFO

+  LOAD_DLL_DEBUG_INFO* {.final, pure.} = object

+    hFile*: HANDLE

+    lpBaseOfDll*: LPVOID

+    dwDebugInfoFileOffset*: DWORD

+    nDebugInfoSize*: DWORD

+    lpImageName*: LPVOID

+    fUnicode*: int16

+

+  TLOADDLLDEBUGINFO* = LOAD_DLL_DEBUG_INFO

+  PLOADDLLDEBUGINFO* = ptr LOAD_DLL_DEBUG_INFO

+  UNLOAD_DLL_DEBUG_INFO* {.final, pure.} = object

+    lpBaseOfDll*: LPVOID

+

+  TUNLOADDLLDEBUGINFO* = UNLOAD_DLL_DEBUG_INFO

+  PUNLOADDLLDEBUGINFO* = ptr UNLOAD_DLL_DEBUG_INFO

+  OUTPUT_DEBUG_STRING_INFO* {.final, pure.} = object

+    lpDebugStringData*: LPSTR

+    fUnicode*: int16

+    nDebugStringLength*: int16

+

+  TOUTPUTDEBUGSTRINGINFO* = OUTPUT_DEBUG_STRING_INFO

+  POUTPUTDEBUGSTRINGINFO* = ptr OUTPUT_DEBUG_STRING_INFO

+  RIP_INFO* {.final, pure.} = object

+    dwError*: DWORD

+    dwType*: DWORD

+

+  TRIPINFO* = RIP_INFO

+  PRIPINFO* = ptr RIP_INFO

+  DEBUG_EVENT* {.final, pure.} = object

+    dwDebugEventCode*: DWORD

+    dwProcessId*: DWORD

+    dwThreadId*: DWORD

+    data*: array[0..15, DWORD] #

+                               # case longint of

+                               # 0 : ( Exception : EXCEPTION_DEBUG_INFO );

+                               # 1 : ( CreateThread : CREATE_THREAD_DEBUG_INFO );

+                               # 2 : ( CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO );

+                               # 3 : ( ExitThread : EXIT_THREAD_DEBUG_INFO );

+                               # 4 : ( ExitProcess : EXIT_PROCESS_DEBUG_INFO );

+                               # 5 : ( LoadDll : LOAD_DLL_DEBUG_INFO );

+                               # 6 : ( UnloadDll : UNLOAD_DLL_DEBUG_INFO );

+                               # 7 : ( DebugString : OUTPUT_DEBUG_STRING_INFO );

+                               # 8 : ( RipInfo : RIP_INFO );

+

+  LPDEBUG_EVENT* = ptr DEBUG_EVENT

+  TDEBUGEVENT* = DEBUG_EVENT

+  PDEBUGEVENT* = ptr DEBUG_EVENT

+  DEBUGHOOKINFO* {.final, pure.} = object

+    idThread*: DWORD

+    idThreadInstaller*: DWORD

+    lParam*: LPARAM

+    wParam*: WPARAM

+    code*: int32

+

+  TDEBUGHOOKINFO* = DEBUGHOOKINFO

+  PDEBUGHOOKINFO* = ptr DEBUGHOOKINFO

+  DELETEITEMSTRUCT* {.final, pure.} = object

+    CtlType*: UINT

+    CtlID*: UINT

+    itemID*: UINT

+    hwndItem*: HWND

+    itemData*: ULONG_PTR

+

+  TDELETEITEMSTRUCT* = DELETEITEMSTRUCT

+  PDELETEITEMSTRUCT* = ptr DELETEITEMSTRUCT

+  DEV_BROADCAST_HDR* {.final, pure.} = object

+    dbch_size*: ULONG

+    dbch_devicetype*: ULONG

+    dbch_reserved*: ULONG

+

+  PDEV_BROADCAST_HDR* = ptr DEV_BROADCAST_HDR

+  TDEVBROADCASTHDR* = DEV_BROADCAST_HDR

+  DEV_BROADCAST_OEM* {.final, pure.} = object

+    dbco_size*: ULONG

+    dbco_devicetype*: ULONG

+    dbco_reserved*: ULONG

+    dbco_identifier*: ULONG

+    dbco_suppfunc*: ULONG

+

+  PDEV_BROADCAST_OEM* = ptr DEV_BROADCAST_OEM

+  TDEVBROADCASTOEM* = DEV_BROADCAST_OEM

+  DEV_BROADCAST_PORT* {.final, pure.} = object

+    dbcp_size*: ULONG

+    dbcp_devicetype*: ULONG

+    dbcp_reserved*: ULONG

+    dbcp_name*: array[0..0, char]

+

+  PDEV_BROADCAST_PORT* = ptr DEV_BROADCAST_PORT

+  TDEVBROADCASTPORT* = DEV_BROADCAST_PORT

+  DEV_BROADCAST_USERDEFINED* {.final, pure.} = object

+    dbud_dbh*: DEV_BROADCAST_HDR

+    dbud_szName*: array[0..0, char]

+    dbud_rgbUserDefined*: array[0..0, int8]

+

+  TDEVBROADCASTUSERDEFINED* = DEV_BROADCAST_USERDEFINED

+  PDEVBROADCASTUSERDEFINED* = ptr DEV_BROADCAST_USERDEFINED

+  DEV_BROADCAST_VOLUME* {.final, pure.} = object

+    dbcv_size*: ULONG

+    dbcv_devicetype*: ULONG

+    dbcv_reserved*: ULONG

+    dbcv_unitmask*: ULONG

+    dbcv_flags*: USHORT

+

+  PDEV_BROADCAST_VOLUME* = ptr DEV_BROADCAST_VOLUME

+  TDEVBROADCASTVOLUME* = DEV_BROADCAST_VOLUME

+  DEVMODE* {.final, pure.} = object

+    dmDeviceName*: array[0..(CCHDEVICENAME) - 1, BCHAR]

+    dmSpecVersion*: int16

+    dmDriverVersion*: int16

+    dmSize*: int16

+    dmDriverExtra*: int16

+    dmFields*: DWORD

+    dmOrientation*: int16

+    dmPaperSize*: int16

+    dmPaperLength*: int16

+    dmPaperWidth*: int16

+    dmScale*: int16

+    dmCopies*: int16

+    dmDefaultSource*: int16

+    dmPrintQuality*: int16

+    dmColor*: int16

+    dmDuplex*: int16

+    dmYResolution*: int16

+    dmTTOption*: int16

+    dmCollate*: int16

+    dmFormName*: array[0..(CCHFORMNAME) - 1, BCHAR]

+    dmLogPixels*: int16

+    dmBitsPerPel*: DWORD

+    dmPelsWidth*: DWORD

+    dmPelsHeight*: DWORD

+    dmDisplayFlags*: DWORD

+    dmDisplayFrequency*: DWORD

+    dmICMMethod*: DWORD

+    dmICMIntent*: DWORD

+    dmMediaType*: DWORD

+    dmDitherType*: DWORD

+    dmICCManufacturer*: DWORD

+    dmICCModel*: DWORD        # other union part:

+                              # dmPosition: POINTL;

+                              # dmDisplayOrientation: DWORD;

+                              # dmDisplayFixedOutput: DWORD;

+

+  LPDEVMODE* = ptr DEVMODE

+  devicemode* = DEVMODE

+  tdevicemode* = DEVMODE

+  tdevicemodeA* = DEVMODE

+  PDeviceModeA* = LPDEVMODE

+  PDeviceMode* = LPDEVMODE

+  TDEVMODE* = DEVMODE

+  PDEVMODE* = LPDEVMODE

+  devmodeW* {.final, pure.} = object

+    dmDeviceName*: array[0..CCHDEVICENAME - 1, WCHAR]

+    dmSpecVersion*: int16

+    dmDriverVersion*: int16

+    dmSize*: int16

+    dmDriverExtra*: int16

+    dmFields*: DWORD

+    dmOrientation*: short

+    dmPaperSize*: short

+    dmPaperLength*: short

+    dmPaperWidth*: short

+    dmScale*: short

+    dmCopies*: short

+    dmDefaultSource*: short

+    dmPrintQuality*: short

+    dmColor*: short

+    dmDuplex*: short

+    dmYResolution*: short

+    dmTTOption*: short

+    dmCollate*: short

+    dmFormName*: array[0..CCHFORMNAME - 1, wchar]

+    dmLogPixels*: int16

+    dmBitsPerPel*: DWORD

+    dmPelsWidth*: DWORD

+    dmPelsHeight*: DWORD

+    dmDisplayFlags*: DWORD

+    dmDisplayFrequency*: DWORD

+    dmICMMethod*: DWORD

+    dmICMIntent*: DWORD

+    dmMediaType*: DWORD

+    dmDitherType*: DWORD

+    dmReserved1*: DWORD

+    dmReserved2*: DWORD

+    dmPanningWidth*: DWORD

+    dmPanningHeight*: DWORD

+

+  LPDEVMODEW* = ptr DEVMODEW

+  devicemodeW* = DEVMODEW

+  TDeviceModeW* = DEVMODEW

+  PDeviceModeW* = LPDEVMODEW

+  TDEVMODEW* = DEVMODEW

+  PDEVMODEW* = LPDEVMODEW

+  DEVNAMES* {.final, pure.} = object

+    wDriverOffset*: int16

+    wDeviceOffset*: int16

+    wOutputOffset*: int16

+    wDefault*: int16

+

+  LPDEVNAMES* = ptr DEVNAMES

+  TDEVNAMES* = DEVNAMES

+  PDEVNAMES* = ptr DEVNAMES

+  DIBSECTION* {.final, pure.} = object

+    dsBm*: BITMAP

+    dsBmih*: BITMAPINFOHEADER

+    dsBitfields*: array[0..2, DWORD]

+    dshSection*: HANDLE

+    dsOffset*: DWORD

+

+  TDIBSECTION* = DIBSECTION

+  PDIBSECTION* = ptr DIBSECTION #

+                                #     LARGE_INTEGER = record

+                                #        case byte of

+                                #          0: (LowPart : DWORD;

+                                #              HighPart : LONG);

+                                #          1: (QuadPart : LONGLONG);

+                                #       end;     ULARGE_INTEGER = record

+                                #        case byte of

+                                #          0: (LowPart : DWORD;

+                                #              HighPart : DWORD);

+                                #          1: (QuadPart : LONGLONG);

+                                #       end;

+                                #

+  LARGE_INTEGER* = int64

+  ULARGE_INTEGER* = int64

+  PLARGE_INTEGER* = ptr LARGE_INTEGER

+  TLargeInteger* = Int64

+  PULARGE_INTEGER* = ptr ULARGE_INTEGER

+  TULargeInteger* = int64

+  DISK_GEOMETRY* {.final, pure.} = object

+    Cylinders*: LARGE_INTEGER

+    MediaType*: MEDIA_TYPE

+    TracksPerCylinder*: DWORD

+    SectorsPerTrack*: DWORD

+    BytesPerSector*: DWORD

+

+  TDISKGEOMETRY* = DISK_GEOMETRY

+  PDISKGEOMETRY* = ptr DISK_GEOMETRY

+  DISK_PERFORMANCE* {.final, pure.} = object

+    BytesRead*: LARGE_INTEGER

+    BytesWritten*: LARGE_INTEGER

+    ReadTime*: LARGE_INTEGER

+    WriteTime*: LARGE_INTEGER

+    ReadCount*: DWORD

+    WriteCount*: DWORD

+    QueueDepth*: DWORD

+

+  TDISKPERFORMANCE* = DISK_PERFORMANCE

+  PDISKPERFORMANCE* = ptr DISK_PERFORMANCE

+  DLGITEMTEMPLATE* {.final, pure.} = object

+    style*: DWORD

+    dwExtendedStyle*: DWORD

+    x*: int16

+    y*: int16

+    cx*: int16

+    cy*: int16

+    id*: int16

+

+  LPDLGITEMTEMPLATE* = ptr DLGITEMTEMPLATE

+  TDLGITEMTEMPLATE* = DLGITEMTEMPLATE

+  PDLGITEMTEMPLATE* = ptr DLGITEMTEMPLATE

+  DLGTEMPLATE* {.final, pure.} = object

+    style*: DWORD

+    dwExtendedStyle*: DWORD

+    cdit*: int16

+    x*: int16

+    y*: int16

+    cx*: int16

+    cy*: int16

+

+  LPDLGTEMPLATE* = ptr DLGTEMPLATE

+  LPCDLGTEMPLATE* = ptr DLGTEMPLATE

+  TDLGTEMPLATE* = DLGTEMPLATE

+  PDLGTEMPLATE* = ptr DLGTEMPLATE

+  DOC_INFO_1* {.final, pure.} = object

+    pDocName*: LPTSTR

+    pOutputFile*: LPTSTR

+    pDatatype*: LPTSTR

+

+  TDOCINFO1* = DOC_INFO_1

+  PDOCINFO1* = ptr DOC_INFO_1

+  DOC_INFO_2* {.final, pure.} = object

+    pDocName*: LPTSTR

+    pOutputFile*: LPTSTR

+    pDatatype*: LPTSTR

+    dwMode*: DWORD

+    JobId*: DWORD

+

+  TDOCINFO2* = DOC_INFO_2

+  PDOCINFO2* = ptr DOC_INFO_2

+  DOCINFO* {.final, pure.} = object

+    cbSize*: int32

+    lpszDocName*: LPCTSTR

+    lpszOutput*: LPCTSTR

+    lpszDatatype*: LPCTSTR

+    fwType*: DWORD

+

+  TDOCINFO* = DOCINFO

+  TDOCINFOA* = DOCINFO

+  PDOCINFO* = ptr DOCINFO

+  DRAGLISTINFO* {.final, pure.} = object

+    uNotification*: UINT

+    hWnd*: HWND

+    ptCursor*: POINT

+

+  LPDRAGLISTINFO* = ptr DRAGLISTINFO

+  TDRAGLISTINFO* = DRAGLISTINFO

+  PDRAGLISTINFO* = ptr DRAGLISTINFO

+  DRAWITEMSTRUCT* {.final, pure.} = object

+    CtlType*: UINT

+    CtlID*: UINT

+    itemID*: UINT

+    itemAction*: UINT

+    itemState*: UINT

+    hwndItem*: HWND

+    hDC*: HDC

+    rcItem*: RECT

+    itemData*: ULONG_PTR

+

+  LPDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT

+  TDRAWITEMSTRUCT* = DRAWITEMSTRUCT

+  PDRAWITEMSTRUCT* = ptr DRAWITEMSTRUCT

+  DRAWTEXTPARAMS* {.final, pure.} = object

+    cbSize*: UINT

+    iTabLength*: int32

+    iLeftMargin*: int32

+    iRightMargin*: int32

+    uiLengthDrawn*: UINT

+

+  LPDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS

+  TDRAWTEXTPARAMS* = DRAWTEXTPARAMS

+  PDRAWTEXTPARAMS* = ptr DRAWTEXTPARAMS

+  PARTITION_INFORMATION* {.final, pure.} = object

+    PartitionType*: int8

+    BootIndicator*: bool

+    RecognizedPartition*: bool

+    RewritePartition*: bool

+    StartingOffset*: LARGE_INTEGER

+    PartitionLength*: LARGE_INTEGER

+    HiddenSectors*: LARGE_INTEGER

+

+  TPARTITIONINFORMATION* = PARTITION_INFORMATION

+  PPARTITIONINFORMATION* = ptr PARTITION_INFORMATION

+  DRIVE_LAYOUT_INFORMATION* {.final, pure.} = object

+    PartitionCount*: DWORD

+    Signature*: DWORD

+    PartitionEntry*: array[0..0, PARTITION_INFORMATION]

+

+  TDRIVELAYOUTINFORMATION* = DRIVE_LAYOUT_INFORMATION

+  PDRIVELAYOUTINFORMATION* = ptr DRIVE_LAYOUT_INFORMATION

+  DRIVER_INFO_1* {.final, pure.} = object

+    pName*: LPTSTR

+

+  TDRIVERINFO1* = DRIVER_INFO_1

+  PDRIVERINFO1* = ptr DRIVER_INFO_1

+  DRIVER_INFO_2* {.final, pure.} = object

+    cVersion*: DWORD

+    pName*: LPTSTR

+    pEnvironment*: LPTSTR

+    pDriverPath*: LPTSTR

+    pDataFile*: LPTSTR

+    pConfigFile*: LPTSTR

+

+  TDRIVERINFO2* = DRIVER_INFO_2

+  PDRIVERINFO2* = ptr DRIVER_INFO_2

+  DRIVER_INFO_3* {.final, pure.} = object

+    cVersion*: DWORD

+    pName*: LPTSTR

+    pEnvironment*: LPTSTR

+    pDriverPath*: LPTSTR

+    pDataFile*: LPTSTR

+    pConfigFile*: LPTSTR

+    pHelpFile*: LPTSTR

+    pDependentFiles*: LPTSTR

+    pMonitorName*: LPTSTR

+    pDefaultDataType*: LPTSTR

+

+  TDRIVERINFO3* = DRIVER_INFO_3

+  PDRIVERINFO3* = ptr DRIVER_INFO_3

+  EDITSTREAM* {.final, pure.} = object

+    dwCookie*: DWORD

+    dwError*: DWORD

+    pfnCallback*: EDITSTREAMCALLBACK

+

+  Teditstream* = EDITSTREAM

+  Peditstream* = ptr EDITSTREAM

+  EMR* {.final, pure.} = object

+    iType*: DWORD

+    nSize*: DWORD

+

+  TEMR* = EMR

+  PEMR* = ptr EMR

+  EMRANGLEARC* {.final, pure.} = object

+    emr*: EMR

+    ptlCenter*: POINTL

+    nRadius*: DWORD

+    eStartAngle*: float32

+    eSweepAngle*: float32

+

+  TEMRANGLEARC* = EMRANGLEARC

+  PEMRANGLEARC* = ptr EMRANGLEARC

+  EMRARC* {.final, pure.} = object

+    emr*: EMR

+    rclBox*: RECTL

+    ptlStart*: POINTL

+    ptlEnd*: POINTL

+

+  TEMRARC* = EMRARC

+  PEMRARC* = ptr EMRARC

+  EMRARCTO* = EMRARC

+  TEMRARCTO* = EMRARC

+  PEMRARCTO* = ptr EMRARC

+  EMRCHORD* = EMRARC

+  TEMRCHORD* = EMRARC

+  PEMRCHORD* = ptr EMRARC

+  EMRPIE* = EMRARC

+  TEMRPIE* = EMRARC

+  PEMRPIE* = ptr EMRARC

+  XFORM* {.final, pure.} = object

+    eM11*: float32

+    eM12*: float32

+    eM21*: float32

+    eM22*: float32

+    eDx*: float32

+    eDy*: float32

+

+  LPXFORM* = ptr XFORM

+  TXFORM* = XFORM

+  PXFORM* = ptr XFORM

+  EMRBITBLT* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    xDest*: LONG

+    yDest*: LONG

+    cxDest*: LONG

+    cyDest*: LONG

+    dwRop*: DWORD

+    xSrc*: LONG

+    ySrc*: LONG

+    xformSrc*: XFORM

+    crBkColorSrc*: COLORREF

+    iUsageSrc*: DWORD

+    offBmiSrc*: DWORD

+    offBitsSrc*: DWORD

+    cbBitsSrc*: DWORD

+

+  TEMRBITBLT* = EMRBITBLT

+  PEMRBITBLT* = ptr EMRBITBLT

+  LOGBRUSH* {.final, pure.} = object

+    lbStyle*: UINT

+    lbColor*: COLORREF

+    lbHatch*: LONG

+

+  TLOGBRUSH* = LOGBRUSH

+  PLOGBRUSH* = ptr LOGBRUSH

+  EMRCREATEBRUSHINDIRECT* {.final, pure.} = object

+    emr*: EMR

+    ihBrush*: DWORD

+    lb*: LOGBRUSH

+

+  TEMRCREATEBRUSHINDIRECT* = EMRCREATEBRUSHINDIRECT

+  PEMRCREATEBRUSHINDIRECT* = ptr EMRCREATEBRUSHINDIRECT

+  LCSCSTYPE* = LONG

+  LCSGAMUTMATCH* = LONG

+  LOGCOLORSPACE* {.final, pure.} = object

+    lcsSignature*: DWORD

+    lcsVersion*: DWORD

+    lcsSize*: DWORD

+    lcsCSType*: LCSCSTYPE

+    lcsIntent*: LCSGAMUTMATCH

+    lcsEndpoints*: CIEXYZTRIPLE

+    lcsGammaRed*: DWORD

+    lcsGammaGreen*: DWORD

+    lcsGammaBlue*: DWORD

+    lcsFilename*: array[0..(MAX_PATH) - 1, TCHAR]

+

+  LPLOGCOLORSPACE* = ptr LOGCOLORSPACE

+  TLOGCOLORSPACE* = LOGCOLORSPACE

+  TLOGCOLORSPACEA* = LOGCOLORSPACE

+  PLOGCOLORSPACE* = ptr LOGCOLORSPACE

+  EMRCREATECOLORSPACE* {.final, pure.} = object

+    emr*: EMR

+    ihCS*: DWORD

+    lcs*: LOGCOLORSPACE

+

+  TEMRCREATECOLORSPACE* = EMRCREATECOLORSPACE

+  PEMRCREATECOLORSPACE* = ptr EMRCREATECOLORSPACE

+  EMRCREATEDIBPATTERNBRUSHPT* {.final, pure.} = object

+    emr*: EMR

+    ihBrush*: DWORD

+    iUsage*: DWORD

+    offBmi*: DWORD

+    cbBmi*: DWORD

+    offBits*: DWORD

+    cbBits*: DWORD

+

+  TEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT

+  PEMRCREATEDIBPATTERNBRUSHPT* = EMRCREATEDIBPATTERNBRUSHPT

+  EMRCREATEMONOBRUSH* {.final, pure.} = object

+    emr*: EMR

+    ihBrush*: DWORD

+    iUsage*: DWORD

+    offBmi*: DWORD

+    cbBmi*: DWORD

+    offBits*: DWORD

+    cbBits*: DWORD

+

+  TEMRCREATEMONOBRUSH* = EMRCREATEMONOBRUSH

+  PEMRCREATEMONOBRUSH* = ptr EMRCREATEMONOBRUSH

+  PALETTEENTRY* {.final, pure.} = object

+    peRed*: int8

+    peGreen*: int8

+    peBlue*: int8

+    peFlags*: int8

+

+  LPPALETTEENTRY* = ptr PALETTEENTRY

+  TPALETTEENTRY* = PALETTEENTRY

+  PPALETTEENTRY* = ptr PALETTEENTRY

+  LOGPALETTE* {.final, pure.} = object

+    palVersion*: int16

+    palNumEntries*: int16

+    palPalEntry*: array[0..0, PALETTEENTRY]

+

+  LPLOGPALETTE* = ptr LOGPALETTE

+  NPLOGPALETTE* = ptr LOGPALETTE

+  TLOGPALETTE* = LOGPALETTE

+  PLOGPALETTE* = ptr LOGPALETTE

+  EMRCREATEPALETTE* {.final, pure.} = object

+    emr*: EMR

+    ihPal*: DWORD

+    lgpl*: LOGPALETTE

+

+  TEMRCREATEPALETTE* = EMRCREATEPALETTE

+  PEMRCREATEPALETTE* = ptr EMRCREATEPALETTE

+  LOGPEN* {.final, pure.} = object

+    lopnStyle*: UINT

+    lopnWidth*: POINT

+    lopnColor*: COLORREF

+

+  TLOGPEN* = LOGPEN

+  PLOGPEN* = ptr LOGPEN

+  EMRCREATEPEN* {.final, pure.} = object

+    emr*: EMR

+    ihPen*: DWORD

+    lopn*: LOGPEN

+

+  TEMRCREATEPEN* = EMRCREATEPEN

+  PEMRCREATEPEN* = ptr EMRCREATEPEN

+  EMRELLIPSE* {.final, pure.} = object

+    emr*: EMR

+    rclBox*: RECTL

+

+  TEMRELLIPSE* = EMRELLIPSE

+  PEMRELLIPSE* = ptr EMRELLIPSE

+  EMRRECTANGLE* = EMRELLIPSE

+  TEMRRECTANGLE* = EMRELLIPSE

+  PEMRRECTANGLE* = ptr EMRELLIPSE

+  EMREOF* {.final, pure.} = object

+    emr*: EMR

+    nPalEntries*: DWORD

+    offPalEntries*: DWORD

+    nSizeLast*: DWORD

+

+  TEMREOF* = EMREOF

+  PEMREOF* = ptr EMREOF

+  EMREXCLUDECLIPRECT* {.final, pure.} = object

+    emr*: EMR

+    rclClip*: RECTL

+

+  TEMREXCLUDECLIPRECT* = EMREXCLUDECLIPRECT

+  PEMREXCLUDECLIPRECT* = ptr EMREXCLUDECLIPRECT

+  EMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT

+  TEMRINTERSECTCLIPRECT* = EMREXCLUDECLIPRECT

+  PEMRINTERSECTCLIPRECT* = ptr EMREXCLUDECLIPRECT

+  PANOSE* {.final, pure.} = object

+    bFamilyType*: int8

+    bSerifStyle*: int8

+    bWeight*: int8

+    bProportion*: int8

+    bContrast*: int8

+    bStrokeVariation*: int8

+    bArmStyle*: int8

+    bLetterform*: int8

+    bMidline*: int8

+    bXHeight*: int8

+

+  TPANOSE* = PANOSE

+  PPANOSE* = ptr PANOSE

+  EXTLOGFONT* {.final, pure.} = object

+    elfLogFont*: LOGFONT

+    elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR]

+    elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR]

+    elfVersion*: DWORD

+    elfStyleSize*: DWORD

+    elfMatch*: DWORD

+    elfReserved*: DWORD

+    elfVendorId*: array[0..(ELF_VENDOR_SIZE) - 1, int8]

+    elfCulture*: DWORD

+    elfPanose*: PANOSE

+

+  TEXTLOGFONT* = EXTLOGFONT

+  PEXTLOGFONT* = ptr EXTLOGFONT

+  EMREXTCREATEFONTINDIRECTW* {.final, pure.} = object

+    emr*: EMR

+    ihFont*: DWORD

+    elfw*: EXTLOGFONT

+

+  TEMREXTCREATEFONTINDIRECTW* = EMREXTCREATEFONTINDIRECTW

+  PEMREXTCREATEFONTINDIRECTW* = ptr EMREXTCREATEFONTINDIRECTW

+  EXTLOGPEN* {.final, pure.} = object

+    elpPenStyle*: UINT

+    elpWidth*: UINT

+    elpBrushStyle*: UINT

+    elpColor*: COLORREF

+    elpHatch*: LONG

+    elpNumEntries*: DWORD

+    elpStyleEntry*: array[0..0, DWORD]

+

+  TEXTLOGPEN* = EXTLOGPEN

+  PEXTLOGPEN* = ptr EXTLOGPEN

+  EMREXTCREATEPEN* {.final, pure.} = object

+    emr*: EMR

+    ihPen*: DWORD

+    offBmi*: DWORD

+    cbBmi*: DWORD

+    offBits*: DWORD

+    cbBits*: DWORD

+    elp*: EXTLOGPEN

+

+  TEMREXTCREATEPEN* = EMREXTCREATEPEN

+  PEMREXTCREATEPEN* = ptr EMREXTCREATEPEN

+  EMREXTFLOODFILL* {.final, pure.} = object

+    emr*: EMR

+    ptlStart*: POINTL

+    crColor*: COLORREF

+    iMode*: DWORD

+

+  TEMREXTFLOODFILL* = EMREXTFLOODFILL

+  PEMREXTFLOODFILL* = ptr EMREXTFLOODFILL

+  EMREXTSELECTCLIPRGN* {.final, pure.} = object

+    emr*: EMR

+    cbRgnData*: DWORD

+    iMode*: DWORD

+    RgnData*: array[0..0, int8]

+

+  TEMREXTSELECTCLIPRGN* = EMREXTSELECTCLIPRGN

+  PEMREXTSELECTCLIPRGN* = ptr EMREXTSELECTCLIPRGN

+  EMRTEXT* {.final, pure.} = object

+    ptlReference*: POINTL

+    nChars*: DWORD

+    offString*: DWORD

+    fOptions*: DWORD

+    rcl*: RECTL

+    offDx*: DWORD

+

+  TEMRTEXT* = EMRTEXT

+  PEMRTEXT* = ptr EMRTEXT

+  EMREXTTEXTOUTA* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    iGraphicsMode*: DWORD

+    exScale*: float32

+    eyScale*: float32

+    emrtext*: EMRTEXT

+

+  TEMREXTTEXTOUTA* = EMREXTTEXTOUTA

+  PEMREXTTEXTOUTA* = ptr EMREXTTEXTOUTA

+  EMREXTTEXTOUTW* = EMREXTTEXTOUTA

+  TEMREXTTEXTOUTW* = EMREXTTEXTOUTA

+  PEMREXTTEXTOUTW* = ptr EMREXTTEXTOUTA

+  EMRFILLPATH* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+

+  TEMRFILLPATH* = EMRFILLPATH

+  PEMRFILLPATH* = ptr EMRFILLPATH

+  EMRSTROKEANDFILLPATH* = EMRFILLPATH

+  TEMRSTROKEANDFILLPATH* = EMRFILLPATH

+  PEMRSTROKEANDFILLPATH* = ptr EMRFILLPATH

+  EMRSTROKEPATH* = EMRFILLPATH

+  TEMRSTROKEPATH* = EMRFILLPATH

+  PEMRSTROKEPATH* = ptr EMRFILLPATH

+  EMRFILLRGN* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cbRgnData*: DWORD

+    ihBrush*: DWORD

+    RgnData*: array[0..0, int8]

+

+  TEMRFILLRGN* = EMRFILLRGN

+  PEMRFILLRGN* = ptr EMRFILLRGN

+  EMRFORMAT* {.final, pure.} = object

+    dSignature*: DWORD

+    nVersion*: DWORD

+    cbData*: DWORD

+    offData*: DWORD

+

+  TEMRFORMAT* = EMRFORMAT

+  PEMRFORMAT* = ptr EMRFORMAT

+

+  EMRFRAMERGN* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cbRgnData*: DWORD

+    ihBrush*: DWORD

+    szlStroke*: SIZEL

+    RgnData*: array[0..0, int8]

+

+  TEMRFRAMERGN* = EMRFRAMERGN

+  PEMRFRAMERGN* = ptr EMRFRAMERGN

+  EMRGDICOMMENT* {.final, pure.} = object

+    emr*: EMR

+    cbData*: DWORD

+    Data*: array[0..0, int8]

+

+  TEMRGDICOMMENT* = EMRGDICOMMENT

+  PEMRGDICOMMENT* = ptr EMRGDICOMMENT

+  EMRINVERTRGN* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cbRgnData*: DWORD

+    RgnData*: array[0..0, int8]

+

+  TEMRINVERTRGN* = EMRINVERTRGN

+  PEMRINVERTRGN* = ptr EMRINVERTRGN

+  EMRPAINTRGN* = EMRINVERTRGN

+  TEMRPAINTRGN* = EMRINVERTRGN

+  PEMRPAINTRGN* = ptr EMRINVERTRGN

+  EMRLINETO* {.final, pure.} = object

+    emr*: EMR

+    ptl*: POINTL

+

+  TEMRLINETO* = EMRLINETO

+  PEMRLINETO* = ptr EMRLINETO

+  EMRMOVETOEX* = EMRLINETO

+  TEMRMOVETOEX* = EMRLINETO

+  PEMRMOVETOEX* = ptr EMRLINETO

+  EMRMASKBLT* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    xDest*: LONG

+    yDest*: LONG

+    cxDest*: LONG

+    cyDest*: LONG

+    dwRop*: DWORD

+    xSrc*: LONG

+    ySrc*: LONG

+    xformSrc*: XFORM

+    crBkColorSrc*: COLORREF

+    iUsageSrc*: DWORD

+    offBmiSrc*: DWORD

+    cbBmiSrc*: DWORD

+    offBitsSrc*: DWORD

+    cbBitsSrc*: DWORD

+    xMask*: LONG

+    yMask*: LONG

+    iUsageMask*: DWORD

+    offBmiMask*: DWORD

+    cbBmiMask*: DWORD

+    offBitsMask*: DWORD

+    cbBitsMask*: DWORD

+

+  TEMRMASKBLT* = EMRMASKBLT

+  PEMRMASKBLT* = ptr EMRMASKBLT

+  EMRMODIFYWORLDTRANSFORM* {.final, pure.} = object

+    emr*: EMR

+    xform*: XFORM

+    iMode*: DWORD

+

+  TEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM

+  PEMRMODIFYWORLDTRANSFORM* = EMRMODIFYWORLDTRANSFORM

+  EMROFFSETCLIPRGN* {.final, pure.} = object

+    emr*: EMR

+    ptlOffset*: POINTL

+

+  TEMROFFSETCLIPRGN* = EMROFFSETCLIPRGN

+  PEMROFFSETCLIPRGN* = ptr EMROFFSETCLIPRGN

+  EMRPLGBLT* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    aptlDest*: array[0..2, POINTL]

+    xSrc*: LONG

+    ySrc*: LONG

+    cxSrc*: LONG

+    cySrc*: LONG

+    xformSrc*: XFORM

+    crBkColorSrc*: COLORREF

+    iUsageSrc*: DWORD

+    offBmiSrc*: DWORD

+    cbBmiSrc*: DWORD

+    offBitsSrc*: DWORD

+    cbBitsSrc*: DWORD

+    xMask*: LONG

+    yMask*: LONG

+    iUsageMask*: DWORD

+    offBmiMask*: DWORD

+    cbBmiMask*: DWORD

+    offBitsMask*: DWORD

+    cbBitsMask*: DWORD

+

+  TEMRPLGBLT* = EMRPLGBLT

+  PEMRPLGBLT* = ptr EMRPLGBLT

+  EMRPOLYDRAW* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cptl*: DWORD

+    aptl*: array[0..0, POINTL]

+    abTypes*: array[0..0, int8]

+

+  TEMRPOLYDRAW* = EMRPOLYDRAW

+  PEMRPOLYDRAW* = ptr EMRPOLYDRAW

+  EMRPOLYDRAW16* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cpts*: DWORD

+    apts*: array[0..0, POINTS]

+    abTypes*: array[0..0, int8]

+

+  TEMRPOLYDRAW16* = EMRPOLYDRAW16

+  PEMRPOLYDRAW16* = ptr EMRPOLYDRAW16

+  EMRPOLYLINE* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cptl*: DWORD

+    aptl*: array[0..0, POINTL]

+

+  TEMRPOLYLINE* = EMRPOLYLINE

+  PEMRPOLYLINE* = ptr EMRPOLYLINE

+  EMRPOLYBEZIER* = EMRPOLYLINE

+  TEMRPOLYBEZIER* = EMRPOLYLINE

+  PEMRPOLYBEZIER* = ptr EMRPOLYLINE

+  EMRPOLYGON* = EMRPOLYLINE

+  TEMRPOLYGON* = EMRPOLYLINE

+  PEMRPOLYGON* = ptr EMRPOLYLINE

+  EMRPOLYBEZIERTO* = EMRPOLYLINE

+  TEMRPOLYBEZIERTO* = EMRPOLYLINE

+  PEMRPOLYBEZIERTO* = ptr EMRPOLYLINE

+  EMRPOLYLINETO* = EMRPOLYLINE

+  TEMRPOLYLINETO* = EMRPOLYLINE

+  PEMRPOLYLINETO* = ptr EMRPOLYLINE

+  EMRPOLYLINE16* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    cpts*: DWORD

+    apts*: array[0..0, POINTL]

+

+  TEMRPOLYLINE16* = EMRPOLYLINE16

+  PEMRPOLYLINE16* = ptr EMRPOLYLINE16

+  EMRPOLYBEZIER16* = EMRPOLYLINE16

+  TEMRPOLYBEZIER16* = EMRPOLYLINE16

+  PEMRPOLYBEZIER16* = ptr EMRPOLYLINE16

+  EMRPOLYGON16* = EMRPOLYLINE16

+  TEMRPOLYGON16* = EMRPOLYLINE16

+  PEMRPOLYGON16* = ptr EMRPOLYLINE16

+  EMRPOLYBEZIERTO16* = EMRPOLYLINE16

+  TEMRPOLYBEZIERTO16* = EMRPOLYLINE16

+  PEMRPOLYBEZIERTO16* = ptr EMRPOLYLINE16

+  EMRPOLYLINETO16* = EMRPOLYLINE16

+  TEMRPOLYLINETO16* = EMRPOLYLINE16

+  PEMRPOLYLINETO16* = ptr EMRPOLYLINE16

+  EMRPOLYPOLYLINE* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    nPolys*: DWORD

+    cptl*: DWORD

+    aPolyCounts*: array[0..0, DWORD]

+    aptl*: array[0..0, POINTL]

+

+  TEMRPOLYPOLYLINE* = EMRPOLYPOLYLINE

+  PEMRPOLYPOLYLINE* = ptr EMRPOLYPOLYLINE

+  EMRPOLYPOLYGON* = EMRPOLYPOLYLINE

+  TEMRPOLYPOLYGON* = EMRPOLYPOLYLINE

+  PEMRPOLYPOLYGON* = ptr EMRPOLYPOLYLINE

+  EMRPOLYPOLYLINE16* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    nPolys*: DWORD

+    cpts*: DWORD

+    aPolyCounts*: array[0..0, DWORD]

+    apts*: array[0..0, POINTS]

+

+  TEMRPOLYPOLYLINE16* = EMRPOLYPOLYLINE16

+  PEMRPOLYPOLYLINE16* = ptr EMRPOLYPOLYLINE16

+  EMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16

+  TEMRPOLYPOLYGON16* = EMRPOLYPOLYLINE16

+  PEMRPOLYPOLYGON16* = ptr EMRPOLYPOLYLINE16

+  EMRPOLYTEXTOUTA* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    iGraphicsMode*: DWORD

+    exScale*: float32

+    eyScale*: float32

+    cStrings*: LONG

+    aemrtext*: array[0..0, EMRTEXT]

+

+  TEMRPOLYTEXTOUTA* = EMRPOLYTEXTOUTA

+  PEMRPOLYTEXTOUTA* = ptr EMRPOLYTEXTOUTA

+  EMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA

+  TEMRPOLYTEXTOUTW* = EMRPOLYTEXTOUTA

+  PEMRPOLYTEXTOUTW* = ptr EMRPOLYTEXTOUTA

+  EMRRESIZEPALETTE* {.final, pure.} = object

+    emr*: EMR

+    ihPal*: DWORD

+    cEntries*: DWORD

+

+  TEMRRESIZEPALETTE* = EMRRESIZEPALETTE

+  PEMRRESIZEPALETTE* = ptr EMRRESIZEPALETTE

+  EMRRESTOREDC* {.final, pure.} = object

+    emr*: EMR

+    iRelative*: LONG

+

+  TEMRRESTOREDC* = EMRRESTOREDC

+  PEMRRESTOREDC* = ptr EMRRESTOREDC

+  EMRROUNDRECT* {.final, pure.} = object

+    emr*: EMR

+    rclBox*: RECTL

+    szlCorner*: SIZEL

+

+  TEMRROUNDRECT* = EMRROUNDRECT

+  PEMRROUNDRECT* = ptr EMRROUNDRECT

+  EMRSCALEVIEWPORTEXTEX* {.final, pure.} = object

+    emr*: EMR

+    xNum*: LONG

+    xDenom*: LONG

+    yNum*: LONG

+    yDenom*: LONG

+

+  TEMRSCALEVIEWPORTEXTEX* = EMRSCALEVIEWPORTEXTEX

+  PEMRSCALEVIEWPORTEXTEX* = ptr EMRSCALEVIEWPORTEXTEX

+  EMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX

+  TEMRSCALEWINDOWEXTEX* = EMRSCALEVIEWPORTEXTEX

+  PEMRSCALEWINDOWEXTEX* = ptr EMRSCALEVIEWPORTEXTEX

+  EMRSELECTCOLORSPACE* {.final, pure.} = object

+    emr*: EMR

+    ihCS*: DWORD

+

+  TEMRSELECTCOLORSPACE* = EMRSELECTCOLORSPACE

+  PEMRSELECTCOLORSPACE* = ptr EMRSELECTCOLORSPACE

+  EMRDELETECOLORSPACE* = EMRSELECTCOLORSPACE

+  TEMRDELETECOLORSPACE* = EMRSELECTCOLORSPACE

+  PEMRDELETECOLORSPACE* = ptr EMRSELECTCOLORSPACE

+  EMRSELECTOBJECT* {.final, pure.} = object

+    emr*: EMR

+    ihObject*: DWORD

+

+  TEMRSELECTOBJECT* = EMRSELECTOBJECT

+  PEMRSELECTOBJECT* = ptr EMRSELECTOBJECT

+  EMRDELETEOBJECT* = EMRSELECTOBJECT

+  TEMRDELETEOBJECT* = EMRSELECTOBJECT

+  PEMRDELETEOBJECT* = ptr EMRSELECTOBJECT

+  EMRSELECTPALETTE* {.final, pure.} = object

+    emr*: EMR

+    ihPal*: DWORD

+

+  TEMRSELECTPALETTE* = EMRSELECTPALETTE

+  PEMRSELECTPALETTE* = ptr EMRSELECTPALETTE

+  EMRSETARCDIRECTION* {.final, pure.} = object

+    emr*: EMR

+    iArcDirection*: DWORD

+

+  TEMRSETARCDIRECTION* = EMRSETARCDIRECTION

+  PEMRSETARCDIRECTION* = ptr EMRSETARCDIRECTION

+  EMRSETBKCOLOR* {.final, pure.} = object

+    emr*: EMR

+    crColor*: COLORREF

+

+  TEMRSETBKCOLOR* = EMRSETBKCOLOR

+  PEMRSETBKCOLOR* = ptr EMRSETBKCOLOR

+  EMRSETTEXTCOLOR* = EMRSETBKCOLOR

+  TEMRSETTEXTCOLOR* = EMRSETBKCOLOR

+  PEMRSETTEXTCOLOR* = ptr EMRSETBKCOLOR

+  EMRSETCOLORADJUSTMENT* {.final, pure.} = object

+    emr*: EMR

+    ColorAdjustment*: COLORADJUSTMENT

+

+  TEMRSETCOLORADJUSTMENT* = EMRSETCOLORADJUSTMENT

+  PEMRSETCOLORADJUSTMENT* = ptr EMRSETCOLORADJUSTMENT

+  EMRSETDIBITSTODEVICE* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    xDest*: LONG

+    yDest*: LONG

+    xSrc*: LONG

+    ySrc*: LONG

+    cxSrc*: LONG

+    cySrc*: LONG

+    offBmiSrc*: DWORD

+    cbBmiSrc*: DWORD

+    offBitsSrc*: DWORD

+    cbBitsSrc*: DWORD

+    iUsageSrc*: DWORD

+    iStartScan*: DWORD

+    cScans*: DWORD

+

+  TEMRSETDIBITSTODEVICE* = EMRSETDIBITSTODEVICE

+  PEMRSETDIBITSTODEVICE* = ptr EMRSETDIBITSTODEVICE

+  EMRSETMAPPERFLAGS* {.final, pure.} = object

+    emr*: EMR

+    dwFlags*: DWORD

+

+  TEMRSETMAPPERFLAGS* = EMRSETMAPPERFLAGS

+  PEMRSETMAPPERFLAGS* = ptr EMRSETMAPPERFLAGS

+  EMRSETMITERLIMIT* {.final, pure.} = object

+    emr*: EMR

+    eMiterLimit*: float32

+

+  TEMRSETMITERLIMIT* = EMRSETMITERLIMIT

+  PEMRSETMITERLIMIT* = ptr EMRSETMITERLIMIT

+  EMRSETPALETTEENTRIES* {.final, pure.} = object

+    emr*: EMR

+    ihPal*: DWORD

+    iStart*: DWORD

+    cEntries*: DWORD

+    aPalEntries*: array[0..0, PALETTEENTRY]

+

+  TEMRSETPALETTEENTRIES* = EMRSETPALETTEENTRIES

+  PEMRSETPALETTEENTRIES* = ptr EMRSETPALETTEENTRIES

+  EMRSETPIXELV* {.final, pure.} = object

+    emr*: EMR

+    ptlPixel*: POINTL

+    crColor*: COLORREF

+

+  TEMRSETPIXELV* = EMRSETPIXELV

+  PEMRSETPIXELV* = ptr EMRSETPIXELV

+  EMRSETVIEWPORTEXTEX* {.final, pure.} = object

+    emr*: EMR

+    szlExtent*: SIZEL

+

+  TEMRSETVIEWPORTEXTEX* = EMRSETVIEWPORTEXTEX

+  PEMRSETVIEWPORTEXTEX* = ptr EMRSETVIEWPORTEXTEX

+  EMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX

+  TEMRSETWINDOWEXTEX* = EMRSETVIEWPORTEXTEX

+  PEMRSETWINDOWEXTEX* = ptr EMRSETVIEWPORTEXTEX

+  EMRSETVIEWPORTORGEX* {.final, pure.} = object

+    emr*: EMR

+    ptlOrigin*: POINTL

+

+  TEMRSETVIEWPORTORGEX* = EMRSETVIEWPORTORGEX

+  PEMRSETVIEWPORTORGEX* = ptr EMRSETVIEWPORTORGEX

+  EMRSETWINDOWORGEX* = EMRSETVIEWPORTORGEX

+  TEMRSETWINDOWORGEX* = EMRSETVIEWPORTORGEX

+  PEMRSETWINDOWORGEX* = ptr EMRSETVIEWPORTORGEX

+  EMRSETBRUSHORGEX* = EMRSETVIEWPORTORGEX

+  TEMRSETBRUSHORGEX* = EMRSETVIEWPORTORGEX

+  PEMRSETBRUSHORGEX* = ptr EMRSETVIEWPORTORGEX

+  EMRSETWORLDTRANSFORM* {.final, pure.} = object

+    emr*: EMR

+    xform*: XFORM

+

+  TEMRSETWORLDTRANSFORM* = EMRSETWORLDTRANSFORM

+  PEMRSETWORLDTRANSFORM* = ptr EMRSETWORLDTRANSFORM

+  EMRSTRETCHBLT* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    xDest*: LONG

+    yDest*: LONG

+    cxDest*: LONG

+    cyDest*: LONG

+    dwRop*: DWORD

+    xSrc*: LONG

+    ySrc*: LONG

+    xformSrc*: XFORM

+    crBkColorSrc*: COLORREF

+    iUsageSrc*: DWORD

+    offBmiSrc*: DWORD

+    cbBmiSrc*: DWORD

+    offBitsSrc*: DWORD

+    cbBitsSrc*: DWORD

+    cxSrc*: LONG

+    cySrc*: LONG

+

+  TEMRSTRETCHBLT* = EMRSTRETCHBLT

+  PEMRSTRETCHBLT* = ptr EMRSTRETCHBLT

+  EMRSTRETCHDIBITS* {.final, pure.} = object

+    emr*: EMR

+    rclBounds*: RECTL

+    xDest*: LONG

+    yDest*: LONG

+    xSrc*: LONG

+    ySrc*: LONG

+    cxSrc*: LONG

+    cySrc*: LONG

+    offBmiSrc*: DWORD

+    cbBmiSrc*: DWORD

+    offBitsSrc*: DWORD

+    cbBitsSrc*: DWORD

+    iUsageSrc*: DWORD

+    dwRop*: DWORD

+    cxDest*: LONG

+    cyDest*: LONG

+

+  TEMRSTRETCHDIBITS* = EMRSTRETCHDIBITS

+  PEMRSTRETCHDIBITS* = ptr EMRSTRETCHDIBITS

+  EMRABORTPATH* {.final, pure.} = object

+    emr*: EMR

+

+  TEMRABORTPATH* = EMRABORTPATH

+  PEMRABORTPATH* = ptr EMRABORTPATH

+  TABORTPATH* = EMRABORTPATH

+  EMRBEGINPATH* = EMRABORTPATH

+  TEMRBEGINPATH* = EMRABORTPATH

+  PEMRBEGINPATH* = ptr EMRABORTPATH

+  EMRENDPATH* = EMRABORTPATH

+  TEMRENDPATH* = EMRABORTPATH

+  PEMRENDPATH* = ptr EMRABORTPATH

+  EMRCLOSEFIGURE* = EMRABORTPATH

+  TEMRCLOSEFIGURE* = EMRABORTPATH

+  PEMRCLOSEFIGURE* = ptr EMRABORTPATH

+  EMRFLATTENPATH* = EMRABORTPATH

+  TEMRFLATTENPATH* = EMRABORTPATH

+  PEMRFLATTENPATH* = ptr EMRABORTPATH

+  EMRWIDENPATH* = EMRABORTPATH

+  TEMRWIDENPATH* = EMRABORTPATH

+  PEMRWIDENPATH* = ptr EMRABORTPATH

+  EMRSETMETARGN* = EMRABORTPATH

+  TEMRSETMETARGN* = EMRABORTPATH

+  PEMRSETMETARGN* = ptr EMRABORTPATH

+  EMRSAVEDC* = EMRABORTPATH

+  TEMRSAVEDC* = EMRABORTPATH

+  PEMRSAVEDC* = ptr EMRABORTPATH

+  EMRREALIZEPALETTE* = EMRABORTPATH

+  TEMRREALIZEPALETTE* = EMRABORTPATH

+  PEMRREALIZEPALETTE* = ptr EMRABORTPATH

+  EMRSELECTCLIPPATH* {.final, pure.} = object

+    emr*: EMR

+    iMode*: DWORD

+

+  TEMRSELECTCLIPPATH* = EMRSELECTCLIPPATH

+  PEMRSELECTCLIPPATH* = ptr EMRSELECTCLIPPATH

+  EMRSETBKMODE* = EMRSELECTCLIPPATH

+  TEMRSETBKMODE* = EMRSELECTCLIPPATH

+  PEMRSETBKMODE* = ptr EMRSELECTCLIPPATH

+  EMRSETMAPMODE* = EMRSELECTCLIPPATH

+  TEMRSETMAPMODE* = EMRSELECTCLIPPATH

+  PEMRSETMAPMODE* = ptr EMRSELECTCLIPPATH

+  EMRSETPOLYFILLMODE* = EMRSELECTCLIPPATH

+  TEMRSETPOLYFILLMODE* = EMRSELECTCLIPPATH

+  PEMRSETPOLYFILLMODE* = ptr EMRSELECTCLIPPATH

+  EMRSETROP2* = EMRSELECTCLIPPATH

+  TEMRSETROP2* = EMRSELECTCLIPPATH

+  PEMRSETROP2* = ptr EMRSELECTCLIPPATH

+  EMRSETSTRETCHBLTMODE* = EMRSELECTCLIPPATH

+  TEMRSETSTRETCHBLTMODE* = EMRSELECTCLIPPATH

+  PEMRSETSTRETCHBLTMODE* = ptr EMRSELECTCLIPPATH

+  EMRSETTEXTALIGN* = EMRSELECTCLIPPATH

+  TEMRSETTEXTALIGN* = EMRSELECTCLIPPATH

+  PEMRSETTEXTALIGN* = ptr EMRSELECTCLIPPATH

+  EMRENABLEICM* = EMRSELECTCLIPPATH

+  TEMRENABLEICM* = EMRSELECTCLIPPATH

+  PEMRENABLEICM* = ptr EMRSELECTCLIPPATH

+  NMHDR* {.final, pure.} = object

+    hwndFrom*: HWND

+    idFrom*: UINT

+    code*: UINT

+

+  TNMHDR* = NMHDR

+  PNMHDR* = ptr NMHDR

+  TENCORRECTTEXT* {.final, pure.} = object

+    nmhdr*: NMHDR

+    chrg*: CHARRANGE

+    seltyp*: int16

+

+  Pencorrecttext* = ptr TENCORRECTTEXT

+  TENDROPFILES* {.final, pure.} = object

+    nmhdr*: NMHDR

+    hDrop*: HANDLE

+    cp*: LONG

+    fProtected*: WINBOOL

+

+  Pendropfiles* = ptr TENDROPFILES

+  TENSAVECLIPBOARD* {.final, pure.} = object

+    nmhdr*: NMHDR

+    cObjectCount*: LONG

+    cch*: LONG

+

+  PENSAVECLIPBOARD* = ptr TENSAVECLIPBOARD

+  TENOLEOPFAILED* {.final, pure.} = object

+    nmhdr*: NMHDR

+    iob*: LONG

+    lOper*: LONG

+    hr*: HRESULT

+

+  PENOLEOPFAILED* = ptr TENOLEOPFAILED

+  TENHMETAHEADER* {.final, pure.} = object

+    iType*: DWORD

+    nSize*: DWORD

+    rclBounds*: RECTL

+    rclFrame*: RECTL

+    dSignature*: DWORD

+    nVersion*: DWORD

+    nBytes*: DWORD

+    nRecords*: DWORD

+    nHandles*: int16

+    sReserved*: int16

+    nDescription*: DWORD

+    offDescription*: DWORD

+    nPalEntries*: DWORD

+    szlDevice*: SIZEL

+    szlMillimeters*: SIZEL

+

+  LPENHMETAHEADER* = ptr TENHMETAHEADER

+  PENHMETAHEADER* = ptr TENHMETAHEADER

+  TENHMETARECORD* {.final, pure.} = object

+    iType*: DWORD

+    nSize*: DWORD

+    dParm*: array[0..0, DWORD]

+

+  LPENHMETARECORD* = ptr TENHMETARECORD

+  PENHMETARECORD* = ptr TENHMETARECORD

+  TENPROTECTED* {.final, pure.} = object

+    nmhdr*: NMHDR

+    msg*: UINT

+    wParam*: WPARAM

+    lParam*: LPARAM

+    chrg*: CHARRANGE

+

+  Penprotected* = ptr TENPROTECTED

+  SERVICE_STATUS* {.final, pure.} = object

+    dwServiceType*: DWORD

+    dwCurrentState*: DWORD

+    dwControlsAccepted*: DWORD

+    dwWin32ExitCode*: DWORD

+    dwServiceSpecificExitCode*: DWORD

+    dwCheckPoint*: DWORD

+    dwWaitHint*: DWORD

+

+  LPSERVICE_STATUS* = ptr SERVICE_STATUS

+  TSERVICESTATUS* = SERVICE_STATUS

+  PSERVICESTATUS* = ptr SERVICE_STATUS

+  ENUM_SERVICE_STATUS* {.final, pure.} = object

+    lpServiceName*: LPTSTR

+    lpDisplayName*: LPTSTR

+    ServiceStatus*: SERVICE_STATUS

+

+  LPENUM_SERVICE_STATUS* = ptr ENUM_SERVICE_STATUS

+  TENUMSERVICESTATUS* = ENUM_SERVICE_STATUS

+  PENUMSERVICESTATUS* = ptr ENUM_SERVICE_STATUS

+  ENUMLOGFONT* {.final, pure.} = object

+    elfLogFont*: LOGFONT

+    elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR]

+    elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR]

+

+  TENUMLOGFONT* = ENUMLOGFONT

+  PENUMLOGFONT* = ptr ENUMLOGFONT

+  ENUMLOGFONTEX* {.final, pure.} = object

+    elfLogFont*: LOGFONT

+    elfFullName*: array[0..(LF_FULLFACESIZE) - 1, BCHAR]

+    elfStyle*: array[0..(LF_FACESIZE) - 1, BCHAR]

+    elfScript*: array[0..(LF_FACESIZE) - 1, BCHAR]

+

+  TENUMLOGFONTEX* = ENUMLOGFONTEX

+  PENUMLOGFONTEX* = ptr ENUMLOGFONTEX

+

+  EVENTLOGRECORD* {.final, pure.} = object

+    Length*: DWORD

+    Reserved*: DWORD

+    RecordNumber*: DWORD

+    TimeGenerated*: DWORD

+    TimeWritten*: DWORD

+    EventID*: DWORD

+    EventType*: int16

+    NumStrings*: int16

+    EventCategory*: int16

+    ReservedFlags*: int16

+    ClosingRecordNumber*: DWORD

+    StringOffset*: DWORD

+    UserSidLength*: DWORD

+    UserSidOffset*: DWORD

+    DataLength*: DWORD

+    DataOffset*: DWORD

+

+  TEVENTLOGRECORD* = EVENTLOGRECORD

+  PEVENTLOGRECORD* = ptr EVENTLOGRECORD

+  EVENTMSG* {.final, pure.} = object

+    message*: UINT

+    paramL*: UINT

+    paramH*: UINT

+    time*: DWORD

+    hwnd*: HWND

+

+  TEVENTMSG* = EVENTMSG

+  PEVENTMSG* = ptr EVENTMSG

+  EXCEPTION_POINTERS* {.final, pure.} = object

+    ExceptionRecord*: PEXCEPTION_RECORD

+    ContextRecord*: PCONTEXT

+

+  LPEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS

+  PEXCEPTION_POINTERS* = ptr EXCEPTION_POINTERS

+  TEXCEPTIONPOINTERS* = EXCEPTION_POINTERS

+  EXT_BUTTON* {.final, pure.} = object

+    idCommand*: int16

+    idsHelp*: int16

+    fsStyle*: int16

+

+  LPEXT_BUTTON* = ptr EXT_BUTTON

+  TEXTBUTTON* = EXT_BUTTON

+  PEXTBUTTON* = ptr EXT_BUTTON

+  FILTERKEYS* {.final, pure.} = object

+    cbSize*: UINT

+    dwFlags*: DWORD

+    iWaitMSec*: DWORD

+    iDelayMSec*: DWORD

+    iRepeatMSec*: DWORD

+    iBounceMSec*: DWORD

+

+  TFILTERKEYS* = FILTERKEYS

+  PFILTERKEYS* = ptr FILTERKEYS

+  FIND_NAME_BUFFER* {.final, pure.} = object

+    len*: UCHAR

+    access_control*: UCHAR

+    frame_control*: UCHAR

+    destination_addr*: array[0..5, UCHAR]

+    source_addr*: array[0..5, UCHAR]

+    routing_info*: array[0..17, UCHAR]

+

+  TFINDNAMEBUFFER* = FIND_NAME_BUFFER

+  PFINDNAMEBUFFER* = ptr FIND_NAME_BUFFER

+  FIND_NAME_HEADER* {.final, pure.} = object

+    node_count*: int16

+    reserved*: UCHAR

+    unique_group*: UCHAR

+

+  TFINDNAMEHEADER* = FIND_NAME_HEADER

+  PFINDNAMEHEADER* = ptr FIND_NAME_HEADER

+  FINDREPLACE* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hInstance*: HINST

+    Flags*: DWORD

+    lpstrFindWhat*: LPTSTR

+    lpstrReplaceWith*: LPTSTR

+    wFindWhatLen*: int16

+    wReplaceWithLen*: int16

+    lCustData*: LPARAM

+    lpfnHook*: LPFRHOOKPROC

+    lpTemplateName*: LPCTSTR

+

+  LPFINDREPLACE* = ptr FINDREPLACE

+  TFINDREPLACE* = FINDREPLACE

+  PFINDREPLACE* = ptr FINDREPLACE

+  #FINDTEXT = record conflicts with FindText function

+  TFINDTEXT* {.final, pure.} = object

+    chrg*: CHARRANGE

+    lpstrText*: LPSTR

+

+  Pfindtext* = ptr TFINDTEXT

+  FINDTEXTEX* {.final, pure.} = object

+    chrg*: CHARRANGE

+    lpstrText*: LPSTR

+    chrgText*: CHARRANGE

+

+  Tfindtextex* = FINDTEXTEX

+  Pfindtextex* = ptr FINDTEXTEX

+  FMS_GETDRIVEINFO* {.final, pure.} = object

+    dwTotalSpace*: DWORD

+    dwFreeSpace*: DWORD

+    szPath*: array[0..259, TCHAR]

+    szVolume*: array[0..13, TCHAR]

+    szShare*: array[0..127, TCHAR]

+

+  TFMSGETDRIVEINFO* = FMS_GETDRIVEINFO

+  PFMSGETDRIVEINFO* = ptr FMS_GETDRIVEINFO

+  FMS_GETFILESEL* {.final, pure.} = object

+    ftTime*: FILETIME

+    dwSize*: DWORD

+    bAttr*: int8

+    szName*: array[0..259, TCHAR]

+

+  TFMSGETFILESEL* = FMS_GETFILESEL

+  PFMSGETFILESEL* = ptr FMS_GETFILESEL

+  FMS_LOAD* {.final, pure.} = object

+    dwSize*: DWORD

+    szMenuName*: array[0..(MENU_TEXT_LEN) - 1, TCHAR]

+    hMenu*: HMENU

+    wMenuDelta*: UINT

+

+  TFMSLOAD* = FMS_LOAD

+  PFMSLOAD* = ptr FMS_LOAD

+  FMS_TOOLBARLOAD* {.final, pure.} = object

+    dwSize*: DWORD

+    lpButtons*: LPEXT_BUTTON

+    cButtons*: int16

+    cBitmaps*: int16

+    idBitmap*: int16

+    hBitmap*: HBITMAP

+

+  TFMSTOOLBARLOAD* = FMS_TOOLBARLOAD

+  PFMSTOOLBARLOAD* = ptr FMS_TOOLBARLOAD

+  FOCUS_EVENT_RECORD* {.final, pure.} = object

+    bSetFocus*: WINBOOL

+

+  TFOCUSEVENTRECORD* = FOCUS_EVENT_RECORD

+  PFOCUSEVENTRECORD* = ptr FOCUS_EVENT_RECORD

+  FORM_INFO_1* {.final, pure.} = object

+    Flags*: DWORD

+    pName*: LPTSTR

+    Size*: SIZEL

+    ImageableArea*: RECTL

+

+  TFORMINFO1* = FORM_INFO_1

+  PFORMINFO1* = ptr FORM_INFO_1

+  FORMAT_PARAMETERS* {.final, pure.} = object

+    MediaType*: MEDIA_TYPE

+    StartCylinderNumber*: DWORD

+    EndCylinderNumber*: DWORD

+    StartHeadNumber*: DWORD

+    EndHeadNumber*: DWORD

+

+  TFORMATPARAMETERS* = FORMAT_PARAMETERS

+  PFORMATPARAMETERS* = ptr FORMAT_PARAMETERS

+  FORMATRANGE* {.final, pure.} = object

+    hdc*: HDC

+    hdcTarget*: HDC

+    rc*: RECT

+    rcPage*: RECT

+    chrg*: CHARRANGE

+

+  Tformatrange* = FORMATRANGE

+  Pformatrange* = ptr FORMATRANGE

+  GCP_RESULTS* {.final, pure.} = object

+    lStructSize*: DWORD

+    lpOutString*: LPTSTR

+    lpOrder*: ptr UINT

+    lpDx*: ptr WINT

+    lpCaretPos*: ptr WINT

+    lpClass*: LPTSTR

+    lpGlyphs*: ptr UINT

+    nGlyphs*: UINT

+    nMaxFit*: UINT

+

+  LPGCP_RESULTS* = ptr GCP_RESULTS

+  TGCPRESULTS* = GCP_RESULTS

+  PGCPRESULTS* = ptr GCP_RESULTS

+  GENERIC_MAPPING* {.final, pure.} = object

+    GenericRead*: ACCESS_MASK

+    GenericWrite*: ACCESS_MASK

+    GenericExecute*: ACCESS_MASK

+    GenericAll*: ACCESS_MASK

+

+  PGENERIC_MAPPING* = ptr GENERIC_MAPPING

+  TGENERICMAPPING* = GENERIC_MAPPING

+  GLYPHMETRICS* {.final, pure.} = object

+    gmBlackBoxX*: UINT

+    gmBlackBoxY*: UINT

+    gmptGlyphOrigin*: POINT

+    gmCellIncX*: SHORT

+    gmCellIncY*: SHORT

+

+  LPGLYPHMETRICS* = ptr GLYPHMETRICS

+  TGLYPHMETRICS* = GLYPHMETRICS

+  PGLYPHMETRICS* = ptr GLYPHMETRICS

+  HANDLETABLE* {.final, pure.} = object

+    objectHandle*: array[0..0, HGDIOBJ]

+

+  THANDLETABLE* = HANDLETABLE

+  LPHANDLETABLE* = ptr HANDLETABLE

+  HD_HITTESTINFO* {.final, pure.} = object

+    pt*: POINT

+    flags*: UINT

+    iItem*: int32

+

+  THDHITTESTINFO* = HD_HITTESTINFO

+  PHDHITTESTINFO* = ptr HD_HITTESTINFO

+  HD_ITEM* {.final, pure.} = object

+    mask*: UINT

+    cxy*: int32

+    pszText*: LPTSTR

+    hbm*: HBITMAP

+    cchTextMax*: int32

+    fmt*: int32

+    lParam*: LPARAM

+

+  THDITEM* = HD_ITEM

+  PHDITEM* = ptr HD_ITEM

+  WINDOWPOS* {.final, pure.} = object

+    hwnd*: HWND

+    hwndInsertAfter*: HWND

+    x*: int32

+    y*: int32

+    cx*: int32

+    cy*: int32

+    flags*: UINT

+

+  LPWINDOWPOS* = ptr WINDOWPOS

+  TWINDOWPOS* = WINDOWPOS

+  PWINDOWPOS* = ptr WINDOWPOS

+  HD_LAYOUT* {.final, pure.} = object

+    prc*: ptr RECT

+    pwpos*: ptr WINDOWPOS

+

+  THDLAYOUT* = HD_LAYOUT

+  PHDLAYOUT* = ptr HD_LAYOUT

+  HD_NOTIFY* {.final, pure.} = object

+    hdr*: NMHDR

+    iItem*: int32

+    iButton*: int32

+    pitem*: ptr HD_ITEM

+

+  THDNOTIFY* = HD_NOTIFY

+  PHDNOTIFY* = ptr HD_NOTIFY

+  HELPINFO* {.final, pure.} = object

+    cbSize*: UINT

+    iContextType*: int32

+    iCtrlId*: int32

+    hItemHandle*: HANDLE

+    dwContextId*: DWORD

+    MousePos*: POINT

+

+  LPHELPINFO* = ptr HELPINFO

+  THELPINFO* = HELPINFO

+  PHELPINFO* = ptr HELPINFO

+  HELPWININFO* {.final, pure.} = object

+    wStructSize*: int32

+    x*: int32

+    y*: int32

+    dx*: int32

+    dy*: int32

+    wMax*: int32

+    rgchMember*: array[0..1, TCHAR]

+

+  THELPWININFO* = HELPWININFO

+  PHELPWININFO* = ptr HELPWININFO

+  HIGHCONTRAST* {.final, pure.} = object

+    cbSize*: UINT

+    dwFlags*: DWORD

+    lpszDefaultScheme*: LPTSTR

+

+  LPHIGHCONTRAST* = ptr HIGHCONTRAST

+  THIGHCONTRAST* = HIGHCONTRAST

+  PHIGHCONTRAST* = ptr HIGHCONTRAST

+  HSZPAIR* {.final, pure.} = object

+    hszSvc*: HSZ

+    hszTopic*: HSZ

+

+  THSZPAIR* = HSZPAIR

+  PHSZPAIR* = ptr HSZPAIR

+  ICONINFO* {.final, pure.} = object

+    fIcon*: WINBOOL

+    xHotspot*: DWORD

+    yHotspot*: DWORD

+    hbmMask*: HBITMAP

+    hbmColor*: HBITMAP

+

+  TICONINFO* = ICONINFO

+  PICONINFO* = ptr ICONINFO

+  ICONMETRICS* {.final, pure.} = object

+    cbSize*: UINT

+    iHorzSpacing*: int32

+    iVertSpacing*: int32

+    iTitleWrap*: int32

+    lfFont*: LOGFONT

+

+  LPICONMETRICS* = ptr ICONMETRICS

+  TICONMETRICS* = ICONMETRICS

+  PICONMETRICS* = ptr ICONMETRICS

+  IMAGEINFO* {.final, pure.} = object

+    hbmImage*: HBITMAP

+    hbmMask*: HBITMAP

+    Unused1*: int32

+    Unused2*: int32

+    rcImage*: RECT

+

+  TIMAGEINFO* = IMAGEINFO

+  PIMAGEINFO* = ptr IMAGEINFO

+  KEY_EVENT_RECORD* {.final, pure.} = object

+    bKeyDown*: WINBOOL

+    wRepeatCount*: int16

+    wVirtualKeyCode*: int16

+    wVirtualScanCode*: int16

+    UnicodeChar*: WCHAR

+    dwControlKeyState*: DWORD # other union part: AsciiChar: CHAR

+

+  TKEYEVENTRECORD* = KEY_EVENT_RECORD

+  PKEYEVENTRECORD* = ptr KEY_EVENT_RECORD

+  MOUSE_EVENT_RECORD* {.final, pure.} = object

+    dwMousePosition*: COORD

+    dwButtonState*: DWORD

+    dwControlKeyState*: DWORD

+    dwEventFlags*: DWORD

+

+  TMOUSEEVENTRECORD* = MOUSE_EVENT_RECORD

+  PMOUSEEVENTRECORD* = ptr MOUSE_EVENT_RECORD

+  WINDOW_BUFFER_SIZE_RECORD* {.final, pure.} = object

+    dwSize*: COORD

+

+  TWINDOWBUFFERSIZERECORD* = WINDOW_BUFFER_SIZE_RECORD

+  PWINDOWBUFFERSIZERECORD* = ptr WINDOW_BUFFER_SIZE_RECORD

+  MENU_EVENT_RECORD* {.final, pure.} = object

+    dwCommandId*: UINT

+

+  PMENU_EVENT_RECORD* = ptr MENU_EVENT_RECORD

+  TMENUEVENTRECORD* = MENU_EVENT_RECORD

+  INPUT_RECORD* {.final, pure.} = object

+    EventType*: int16

+    Reserved*: int16

+    event*: array[0..5, DWORD] #Event : record case longint of

+                               #                 0 : ( KeyEvent : KEY_EVENT_RECORD );

+                               #                 1 : ( MouseEvent : MOUSE_EVENT_RECORD );

+                               #                 2 : ( WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD );

+                               #                 3 : ( MenuEvent : MENU_EVENT_RECORD );

+                               #                 4 : ( FocusEvent : FOCUS_EVENT_RECORD );

+                               #       end;

+    Event*: array[0..5, DWORD]

+    #union {

+    #    KEY_EVENT_RECORD KeyEvent;

+    #    MOUSE_EVENT_RECORD MouseEvent;

+    #    WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;

+    #    MENU_EVENT_RECORD MenuEvent;

+    #    FOCUS_EVENT_RECORD FocusEvent;

+    #} Event;

+    Event*: array[0..5, DWORD] # union of KEY_EVENT_RECORD, MOUSE_EVENT_RECORD, WINDOW_BUFFER_SIZE_RECORD, MENU_EVENT_RECORD, FOCUS_EVENT_RECORD

+

+  PINPUT_RECORD* = ptr INPUT_RECORD

+  TINPUTRECORD* = INPUT_RECORD

+  SYSTEMTIME* {.final, pure.} = object

+    wYear*: int16

+    wMonth*: int16

+    wDayOfWeek*: int16

+    wDay*: int16

+    wHour*: int16

+    wMinute*: int16

+    wSecond*: int16

+    wMilliseconds*: int16

+

+  LPSYSTEMTIME* = ptr SYSTEMTIME

+  TSYSTEMTIME* = SYSTEMTIME

+  PSYSTEMTIME* = ptr SYSTEMTIME

+  JOB_INFO_1* {.final, pure.} = object

+    JobId*: DWORD

+    pPrinterName*: LPTSTR

+    pMachineName*: LPTSTR

+    pUserName*: LPTSTR

+    pDocument*: LPTSTR

+    pDatatype*: LPTSTR

+    pStatus*: LPTSTR

+    Status*: DWORD

+    Priority*: DWORD

+    Position*: DWORD

+    TotalPages*: DWORD

+    PagesPrinted*: DWORD

+    Submitted*: SYSTEMTIME

+

+  TJOBINFO1* = JOB_INFO_1

+  PJOBINFO1* = ptr JOB_INFO_1

+  SID_IDENTIFIER_AUTHORITY* {.final, pure.} = object

+    Value*: array[0..5, int8]

+

+  LPSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY

+  PSID_IDENTIFIER_AUTHORITY* = ptr SID_IDENTIFIER_AUTHORITY

+  TSIDIDENTIFIERAUTHORITY* = SID_IDENTIFIER_AUTHORITY

+  SID* {.final, pure.} = object

+    Revision*: int8

+    SubAuthorityCount*: int8

+    IdentifierAuthority*: SID_IDENTIFIER_AUTHORITY

+    SubAuthority*: array[0..(ANYSIZE_ARRAY) - 1, DWORD]

+

+  TSID* = SID

+  PSID* = ptr SID

+  SECURITY_DESCRIPTOR_CONTROL* = int16

+  PSECURITY_DESCRIPTOR_CONTROL* = ptr SECURITY_DESCRIPTOR_CONTROL

+  TSECURITYDESCRIPTORCONTROL* = SECURITY_DESCRIPTOR_CONTROL

+  SECURITY_DESCRIPTOR* {.final, pure.} = object

+    Revision*: int8

+    Sbz1*: int8

+    Control*: SECURITY_DESCRIPTOR_CONTROL

+    Owner*: PSID

+    Group*: PSID

+    Sacl*: PACL

+    Dacl*: PACL

+

+  PSECURITY_DESCRIPTOR* = ptr SECURITY_DESCRIPTOR

+  TSECURITYDESCRIPTOR* = SECURITY_DESCRIPTOR

+  JOB_INFO_2* {.final, pure.} = object

+    JobId*: DWORD

+    pPrinterName*: LPTSTR

+    pMachineName*: LPTSTR

+    pUserName*: LPTSTR

+    pDocument*: LPTSTR

+    pNotifyName*: LPTSTR

+    pDatatype*: LPTSTR

+    pPrintProcessor*: LPTSTR

+    pParameters*: LPTSTR

+    pDriverName*: LPTSTR

+    pDevMode*: LPDEVMODE

+    pStatus*: LPTSTR

+    pSecurityDescriptor*: PSECURITY_DESCRIPTOR

+    Status*: DWORD

+    Priority*: DWORD

+    Position*: DWORD

+    StartTime*: DWORD

+    UntilTime*: DWORD

+    TotalPages*: DWORD

+    Size*: DWORD

+    Submitted*: SYSTEMTIME

+    Time*: DWORD

+    PagesPrinted*: DWORD

+

+  TJOBINFO2* = JOB_INFO_2

+  PJOBINFO2* = ptr JOB_INFO_2

+  KERNINGPAIR* {.final, pure.} = object

+    wFirst*: int16

+    wSecond*: int16

+    iKernAmount*: int32

+

+  LPKERNINGPAIR* = ptr KERNINGPAIR

+  TKERNINGPAIR* = KERNINGPAIR

+  PKERNINGPAIR* = ptr KERNINGPAIR

+  LANA_ENUM* {.final, pure.} = object

+    len*: UCHAR

+    lana*: array[0..(MAX_LANA) - 1, UCHAR]

+

+  TLANAENUM* = LANA_ENUM

+  PLANAENUM* = ptr LANA_ENUM

+  LDT_ENTRY* {.final, pure.} = object

+    LimitLow*: int16

+    BaseLow*: int16

+    BaseMid*: int8

+    Flags1*: int8

+    Flags2*: int8

+    BaseHi*: int8

+

+  LPLDT_ENTRY* = ptr LDT_ENTRY

+  PLDT_ENTRY* = ptr LDT_ENTRY

+  TLDTENTRY* = LDT_ENTRY

+

+const

+  bm_LDT_ENTRY_BaseMid* = 0x000000FF

+  bp_LDT_ENTRY_BaseMid* = 0

+  bm_LDT_ENTRY_Type* = 0x00001F00

+  bp_LDT_ENTRY_Type* = 8

+  bm_LDT_ENTRY_Dpl* = 0x00006000

+  bp_LDT_ENTRY_Dpl* = 13

+  bm_LDT_ENTRY_Pres* = 0x00008000

+  bp_LDT_ENTRY_Pres* = 15

+  bm_LDT_ENTRY_LimitHi* = 0x000F0000

+  bp_LDT_ENTRY_LimitHi* = 16

+  bm_LDT_ENTRY_Sys* = 0x00100000

+  bp_LDT_ENTRY_Sys* = 20

+  bm_LDT_ENTRY_Reserved_0* = 0x00200000

+  bp_LDT_ENTRY_Reserved_0* = 21

+  bm_LDT_ENTRY_Default_Big* = 0x00400000

+  bp_LDT_ENTRY_Default_Big* = 22

+  bm_LDT_ENTRY_Granularity* = 0x00800000

+  bp_LDT_ENTRY_Granularity* = 23

+  bm_LDT_ENTRY_BaseHi* = 0xFF000000

+  bp_LDT_ENTRY_BaseHi* = 24

+

+type

+  LOCALESIGNATURE* {.final, pure.} = object

+    lsUsb*: array[0..3, DWORD]

+    lsCsbDefault*: array[0..1, DWORD]

+    lsCsbSupported*: array[0..1, DWORD]

+

+  TLOCALESIGNATURE* = LOCALESIGNATURE

+  PLOCALESIGNATURE* = ptr LOCALESIGNATURE

+  LOCALGROUP_MEMBERS_INFO_0* {.final, pure.} = object

+    lgrmi0_sid*: PSID

+

+  TLOCALGROUPMEMBERSINFO0* = LOCALGROUP_MEMBERS_INFO_0

+  PLOCALGROUPMEMBERSINFO0* = ptr LOCALGROUP_MEMBERS_INFO_0

+  LOCALGROUP_MEMBERS_INFO_3* {.final, pure.} = object

+    lgrmi3_domainandname*: LPWSTR

+

+  TLOCALGROUPMEMBERSINFO3* = LOCALGROUP_MEMBERS_INFO_3

+  PLOCALGROUPMEMBERSINFO3* = ptr LOCALGROUP_MEMBERS_INFO_3

+  FXPT16DOT16* = int32

+  LPFXPT16DOT16* = ptr FXPT16DOT16

+  TFXPT16DOT16* = FXPT16DOT16

+  PFXPT16DOT16* = ptr FXPT16DOT16

+  LUID* = TlargeInteger

+  TLUID* = LUID

+  PLUID* = ptr LUID

+  LUID_AND_ATTRIBUTES* {.final, pure.} = object

+    Luid*: LUID

+    Attributes*: DWORD

+

+  TLUIDANDATTRIBUTES* = LUID_AND_ATTRIBUTES

+  PLUIDANDATTRIBUTES* = ptr LUID_AND_ATTRIBUTES

+  LUID_AND_ATTRIBUTES_ARRAY* = array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES]

+  PLUID_AND_ATTRIBUTES_ARRAY* = ptr LUID_AND_ATTRIBUTES_ARRAY

+  TLUIDANDATTRIBUTESARRAY* = LUID_AND_ATTRIBUTES_ARRAY

+  LV_COLUMN* {.final, pure.} = object

+    mask*: UINT

+    fmt*: int32

+    cx*: int32

+    pszText*: LPTSTR

+    cchTextMax*: int32

+    iSubItem*: int32

+

+  TLVCOLUMN* = LV_COLUMN

+  PLVCOLUMN* = ptr LV_COLUMN

+  LV_ITEM* {.final, pure.} = object

+    mask*: UINT

+    iItem*: int32

+    iSubItem*: int32

+    state*: UINT

+    stateMask*: UINT

+    pszText*: LPTSTR

+    cchTextMax*: int32

+    iImage*: int32

+    lParam*: LPARAM

+

+  TLVITEM* = LV_ITEM

+  PLVITEM* = ptr LV_ITEM

+  LV_DISPINFO* {.final, pure.} = object

+    hdr*: NMHDR

+    item*: LV_ITEM

+

+  TLVDISPINFO* = LV_DISPINFO

+  PLVDISPINFO* = ptr LV_DISPINFO

+  LV_FINDINFO* {.final, pure.} = object

+    flags*: UINT

+    psz*: LPCTSTR

+    lParam*: LPARAM

+    pt*: POINT

+    vkDirection*: UINT

+

+  TLVFINDINFO* = LV_FINDINFO

+  PLVFINDINFO* = ptr LV_FINDINFO

+  LV_HITTESTINFO* {.final, pure.} = object

+    pt*: POINT

+    flags*: UINT

+    iItem*: int32

+

+  TLVHITTESTINFO* = LV_HITTESTINFO

+  PLVHITTESTINFO* = ptr LV_HITTESTINFO

+  LV_KEYDOWN* {.final, pure.} = object

+    hdr*: NMHDR

+    wVKey*: int16

+    flags*: UINT

+

+  TLVKEYDOWN* = LV_KEYDOWN

+  PLVKEYDOWN* = ptr LV_KEYDOWN

+  MAT2* {.final, pure.} = object

+    eM11*: FIXED

+    eM12*: FIXED

+    eM21*: FIXED

+    eM22*: FIXED

+

+  TMAT2* = MAT2

+  PMAT2* = ptr MAT2

+  MDICREATESTRUCT* {.final, pure.} = object

+    szClass*: LPCTSTR

+    szTitle*: LPCTSTR

+    hOwner*: HANDLE

+    x*: int32

+    y*: int32

+    cx*: int32

+    cy*: int32

+    style*: DWORD

+    lParam*: LPARAM

+

+  LPMDICREATESTRUCT* = ptr MDICREATESTRUCT

+  TMDICREATESTRUCT* = MDICREATESTRUCT

+  PMDICREATESTRUCT* = ptr MDICREATESTRUCT

+  MEASUREITEMSTRUCT* {.final, pure.} = object

+    CtlType*: UINT

+    CtlID*: UINT

+    itemID*: UINT

+    itemWidth*: UINT

+    itemHeight*: UINT

+    itemData*: ULONG_PTR

+

+  LPMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT

+  TMEASUREITEMSTRUCT* = MEASUREITEMSTRUCT

+  PMEASUREITEMSTRUCT* = ptr MEASUREITEMSTRUCT

+  MEMORY_BASIC_INFORMATION* {.final, pure.} = object

+    BaseAddress*: PVOID

+    AllocationBase*: PVOID

+    AllocationProtect*: DWORD

+    RegionSize*: DWORD

+    State*: DWORD

+    Protect*: DWORD

+    `type`*: DWORD

+

+  PMEMORY_BASIC_INFORMATION* = ptr MEMORY_BASIC_INFORMATION

+  TMEMORYBASICINFORMATION* = MEMORY_BASIC_INFORMATION

+  MEMORYSTATUS* {.final, pure.} = object

+    dwLength*: DWORD

+    dwMemoryLoad*: DWORD

+    dwTotalPhys*: int

+    dwAvailPhys*: int

+    dwTotalPageFile*: int

+    dwAvailPageFile*: int

+    dwTotalVirtual*: int

+    dwAvailVirtual*: int

+

+  TGUID* {.final, pure.} = object

+    D1*: int32

+    D2*: int16

+    D3*: int16

+    D4*: array [0..7, int8]

+

+  LPMEMORYSTATUS* = ptr MEMORYSTATUS

+  TMEMORYSTATUS* = MEMORYSTATUS

+  PMEMORYSTATUS* = ptr MEMORYSTATUS

+  MENUEX_TEMPLATE_HEADER* {.final, pure.} = object

+    wVersion*: int16

+    wOffset*: int16

+    dwHelpId*: DWORD

+

+  TMENUXTEMPLATEHEADER* = MENUEX_TEMPLATE_HEADER

+  PMENUXTEMPLATEHEADER* = ptr MENUEX_TEMPLATE_HEADER

+  MENUEX_TEMPLATE_ITEM* {.final, pure.} = object

+    dwType*: DWORD

+    dwState*: DWORD

+    uId*: UINT

+    bResInfo*: int8

+    szText*: array[0..0, WCHAR]

+    dwHelpId*: DWORD

+

+  TMENUEXTEMPLATEITEM* = MENUEX_TEMPLATE_ITEM

+  PMENUEXTEMPLATEITEM* = ptr MENUEX_TEMPLATE_ITEM

+  MENUINFO* {.final, pure.} = object

+    cbSize*: DWORD

+    fMask*: DWORD

+    dwStyle*: DWORD

+    cyMax*: UINT

+    hbrBack*: HBRUSH

+    dwContextHelpID*: DWORD

+    dwMenuData*: ULONG_PTR

+

+  LPMENUINFO* = ptr MENUINFO

+  LPCMENUINFO* = ptr MENUINFO

+  TMENUINFO* = MENUINFO

+  PMENUINFO* = ptr MENUINFO

+  MENUITEMINFO* {.final, pure.} = object

+    cbSize*: UINT

+    fMask*: UINT

+    fType*: UINT

+    fState*: UINT

+    wID*: UINT

+    hSubMenu*: HMENU

+    hbmpChecked*: HBITMAP

+    hbmpUnchecked*: HBITMAP

+    dwItemData*: ULONG_PTR

+    dwTypeData*: LPTSTR

+    cch*: UINT

+    hbmpItem*: HBITMAP

+

+  LPMENUITEMINFO* = ptr MENUITEMINFO

+  LPCMENUITEMINFO* = ptr MENUITEMINFO

+  TMENUITEMINFO* = MENUITEMINFO

+  TMENUITEMINFOA* = MENUITEMINFO

+  PMENUITEMINFO* = ptr MENUITEMINFO

+  MENUITEMTEMPLATE* {.final, pure.} = object

+    mtOption*: int16

+    mtID*: int16

+    mtString*: array[0..0, WCHAR]

+

+  TMENUITEMTEMPLATE* = MENUITEMTEMPLATE

+  PMENUITEMTEMPLATE* = ptr MENUITEMTEMPLATE

+  MENUITEMTEMPLATEHEADER* {.final, pure.} = object

+    versionNumber*: int16

+    offset*: int16

+

+  TMENUITEMTEMPLATEHEADER* = MENUITEMTEMPLATEHEADER

+  PMENUITEMTEMPLATEHEADER* = ptr MENUITEMTEMPLATEHEADER

+  MENUTEMPLATE* {.final, pure.} = object

+  LPMENUTEMPLATE* = ptr MENUTEMPLATE

+  TMENUTEMPLATE* = MENUTEMPLATE

+  PMENUTEMPLATE* = ptr MENUTEMPLATE

+  METAFILEPICT* {.final, pure.} = object

+    mm*: LONG

+    xExt*: LONG

+    yExt*: LONG

+    hMF*: HMETAFILE

+

+  LPMETAFILEPICT* = ptr METAFILEPICT

+  TMETAFILEPICT* = METAFILEPICT

+  PMETAFILEPICT* = ptr METAFILEPICT

+  METAHEADER* {.final, pure.} = object

+    mtType*: int16

+    mtHeaderSize*: int16

+    mtVersion*: int16

+    mtSize*: DWORD

+    mtNoObjects*: int16

+    mtMaxRecord*: DWORD

+    mtNoParameters*: int16

+

+  TMETAHEADER* = METAHEADER

+  PMETAHEADER* = ptr METAHEADER

+  METARECORD* {.final, pure.} = object

+    rdSize*: DWORD

+    rdFunction*: int16

+    rdParm*: array[0..0, int16]

+

+  LPMETARECORD* = ptr METARECORD

+  TMETARECORD* = METARECORD

+  PMETARECORD* = ptr METARECORD

+  MINIMIZEDMETRICS* {.final, pure.} = object

+    cbSize*: UINT

+    iWidth*: int32

+    iHorzGap*: int32

+    iVertGap*: int32

+    iArrange*: int32

+

+  LPMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS

+  TMINIMIZEDMETRICS* = MINIMIZEDMETRICS

+  PMINIMIZEDMETRICS* = ptr MINIMIZEDMETRICS

+  MINMAXINFO* {.final, pure.} = object

+    ptReserved*: POINT

+    ptMaxSize*: POINT

+    ptMaxPosition*: POINT

+    ptMinTrackSize*: POINT

+    ptMaxTrackSize*: POINT

+

+  TMINMAXINFO* = MINMAXINFO

+  PMINMAXINFO* = ptr MINMAXINFO

+  MODEMDEVCAPS* {.final, pure.} = object

+    dwActualSize*: DWORD

+    dwRequiredSize*: DWORD

+    dwDevSpecificOffset*: DWORD

+    dwDevSpecificSize*: DWORD

+    dwModemProviderVersion*: DWORD

+    dwModemManufacturerOffset*: DWORD

+    dwModemManufacturerSize*: DWORD

+    dwModemModelOffset*: DWORD

+    dwModemModelSize*: DWORD

+    dwModemVersionOffset*: DWORD

+    dwModemVersionSize*: DWORD

+    dwDialOptions*: DWORD

+    dwCallSetupFailTimer*: DWORD

+    dwInactivityTimeout*: DWORD

+    dwSpeakerVolume*: DWORD

+    dwSpeakerMode*: DWORD

+    dwModemOptions*: DWORD

+    dwMaxDTERate*: DWORD

+    dwMaxDCERate*: DWORD

+    abVariablePortion*: array[0..0, int8]

+

+  LPMODEMDEVCAPS* = ptr MODEMDEVCAPS

+  TMODEMDEVCAPS* = MODEMDEVCAPS

+  PMODEMDEVCAPS* = ptr MODEMDEVCAPS

+  MODEMSETTINGS* {.final, pure.} = object

+    dwActualSize*: DWORD

+    dwRequiredSize*: DWORD

+    dwDevSpecificOffset*: DWORD

+    dwDevSpecificSize*: DWORD

+    dwCallSetupFailTimer*: DWORD

+    dwInactivityTimeout*: DWORD

+    dwSpeakerVolume*: DWORD

+    dwSpeakerMode*: DWORD

+    dwPreferredModemOptions*: DWORD

+    dwNegotiatedModemOptions*: DWORD

+    dwNegotiatedDCERate*: DWORD

+    abVariablePortion*: array[0..0, int8]

+

+  LPMODEMSETTINGS* = ptr MODEMSETTINGS

+  TMODEMSETTINGS* = MODEMSETTINGS

+  PMODEMSETTINGS* = ptr MODEMSETTINGS

+  MONCBSTRUCT* {.final, pure.} = object

+    cb*: UINT

+    dwTime*: DWORD

+    hTask*: HANDLE

+    dwRet*: DWORD

+    wType*: UINT

+    wFmt*: UINT

+    hConv*: HCONV

+    hsz1*: HSZ

+    hsz2*: HSZ

+    hData*: HDDEDATA

+    dwData1*: DWORD

+    dwData2*: DWORD

+    cc*: CONVCONTEXT

+    cbData*: DWORD

+    Data*: array[0..7, DWORD]

+

+  TMONCBSTRUCT* = MONCBSTRUCT

+  PMONCBSTRUCT* = ptr MONCBSTRUCT

+  MONCONVSTRUCT* {.final, pure.} = object

+    cb*: UINT

+    fConnect*: WINBOOL

+    dwTime*: DWORD

+    hTask*: HANDLE

+    hszSvc*: HSZ

+    hszTopic*: HSZ

+    hConvClient*: HCONV

+    hConvServer*: HCONV

+

+  TMONCONVSTRUCT* = MONCONVSTRUCT

+  PMONCONVSTRUCT* = ptr MONCONVSTRUCT

+  MONERRSTRUCT* {.final, pure.} = object

+    cb*: UINT

+    wLastError*: UINT

+    dwTime*: DWORD

+    hTask*: HANDLE

+

+  TMONERRSTRUCT* = MONERRSTRUCT

+  PMONERRSTRUCT* = ptr MONERRSTRUCT

+  MONHSZSTRUCT* {.final, pure.} = object

+    cb*: UINT

+    fsAction*: WINBOOL

+    dwTime*: DWORD

+    hsz*: HSZ

+    hTask*: HANDLE

+    str*: array[0..0, TCHAR]

+

+  TMONHSZSTRUCT* = MONHSZSTRUCT

+  PMONHSZSTRUCT* = ptr MONHSZSTRUCT

+  MONITOR_INFO_1* {.final, pure.} = object

+    pName*: LPTSTR

+

+  TMONITORINFO1* = MONITOR_INFO_1

+  PMONITORINFO1* = ptr MONITOR_INFO_1

+  MONITOR_INFO_2* {.final, pure.} = object

+    pName*: LPTSTR

+    pEnvironment*: LPTSTR

+    pDLLName*: LPTSTR

+

+  TMONITORINFO2* = MONITOR_INFO_2

+  PMONITORINFO2* = ptr MONITOR_INFO_2

+  MONLINKSTRUCT* {.final, pure.} = object

+    cb*: UINT

+    dwTime*: DWORD

+    hTask*: HANDLE

+    fEstablished*: WINBOOL

+    fNoData*: WINBOOL

+    hszSvc*: HSZ

+    hszTopic*: HSZ

+    hszItem*: HSZ

+    wFmt*: UINT

+    fServer*: WINBOOL

+    hConvServer*: HCONV

+    hConvClient*: HCONV

+

+  TMONLINKSTRUCT* = MONLINKSTRUCT

+  PMONLINKSTRUCT* = ptr MONLINKSTRUCT

+  MONMSGSTRUCT* {.final, pure.} = object

+    cb*: UINT

+    hwndTo*: HWND

+    dwTime*: DWORD

+    hTask*: HANDLE

+    wMsg*: UINT

+    wParam*: WPARAM

+    lParam*: LPARAM

+    dmhd*: DDEML_MSG_HOOK_DATA

+

+  TMONMSGSTRUCT* = MONMSGSTRUCT

+  PMONMSGSTRUCT* = ptr MONMSGSTRUCT

+  MOUSEHOOKSTRUCT* {.final, pure.} = object

+    pt*: POINT

+    hwnd*: HWND

+    wHitTestCode*: UINT

+    dwExtraInfo*: DWORD

+

+  LPMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT

+  TMOUSEHOOKSTRUCT* = MOUSEHOOKSTRUCT

+  PMOUSEHOOKSTRUCT* = ptr MOUSEHOOKSTRUCT

+  MOUSEKEYS* {.final, pure.} = object

+    cbSize*: DWORD

+    dwFlags*: DWORD

+    iMaxSpeed*: DWORD

+    iTimeToMaxSpeed*: DWORD

+    iCtrlSpeed*: DWORD

+    dwReserved1*: DWORD

+    dwReserved2*: DWORD

+

+  TMOUSEKEYS* = MOUSEKEYS

+  PMOUSEKEYS* = ptr MOUSEKEYS

+  MSGBOXCALLBACK* = proc (lpHelpInfo: LPHELPINFO){.stdcall.}

+  TMSGBOXCALLBACK* = MSGBOXCALLBACK

+  MSGBOXPARAMS* {.final, pure.} = object

+    cbSize*: UINT

+    hwndOwner*: HWND

+    hInstance*: HINST

+    lpszText*: LPCSTR

+    lpszCaption*: LPCSTR

+    dwStyle*: DWORD

+    lpszIcon*: LPCSTR

+    dwContextHelpId*: DWORD

+    lpfnMsgBoxCallback*: MSGBOXCALLBACK

+    dwLanguageId*: DWORD

+

+  LPMSGBOXPARAMS* = ptr MSGBOXPARAMS

+  TMSGBOXPARAMS* = MSGBOXPARAMS

+  TMSGBOXPARAMSA* = MSGBOXPARAMS

+  PMSGBOXPARAMS* = ptr MSGBOXPARAMS

+  MSGFILTER* {.final, pure.} = object

+    nmhdr*: NMHDR

+    msg*: UINT

+    wParam*: WPARAM

+    lParam*: LPARAM

+

+  Tmsgfilter* = MSGFILTER

+  Pmsgfilter* = ptr MSGFILTER

+  MULTIKEYHELP* {.final, pure.} = object

+    mkSize*: DWORD

+    mkKeylist*: TCHAR

+    szKeyphrase*: array[0..0, TCHAR]

+

+  TMULTIKEYHELP* = MULTIKEYHELP

+  PMULTIKEYHELP* = ptr MULTIKEYHELP

+  NAME_BUFFER* {.final, pure.} = object

+    name*: array[0..(NCBNAMSZ) - 1, UCHAR]

+    name_num*: UCHAR

+    name_flags*: UCHAR

+

+  TNAMEBUFFER* = NAME_BUFFER

+  PNAMEBUFFER* = ptr NAME_BUFFER

+  p_NCB* = ptr NCB

+  NCB* {.final, pure.} = object

+    ncb_command*: UCHAR

+    ncb_retcode*: UCHAR

+    ncb_lsn*: UCHAR

+    ncb_num*: UCHAR

+    ncb_buffer*: PUCHAR

+    ncb_length*: int16

+    ncb_callname*: array[0..(NCBNAMSZ) - 1, UCHAR]

+    ncb_name*: array[0..(NCBNAMSZ) - 1, UCHAR]

+    ncb_rto*: UCHAR

+    ncb_sto*: UCHAR

+    ncb_post*: proc (para1: p_NCB){.CDECL.}

+    ncb_lana_num*: UCHAR

+    ncb_cmd_cplt*: UCHAR

+    ncb_reserve*: array[0..9, UCHAR]

+    ncb_event*: HANDLE

+

+  TNCB* = NCB

+  NCCALCSIZE_PARAMS* {.final, pure.} = object

+    rgrc*: array[0..2, RECT]

+    lppos*: PWINDOWPOS

+

+  TNCCALCSIZEPARAMS* = NCCALCSIZE_PARAMS

+  PNCCALCSIZEPARAMS* = ptr NCCALCSIZE_PARAMS

+  NDDESHAREINFO* {.final, pure.} = object

+    lRevision*: LONG

+    lpszShareName*: LPTSTR

+    lShareType*: LONG

+    lpszAppTopicList*: LPTSTR

+    fSharedFlag*: LONG

+    fService*: LONG

+    fStartAppFlag*: LONG

+    nCmdShow*: LONG

+    qModifyId*: array[0..1, LONG]

+    cNumItems*: LONG

+    lpszItemList*: LPTSTR

+

+  TNDDESHAREINFO* = NDDESHAREINFO

+  PNDDESHAREINFO* = ptr NDDESHAREINFO

+  NETRESOURCE* {.final, pure.} = object

+    dwScope*: DWORD

+    dwType*: DWORD

+    dwDisplayType*: DWORD

+    dwUsage*: DWORD

+    lpLocalName*: LPTSTR

+    lpRemoteName*: LPTSTR

+    lpComment*: LPTSTR

+    lpProvider*: LPTSTR

+

+  LPNETRESOURCE* = ptr NETRESOURCE

+  TNETRESOURCE* = NETRESOURCE

+  TNETRESOURCEA* = NETRESOURCE

+  PNETRESOURCE* = ptr NETRESOURCE

+  PNETRESOURCEA* = ptr NETRESOURCE

+  NEWCPLINFO* {.final, pure.} = object

+    dwSize*: DWORD

+    dwFlags*: DWORD

+    dwHelpContext*: DWORD

+    lData*: LONG

+    hIcon*: HICON

+    szName*: array[0..31, TCHAR]

+    szInfo*: array[0..63, TCHAR]

+    szHelpFile*: array[0..127, TCHAR]

+

+  TNEWCPLINFO* = NEWCPLINFO

+  PNEWCPLINFO* = ptr NEWCPLINFO

+  NEWTEXTMETRIC* {.final, pure.} = object

+    tmHeight*: LONG

+    tmAscent*: LONG

+    tmDescent*: LONG

+    tmInternalLeading*: LONG

+    tmExternalLeading*: LONG

+    tmAveCharWidth*: LONG

+    tmMaxCharWidth*: LONG

+    tmWeight*: LONG

+    tmOverhang*: LONG

+    tmDigitizedAspectX*: LONG

+    tmDigitizedAspectY*: LONG

+    tmFirstChar*: BCHAR

+    tmLastChar*: BCHAR

+    tmDefaultChar*: BCHAR

+    tmBreakChar*: BCHAR

+    tmItalic*: int8

+    tmUnderlined*: int8

+    tmStruckOut*: int8

+    tmPitchAndFamily*: int8

+    tmCharSet*: int8

+    ntmFlags*: DWORD

+    ntmSizeEM*: UINT

+    ntmCellHeight*: UINT

+    ntmAvgWidth*: UINT

+

+  TNEWTEXTMETRIC* = NEWTEXTMETRIC

+  PNEWTEXTMETRIC* = ptr NEWTEXTMETRIC

+  NEWTEXTMETRICEX* {.final, pure.} = object

+    ntmentm*: NEWTEXTMETRIC

+    ntmeFontSignature*: FONTSIGNATURE

+

+  TNEWTEXTMETRICEX* = NEWTEXTMETRICEX

+  PNEWTEXTMETRICEX* = ptr NEWTEXTMETRICEX

+  NM_LISTVIEW* {.final, pure.} = object

+    hdr*: NMHDR

+    iItem*: int32

+    iSubItem*: int32

+    uNewState*: UINT

+    uOldState*: UINT

+    uChanged*: UINT

+    ptAction*: POINT

+    lParam*: LPARAM

+

+  TNMLISTVIEW* = NM_LISTVIEW

+  PNMLISTVIEW* = ptr NM_LISTVIEW

+  TV_ITEM* {.final, pure.} = object

+    mask*: UINT

+    hItem*: HTREEITEM

+    state*: UINT

+    stateMask*: UINT

+    pszText*: LPTSTR

+    cchTextMax*: int32

+    iImage*: int32

+    iSelectedImage*: int32

+    cChildren*: int32

+    lParam*: LPARAM

+

+  LPTV_ITEM* = ptr TV_ITEM

+  TTVITEM* = TV_ITEM

+  PTVITEM* = ptr TV_ITEM

+  NM_TREEVIEW* {.final, pure.} = object

+    hdr*: NMHDR

+    action*: UINT

+    itemOld*: TV_ITEM

+    itemNew*: TV_ITEM

+    ptDrag*: POINT

+

+  LPNM_TREEVIEW* = ptr NM_TREEVIEW

+  TNMTREEVIEW* = NM_TREEVIEW

+  PNMTREEVIEW* = ptr NM_TREEVIEW

+  NM_UPDOWNW* {.final, pure.} = object

+    hdr*: NMHDR

+    iPos*: int32

+    iDelta*: int32

+

+  TNMUPDOWN* = NM_UPDOWNW

+  PNMUPDOWN* = ptr NM_UPDOWNW

+  NONCLIENTMETRICS* {.final, pure.} = object

+    cbSize*: UINT

+    iBorderWidth*: int32

+    iScrollWidth*: int32

+    iScrollHeight*: int32

+    iCaptionWidth*: int32

+    iCaptionHeight*: int32

+    lfCaptionFont*: LOGFONT

+    iSmCaptionWidth*: int32

+    iSmCaptionHeight*: int32

+    lfSmCaptionFont*: LOGFONT

+    iMenuWidth*: int32

+    iMenuHeight*: int32

+    lfMenuFont*: LOGFONT

+    lfStatusFont*: LOGFONT

+    lfMessageFont*: LOGFONT

+

+  LPNONCLIENTMETRICS* = ptr NONCLIENTMETRICS

+  TNONCLIENTMETRICS* = NONCLIENTMETRICS

+  PNONCLIENTMETRICS* = ptr NONCLIENTMETRICS

+  SERVICE_ADDRESS* {.final, pure.} = object

+    dwAddressType*: DWORD

+    dwAddressFlags*: DWORD

+    dwAddressLength*: DWORD

+    dwPrincipalLength*: DWORD

+    lpAddress*: ptr int8

+    lpPrincipal*: ptr int8

+

+  TSERVICEADDRESS* = SERVICE_ADDRESS

+  PSERVICEADDRESS* = ptr SERVICE_ADDRESS

+  SERVICE_ADDRESSES* {.final, pure.} = object

+    dwAddressCount*: DWORD

+    Addresses*: array[0..0, SERVICE_ADDRESS]

+

+  LPSERVICE_ADDRESSES* = ptr SERVICE_ADDRESSES

+  TSERVICEADDRESSES* = SERVICE_ADDRESSES

+  PSERVICEADDRESSES* = ptr SERVICE_ADDRESSES

+  LPGUID* = ptr TGUID

+  PGUID* = ptr TGUID

+  CLSID* = TGUID

+  LPCLSID* = ptr CLSID

+  TCLSID* = CLSID

+  PCLSID* = ptr CLSID

+  SERVICE_INFO* {.final, pure.} = object

+    lpServiceType*: LPGUID

+    lpServiceName*: LPTSTR

+    lpComment*: LPTSTR

+    lpLocale*: LPTSTR

+    dwDisplayHint*: DWORD

+    dwVersion*: DWORD

+    dwTime*: DWORD

+    lpMachineName*: LPTSTR

+    lpServiceAddress*: LPSERVICE_ADDRESSES

+    ServiceSpecificInfo*: BLOB

+

+  TSERVICEINFO* = SERVICE_INFO

+  PSERVICEINFO* = ptr SERVICE_INFO

+  NS_SERVICE_INFO* {.final, pure.} = object

+    dwNameSpace*: DWORD

+    ServiceInfo*: SERVICE_INFO

+

+  TNSSERVICEINFO* = NS_SERVICE_INFO

+  PNSSERVICEINFO* = ptr NS_SERVICE_INFO

+  NUMBERFMT* {.final, pure.} = object

+    NumDigits*: UINT

+    LeadingZero*: UINT

+    Grouping*: UINT

+    lpDecimalSep*: LPTSTR

+    lpThousandSep*: LPTSTR

+    NegativeOrder*: UINT

+

+  Tnumberfmt* = NUMBERFMT

+  Pnumberfmt* = ptr NUMBERFMT

+  OFSTRUCT* {.final, pure.} = object

+    cBytes*: int8

+    fFixedDisk*: int8

+    nErrCode*: int16

+    Reserved1*: int16

+    Reserved2*: int16

+    szPathName*: array[0..(OFS_MAXPATHNAME) - 1, CHAR]

+

+  LPOFSTRUCT* = ptr OFSTRUCT

+  TOFSTRUCT* = OFSTRUCT

+  POFSTRUCT* = ptr OFSTRUCT

+  OPENFILENAME_NT4* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hInstance*: HINST

+    lpstrFilter*: LPCTSTR

+    lpstrCustomFilter*: LPTSTR

+    nMaxCustFilter*: DWORD

+    nFilterIndex*: DWORD

+    lpstrFile*: LPTSTR

+    nMaxFile*: DWORD

+    lpstrFileTitle*: LPTSTR

+    nMaxFileTitle*: DWORD

+    lpstrInitialDir*: LPCTSTR

+    lpstrTitle*: LPCTSTR

+    Flags*: DWORD

+    nFileOffset*: int16

+    nFileExtension*: int16

+    lpstrDefExt*: LPCTSTR

+    lCustData*: LPARAM

+    lpfnHook*: LPOFNHOOKPROC

+    lpTemplateName*: LPCTSTR

+

+  LPOPENFILENAME_NT4* = ptr OPENFILENAME_NT4

+  TOPENFILENAME_NT4* = OPENFILENAME_NT4

+  POPENFILENAME_NT4* = ptr OPENFILENAME_NT4

+  TOPENFILENAME* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hInstance*: HINST

+    lpstrFilter*: LPCTSTR

+    lpstrCustomFilter*: LPTSTR

+    nMaxCustFilter*: DWORD

+    nFilterIndex*: DWORD

+    lpstrFile*: LPTSTR

+    nMaxFile*: DWORD

+    lpstrFileTitle*: LPTSTR

+    nMaxFileTitle*: DWORD

+    lpstrInitialDir*: LPCTSTR

+    lpstrTitle*: LPCTSTR

+    Flags*: DWORD

+    nFileOffset*: int16

+    nFileExtension*: int16

+    lpstrDefExt*: LPCTSTR

+    lCustData*: LPARAM

+    lpfnHook*: LPOFNHOOKPROC

+    lpTemplateName*: LPCTSTR

+    pvReserved*: pointer

+    dwreserved*: dword

+    FlagsEx*: dword

+

+  LPOPENFILENAME* = ptr TOPENFILENAME

+  POPENFILENAME* = ptr TOPENFILENAME

+  OFN* = TOPENFILENAME

+  POFN* = ptr TOPENFILENAME

+  OFNOTIFY* {.final, pure.} = object

+    hdr*: NMHDR

+    lpOFN*: LPOPENFILENAME

+    pszFile*: LPTSTR

+

+  LPOFNOTIFY* = ptr OFNOTIFY

+  TOFNOTIFY* = OFNOTIFY

+  POFNOTIFY* = ptr OFNOTIFY

+  OSVERSIONINFO* {.final, pure.} = object

+    dwOSVersionInfoSize*: DWORD

+    dwMajorVersion*: DWORD

+    dwMinorVersion*: DWORD

+    dwBuildNumber*: DWORD

+    dwPlatformId*: DWORD

+    szCSDVersion*: array[0..127, TCHAR]

+

+  LPOSVERSIONINFO* = ptr OSVERSIONINFO

+  TOSVERSIONINFO* = OSVERSIONINFO

+  POSVERSIONINFO* = ptr OSVERSIONINFO

+  OSVERSIONINFOW* {.final, pure.} = object

+    dwOSVersionInfoSize*: DWORD

+    dwMajorVersion*: DWORD

+    dwMinorVersion*: DWORD

+    dwBuildNumber*: DWORD

+    dwPlatformId*: DWORD

+    szCSDVersion*: array[0..127, WCHAR]

+

+  LPOSVERSIONINFOW* = ptr OSVERSIONINFOW

+  TOSVERSIONINFOW* = OSVERSIONINFOW

+  POSVERSIONINFOW* = ptr OSVERSIONINFOW

+  TEXTMETRIC* {.final, pure.} = object

+    tmHeight*: LONG

+    tmAscent*: LONG

+    tmDescent*: LONG

+    tmInternalLeading*: LONG

+    tmExternalLeading*: LONG

+    tmAveCharWidth*: LONG

+    tmMaxCharWidth*: LONG

+    tmWeight*: LONG

+    tmOverhang*: LONG

+    tmDigitizedAspectX*: LONG

+    tmDigitizedAspectY*: LONG

+    tmFirstChar*: BCHAR

+    tmLastChar*: BCHAR

+    tmDefaultChar*: BCHAR

+    tmBreakChar*: BCHAR

+    tmItalic*: int8

+    tmUnderlined*: int8

+    tmStruckOut*: int8

+    tmPitchAndFamily*: int8

+    tmCharSet*: int8

+

+  LPTEXTMETRIC* = ptr TEXTMETRIC

+  TTEXTMETRIC* = TEXTMETRIC

+  PTEXTMETRIC* = ptr TEXTMETRIC

+  TEXTMETRICW* {.final, pure.} = object

+    tmHeight*: LONG

+    tmAscent*: LONG

+    tmDescent*: LONG

+    tmInternalLeading*: LONG

+    tmExternalLeading*: LONG

+    tmAveCharWidth*: LONG

+    tmMaxCharWidth*: LONG

+    tmWeight*: LONG

+    tmOverhang*: LONG

+    tmDigitizedAspectX*: LONG

+    tmDigitizedAspectY*: LONG

+    tmFirstChar*: WCHAR

+    tmLastChar*: WCHAR

+    tmDefaultChar*: WCHAR

+    tmBreakChar*: WCHAR

+    tmItalic*: int8

+    tmUnderlined*: int8

+    tmStruckOut*: int8

+    tmPitchAndFamily*: int8

+    tmCharSet*: int8

+

+  LPTEXTMETRICW* = ptr TEXTMETRICW

+  TTEXTMETRICW* = TEXTMETRICW

+  PTEXTMETRICW* = ptr TEXTMETRICW

+  OUTLINETEXTMETRIC* {.final, pure.} = object

+    otmSize*: UINT

+    otmTextMetrics*: TEXTMETRIC

+    otmFiller*: int8

+    otmPanoseNumber*: PANOSE

+    otmfsSelection*: UINT

+    otmfsType*: UINT

+    otmsCharSlopeRise*: int32

+    otmsCharSlopeRun*: int32

+    otmItalicAngle*: int32

+    otmEMSquare*: UINT

+    otmAscent*: int32

+    otmDescent*: int32

+    otmLineGap*: UINT

+    otmsCapEmHeight*: UINT

+    otmsXHeight*: UINT

+    otmrcFontBox*: RECT

+    otmMacAscent*: int32

+    otmMacDescent*: int32

+    otmMacLineGap*: UINT

+    otmusMinimumPPEM*: UINT

+    otmptSubscriptSize*: POINT

+    otmptSubscriptOffset*: POINT

+    otmptSuperscriptSize*: POINT

+    otmptSuperscriptOffset*: POINT

+    otmsStrikeoutSize*: UINT

+    otmsStrikeoutPosition*: int32

+    otmsUnderscoreSize*: int32

+    otmsUnderscorePosition*: int32

+    otmpFamilyName*: PSTR

+    otmpFaceName*: PSTR

+    otmpStyleName*: PSTR

+    otmpFullName*: PSTR

+

+  LPOUTLINETEXTMETRIC* = ptr OUTLINETEXTMETRIC

+  TOUTLINETEXTMETRIC* = OUTLINETEXTMETRIC

+  POUTLINETEXTMETRIC* = ptr OUTLINETEXTMETRIC

+  OVERLAPPED* {.final, pure.} = object

+    Internal*: DWORD

+    InternalHigh*: DWORD

+    Offset*: DWORD

+    OffsetHigh*: DWORD

+    hEvent*: HANDLE

+

+  LPOVERLAPPED* = ptr OVERLAPPED

+  TOVERLAPPED* = OVERLAPPED

+  POVERLAPPED* = ptr OVERLAPPED

+  #PAGESETUPDLG = record conflicts with function PageSetupDlg

+  TPAGESETUPDLG* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hDevMode*: HGLOBAL

+    hDevNames*: HGLOBAL

+    Flags*: DWORD

+    ptPaperSize*: POINT

+    rtMinMargin*: RECT

+    rtMargin*: RECT

+    hInstance*: HINST

+    lCustData*: LPARAM

+    lpfnPageSetupHook*: LPPAGESETUPHOOK

+    lpfnPagePaintHook*: LPPAGEPAINTHOOK

+    lpPageSetupTemplateName*: LPCTSTR

+    hPageSetupTemplate*: HGLOBAL

+

+  LPPAGESETUPDLG* = ptr TPAGESETUPDLG

+  PPAGESETUPDLG* = ptr TPAGESETUPDLG

+  TPSD* = TPAGESETUPDLG

+  PPSD* = ptr TPAGESETUPDLG

+  PAINTSTRUCT* {.final, pure.} = object

+    hdc*: HDC

+    fErase*: WINBOOL

+    rcPaint*: RECT

+    fRestore*: WINBOOL

+    fIncUpdate*: WINBOOL

+    rgbReserved*: array[0..31, int8]

+

+  LPPAINTSTRUCT* = ptr PAINTSTRUCT

+  TPAINTSTRUCT* = PAINTSTRUCT

+  PPAINTSTRUCT* = ptr PAINTSTRUCT

+  PARAFORMAT* {.final, pure.} = object

+    cbSize*: UINT

+    dwMask*: DWORD

+    wNumbering*: int16

+    wReserved*: int16

+    dxStartIndent*: LONG

+    dxRightIndent*: LONG

+    dxOffset*: LONG

+    wAlignment*: int16

+    cTabCount*: SHORT

+    rgxTabs*: array[0..(MAX_TAB_STOPS) - 1, LONG]

+

+  Tparaformat* = PARAFORMAT

+  Pparaformat* = ptr PARAFORMAT

+  PERF_COUNTER_BLOCK* {.final, pure.} = object

+    ByteLength*: DWORD

+

+  TPERFCOUNTERBLOCK* = PERF_COUNTER_BLOCK

+  PPERFCOUNTERBLOCK* = ptr PERF_COUNTER_BLOCK

+  PERF_COUNTER_DEFINITION* {.final, pure.} = object

+    ByteLength*: DWORD

+    CounterNameTitleIndex*: DWORD

+    CounterNameTitle*: LPWSTR

+    CounterHelpTitleIndex*: DWORD

+    CounterHelpTitle*: LPWSTR

+    DefaultScale*: DWORD

+    DetailLevel*: DWORD

+    CounterType*: DWORD

+    CounterSize*: DWORD

+    CounterOffset*: DWORD

+

+  TPERFCOUNTERDEFINITION* = PERF_COUNTER_DEFINITION

+  PPERFCOUNTERDEFINITION* = ptr PERF_COUNTER_DEFINITION

+  PERF_DATA_BLOCK* {.final, pure.} = object

+    Signature*: array[0..3, WCHAR]

+    LittleEndian*: DWORD

+    Version*: DWORD

+    Revision*: DWORD

+    TotalByteLength*: DWORD

+    HeaderLength*: DWORD

+    NumObjectTypes*: DWORD

+    DefaultObject*: DWORD

+    SystemTime*: SYSTEMTIME

+    PerfTime*: LARGE_INTEGER

+    PerfFreq*: LARGE_INTEGER

+    PerfTime100nSec*: LARGE_INTEGER

+    SystemNameLength*: DWORD

+    SystemNameOffset*: DWORD

+

+  TPERFDATABLOCK* = PERF_DATA_BLOCK

+  PPERFDATABLOCK* = ptr PERF_DATA_BLOCK

+  PERF_INSTANCE_DEFINITION* {.final, pure.} = object

+    ByteLength*: DWORD

+    ParentObjectTitleIndex*: DWORD

+    ParentObjectInstance*: DWORD

+    UniqueID*: DWORD

+    NameOffset*: DWORD

+    NameLength*: DWORD

+

+  TPERFINSTANCEDEFINITION* = PERF_INSTANCE_DEFINITION

+  PPERFINSTANCEDEFINITION* = PERF_INSTANCE_DEFINITION

+  PERF_OBJECT_TYPE* {.final, pure.} = object

+    TotalByteLength*: DWORD

+    DefinitionLength*: DWORD

+    HeaderLength*: DWORD

+    ObjectNameTitleIndex*: DWORD

+    ObjectNameTitle*: LPWSTR

+    ObjectHelpTitleIndex*: DWORD

+    ObjectHelpTitle*: LPWSTR

+    DetailLevel*: DWORD

+    NumCounters*: DWORD

+    DefaultCounter*: DWORD

+    NumInstances*: DWORD

+    CodePage*: DWORD

+    PerfTime*: LARGE_INTEGER

+    PerfFreq*: LARGE_INTEGER

+

+  TPERFOBJECTTYPE* = PERF_OBJECT_TYPE

+  PPERFOBJECTTYPE* = ptr PERF_OBJECT_TYPE

+  POLYTEXT* {.final, pure.} = object

+    x*: int32

+    y*: int32

+    n*: UINT

+    lpstr*: LPCTSTR

+    uiFlags*: UINT

+    rcl*: RECT

+    pdx*: ptr int32

+

+  TPOLYTEXT* = POLYTEXT

+  PPOLYTEXT* = ptr POLYTEXT

+  PORT_INFO_1* {.final, pure.} = object

+    pName*: LPTSTR

+

+  TPORTINFO1* = PORT_INFO_1

+  PPORTINFO1* = ptr PORT_INFO_1

+  PORT_INFO_2* {.final, pure.} = object

+    pPortName*: LPSTR

+    pMonitorName*: LPSTR

+    pDescription*: LPSTR

+    fPortType*: DWORD

+    Reserved*: DWORD

+

+  TPORTINFO2* = PORT_INFO_2

+  PPORTINFO2* = ptr PORT_INFO_2

+  PREVENT_MEDIA_REMOVAL* {.final, pure.} = object

+    PreventMediaRemoval*: bool

+

+  TPREVENTMEDIAREMOVAL* = PREVENT_MEDIA_REMOVAL

+  PPREVENTMEDIAREMOVAL* = ptr PREVENT_MEDIA_REMOVAL

+  #PRINTDLG = record conflicts with PrintDlg function

+  TPRINTDLG* {.final, pure.} = object

+    lStructSize*: DWORD

+    hwndOwner*: HWND

+    hDevMode*: HANDLE

+    hDevNames*: HANDLE

+    hDC*: HDC

+    Flags*: DWORD

+    nFromPage*: int16

+    nToPage*: int16

+    nMinPage*: int16

+    nMaxPage*: int16

+    nCopies*: int16

+    hInstance*: HINST

+    lCustData*: DWORD

+    lpfnPrintHook*: LPPRINTHOOKPROC

+    lpfnSetupHook*: LPSETUPHOOKPROC

+    lpPrintTemplateName*: LPCTSTR

+    lpSetupTemplateName*: LPCTSTR

+    hPrintTemplate*: HANDLE

+    hSetupTemplate*: HANDLE

+

+  LPPRINTDLG* = ptr TPRINTDLG

+  PPRINTDLG* = ptr TPRINTDLG

+  TPD* = TPRINTDLG

+  PPD* = ptr TPRINTDLG

+  PRINTER_DEFAULTS* {.final, pure.} = object

+    pDatatype*: LPTSTR

+    pDevMode*: LPDEVMODE

+    DesiredAccess*: ACCESS_MASK

+

+  TPRINTERDEFAULTS* = PRINTER_DEFAULTS

+  PPRINTERDEFAULTS* = ptr PRINTER_DEFAULTS

+  PRINTER_INFO_1* {.final, pure.} = object

+    Flags*: DWORD

+    pDescription*: LPTSTR

+    pName*: LPTSTR

+    pComment*: LPTSTR

+

+  LPPRINTER_INFO_1* = ptr PRINTER_INFO_1

+  PPRINTER_INFO_1* = ptr PRINTER_INFO_1

+  TPRINTERINFO1* = PRINTER_INFO_1

+  PRINTER_INFO_2* {.final, pure.} = object

+    pServerName*: LPTSTR

+    pPrinterName*: LPTSTR

+    pShareName*: LPTSTR

+    pPortName*: LPTSTR

+    pDriverName*: LPTSTR

+    pComment*: LPTSTR

+    pLocation*: LPTSTR

+    pDevMode*: LPDEVMODE

+    pSepFile*: LPTSTR

+    pPrintProcessor*: LPTSTR

+    pDatatype*: LPTSTR

+    pParameters*: LPTSTR

+    pSecurityDescriptor*: PSECURITY_DESCRIPTOR

+    Attributes*: DWORD

+    Priority*: DWORD

+    DefaultPriority*: DWORD

+    StartTime*: DWORD

+    UntilTime*: DWORD

+    Status*: DWORD

+    cJobs*: DWORD

+    AveragePPM*: DWORD

+

+  TPRINTERINFO2* = PRINTER_INFO_2

+  PPRINTERINFO2* = ptr PRINTER_INFO_2

+  PRINTER_INFO_3* {.final, pure.} = object

+    pSecurityDescriptor*: PSECURITY_DESCRIPTOR

+

+  TPRINTERINFO3* = PRINTER_INFO_3

+  PPRINTERINFO3* = ptr PRINTER_INFO_3

+  PRINTER_INFO_4* {.final, pure.} = object

+    pPrinterName*: LPTSTR

+    pServerName*: LPTSTR

+    Attributes*: DWORD

+

+  TPRINTERINFO4* = PRINTER_INFO_4

+  PPRINTERINFO4* = ptr PRINTER_INFO_4

+  PRINTER_INFO_5* {.final, pure.} = object

+    pPrinterName*: LPTSTR

+    pPortName*: LPTSTR

+    Attributes*: DWORD

+    DeviceNotSelectedTimeout*: DWORD

+    TransmissionRetryTimeout*: DWORD

+

+  TPRINTERINFO5* = PRINTER_INFO_5

+  PPRINTERINFO5* = ptr PRINTER_INFO_5

+  PRINTER_NOTIFY_INFO_DATA* {.final, pure.} = object

+    `type`*: int16

+    Field*: int16

+    Reserved*: DWORD

+    Id*: DWORD

+    cbBuf*: DWORD

+    pBuf*: LPVOID

+

+  TPRINTERNOTIFYINFODATA* = PRINTER_NOTIFY_INFO_DATA

+  PPRINTERNOTIFYINFODATA* = ptr PRINTER_NOTIFY_INFO_DATA

+  PRINTER_NOTIFY_INFO* {.final, pure.} = object

+    Version*: DWORD

+    Flags*: DWORD

+    Count*: DWORD

+    aData*: array[0..0, PRINTER_NOTIFY_INFO_DATA]

+

+  TPRINTERNOTIFYINFO* = PRINTER_NOTIFY_INFO

+  PPRINTERNOTIFYINFO* = ptr PRINTER_NOTIFY_INFO

+  PRINTER_NOTIFY_OPTIONS_TYPE* {.final, pure.} = object

+    `type`*: int16

+    Reserved0*: int16

+    Reserved1*: DWORD

+    Reserved2*: DWORD

+    Count*: DWORD

+    pFields*: PWORD

+

+  PPRINTER_NOTIFY_OPTIONS_TYPE* = ptr PRINTER_NOTIFY_OPTIONS_TYPE

+  TPRINTERNOTIFYOPTIONSTYPE* = PRINTER_NOTIFY_OPTIONS_TYPE

+  PRINTER_NOTIFY_OPTIONS* {.final, pure.} = object

+    Version*: DWORD

+    Flags*: DWORD

+    Count*: DWORD

+    pTypes*: PPRINTER_NOTIFY_OPTIONS_TYPE

+

+  TPRINTERNOTIFYOPTIONS* = PRINTER_NOTIFY_OPTIONS

+  PPRINTERNOTIFYOPTIONS* = ptr PRINTER_NOTIFY_OPTIONS

+  PRINTPROCESSOR_INFO_1* {.final, pure.} = object

+    pName*: LPTSTR

+

+  TPRINTPROCESSORINFO1* = PRINTPROCESSOR_INFO_1

+  PPRINTPROCESSORINFO1* = ptr PRINTPROCESSOR_INFO_1

+  PRIVILEGE_SET* {.final, pure.} = object

+    PrivilegeCount*: DWORD

+    Control*: DWORD

+    Privilege*: array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES]

+

+  LPPRIVILEGE_SET* = ptr PRIVILEGE_SET

+  PPRIVILEGE_SET* = ptr PRIVILEGE_SET

+  TPRIVILEGESET* = PRIVILEGE_SET

+  PROCESS_HEAPENTRY* {.final, pure.} = object

+    lpData*: PVOID

+    cbData*: DWORD

+    cbOverhead*: int8

+    iRegionIndex*: int8

+    wFlags*: int16

+    dwCommittedSize*: DWORD

+    dwUnCommittedSize*: DWORD

+    lpFirstBlock*: LPVOID

+    lpLastBlock*: LPVOID

+    hMem*: HANDLE

+

+  LPPROCESS_HEAP_ENTRY* = ptr PROCESS_HEAPENTRY

+  TPROCESSHEAPENTRY* = PROCESS_HEAPENTRY

+  PPROCESSHEAPENTRY* = ptr PROCESS_HEAPENTRY

+  PROCESS_INFORMATION* {.final, pure.} = object

+    hProcess*: HANDLE

+    hThread*: HANDLE

+    dwProcessId*: DWORD

+    dwThreadId*: DWORD

+

+  LPPROCESS_INFORMATION* = ptr PROCESS_INFORMATION

+  TPROCESSINFORMATION* = PROCESS_INFORMATION

+  PPROCESSINFORMATION* = ptr PROCESS_INFORMATION

+  LPFNPSPCALLBACK* = proc (para1: HWND, para2: UINT, para3: LPVOID): UINT{.

+      stdcall.}

+  TFNPSPCALLBACK* = LPFNPSPCALLBACK

+  PROPSHEETPAGE* {.final, pure.} = object

+    dwSize*: DWORD

+    dwFlags*: DWORD

+    hInstance*: HINST

+    pszIcon*: LPCTSTR

+    pszTitle*: LPCTSTR

+    pfnDlgProc*: DLGPROC

+    lParam*: LPARAM

+    pfnCallback*: LPFNPSPCALLBACK

+    pcRefParent*: ptr UINT

+

+  LPPROPSHEETPAGE* = ptr PROPSHEETPAGE

+  LPCPROPSHEETPAGE* = ptr PROPSHEETPAGE

+  TPROPSHEETPAGE* = PROPSHEETPAGE

+  PPROPSHEETPAGE* = ptr PROPSHEETPAGE

+  emptyrecord* {.final, pure.} = object

+  lpemptyrecord* = ptr emptyrecord

+  HPROPSHEETPAGE* = ptr emptyrecord

+  PROPSHEETHEADER* {.final, pure.} = object

+    dwSize*: DWORD

+    dwFlags*: DWORD

+    hwndParent*: HWND

+    hInstance*: HINST

+    pszIcon*: LPCTSTR

+    pszCaption*: LPCTSTR

+    nPages*: UINT

+    pStartPage*: LPCTSTR

+    phpage*: ptr HPROPSHEETPAGE

+    pfnCallback*: PFNPROPSHEETCALLBACK

+    pszbmWatermark*: LPCTSTR

+    hplWatermark*: HPALETTE

+    pszbmHeader*: cstring

+

+  LPPROPSHEETHEADER* = ptr PROPSHEETHEADER

+  LPCPROPSHEETHEADER* = ptr PROPSHEETHEADER

+  TPROPSHEETHEADER* = PROPSHEETHEADER

+  PPROPSHEETHEADER* = ptr PROPSHEETHEADER

+  # PropertySheet callbacks

+  LPFNADDPROPSHEETPAGE* = proc (para1: HPROPSHEETPAGE, para2: LPARAM): WINBOOL{.

+      stdcall.}

+  TFNADDPROPSHEETPAGE* = LPFNADDPROPSHEETPAGE

+  LPFNADDPROPSHEETPAGES* = proc (para1: LPVOID, para2: LPFNADDPROPSHEETPAGE,

+                                 para3: LPARAM): WINBOOL{.stdcall.}

+  TFNADDPROPSHEETPAGES* = LPFNADDPROPSHEETPAGES

+  PROTOCOL_INFO* {.final, pure.} = object

+    dwServiceFlags*: DWORD

+    iAddressFamily*: WINT

+    iMaxSockAddr*: WINT

+    iMinSockAddr*: WINT

+    iSocketType*: WINT

+    iProtocol*: WINT

+    dwMessageSize*: DWORD

+    lpProtocol*: LPTSTR

+

+  TPROTOCOLINFO* = PROTOCOL_INFO

+  PPROTOCOLINFO* = ptr PROTOCOL_INFO

+  PROVIDOR_INFO_1* {.final, pure.} = object

+    pName*: LPTSTR

+    pEnvironment*: LPTSTR

+    pDLLName*: LPTSTR

+

+  TPROVIDORINFO1* = PROVIDOR_INFO_1

+  PPROVIDORINFO1* = ptr PROVIDOR_INFO_1

+  PSHNOTIFY* {.final, pure.} = object

+    hdr*: NMHDR

+    lParam*: LPARAM

+

+  LPPSHNOTIFY* = ptr PSHNOTIFY

+  TPSHNOTIFY* = PSHNOTIFY

+  PPSHNOTIFY* = ptr PSHNOTIFY

+  PUNCTUATION* {.final, pure.} = object

+    iSize*: UINT

+    szPunctuation*: LPSTR

+

+  Tpunctuation* = PUNCTUATION

+  Ppunctuation* = ptr PUNCTUATION

+  TQUERY_SERVICE_CONFIG* {.final, pure.} = object

+    dwServiceType*: DWORD

+    dwStartType*: DWORD

+    dwErrorControl*: DWORD

+    lpBinaryPathName*: LPTSTR

+    lpLoadOrderGroup*: LPTSTR

+    dwTagId*: DWORD

+    lpDependencies*: LPTSTR

+    lpServiceStartName*: LPTSTR

+    lpDisplayName*: LPTSTR

+

+  LPQUERY_SERVICE_CONFIG* = ptr TQUERY_SERVICE_CONFIG

+  PQUERYSERVICECONFIG* = ptr TQUERY_SERVICE_CONFIG

+  TQUERY_SERVICE_LOCK_STATUS* {.final, pure.} = object

+    fIsLocked*: DWORD

+    lpLockOwner*: LPTSTR

+    dwLockDuration*: DWORD

+

+  LPQUERY_SERVICE_LOCK_STATUS* = ptr TQUERY_SERVICE_LOCK_STATUS

+  PQUERYSERVICELOCKSTATUS* = ptr TQUERY_SERVICE_LOCK_STATUS

+  RASAMB* {.final, pure.} = object

+    dwSize*: DWORD

+    dwError*: DWORD

+    szNetBiosError*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR]

+    bLana*: int8

+

+  TRASAMB* = RASAMB

+  PRASAMB* = ptr RASAMB

+  RASCONN* {.final, pure.} = object

+    dwSize*: DWORD

+    hrasconn*: HRASCONN

+    szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR]

+    szDeviceType*: array[0..(RAS_MaxDeviceType + 1) - 1, CHAR]

+    szDeviceName*: array[0..(RAS_MaxDeviceName + 1) - 1, CHAR]

+

+  TRASCONN* = RASCONN

+  PRASCONN* = ptr RASCONN

+  RASCONNSTATUS* {.final, pure.} = object

+    dwSize*: DWORD

+    rasconnstate*: RASCONNSTATE

+    dwError*: DWORD

+    szDeviceType*: array[0..(RAS_MaxDeviceType + 1) - 1, TCHAR]

+    szDeviceName*: array[0..(RAS_MaxDeviceName + 1) - 1, TCHAR]

+

+  TRASCONNSTATUS* = RASCONNSTATUS

+  PRASCONNSTATUS* = ptr RASCONNSTATUS

+  RASDIALEXTENSIONS* {.final, pure.} = object

+    dwSize*: DWORD

+    dwfOptions*: DWORD

+    hwndParent*: HWND

+    reserved*: DWORD

+

+  TRASDIALEXTENSIONS* = RASDIALEXTENSIONS

+  PRASDIALEXTENSIONS* = ptr RASDIALEXTENSIONS

+  RASDIALPARAMS* {.final, pure.} = object

+    dwSize*: DWORD

+    szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR]

+    szPhoneNumber*: array[0..(RAS_MaxPhoneNumber + 1) - 1, TCHAR]

+    szCallbackNumber*: array[0..(RAS_MaxCallbackNumber + 1) - 1, TCHAR]

+    szUserName*: array[0..(UNLEN + 1) - 1, TCHAR]

+    szPassword*: array[0..(PWLEN + 1) - 1, TCHAR]

+    szDomain*: array[0..(DNLEN + 1) - 1, TCHAR]

+

+  TRASDIALPARAMS* = RASDIALPARAMS

+  PRASDIALPARAMS* = ptr RASDIALPARAMS

+  RASENTRYNAME* {.final, pure.} = object

+    dwSize*: DWORD

+    szEntryName*: array[0..(RAS_MaxEntryName + 1) - 1, TCHAR]

+

+  TRASENTRYNAME* = RASENTRYNAME

+  PRASENTRYNAME* = ptr RASENTRYNAME

+  RASPPPIP* {.final, pure.} = object

+    dwSize*: DWORD

+    dwError*: DWORD

+    szIpAddress*: array[0..(RAS_MaxIpAddress + 1) - 1, TCHAR]

+

+  TRASPPPIP* = RASPPPIP

+  PRASPPPIP* = ptr RASPPPIP

+  RASPPPIPX* {.final, pure.} = object

+    dwSize*: DWORD

+    dwError*: DWORD

+    szIpxAddress*: array[0..(RAS_MaxIpxAddress + 1) - 1, TCHAR]

+

+  TRASPPPIPX* = RASPPPIPX

+  PRASPPPIPX* = ptr RASPPPIPX

+  RASPPPNBF* {.final, pure.} = object

+    dwSize*: DWORD

+    dwError*: DWORD

+    dwNetBiosError*: DWORD

+    szNetBiosError*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR]

+    szWorkstationName*: array[0..(NETBIOS_NAME_LEN + 1) - 1, TCHAR]

+    bLana*: int8

+

+  TRASPPPNBF* = RASPPPNBF

+  PRASPPPNBF* = ptr RASPPPNBF

+  RASTERIZER_STATUS* {.final, pure.} = object

+    nSize*: short

+    wFlags*: short

+    nLanguageID*: short

+

+  LPRASTERIZER_STATUS* = ptr RASTERIZER_STATUS

+  TRASTERIZERSTATUS* = RASTERIZER_STATUS

+  PRASTERIZERSTATUS* = ptr RASTERIZER_STATUS

+  REASSIGN_BLOCKS* {.final, pure.} = object

+    Reserved*: int16

+    Count*: int16

+    BlockNumber*: array[0..0, DWORD]

+

+  TREASSIGNBLOCKS* = REASSIGN_BLOCKS

+  PREASSIGNBLOCKS* = ptr REASSIGN_BLOCKS

+  REMOTE_NAME_INFO* {.final, pure.} = object

+    lpUniversalName*: LPTSTR

+    lpConnectionName*: LPTSTR

+    lpRemainingPath*: LPTSTR

+

+  TREMOTENAMEINFO* = REMOTE_NAME_INFO

+  PREMOTENAMEINFO* = ptr REMOTE_NAME_INFO

+  #

+                                          #   TODO: OLE

+                                          #  typedef struct _reobject {

+                                          #    DWORD  cbStruct;

+                                          #    LONG   cp;

+                                          #    CLSID  clsid;

+                                          #    LPOLEOBJECT      poleobj;

+                                          #    LPSTORAGE        pstg;

+                                          #    LPOLECLIENTSITE  polesite;

+                                          #    SIZEL  sizel;

+                                          #    DWORD  dvaspect;

+                                          #    DWORD  dwFlags;

+                                          #    DWORD  dwUser;

+                                          #  } REOBJECT;

+                                          #

+  REPASTESPECIAL* {.final, pure.} = object

+    dwAspect*: DWORD

+    dwParam*: DWORD

+

+  Trepastespecial* = REPASTESPECIAL

+  Prepastespecial* = ptr REPASTESPECIAL

+  REQRESIZE* {.final, pure.} = object

+    nmhdr*: NMHDR

+    rc*: RECT

+

+  Treqresize* = REQRESIZE

+  Preqresize* = ptr REQRESIZE

+  RGNDATAHEADER* {.final, pure.} = object

+    dwSize*: DWORD

+    iType*: DWORD

+    nCount*: DWORD

+    nRgnSize*: DWORD

+    rcBound*: RECT

+

+  TRGNDATAHEADER* = RGNDATAHEADER

+  PRGNDATAHEADER* = ptr RGNDATAHEADER

+  RGNDATA* {.final, pure.} = object

+    rdh*: RGNDATAHEADER

+    Buffer*: array[0..0, char]

+

+  LPRGNDATA* = ptr RGNDATA

+  TRGNDATA* = RGNDATA

+  PRGNDATA* = ptr RGNDATA

+  SCROLLINFO* {.final, pure.} = object

+    cbSize*: UINT

+    fMask*: UINT

+    nMin*: int32

+    nMax*: int32

+    nPage*: UINT

+    nPos*: int32

+    nTrackPos*: int32

+

+  LPSCROLLINFO* = ptr SCROLLINFO

+  LPCSCROLLINFO* = ptr SCROLLINFO

+  TSCROLLINFO* = SCROLLINFO

+  PSCROLLINFO* = ptr SCROLLINFO

+  SECURITY_ATTRIBUTES* {.final, pure.} = object

+    nLength*: DWORD

+    lpSecurityDescriptor*: LPVOID

+    bInheritHandle*: WINBOOL

+

+  LPSECURITY_ATTRIBUTES* = ptr SECURITY_ATTRIBUTES

+  TSECURITYATTRIBUTES* = SECURITY_ATTRIBUTES

+  PSECURITYATTRIBUTES* = ptr SECURITY_ATTRIBUTES

+  SECURITY_INFORMATION* = DWORD

+  PSECURITY_INFORMATION* = ptr SECURITY_INFORMATION

+  TSECURITYINFORMATION* = SECURITY_INFORMATION

+  SELCHANGE* {.final, pure.} = object

+    nmhdr*: NMHDR

+    chrg*: CHARRANGE

+    seltyp*: int16

+

+  Tselchange* = SELCHANGE

+  Pselchange* = ptr SELCHANGE

+  SERIALKEYS* {.final, pure.} = object

+    cbSize*: DWORD

+    dwFlags*: DWORD

+    lpszActivePort*: LPSTR

+    lpszPort*: LPSTR

+    iBaudRate*: DWORD

+    iPortState*: DWORD

+

+  LPSERIALKEYS* = ptr SERIALKEYS

+  TSERIALKEYS* = SERIALKEYS

+  PSERIALKEYS* = ptr SERIALKEYS

+  SERVICE_TABLE_ENTRY* {.final, pure.} = object

+    lpServiceName*: LPTSTR

+    lpServiceProc*: LPSERVICE_MAIN_FUNCTION

+

+  LPSERVICE_TABLE_ENTRY* = ptr SERVICE_TABLE_ENTRY

+  TSERVICETABLEENTRY* = SERVICE_TABLE_ENTRY

+  PSERVICETABLEENTRY* = ptr SERVICE_TABLE_ENTRY

+  SERVICE_TYPE_VALUE_ABS* {.final, pure.} = object

+    dwNameSpace*: DWORD

+    dwValueType*: DWORD

+    dwValueSize*: DWORD

+    lpValueName*: LPTSTR

+    lpValue*: PVOID

+

+  TSERVICETYPEVALUEABS* = SERVICE_TYPE_VALUE_ABS

+  PSERVICETYPEVALUEABS* = ptr SERVICE_TYPE_VALUE_ABS

+  SERVICE_TYPE_INFO_ABS* {.final, pure.} = object

+    lpTypeName*: LPTSTR

+    dwValueCount*: DWORD

+    Values*: array[0..0, SERVICE_TYPE_VALUE_ABS]

+

+  TSERVICETYPEINFOABS* = SERVICE_TYPE_INFO_ABS

+  PSERVICETYPEINFOABS* = ptr SERVICE_TYPE_INFO_ABS

+  SESSION_BUFFER* {.final, pure.} = object

+    lsn*: UCHAR

+    state*: UCHAR

+    local_name*: array[0..(NCBNAMSZ) - 1, UCHAR]

+    remote_name*: array[0..(NCBNAMSZ) - 1, UCHAR]

+    rcvs_outstanding*: UCHAR

+    sends_outstanding*: UCHAR

+

+  TSESSIONBUFFER* = SESSION_BUFFER

+  PSESSIONBUFFER* = ptr SESSION_BUFFER

+  SESSION_HEADER* {.final, pure.} = object

+    sess_name*: UCHAR

+    num_sess*: UCHAR

+    rcv_dg_outstanding*: UCHAR

+    rcv_any_outstanding*: UCHAR

+

+  TSESSIONHEADER* = SESSION_HEADER

+  PSESSIONHEADER* = ptr SESSION_HEADER

+  SET_PARTITION_INFORMATION* {.final, pure.} = object

+    PartitionType*: int8

+

+  TSETPARTITIONINFORMATION* = SET_PARTITION_INFORMATION

+  PSETPARTITIONINFORMATION* = ptr SET_PARTITION_INFORMATION

+  SHCONTF* = enum

+    SHCONTF_FOLDERS = 32, SHCONTF_NONFOLDERS = 64, SHCONTF_INCLUDEHIDDEN = 128

+  TSHCONTF* = SHCONTF

+  SHFILEINFO* {.final, pure.} = object

+    hIcon*: HICON

+    iIcon*: int32

+    dwAttributes*: DWORD

+    szDisplayName*: array[0..(MAX_PATH) - 1, char]

+    szTypeName*: array[0..79, char]

+

+  TSHFILEINFO* = SHFILEINFO

+  PSHFILEINFO* = ptr SHFILEINFO

+  FILEOP_FLAGS* = int16

+  TFILEOPFLAGS* = FILEOP_FLAGS

+  PFILEOPFLAGS* = ptr FILEOP_FLAGS

+  SHFILEOPSTRUCT* {.final, pure.} = object

+    hwnd*: HWND

+    wFunc*: UINT

+    pFrom*: LPCSTR

+    pTo*: LPCSTR

+    fFlags*: FILEOP_FLAGS

+    fAnyOperationsAborted*: WINBOOL

+    hNameMappings*: LPVOID

+    lpszProgressTitle*: LPCSTR

+

+  LPSHFILEOPSTRUCT* = ptr SHFILEOPSTRUCT

+  TSHFILEOPSTRUCT* = SHFILEOPSTRUCT

+  PSHFILEOPSTRUCT* = ptr SHFILEOPSTRUCT

+  SHGNO* = enum

+    SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FORPARSING = 0x00008000

+  TSHGDN* = SHGNO

+  SHNAMEMAPPING* {.final, pure.} = object

+    pszOldPath*: LPSTR

+    pszNewPath*: LPSTR

+    cchOldPath*: int32

+    cchNewPath*: int32

+

+  LPSHNAMEMAPPING* = ptr SHNAMEMAPPING

+  TSHNAMEMAPPING* = SHNAMEMAPPING

+  PSHNAMEMAPPING* = ptr SHNAMEMAPPING

+  SID_AND_ATTRIBUTES* {.final, pure.} = object

+    Sid*: PSID

+    Attributes*: DWORD

+

+  TSIDANDATTRIBUTES* = SID_AND_ATTRIBUTES

+  PSIDANDATTRIBUTES* = ptr SID_AND_ATTRIBUTES

+  SID_AND_ATTRIBUTES_ARRAY* = array[0..(ANYSIZE_ARRAY) - 1, SID_AND_ATTRIBUTES]

+  PSID_AND_ATTRIBUTES_ARRAY* = ptr SID_AND_ATTRIBUTES_ARRAY

+  TSIDANDATTRIBUTESARRAY* = SID_AND_ATTRIBUTES_ARRAY

+  SINGLE_LIST_ENTRY* {.final, pure.} = object

+    Next*: ptr SINGLE_LIST_ENTRY

+

+  TSINGLELISTENTRY* = SINGLE_LIST_ENTRY

+  PSINGLELISTENTRY* = ptr SINGLE_LIST_ENTRY

+  SOUNDSENTRY* {.final, pure.} = object

+    cbSize*: UINT

+    dwFlags*: DWORD

+    iFSTextEffect*: DWORD

+    iFSTextEffectMSec*: DWORD

+    iFSTextEffectColorBits*: DWORD

+    iFSGrafEffect*: DWORD

+    iFSGrafEffectMSec*: DWORD

+    iFSGrafEffectColor*: DWORD

+    iWindowsEffect*: DWORD

+    iWindowsEffectMSec*: DWORD

+    lpszWindowsEffectDLL*: LPTSTR

+    iWindowsEffectOrdinal*: DWORD

+

+  LPSOUNDSENTRY* = ptr SOUNDSENTRY

+  TSOUNDSENTRY* = SOUNDSENTRY

+  PSOUNDSENTRY* = ptr SOUNDSENTRY

+  STARTUPINFO* {.final, pure.} = object

+    cb*: DWORD

+    lpReserved*: LPTSTR

+    lpDesktop*: LPTSTR

+    lpTitle*: LPTSTR

+    dwX*: DWORD

+    dwY*: DWORD

+    dwXSize*: DWORD

+    dwYSize*: DWORD

+    dwXCountChars*: DWORD

+    dwYCountChars*: DWORD

+    dwFillAttribute*: DWORD

+    dwFlags*: DWORD

+    wShowWindow*: int16

+    cbReserved2*: int16

+    lpReserved2*: LPBYTE

+    hStdInput*: HANDLE

+    hStdOutput*: HANDLE

+    hStdError*: HANDLE

+

+  LPSTARTUPINFO* = ptr STARTUPINFO

+  TSTARTUPINFO* = STARTUPINFO

+  PSTARTUPINFO* = ptr STARTUPINFO

+  STICKYKEYS* {.final, pure.} = object

+    cbSize*: DWORD

+    dwFlags*: DWORD

+

+  LPSTICKYKEYS* = ptr STICKYKEYS

+  TSTICKYKEYS* = STICKYKEYS

+  PSTICKYKEYS* = ptr STICKYKEYS

+  STRRET* {.final, pure.} = object

+    uType*: UINT

+    cStr*: array[0..(MAX_PATH) - 1, char]

+

+  LPSTRRET* = ptr STRRET

+  TSTRRET* = STRRET

+  PSTRRET* = ptr STRRET

+  STYLEBUF* {.final, pure.} = object

+    dwStyle*: DWORD

+    szDescription*: array[0..31, CHAR]

+

+  LPSTYLEBUF* = ptr STYLEBUF

+  TSTYLEBUF* = STYLEBUF

+  PSTYLEBUF* = ptr STYLEBUF

+  STYLESTRUCT* {.final, pure.} = object

+    styleOld*: DWORD

+    styleNew*: DWORD

+

+  LPSTYLESTRUCT* = ptr STYLESTRUCT

+  TSTYLESTRUCT* = STYLESTRUCT

+  PSTYLESTRUCT* = ptr STYLESTRUCT

+  SYSTEM_AUDIT_ACE* {.final, pure.} = object

+    Header*: ACE_HEADER

+    Mask*: ACCESS_MASK

+    SidStart*: DWORD

+

+  TSYSTEMAUDITACE* = SYSTEM_AUDIT_ACE

+  PSYSTEMAUDITACE* = ptr SYSTEM_AUDIT_ACE

+  SYSTEM_INFO* {.final, pure.} = object

+    dwOemId*: DWORD

+    dwPageSize*: DWORD

+    lpMinimumApplicationAddress*: LPVOID

+    lpMaximumApplicationAddress*: LPVOID

+    dwActiveProcessorMask*: DWORD

+    dwNumberOfProcessors*: DWORD

+    dwProcessorType*: DWORD

+    dwAllocationGranularity*: DWORD

+    wProcessorLevel*: int16

+    wProcessorRevision*: int16

+

+  LPSYSTEM_INFO* = ptr SYSTEM_INFO

+  TSYSTEMINFO* = SYSTEM_INFO

+  PSYSTEMINFO* = ptr SYSTEM_INFO

+  SYSTEM_POWER_STATUS* {.final, pure.} = object

+    ACLineStatus*: int8

+    BatteryFlag*: int8

+    BatteryLifePercent*: int8

+    Reserved1*: int8

+    BatteryLifeTime*: DWORD

+    BatteryFullLifeTime*: DWORD

+

+  TSYSTEMPOWERSTATUS* = SYSTEM_POWER_STATUS

+  PSYSTEMPOWERSTATUS* = ptr SYSTEM_POWER_STATUS

+  LPSYSTEM_POWER_STATUS* = ptr emptyrecord

+  TAPE_ERASE* {.final, pure.} = object

+    `type`*: ULONG

+

+  TTAPEERASE* = TAPE_ERASE

+  PTAPEERASE* = ptr TAPE_ERASE

+  TAPE_GET_DRIVE_PARAMETERS* {.final, pure.} = object

+    ECC*: bool

+    Compression*: bool

+    DataPadding*: bool

+    ReportSetmarks*: bool

+    DefaultBlockSize*: ULONG

+    MaximumBlockSize*: ULONG

+    MinimumBlockSize*: ULONG

+    MaximumPartitionCount*: ULONG

+    FeaturesLow*: ULONG

+    FeaturesHigh*: ULONG

+    EOTWarningZoneSize*: ULONG

+

+  TTAPEGETDRIVEPARAMETERS* = TAPE_GET_DRIVE_PARAMETERS

+  PTAPEGETDRIVEPARAMETERS* = ptr TAPE_GET_DRIVE_PARAMETERS

+  TAPE_GET_MEDIA_PARAMETERS* {.final, pure.} = object

+    Capacity*: LARGE_INTEGER

+    Remaining*: LARGE_INTEGER

+    BlockSize*: DWORD

+    PartitionCount*: DWORD

+    WriteProtected*: bool

+

+  TTAPEGETMEDIAPARAMETERS* = TAPE_GET_MEDIA_PARAMETERS

+  PTAPEGETMEDIAPARAMETERS* = ptr TAPE_GET_MEDIA_PARAMETERS

+  TAPE_GET_POSITION* {.final, pure.} = object

+    `type`*: ULONG

+    Partition*: ULONG

+    OffsetLow*: ULONG

+    OffsetHigh*: ULONG

+

+  TTAPEGETPOSITION* = TAPE_GET_POSITION

+  PTAPEGETPOSITION* = ptr TAPE_GET_POSITION

+  TAPE_PREPARE* {.final, pure.} = object

+    Operation*: ULONG

+

+  TTAPEPREPARE* = TAPE_PREPARE

+  PTAPEPREPARE* = ptr TAPE_PREPARE

+  TAPE_SET_DRIVE_PARAMETERS* {.final, pure.} = object

+    ECC*: bool

+    Compression*: bool

+    DataPadding*: bool

+    ReportSetmarks*: bool

+    EOTWarningZoneSize*: ULONG

+

+  TTAPESETDRIVEPARAMETERS* = TAPE_SET_DRIVE_PARAMETERS

+  PTAPESETDRIVEPARAMETERS* = ptr TAPE_SET_DRIVE_PARAMETERS

+  TAPE_SET_MEDIA_PARAMETERS* {.final, pure.} = object

+    BlockSize*: ULONG

+

+  TTAPESETMEDIAPARAMETERS* = TAPE_SET_MEDIA_PARAMETERS

+  PTAPESETMEDIAPARAMETERS* = ptr TAPE_SET_MEDIA_PARAMETERS

+  TAPE_SET_POSITION* {.final, pure.} = object

+    `Method`*: ULONG

+    Partition*: ULONG

+    OffsetLow*: ULONG

+    OffsetHigh*: ULONG

+

+  TTAPESETPOSITION* = TAPE_SET_POSITION

+  PTAPESETPOSITION* = ptr TAPE_SET_POSITION

+  TAPE_WRITE_MARKS* {.final, pure.} = object

+    `type`*: ULONG

+    Count*: ULONG

+

+  TTAPEWRITEMARKS* = TAPE_WRITE_MARKS

+  PTAPEWRITEMARKS* = ptr TAPE_WRITE_MARKS

+  TTBADDBITMAP* {.final, pure.} = object

+    hInst*: HINST

+    nID*: UINT

+

+  LPTBADDBITMAP* = ptr TTBADDBITMAP

+  PTBADDBITMAP* = ptr TTBADDBITMAP

+  TBBUTTON* {.final, pure.} = object

+    iBitmap*: int32

+    idCommand*: int32

+    fsState*: int8

+    fsStyle*: int8

+    dwData*: DWORD

+    iString*: int32

+

+  LPTBBUTTON* = ptr TBBUTTON

+  LPCTBBUTTON* = ptr TBBUTTON

+  TTBBUTTON* = TBBUTTON

+  PTBBUTTON* = ptr TBBUTTON

+  TBNOTIFY* {.final, pure.} = object

+    hdr*: NMHDR

+    iItem*: int32

+    tbButton*: TBBUTTON

+    cchText*: int32

+    pszText*: LPTSTR

+

+  LPTBNOTIFY* = ptr TBNOTIFY

+  TTBNOTIFY* = TBNOTIFY

+  PTBNOTIFY* = ptr TBNOTIFY

+  TBSAVEPARAMS* {.final, pure.} = object

+    hkr*: HKEY

+    pszSubKey*: LPCTSTR

+    pszValueName*: LPCTSTR

+

+  TTBSAVEPARAMS* = TBSAVEPARAMS

+  PTBSAVEPARAMS* = ptr TBSAVEPARAMS

+  TC_HITTESTINFO* {.final, pure.} = object

+    pt*: POINT

+    flags*: UINT

+

+  TTCHITTESTINFO* = TC_HITTESTINFO

+  PTCHITTESTINFO* = ptr TC_HITTESTINFO

+  TC_ITEM* {.final, pure.} = object

+    mask*: UINT

+    lpReserved1*: UINT

+    lpReserved2*: UINT

+    pszText*: LPTSTR

+    cchTextMax*: int32

+    iImage*: int32

+    lParam*: LPARAM

+

+  TTCITEM* = TC_ITEM

+  PTCITEM* = ptr TC_ITEM

+  TC_ITEMHEADER* {.final, pure.} = object

+    mask*: UINT

+    lpReserved1*: UINT

+    lpReserved2*: UINT

+    pszText*: LPTSTR

+    cchTextMax*: int32

+    iImage*: int32

+

+  TTCITEMHEADER* = TC_ITEMHEADER

+  PTCITEMHEADER* = ptr TC_ITEMHEADER

+  TC_KEYDOWN* {.final, pure.} = object

+    hdr*: NMHDR

+    wVKey*: int16

+    flags*: UINT

+

+  TTCKEYDOWN* = TC_KEYDOWN

+  PTCKEYDOWN* = ptr TC_KEYDOWN

+  TEXTRANGE* {.final, pure.} = object

+    chrg*: CHARRANGE

+    lpstrText*: LPSTR

+

+  Ttextrange* = TEXTRANGE

+  Ptextrange* = ptr TEXTRANGE

+  TIME_ZONE_INFORMATION* {.final, pure.} = object

+    Bias*: LONG

+    StandardName*: array[0..31, WCHAR]

+    StandardDate*: SYSTEMTIME

+    StandardBias*: LONG

+    DaylightName*: array[0..31, WCHAR]

+    DaylightDate*: SYSTEMTIME

+    DaylightBias*: LONG

+

+  LPTIME_ZONE_INFORMATION* = ptr TIME_ZONE_INFORMATION

+  TTIMEZONEINFORMATION* = TIME_ZONE_INFORMATION

+  PTIMEZONEINFORMATION* = ptr TIME_ZONE_INFORMATION

+  TOGGLEKEYS* {.final, pure.} = object

+    cbSize*: DWORD

+    dwFlags*: DWORD

+

+  TTOGGLEKEYS* = TOGGLEKEYS

+  PTOGGLEKEYS* = ptr TOGGLEKEYS

+  TTOKEN_SOURCE* {.final, pure.} = object

+    SourceName*: array[0..7, CHAR]

+    SourceIdentifier*: LUID

+

+  PTOKENSOURCE* = ptr TTOKEN_SOURCE

+  TOKEN_CONTROL* {.final, pure.} = object

+    TokenId*: LUID

+    AuthenticationId*: LUID

+    ModifiedId*: LUID

+    TokenSource*: TTOKEN_SOURCE

+

+  TTOKENCONTROL* = TOKEN_CONTROL

+  PTOKENCONTROL* = ptr TOKEN_CONTROL

+  TTOKEN_DEFAULT_DACL* {.final, pure.} = object

+    DefaultDacl*: PACL

+

+  PTOKENDEFAULTDACL* = ptr TTOKEN_DEFAULT_DACL

+  TTOKEN_GROUPS* {.final, pure.} = object

+    GroupCount*: DWORD

+    Groups*: array[0..(ANYSIZE_ARRAY) - 1, SID_AND_ATTRIBUTES]

+

+  LPTOKEN_GROUPS* = ptr TTOKEN_GROUPS

+  PTOKENGROUPS* = ptr TTOKEN_GROUPS

+  TTOKEN_OWNER* {.final, pure.} = object

+    Owner*: PSID

+

+  PTOKENOWNER* = ptr TTOKEN_OWNER

+  TTOKEN_PRIMARY_GROUP* {.final, pure.} = object

+    PrimaryGroup*: PSID

+

+  PTOKENPRIMARYGROUP* = ptr TTOKEN_PRIMARY_GROUP

+  TTOKEN_PRIVILEGES* {.final, pure.} = object

+    PrivilegeCount*: DWORD

+    Privileges*: array[0..(ANYSIZE_ARRAY) - 1, LUID_AND_ATTRIBUTES]

+

+  PTOKEN_PRIVILEGES* = ptr TTOKEN_PRIVILEGES

+  LPTOKEN_PRIVILEGES* = ptr TTOKEN_PRIVILEGES

+  TTOKEN_STATISTICS* {.final, pure.} = object

+    TokenId*: LUID

+    AuthenticationId*: LUID

+    ExpirationTime*: LARGE_INTEGER

+    TokenType*: TTOKEN_TYPE

+    ImpersonationLevel*: SECURITY_IMPERSONATION_LEVEL

+    DynamicCharged*: DWORD

+    DynamicAvailable*: DWORD

+    GroupCount*: DWORD

+    PrivilegeCount*: DWORD

+    ModifiedId*: LUID

+

+  PTOKENSTATISTICS* = ptr TTOKEN_STATISTICS

+  TTOKEN_USER* {.final, pure.} = object

+    User*: SID_AND_ATTRIBUTES

+

+  PTOKENUSER* = ptr TTOKEN_USER

+  TOOLINFO* {.final, pure.} = object

+    cbSize*: UINT

+    uFlags*: UINT

+    hwnd*: HWND

+    uId*: UINT

+    rect*: RECT

+    hinst*: HINST

+    lpszText*: LPTSTR

+

+  LPTOOLINFO* = ptr TOOLINFO

+  TTOOLINFO* = TOOLINFO

+  PTOOLINFO* = ptr TOOLINFO

+  TOOLTIPTEXT* {.final, pure.} = object

+    hdr*: NMHDR

+    lpszText*: LPTSTR

+    szText*: array[0..79, char]

+    hinst*: HINST

+    uFlags*: UINT

+

+  LPTOOLTIPTEXT* = ptr TOOLTIPTEXT

+  TTOOLTIPTEXT* = TOOLTIPTEXT

+  PTOOLTIPTEXT* = ptr TOOLTIPTEXT

+  TPMPARAMS* {.final, pure.} = object

+    cbSize*: UINT

+    rcExclude*: RECT

+

+  LPTPMPARAMS* = ptr TPMPARAMS

+  TTPMPARAMS* = TPMPARAMS

+  PTPMPARAMS* = ptr TPMPARAMS

+  TRANSMIT_FILE_BUFFERS* {.final, pure.} = object

+    Head*: PVOID

+    HeadLength*: DWORD

+    Tail*: PVOID

+    TailLength*: DWORD

+

+  TTRANSMITFILEBUFFERS* = TRANSMIT_FILE_BUFFERS

+  PTRANSMITFILEBUFFERS* = ptr TRANSMIT_FILE_BUFFERS

+  TTHITTESTINFO* {.final, pure.} = object

+    hwnd*: HWND

+    pt*: POINT

+    ti*: TOOLINFO

+

+  LPHITTESTINFO* = ptr TTHITTESTINFO

+  TTTHITTESTINFO* = TTHITTESTINFO

+  PTTHITTESTINFO* = ptr TTHITTESTINFO

+  TTPOLYCURVE* {.final, pure.} = object

+    wType*: int16

+    cpfx*: int16

+    apfx*: array[0..0, POINTFX]

+

+  LPTTPOLYCURVE* = ptr TTPOLYCURVE

+  TTTPOLYCURVE* = TTPOLYCURVE

+  PTTPOLYCURVE* = ptr TTPOLYCURVE

+  TTPOLYGONHEADER* {.final, pure.} = object

+    cb*: DWORD

+    dwType*: DWORD

+    pfxStart*: POINTFX

+

+  LPTTPOLYGONHEADER* = ptr TTPOLYGONHEADER

+  TTTPOLYGONHEADER* = TTPOLYGONHEADER

+  PTTPOLYGONHEADER* = ptr TTPOLYGONHEADER

+  TV_DISPINFO* {.final, pure.} = object

+    hdr*: NMHDR

+    item*: TV_ITEM

+

+  TTVDISPINFO* = TV_DISPINFO

+  PTVDISPINFO* = ptr TV_DISPINFO

+  TV_HITTESTINFO* {.final, pure.} = object

+    pt*: POINT

+    flags*: UINT

+    hItem*: HTREEITEM

+

+  LPTV_HITTESTINFO* = ptr TV_HITTESTINFO

+  TTVHITTESTINFO* = TV_HITTESTINFO

+  PTVHITTESTINFO* = ptr TV_HITTESTINFO

+  TV_INSERTSTRUCT* {.final, pure.} = object

+    hParent*: HTREEITEM

+    hInsertAfter*: HTREEITEM

+    item*: TV_ITEM

+

+  LPTV_INSERTSTRUCT* = ptr TV_INSERTSTRUCT

+  TTVINSERTSTRUCT* = TV_INSERTSTRUCT

+  PTVINSERTSTRUCT* = ptr TV_INSERTSTRUCT

+  TV_KEYDOWN* {.final, pure.} = object

+    hdr*: NMHDR

+    wVKey*: int16

+    flags*: UINT

+

+  TTVKEYDOWN* = TV_KEYDOWN

+  PTVKEYDOWN* = ptr TV_KEYDOWN

+  TV_SORTCB* {.final, pure.} = object

+    hParent*: HTREEITEM

+    lpfnCompare*: PFNTVCOMPARE

+    lParam*: LPARAM

+

+  LPTV_SORTCB* = ptr TV_SORTCB

+  TTVSORTCB* = TV_SORTCB

+  PTVSORTCB* = ptr TV_SORTCB

+  UDACCEL* {.final, pure.} = object

+    nSec*: UINT

+    nInc*: UINT

+

+  TUDACCEL* = UDACCEL

+  PUDACCEL* = ptr UDACCEL

+  UNIVERSAL_NAME_INFO* {.final, pure.} = object

+    lpUniversalName*: LPTSTR

+

+  TUNIVERSALNAMEINFO* = UNIVERSAL_NAME_INFO

+  PUNIVERSALNAMEINFO* = ptr UNIVERSAL_NAME_INFO

+  USEROBJECTFLAGS* {.final, pure.} = object

+    fInherit*: WINBOOL

+    fReserved*: WINBOOL

+    dwFlags*: DWORD

+

+  TUSEROBJECTFLAGS* = USEROBJECTFLAGS

+  PUSEROBJECTFLAGS* = ptr USEROBJECTFLAGS

+  VALENT* {.final, pure.} = object

+    ve_valuename*: LPTSTR

+    ve_valuelen*: DWORD

+    ve_valueptr*: DWORD

+    ve_type*: DWORD

+

+  TVALENT* = VALENT

+  PVALENT* = ptr VALENT

+  value_ent* = VALENT

+  Tvalue_ent* = VALENT

+  Pvalue_ent* = ptr VALENT

+  VERIFY_INFORMATION* {.final, pure.} = object

+    StartingOffset*: LARGE_INTEGER

+    len*: DWORD

+

+  TVERIFYINFORMATION* = VERIFY_INFORMATION

+  PVERIFYINFORMATION* = ptr VERIFY_INFORMATION

+  VS_FIXEDFILEINFO* {.final, pure.} = object

+    dwSignature*: DWORD

+    dwStrucVersion*: DWORD

+    dwFileVersionMS*: DWORD

+    dwFileVersionLS*: DWORD

+    dwProductVersionMS*: DWORD

+    dwProductVersionLS*: DWORD

+    dwFileFlagsMask*: DWORD

+    dwFileFlags*: DWORD

+    dwFileOS*: DWORD

+    dwFileType*: DWORD

+    dwFileSubtype*: DWORD

+    dwFileDateMS*: DWORD

+    dwFileDateLS*: DWORD

+

+  TVSFIXEDFILEINFO* = VS_FIXEDFILEINFO

+  PVSFIXEDFILEINFO* = ptr VS_FIXEDFILEINFO

+  WIN32_FIND_DATA* {.final, pure.} = object

+    dwFileAttributes*: DWORD

+    ftCreationTime*: FILETIME

+    ftLastAccessTime*: FILETIME

+    ftLastWriteTime*: FILETIME

+    nFileSizeHigh*: DWORD

+    nFileSizeLow*: DWORD

+    dwReserved0*: DWORD

+    dwReserved1*: DWORD

+    cFileName*: array[0..(MAX_PATH) - 1, TCHAR]

+    cAlternateFileName*: array[0..13, TCHAR]

+

+  LPWIN32_FIND_DATA* = ptr WIN32_FIND_DATA

+  PWIN32_FIND_DATA* = ptr WIN32_FIND_DATA

+  TWIN32FINDDATA* = WIN32_FIND_DATA

+  TWIN32FINDDATAA* = WIN32_FIND_DATA

+  WIN32_FIND_DATAW* {.final, pure.} = object

+    dwFileAttributes*: DWORD

+    ftCreationTime*: FILETIME

+    ftLastAccessTime*: FILETIME

+    ftLastWriteTime*: FILETIME

+    nFileSizeHigh*: DWORD

+    nFileSizeLow*: DWORD

+    dwReserved0*: DWORD

+    dwReserved1*: DWORD

+    cFileName*: array[0..(MAX_PATH) - 1, WCHAR]

+    cAlternateFileName*: array[0..13, WCHAR]

+

+  LPWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW

+  PWIN32_FIND_DATAW* = ptr WIN32_FIND_DATAW

+  TWIN32FINDDATAW* = WIN32_FIND_DATAW

+  WIN32_STREAM_ID* {.final, pure.} = object

+    dwStreamId*: DWORD

+    dwStreamAttributes*: DWORD

+    Size*: LARGE_INTEGER

+    dwStreamNameSize*: DWORD

+    cStreamName*: ptr WCHAR

+

+  TWIN32STREAMID* = WIN32_STREAM_ID

+  PWIN32STREAMID* = ptr WIN32_STREAM_ID

+  WINDOWPLACEMENT* {.final, pure.} = object

+    len*: UINT

+    flags*: UINT

+    showCmd*: UINT

+    ptMinPosition*: POINT

+    ptMaxPosition*: POINT

+    rcNormalPosition*: RECT

+

+  TWINDOWPLACEMENT* = WINDOWPLACEMENT

+  PWINDOWPLACEMENT* = ptr WINDOWPLACEMENT

+  WNDCLASS* {.final, pure.} = object

+    style*: UINT

+    lpfnWndProc*: WNDPROC

+    cbClsExtra*: int32

+    cbWndExtra*: int32

+    hInstance*: HANDLE

+    hIcon*: HICON

+    hCursor*: HCURSOR

+    hbrBackground*: HBRUSH

+    lpszMenuName*: LPCTSTR

+    lpszClassName*: LPCTSTR

+

+  LPWNDCLASS* = ptr WNDCLASS

+  TWNDCLASS* = WNDCLASS

+  TWNDCLASSA* = WNDCLASS

+  PWNDCLASS* = ptr WNDCLASS

+  WNDCLASSW* {.final, pure.} = object

+    style*: UINT

+    lpfnWndProc*: WNDPROC

+    cbClsExtra*: int32

+    cbWndExtra*: int32

+    hInstance*: HANDLE

+    hIcon*: HICON

+    hCursor*: HCURSOR

+    hbrBackground*: HBRUSH

+    lpszMenuName*: LPCWSTR

+    lpszClassName*: LPCWSTR

+

+  LPWNDCLASSW* = ptr WNDCLASSW

+  TWNDCLASSW* = WNDCLASSW

+  PWNDCLASSW* = ptr WNDCLASSW

+  WNDCLASSEX* {.final, pure.} = object

+    cbSize*: UINT

+    style*: UINT

+    lpfnWndProc*: WNDPROC

+    cbClsExtra*: int32

+    cbWndExtra*: int32

+    hInstance*: HANDLE

+    hIcon*: HICON

+    hCursor*: HCURSOR

+    hbrBackground*: HBRUSH

+    lpszMenuName*: LPCTSTR

+    lpszClassName*: LPCTSTR

+    hIconSm*: HANDLE

+

+  LPWNDCLASSEX* = ptr WNDCLASSEX

+  TWNDCLASSEX* = WNDCLASSEX

+  TWNDCLASSEXA* = WNDCLASSEX

+  PWNDCLASSEX* = ptr WNDCLASSEX

+  WNDCLASSEXW* {.final, pure.} = object

+    cbSize*: UINT

+    style*: UINT

+    lpfnWndProc*: WNDPROC

+    cbClsExtra*: int32

+    cbWndExtra*: int32

+    hInstance*: HANDLE

+    hIcon*: HICON

+    hCursor*: HCURSOR

+    hbrBackground*: HBRUSH

+    lpszMenuName*: LPCWSTR

+    lpszClassName*: LPCWSTR

+    hIconSm*: HANDLE

+

+  LPWNDCLASSEXW* = ptr WNDCLASSEXW

+  TWNDCLASSEXW* = WNDCLASSEXW

+  PWNDCLASSEXW* = ptr WNDCLASSEXW

+  CONNECTDLGSTRUCT* {.final, pure.} = object

+    cbStructure*: DWORD

+    hwndOwner*: HWND

+    lpConnRes*: LPNETRESOURCE

+    dwFlags*: DWORD

+    dwDevNum*: DWORD

+

+  LPCONNECTDLGSTRUCT* = ptr CONNECTDLGSTRUCT

+  TCONNECTDLGSTRUCT* = CONNECTDLGSTRUCT

+  PCONNECTDLGSTRUCT* = ptr CONNECTDLGSTRUCT

+  DISCDLGSTRUCT* {.final, pure.} = object

+    cbStructure*: DWORD

+    hwndOwner*: HWND

+    lpLocalName*: LPTSTR

+    lpRemoteName*: LPTSTR

+    dwFlags*: DWORD

+

+  LPDISCDLGSTRUCT* = ptr DISCDLGSTRUCT

+  TDISCDLGSTRUCT* = DISCDLGSTRUCT

+  TDISCDLGSTRUCTA* = DISCDLGSTRUCT

+  PDISCDLGSTRUCT* = ptr DISCDLGSTRUCT

+  NETINFOSTRUCT* {.final, pure.} = object

+    cbStructure*: DWORD

+    dwProviderVersion*: DWORD

+    dwStatus*: DWORD

+    dwCharacteristics*: DWORD

+    dwHandle*: DWORD

+    wNetType*: int16

+    dwPrinters*: DWORD

+    dwDrives*: DWORD

+

+  LPNETINFOSTRUCT* = ptr NETINFOSTRUCT

+  TNETINFOSTRUCT* = NETINFOSTRUCT

+  PNETINFOSTRUCT* = ptr NETINFOSTRUCT

+  NETCONNECTINFOSTRUCT* {.final, pure.} = object

+    cbStructure*: DWORD

+    dwFlags*: DWORD

+    dwSpeed*: DWORD

+    dwDelay*: DWORD

+    dwOptDataSize*: DWORD

+

+  LPNETCONNECTINFOSTRUCT* = ptr NETCONNECTINFOSTRUCT

+  TNETCONNECTINFOSTRUCT* = NETCONNECTINFOSTRUCT

+  PNETCONNECTINFOSTRUCT* = ptr NETCONNECTINFOSTRUCT

+  ENUMMETAFILEPROC* = proc (para1: HDC, para2: HANDLETABLE, para3: METARECORD,

+                            para4: int32, para5: LPARAM): int32{.stdcall.}

+  ENHMETAFILEPROC* = proc (para1: HDC, para2: HANDLETABLE, para3: TENHMETARECORD,

+                           para4: int32, para5: LPARAM): int32{.stdcall.}

+  ENUMFONTSPROC* = proc (para1: LPLOGFONT, para2: LPTEXTMETRIC, para3: DWORD,

+                         para4: LPARAM): int32{.stdcall.}

+  FONTENUMPROC* = proc (para1: var ENUMLOGFONT, para2: var NEWTEXTMETRIC,

+                        para3: int32, para4: LPARAM): int32{.stdcall.}

+  FONTENUMEXPROC* = proc (para1: var ENUMLOGFONTEX, para2: var NEWTEXTMETRICEX,

+                          para3: int32, para4: LPARAM): int32{.stdcall.}

+  LPOVERLAPPED_COMPLETION_ROUTINE* = proc (para1: DWORD, para2: DWORD,

+      para3: LPOVERLAPPED){.stdcall.}

+  # Structures for the extensions to OpenGL

+  POINTFLOAT* {.final, pure.} = object

+    x*: float32

+    y*: float32

+

+  TPOINTFLOAT* = POINTFLOAT

+  PPOINTFLOAT* = ptr POINTFLOAT

+  GLYPHMETRICSFLOAT* {.final, pure.} = object

+    gmfBlackBoxX*: float32

+    gmfBlackBoxY*: float32

+    gmfptGlyphOrigin*: POINTFLOAT

+    gmfCellIncX*: float32

+    gmfCellIncY*: float32

+

+  LPGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT

+  TGLYPHMETRICSFLOAT* = GLYPHMETRICSFLOAT

+  PGLYPHMETRICSFLOAT* = ptr GLYPHMETRICSFLOAT

+  LAYERPLANEDESCRIPTOR* {.final, pure.} = object

+    nSize*: int16

+    nVersion*: int16

+    dwFlags*: DWORD

+    iPixelType*: int8

+    cColorBits*: int8

+    cRedBits*: int8

+    cRedShift*: int8

+    cGreenBits*: int8

+    cGreenShift*: int8

+    cBlueBits*: int8

+    cBlueShift*: int8

+    cAlphaBits*: int8

+    cAlphaShift*: int8

+    cAccumBits*: int8

+    cAccumRedBits*: int8

+    cAccumGreenBits*: int8

+    cAccumBlueBits*: int8

+    cAccumAlphaBits*: int8

+    cDepthBits*: int8

+    cStencilBits*: int8

+    cAuxBuffers*: int8

+    iLayerPlane*: int8

+    bReserved*: int8

+    crTransparent*: COLORREF

+

+  LPLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR

+  TLAYERPLANEDESCRIPTOR* = LAYERPLANEDESCRIPTOR

+  PLAYERPLANEDESCRIPTOR* = ptr LAYERPLANEDESCRIPTOR

+  PIXELFORMATDESCRIPTOR* {.final, pure.} = object

+    nSize*: int16

+    nVersion*: int16

+    dwFlags*: DWORD

+    iPixelType*: int8

+    cColorBits*: int8

+    cRedBits*: int8

+    cRedShift*: int8

+    cGreenBits*: int8

+    cGreenShift*: int8

+    cBlueBits*: int8

+    cBlueShift*: int8

+    cAlphaBits*: int8

+    cAlphaShift*: int8

+    cAccumBits*: int8

+    cAccumRedBits*: int8

+    cAccumGreenBits*: int8

+    cAccumBlueBits*: int8

+    cAccumAlphaBits*: int8

+    cDepthBits*: int8

+    cStencilBits*: int8

+    cAuxBuffers*: int8

+    iLayerType*: int8

+    bReserved*: int8

+    dwLayerMask*: DWORD

+    dwVisibleMask*: DWORD

+    dwDamageMask*: DWORD

+

+  LPPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR

+  TPIXELFORMATDESCRIPTOR* = PIXELFORMATDESCRIPTOR

+  PPIXELFORMATDESCRIPTOR* = ptr PIXELFORMATDESCRIPTOR

+  USER_INFO_2* {.final, pure.} = object

+    usri2_name*: LPWSTR

+    usri2_password*: LPWSTR

+    usri2_password_age*: DWORD

+    usri2_priv*: DWORD

+    usri2_home_dir*: LPWSTR

+    usri2_comment*: LPWSTR

+    usri2_flags*: DWORD

+    usri2_script_path*: LPWSTR

+    usri2_auth_flags*: DWORD

+    usri2_full_name*: LPWSTR

+    usri2_usr_comment*: LPWSTR

+    usri2_parms*: LPWSTR

+    usri2_workstations*: LPWSTR

+    usri2_last_logon*: DWORD

+    usri2_last_logoff*: DWORD

+    usri2_acct_expires*: DWORD

+    usri2_max_storage*: DWORD

+    usri2_units_per_week*: DWORD

+    usri2_logon_hours*: PBYTE

+    usri2_bad_pw_count*: DWORD

+    usri2_num_logons*: DWORD

+    usri2_logon_server*: LPWSTR

+    usri2_country_code*: DWORD

+    usri2_code_page*: DWORD

+

+  PUSER_INFO_2* = ptr USER_INFO_2

+  LPUSER_INFO_2* = ptr USER_INFO_2

+  TUSERINFO2* = USER_INFO_2

+  USER_INFO_0* {.final, pure.} = object

+    usri0_name*: LPWSTR

+

+  PUSER_INFO_0* = ptr USER_INFO_0

+  LPUSER_INFO_0* = ptr USER_INFO_0

+  TUSERINFO0* = USER_INFO_0

+  USER_INFO_3* {.final, pure.} = object

+    usri3_name*: LPWSTR

+    usri3_password*: LPWSTR

+    usri3_password_age*: DWORD

+    usri3_priv*: DWORD

+    usri3_home_dir*: LPWSTR

+    usri3_comment*: LPWSTR

+    usri3_flags*: DWORD

+    usri3_script_path*: LPWSTR

+    usri3_auth_flags*: DWORD

+    usri3_full_name*: LPWSTR

+    usri3_usr_comment*: LPWSTR

+    usri3_parms*: LPWSTR

+    usri3_workstations*: LPWSTR

+    usri3_last_logon*: DWORD

+    usri3_last_logoff*: DWORD

+    usri3_acct_expires*: DWORD

+    usri3_max_storage*: DWORD

+    usri3_units_per_week*: DWORD

+    usri3_logon_hours*: PBYTE

+    usri3_bad_pw_count*: DWORD

+    usri3_num_logons*: DWORD

+    usri3_logon_server*: LPWSTR

+    usri3_country_code*: DWORD

+    usri3_code_page*: DWORD

+    usri3_user_id*: DWORD

+    usri3_primary_group_id*: DWORD

+    usri3_profile*: LPWSTR

+    usri3_home_dir_drive*: LPWSTR

+    usri3_password_expired*: DWORD

+

+  PUSER_INFO_3* = ptr USER_INFO_3

+  LPUSER_INFO_3* = ptr USER_INFO_3

+  TUSERINFO3* = USER_INFO_3

+  GROUP_INFO_2* {.final, pure.} = object

+    grpi2_name*: LPWSTR

+    grpi2_comment*: LPWSTR

+    grpi2_group_id*: DWORD

+    grpi2_attributes*: DWORD

+

+  PGROUP_INFO_2* = ptr GROUP_INFO_2

+  TGROUPINFO2* = GROUP_INFO_2

+  LOCALGROUP_INFO_0* {.final, pure.} = object

+    lgrpi0_name*: LPWSTR

+

+  PLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0

+  LPLOCALGROUP_INFO_0* = ptr LOCALGROUP_INFO_0

+  TLOCALGROUPINFO0* = LOCALGROUP_INFO_0

+  IMAGE_DOS_HEADER* {.final, pure.} = object

+    e_magic*: int16

+    e_cblp*: int16

+    e_cp*: int16

+    e_crlc*: int16

+    e_cparhdr*: int16

+    e_minalloc*: int16

+    e_maxalloc*: int16

+    e_ss*: int16

+    e_sp*: int16

+    e_csum*: int16

+    e_ip*: int16

+    e_cs*: int16

+    e_lfarlc*: int16

+    e_ovno*: int16

+    e_res*: array[0..3, int16]

+    e_oemid*: int16

+    e_oeminfo*: int16

+    e_res2*: array[0..9, int16]

+    e_lfanew*: LONG

+

+  PIMAGE_DOS_HEADER* = ptr IMAGE_DOS_HEADER

+  TIMAGEDOSHEADER* = IMAGE_DOS_HEADER

+  NOTIFYICONDATAA* {.final, pure.} = object

+    cbSize*: DWORD

+    Wnd*: HWND

+    uID*: UINT

+    uFlags*: UINT

+    uCallbackMessage*: UINT

+    hIcon*: HICON

+    szTip*: array[0..63, Char]

+

+  NOTIFYICONDATA* = NOTIFYICONDATAA

+  NOTIFYICONDATAW* {.final, pure.} = object

+    cbSize*: DWORD

+    Wnd*: HWND

+    uID*: UINT

+    uFlags*: UINT

+    uCallbackMessage*: UINT

+    hIcon*: HICON

+    szTip*: array[0..63, int16]

+

+  TNotifyIconDataA* = NOTIFYICONDATAA

+  TNotifyIconDataW* = NOTIFYICONDATAW

+  TNotifyIconData* = TNotifyIconDataA

+  PNotifyIconDataA* = ptr TNotifyIconDataA

+  PNotifyIconDataW* = ptr TNotifyIconDataW

+  PNotifyIconData* = PNotifyIconDataA

+  TWOHandleArray* = array[0..MAXIMUM_WAIT_OBJECTS - 1, HANDLE]

+  PWOHandleArray* = ptr TWOHandleArray

+  MMRESULT* = int32

+

+type

+  PWaveFormatEx* = ptr TWaveFormatEx

+  TWaveFormatEx* {.final, pure.} = object

+    wFormatTag*: int16        # format type

+    nChannels*: int16         # number of channels (i.e. mono, stereo, etc.)

+    nSamplesPerSec*: DWORD    # sample rate

+    nAvgBytesPerSec*: DWORD   # for buffer estimation

+    nBlockAlign*: int16       # block size of data

+    wBitsPerSample*: int16    # number of bits per sample of mono data

+    cbSize*: int16            # the count in bytes of the size of

+

+  WIN32_FILE_ATTRIBUTE_DATA* {.final, pure.} = object

+    dwFileAttributes*: DWORD

+    ftCreationTime*: FILETIME

+    ftLastAccessTime*: FILETIME

+    ftLastWriteTime*: FILETIME

+    nFileSizeHigh*: DWORD

+    nFileSizeLow*: DWORD

+

+  LPWIN32_FILE_ATTRIBUTE_DATA* = ptr WIN32_FILE_ATTRIBUTE_DATA

+  TWIN32FILEATTRIBUTEDATA* = WIN32_FILE_ATTRIBUTE_DATA

+  PWIN32FILEATTRIBUTEDATA* = ptr WIN32_FILE_ATTRIBUTE_DATA

+  # TrackMouseEvent. NT or higher only.

+  TTrackMouseEvent* {.final, pure.} = object

+    cbSize*: DWORD

+    dwFlags*: DWORD

+    hwndTrack*: HWND

+    dwHoverTime*: DWORD

+

+  PTrackMouseEvent* = ptr TTrackMouseEvent

+

+const

+  ACM_OPENW* = 1127

+  ACM_OPENA* = 1124

+

+when defined(winUnicode):

+  const

+    ACM_OPEN* = ACM_OPENW

+else:

+  const

+    ACM_OPEN* = ACM_OPENA

+# UNICODE

+

+const

+  ACM_PLAY* = 1125

+  ACM_STOP* = 1126

+  ACN_START* = 1

+  ACN_STOP* = 2

+  # Buttons

+  BM_CLICK* = 245

+  BM_GETCHECK* = 240

+  BM_GETIMAGE* = 246

+  BM_GETSTATE* = 242

+  BM_SETCHECK* = 241

+  BM_SETIMAGE* = 247

+  BM_SETSTATE* = 243

+  BM_SETSTYLE* = 244

+  BN_CLICKED* = 0

+  BN_DBLCLK* = 5

+  BN_DISABLE* = 4

+  BN_DOUBLECLICKED* = 5

+  BN_HILITE* = 2

+  BN_KILLFOCUS* = 7

+  BN_PAINT* = 1

+  BN_PUSHED* = 2

+  BN_SETFOCUS* = 6

+  BN_UNHILITE* = 3

+  BN_UNPUSHED* = 3

+  # Combo Box

+  CB_ADDSTRING* = 323

+  CB_DELETESTRING* = 324

+  CB_DIR* = 325

+  CB_FINDSTRING* = 332

+  CB_FINDSTRINGEXACT* = 344

+  CB_GETCOUNT* = 326

+  CB_GETCURSEL* = 327

+  CB_GETDROPPEDCONTROLRECT* = 338

+  CB_GETDROPPEDSTATE* = 343

+  CB_GETDROPPEDWIDTH* = 351

+  CB_GETEDITSEL* = 320

+  CB_GETEXTENDEDUI* = 342

+  CB_GETHORIZONTALEXTENT* = 349

+  CB_GETITEMDATA* = 336

+  CB_GETITEMHEIGHT* = 340

+  CB_GETLBTEXT* = 328

+  CB_GETLBTEXTLEN* = 329

+  CB_GETLOCALE* = 346

+  CB_GETTOPINDEX* = 347

+  CB_INITSTORAGE* = 353

+  CB_INSERTSTRING* = 330

+  CB_LIMITTEXT* = 321

+  CB_RESETCONTENT* = 331

+  CB_SELECTSTRING* = 333

+  CB_SETCURSEL* = 334

+  CB_SETDROPPEDWIDTH* = 352

+  CB_SETEDITSEL* = 322

+  CB_SETEXTENDEDUI* = 341

+  CB_SETHORIZONTALEXTENT* = 350

+  CB_SETITEMDATA* = 337

+  CB_SETITEMHEIGHT* = 339

+  CB_SETLOCALE* = 345

+  CB_SETTOPINDEX* = 348

+  CB_SHOWDROPDOWN* = 335

+  # Combo Box notifications

+  CBN_CLOSEUP* = 8

+  CBN_DBLCLK* = 2

+  CBN_DROPDOWN* = 7

+  CBN_EDITCHANGE* = 5

+  CBN_EDITUPDATE* = 6

+  CBN_ERRSPACE* = -1

+  CBN_KILLFOCUS* = 4

+  CBN_SELCHANGE* = 1

+  CBN_SELENDCANCEL* = 10

+  CBN_SELENDOK* = 9

+  CBN_SETFOCUS* = 3

+  # Control Panel

+                              # Device messages

+                              # Drag list box

+  DL_BEGINDRAG* = 1157

+  DL_CANCELDRAG* = 1160

+  DL_DRAGGING* = 1158

+  DL_DROPPED* = 1159

+  # Default push button

+  DM_GETDEFID* = 1024

+  DM_REPOSITION* = 1026

+  DM_SETDEFID* = 1025

+  # RTF control

+  EM_CANPASTE* = 1074

+  EM_CANUNDO* = 198

+  EM_CHARFROMPOS* = 215

+  EM_DISPLAYBAND* = 1075

+  EM_EMPTYUNDOBUFFER* = 205

+  EM_EXGETSEL* = 1076

+  EM_EXLIMITTEXT* = 1077

+  EM_EXLINEFROMCHAR* = 1078

+  EM_EXSETSEL* = 1079

+  EM_FINDTEXT* = 1080

+  EM_FINDTEXTEX* = 1103

+  EM_FINDWORDBREAK* = 1100

+  EM_FMTLINES* = 200

+  EM_FORMATRANGE* = 1081

+  EM_GETCHARFORMAT* = 1082

+  EM_GETEVENTMASK* = 1083

+  EM_GETFIRSTVISIBLELINE* = 206

+  EM_GETHANDLE* = 189

+  EM_GETLIMITTEXT* = 213

+  EM_GETLINE* = 196

+  EM_GETLINECOUNT* = 186

+  EM_GETMARGINS* = 212

+  EM_GETMODIFY* = 184

+  EM_GETIMECOLOR* = 1129

+  EM_GETIMEOPTIONS* = 1131

+  EM_GETOPTIONS* = 1102

+  EM_GETOLEINTERFACE* = 1084

+  EM_GETPARAFORMAT* = 1085

+  EM_GETPASSWORDCHAR* = 210

+  EM_GETPUNCTUATION* = 1125

+  EM_GETRECT* = 178

+  EM_GETSEL* = 176

+  EM_GETSELTEXT* = 1086

+  EM_GETTEXTRANGE* = 1099

+  EM_GETTHUMB* = 190

+  EM_GETWORDBREAKPROC* = 209

+  EM_GETWORDBREAKPROCEX* = 1104

+  EM_GETWORDWRAPMODE* = 1127

+  EM_HIDESELECTION* = 1087

+  EM_LIMITTEXT* = 197

+  EM_LINEFROMCHAR* = 201

+  EM_LINEINDEX* = 187

+  EM_LINELENGTH* = 193

+  EM_LINESCROLL* = 182

+  EM_PASTESPECIAL* = 1088

+  EM_POSFROMCHAR* = 214

+  EM_REPLACESEL* = 194

+  EM_REQUESTRESIZE* = 1089

+  EM_SCROLL* = 181

+  EM_SCROLLCARET* = 183

+  EM_SELECTIONTYPE* = 1090

+  EM_SETBKGNDCOLOR* = 1091

+  EM_SETCHARFORMAT* = 1092

+  EM_SETEVENTMASK* = 1093

+  EM_SETHANDLE* = 188

+  EM_SETIMECOLOR* = 1128

+  EM_SETIMEOPTIONS* = 1130

+  EM_SETLIMITTEXT* = 197

+  EM_SETMARGINS* = 211

+  EM_SETMODIFY* = 185

+  EM_SETOLECALLBACK* = 1094

+  EM_SETOPTIONS* = 1101

+  EM_SETPARAFORMAT* = 1095

+  EM_SETPASSWORDCHAR* = 204

+  EM_SETPUNCTUATION* = 1124

+  EM_SETREADONLY* = 207

+  EM_SETRECT* = 179

+  EM_SETRECTNP* = 180

+  EM_SETSEL* = 177

+  EM_SETTABSTOPS* = 203

+  EM_SETTARGETDEVICE* = 1096

+  EM_SETWORDBREAKPROC* = 208

+  EM_SETWORDBREAKPROCEX* = 1105

+  EM_SETWORDWRAPMODE* = 1126

+  EM_STREAMIN* = 1097

+  EM_STREAMOUT* = 1098

+  EM_UNDO* = 199

+  # Edit control

+  EN_CHANGE* = 768

+  EN_CORRECTTEXT* = 1797

+  EN_DROPFILES* = 1795

+  EN_ERRSPACE* = 1280

+  EN_HSCROLL* = 1537

+  EN_IMECHANGE* = 1799

+  EN_KILLFOCUS* = 512

+  EN_MAXTEXT* = 1281

+  EN_MSGFILTER* = 1792

+  EN_OLEOPFAILED* = 1801

+  EN_PROTECTED* = 1796

+  EN_REQUESTRESIZE* = 1793

+  EN_SAVECLIPBOARD* = 1800

+  EN_SELCHANGE* = 1794

+  EN_SETFOCUS* = 256

+  EN_STOPNOUNDO* = 1798

+  EN_UPDATE* = 1024

+  EN_VSCROLL* = 1538

+  # File Manager extensions

+                              # File Manager extensions DLL events

+                              # Header control

+  HDM_DELETEITEM* = 4610

+  HDM_GETITEMW* = 4619

+  HDM_INSERTITEMW* = 4618

+  HDM_SETITEMW* = 4620

+  HDM_GETITEMA* = 4611

+  HDM_INSERTITEMA* = 4609

+  HDM_SETITEMA* = 4612

+

+when defined(winUnicode):

+  const

+    HDM_GETITEM* = HDM_GETITEMW

+    HDM_INSERTITEM* = HDM_INSERTITEMW

+    HDM_SETITEM* = HDM_SETITEMW

+else:

+  const

+    HDM_GETITEM* = HDM_GETITEMA

+    HDM_INSERTITEM* = HDM_INSERTITEMA

+    HDM_SETITEM* = HDM_SETITEMA

+# UNICODE

+

+const

+  HDM_GETITEMCOUNT* = 4608

+  HDM_HITTEST* = 4614

+  HDM_LAYOUT* = 4613

+  # Header control notifications

+  HDN_BEGINTRACKW* = -326

+  HDN_DIVIDERDBLCLICKW* = -325

+  HDN_ENDTRACKW* = -327

+  HDN_ITEMCHANGEDW* = -321

+  HDN_ITEMCHANGINGW* = -320

+  HDN_ITEMCLICKW* = -322

+  HDN_ITEMDBLCLICKW* = -323

+  HDN_TRACKW* = -328

+  HDN_BEGINTRACKA* = -306

+  HDN_DIVIDERDBLCLICKA* = -305

+  HDN_ENDTRACKA* = -307

+  HDN_ITEMCHANGEDA* = -301

+  HDN_ITEMCHANGINGA* = -300

+  HDN_ITEMCLICKA* = -302

+  HDN_ITEMDBLCLICKA* = -303

+  HDN_TRACKA* = -308

+

+when defined(winUnicode):

+  const

+    HDN_BEGINTRACK* = HDN_BEGINTRACKW

+    HDN_DIVIDERDBLCLICK* = HDN_DIVIDERDBLCLICKW

+    HDN_ENDTRACK* = HDN_ENDTRACKW

+    HDN_ITEMCHANGED* = HDN_ITEMCHANGEDW

+    HDN_ITEMCHANGING* = HDN_ITEMCHANGINGW

+    HDN_ITEMCLICK* = HDN_ITEMCLICKW

+    HDN_ITEMDBLCLICK* = HDN_ITEMDBLCLICKW

+    HDN_TRACK* = HDN_TRACKW

+else:

+  const

+    HDN_BEGINTRACK* = HDN_BEGINTRACKA

+    HDN_DIVIDERDBLCLICK* = HDN_DIVIDERDBLCLICKA

+    HDN_ENDTRACK* = HDN_ENDTRACKA

+    HDN_ITEMCHANGED* = HDN_ITEMCHANGEDA

+    HDN_ITEMCHANGING* = HDN_ITEMCHANGINGA

+    HDN_ITEMCLICK* = HDN_ITEMCLICKA

+    HDN_ITEMDBLCLICK* = HDN_ITEMDBLCLICKA

+    HDN_TRACK* = HDN_TRACKA

+# UNICODE

+

+const

+  # Hot key control

+  HKM_GETHOTKEY* = 1026

+  HKM_SETHOTKEY* = 1025

+  HKM_SETRULES* = 1027

+  # List box

+  LB_ADDFILE* = 406

+  LB_ADDSTRING* = 384

+  LB_DELETESTRING* = 386

+  LB_DIR* = 397

+  LB_FINDSTRING* = 399

+  LB_FINDSTRINGEXACT* = 418

+  LB_GETANCHORINDEX* = 413

+  LB_GETCARETINDEX* = 415

+  LB_GETCOUNT* = 395

+  LB_GETCURSEL* = 392

+  LB_GETHORIZONTALEXTENT* = 403

+  LB_GETITEMDATA* = 409

+  LB_GETITEMHEIGHT* = 417

+  LB_GETITEMRECT* = 408

+  LB_GETLOCALE* = 422

+  LB_GETSEL* = 391

+  LB_GETSELCOUNT* = 400

+  LB_GETSELITEMS* = 401

+  LB_GETTEXT* = 393

+  LB_GETTEXTLEN* = 394

+  LB_GETTOPINDEX* = 398

+  LB_INITSTORAGE* = 424

+  LB_INSERTSTRING* = 385

+  LB_ITEMFROMPOINT* = 425

+  LB_RESETCONTENT* = 388

+  LB_SELECTSTRING* = 396

+  LB_SELITEMRANGE* = 411

+  LB_SELITEMRANGEEX* = 387

+  LB_SETANCHORINDEX* = 412

+  LB_SETCARETINDEX* = 414

+  LB_SETCOLUMNWIDTH* = 405

+  LB_SETCOUNT* = 423

+  LB_SETCURSEL* = 390

+  LB_SETHORIZONTALEXTENT* = 404

+  LB_SETITEMDATA* = 410

+  LB_SETITEMHEIGHT* = 416

+  LB_SETLOCALE* = 421

+  LB_SETSEL* = 389

+  LB_SETTABSTOPS* = 402

+  LB_SETTOPINDEX* = 407

+  # List box notifications

+  LBN_DBLCLK* = 2

+  LBN_ERRSPACE* = -2

+  LBN_KILLFOCUS* = 5

+  LBN_SELCANCEL* = 3

+  LBN_SELCHANGE* = 1

+  LBN_SETFOCUS* = 4

+  # List view control

+  LVM_ARRANGE* = 4118

+  LVM_CREATEDRAGIMAGE* = 4129

+  LVM_DELETEALLITEMS* = 4105

+  LVM_DELETECOLUMN* = 4124

+  LVM_DELETEITEM* = 4104

+  LVM_ENSUREVISIBLE* = 4115

+  LVM_GETBKCOLOR* = 4096

+  LVM_GETCALLBACKMASK* = 4106

+  LVM_GETCOLUMNWIDTH* = 4125

+  LVM_GETCOUNTPERPAGE* = 4136

+  LVM_GETEDITCONTROL* = 4120

+  LVM_GETIMAGELIST* = 4098

+  LVM_EDITLABELW* = 4214

+  LVM_FINDITEMW* = 4179

+  LVM_GETCOLUMNW* = 4191

+  LVM_GETISEARCHSTRINGW* = 4213

+  LVM_GETITEMW* = 4171

+  LVM_GETITEMTEXTW* = 4211

+  LVM_GETSTRINGWIDTHW* = 4183

+  LVM_INSERTCOLUMNW* = 4193

+  LVM_INSERTITEMW* = 4173

+  LVM_SETCOLUMNW* = 4192

+  LVM_SETITEMW* = 4172

+  LVM_SETITEMTEXTW* = 4212

+  LVM_EDITLABELA* = 4119

+  LVM_FINDITEMA* = 4109

+  LVM_GETCOLUMNA* = 4121

+  LVM_GETISEARCHSTRINGA* = 4148

+  LVM_GETITEMA* = 4101

+  LVM_GETITEMTEXTA* = 4141

+  LVM_GETSTRINGWIDTHA* = 4113

+  LVM_INSERTCOLUMNA* = 4123

+  LVM_INSERTITEMA* = 4103

+  LVM_SETCOLUMNA* = 4122

+  LVM_SETITEMA* = 4102

+  LVM_SETITEMTEXTA* = 4142

+

+when defined(winUnicode):

+  const

+    LVM_EDITLABEL* = LVM_EDITLABELW

+    LVM_FINDITEM* = LVM_FINDITEMW

+    LVM_GETCOLUMN* = LVM_GETCOLUMNW

+    LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGW

+    LVM_GETITEM* = LVM_GETITEMW

+    LVM_GETITEMTEXT* = LVM_GETITEMTEXTW

+    LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHW

+    LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNW

+    LVM_INSERTITEM* = LVM_INSERTITEMW

+    LVM_SETCOLUMN* = LVM_SETCOLUMNW

+    LVM_SETITEM* = LVM_SETITEMW

+    LVM_SETITEMTEXT* = LVM_SETITEMTEXTW

+else:

+  const

+    LVM_EDITLABEL* = LVM_EDITLABELA

+    LVM_FINDITEM* = LVM_FINDITEMA

+    LVM_GETCOLUMN* = LVM_GETCOLUMNA

+    LVM_GETISEARCHSTRING* = LVM_GETISEARCHSTRINGA

+    LVM_GETITEM* = LVM_GETITEMA

+    LVM_GETITEMTEXT* = LVM_GETITEMTEXTA

+    LVM_GETSTRINGWIDTH* = LVM_GETSTRINGWIDTHA

+    LVM_INSERTCOLUMN* = LVM_INSERTCOLUMNA

+    LVM_INSERTITEM* = LVM_INSERTITEMA

+    LVM_SETCOLUMN* = LVM_SETCOLUMNA

+    LVM_SETITEM* = LVM_SETITEMA

+    LVM_SETITEMTEXT* = LVM_SETITEMTEXTA

+# UNICODE

+

+const

+  LVM_GETITEMCOUNT* = 4100

+  LVM_GETITEMPOSITION* = 4112

+  LVM_GETITEMRECT* = 4110

+  LVM_GETITEMSPACING* = 4147

+  LVM_GETITEMSTATE* = 4140

+  LVM_GETNEXTITEM* = 4108

+  LVM_GETORIGIN* = 4137

+  LVM_GETSELECTEDCOUNT* = 4146

+  LVM_GETTEXTBKCOLOR* = 4133

+  LVM_GETTEXTCOLOR* = 4131

+  LVM_GETTOPINDEX* = 4135

+  LVM_GETVIEWRECT* = 4130

+  LVM_HITTEST* = 4114

+  LVM_REDRAWITEMS* = 4117

+  LVM_SCROLL* = 4116

+  LVM_SETBKCOLOR* = 4097

+  LVM_SETCALLBACKMASK* = 4107

+  LVM_SETCOLUMNWIDTH* = 4126

+  LVM_SETIMAGELIST* = 4099

+  LVM_SETITEMCOUNT* = 4143

+  LVM_SETITEMPOSITION* = 4111

+  LVM_SETITEMPOSITION32* = 4145

+  LVM_SETITEMSTATE* = 4139

+  LVM_SETTEXTBKCOLOR* = 4134

+  LVM_SETTEXTCOLOR* = 4132

+  LVM_SORTITEMS* = 4144

+  LVM_UPDATE* = 4138

+  # List view control notifications

+  LVN_BEGINDRAG* = -109

+  LVN_BEGINRDRAG* = -111

+  LVN_COLUMNCLICK* = -108

+  LVN_DELETEALLITEMS* = -104

+  LVN_DELETEITEM* = -103

+  LVN_BEGINLABELEDITW* = -175

+  LVN_ENDLABELEDITW* = -176

+  LVN_GETDISPINFOW* = -177

+  LVN_SETDISPINFOW* = -178

+  LVN_BEGINLABELEDITA* = -105

+  LVN_ENDLABELEDITA* = -106

+  LVN_GETDISPINFOA* = -150

+  LVN_SETDISPINFOA* = -151

+

+when defined(winUnicode):

+  const

+    LVN_BEGINLABELEDIT* = LVN_BEGINLABELEDITW

+    LVN_ENDLABELEDIT* = LVN_ENDLABELEDITW

+    LVN_GETDISPINFO* = LVN_GETDISPINFOW

+    LVN_SETDISPINFO* = LVN_SETDISPINFOW

+else:

+  const

+    LVN_BEGINLABELEDIT* = LVN_BEGINLABELEDITA

+    LVN_ENDLABELEDIT* = LVN_ENDLABELEDITA

+    LVN_GETDISPINFO* = LVN_GETDISPINFOA

+    LVN_SETDISPINFO* = LVN_SETDISPINFOA

+# UNICODE

+

+const

+  LVN_INSERTITEM* = -102

+  LVN_ITEMCHANGED* = -101

+  LVN_ITEMCHANGING* = -100

+  LVN_KEYDOWN* = -155

+  # Control notification

+  NM_CLICK* = -2

+  NM_DBLCLK* = -3

+  NM_KILLFOCUS* = -8

+  NM_OUTOFMEMORY* = -1

+  NM_RCLICK* = -5

+  NM_RDBLCLK* = -6

+  NM_RETURN* = -4

+  NM_SETFOCUS* = -7

+  # Power status

+                              # Progress bar control

+  PBM_DELTAPOS* = 1027

+  PBM_SETPOS* = 1026

+  PBM_SETRANGE* = 1025

+  PBM_SETRANGE32* = 1030

+  PBM_SETSTEP* = 1028

+  PBM_STEPIT* = 1029

+  # Property sheets

+  PSM_ADDPAGE* = 1127

+  PSM_APPLY* = 1134

+  PSM_CANCELTOCLOSE* = 1131

+  PSM_CHANGED* = 1128

+  PSM_GETTABCONTROL* = 1140

+  PSM_GETCURRENTPAGEHWND* = 1142

+  PSM_ISDIALOGMESSAGE* = 1141

+  PSM_PRESSBUTTON* = 1137

+  PSM_QUERYSIBLINGS* = 1132

+  PSM_REBOOTSYSTEM* = 1130

+  PSM_REMOVEPAGE* = 1126

+  PSM_RESTARTWINDOWS* = 1129

+  PSM_SETCURSEL* = 1125

+  PSM_SETCURSELID* = 1138

+  PSM_SETFINISHTEXTW* = 1145

+  PSM_SETTITLEW* = 1144

+  PSM_SETFINISHTEXTA* = 1139

+  PSM_SETTITLEA* = 1135

+

+when defined(winUnicode):

+  const

+    PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTW

+    PSM_SETTITLE* = PSM_SETTITLEW

+else:

+  const

+    PSM_SETFINISHTEXT* = PSM_SETFINISHTEXTA

+    PSM_SETTITLE* = PSM_SETTITLEA

+# UNICODE

+

+const

+  PSM_SETWIZBUTTONS* = 1136

+  PSM_UNCHANGED* = 1133

+  # Property sheet notifications

+  PSN_APPLY* = -202

+  PSN_HELP* = -205

+  PSN_KILLACTIVE* = -201

+  PSN_QUERYCANCEL* = -209

+  PSN_RESET* = -203

+  PSN_SETACTIVE* = -200

+  PSN_WIZBACK* = -206

+  PSN_WIZFINISH* = -208

+  PSN_WIZNEXT* = -207

+  # Status window

+  SB_GETBORDERS* = 1031

+  SB_GETPARTS* = 1030

+  SB_GETRECT* = 1034

+  SB_GETTEXTW* = 1037

+  SB_GETTEXTLENGTHW* = 1036

+  SB_SETTEXTW* = 1035

+  SB_GETTEXTA* = 1026

+  SB_GETTEXTLENGTHA* = 1027

+  SB_SETTEXTA* = 1025

+

+when defined(winUnicode):

+  const

+    SB_GETTEXT* = SB_GETTEXTW

+    SB_GETTEXTLENGTH* = SB_GETTEXTLENGTHW

+    SB_SETTEXT* = SB_SETTEXTW

+else:

+  const

+    SB_GETTEXT* = SB_GETTEXTA

+    SB_GETTEXTLENGTH* = SB_GETTEXTLENGTHA

+    SB_SETTEXT* = SB_SETTEXTA

+# UNICODE

+

+const

+  SB_SETMINHEIGHT* = 1032

+  SB_SETPARTS* = 1028

+  SB_SIMPLE* = 1033

+  # Scroll bar control

+  SBM_ENABLE_ARROWS* = 228

+  SBM_GETPOS* = 225

+  SBM_GETRANGE* = 227

+  SBM_GETSCROLLINFO* = 234

+  SBM_SETPOS* = 224

+  SBM_SETRANGE* = 226

+  SBM_SETRANGEREDRAW* = 230

+  SBM_SETSCROLLINFO* = 233

+  # Static control

+  STM_GETICON* = 369

+  STM_GETIMAGE* = 371

+  STM_SETICON* = 368

+  STM_SETIMAGE* = 370

+  # Static control notifications

+  STN_CLICKED* = 0

+  STN_DBLCLK* = 1

+  STN_DISABLE* = 3

+  STN_ENABLE* = 2

+  # Toolbar control

+  TB_ADDBITMAP* = 1043

+  TB_ADDBUTTONS* = 1044

+  TB_AUTOSIZE* = 1057

+  TB_BUTTONCOUNT* = 1048

+  TB_BUTTONSTRUCTSIZE* = 1054

+  TB_CHANGEBITMAP* = 1067

+  TB_CHECKBUTTON* = 1026

+  TB_COMMANDTOINDEX* = 1049

+  TB_CUSTOMIZE* = 1051

+  TB_DELETEBUTTON* = 1046

+  TB_ENABLEBUTTON* = 1025

+  TB_GETBITMAP* = 1068

+  TB_GETBITMAPFLAGS* = 1065

+  TB_GETBUTTON* = 1047

+  TB_ADDSTRINGW* = 1101

+  TB_GETBUTTONTEXTW* = 1099

+  TB_SAVERESTOREW* = 1100

+  TB_ADDSTRINGA* = 1052

+  TB_GETBUTTONTEXTA* = 1069

+  TB_SAVERESTOREA* = 1050

+

+when defined(winUnicode):

+  const

+    TB_ADDSTRING* = TB_ADDSTRINGW

+    TB_GETBUTTONTEXT* = TB_GETBUTTONTEXTW

+    TB_SAVERESTORE* = TB_SAVERESTOREW

+else:

+  const

+    TB_ADDSTRING* = TB_ADDSTRINGA

+    TB_GETBUTTONTEXT* = TB_GETBUTTONTEXTA

+    TB_SAVERESTORE* = TB_SAVERESTOREA

+# UNICODE

+

+const

+  TB_GETITEMRECT* = 1053

+  TB_GETROWS* = 1064

+  TB_GETSTATE* = 1042

+  TB_GETTOOLTIPS* = 1059

+  TB_HIDEBUTTON* = 1028

+  TB_INDETERMINATE* = 1029

+  TB_INSERTBUTTON* = 1045

+  TB_ISBUTTONCHECKED* = 1034

+  TB_ISBUTTONENABLED* = 1033

+  TB_ISBUTTONHIDDEN* = 1036

+  TB_ISBUTTONINDETERMINATE* = 1037

+  TB_ISBUTTONPRESSED* = 1035

+  TB_PRESSBUTTON* = 1027

+  TB_SETBITMAPSIZE* = 1056

+  TB_SETBUTTONSIZE* = 1055

+  TB_SETCMDID* = 1066

+  TB_SETPARENT* = 1061

+  TB_SETROWS* = 1063

+  TB_SETSTATE* = 1041

+  TB_SETTOOLTIPS* = 1060

+  # Track bar control

+  TBM_CLEARSEL* = 1043

+  TBM_CLEARTICS* = 1033

+  TBM_GETCHANNELRECT* = 1050

+  TBM_GETLINESIZE* = 1048

+  TBM_GETNUMTICS* = 1040

+  TBM_GETPAGESIZE* = 1046

+  TBM_GETPOS* = 1024

+  TBM_GETPTICS* = 1038

+  TBM_GETRANGEMAX* = 1026

+  TBM_GETRANGEMIN* = 1025

+  TBM_GETSELEND* = 1042

+  TBM_GETSELSTART* = 1041

+  TBM_GETTHUMBLENGTH* = 1052

+  TBM_GETTHUMBRECT* = 1049

+  TBM_GETTIC* = 1027

+  TBM_GETTICPOS* = 1039

+  TBM_SETLINESIZE* = 1047

+  TBM_SETPAGESIZE* = 1045

+  TBM_SETPOS* = 1029

+  TBM_SETRANGE* = 1030

+  TBM_SETRANGEMAX* = 1032

+  TBM_SETRANGEMIN* = 1031

+  TBM_SETSEL* = 1034

+  TBM_SETSELEND* = 1036

+  TBM_SETSELSTART* = 1035

+  TBM_SETTHUMBLENGTH* = 1051

+  TBM_SETTIC* = 1028

+  TBM_SETTICFREQ* = 1044

+  # Tool bar control notifications

+  TBN_BEGINADJUST* = -703

+  TBN_BEGINDRAG* = -701

+  TBN_CUSTHELP* = -709

+  TBN_ENDADJUST* = -704

+  TBN_ENDDRAG* = -702

+  TBN_GETBUTTONINFOW* = -720

+  TBN_GETBUTTONINFOA* = -700

+

+when defined(winUnicode):

+  const

+    TBN_GETBUTTONINFO* = TBN_GETBUTTONINFOW

+else:

+  const

+    TBN_GETBUTTONINFO* = TBN_GETBUTTONINFOA

+# UNICODE

+

+const

+  TBN_QUERYDELETE* = -707

+  TBN_QUERYINSERT* = -706

+  TBN_RESET* = -705

+  TBN_TOOLBARCHANGE* = -708

+  # Tab control

+  TCM_ADJUSTRECT* = 4904

+  TCM_DELETEALLITEMS* = 4873

+  TCM_DELETEITEM* = 4872

+  TCM_GETCURFOCUS* = 4911

+  TCM_GETCURSEL* = 4875

+  TCM_GETIMAGELIST* = 4866

+  TCM_GETITEMW* = 4924

+  TCM_INSERTITEMW* = 4926

+  TCM_SETITEMW* = 4925

+  TCM_GETITEMA* = 4869

+  TCM_INSERTITEMA* = 4871

+  TCM_SETITEMA* = 4870

+

+when defined(winUnicode):

+  const

+    TCM_GETITEM* = TCM_GETITEM

+    TCM_INSERTITEM* = TCM_INSERTITEMW

+    TCM_SETITEM* = TCM_SETITEMW

+else:

+  const

+    TCM_GETITEM* = TCM_GETITEMA

+    TCM_INSERTITEM* = TCM_INSERTITEMA

+    TCM_SETITEM* = TCM_SETITEMA

+# UNICODE

+

+const

+  TCM_GETITEMCOUNT* = 4868

+  TCM_GETITEMRECT* = 4874

+  TCM_GETROWCOUNT* = 4908

+  TCM_GETTOOLTIPS* = 4909

+  TCM_HITTEST* = 4877

+  TCM_REMOVEIMAGE* = 4906

+  TCM_SETCURFOCUS* = 4912

+  TCM_SETCURSEL* = 4876

+  TCM_SETIMAGELIST* = 4867

+  TCM_SETITEMEXTRA* = 4878

+  TCM_SETITEMSIZE* = 4905

+  TCM_SETPADDING* = 4907

+  TCM_SETTOOLTIPS* = 4910

+  # Tab control notifications

+  TCN_KEYDOWN* = -550

+  TCN_SELCHANGE* = -551

+  TCN_SELCHANGING* = -552

+  # Tool tip control

+  TTM_ACTIVATE* = 1025

+  TTM_ADDTOOLW* = 1074

+  TTM_DELTOOLW* = 1075

+  TTM_ENUMTOOLSW* = 1082

+  TTM_GETCURRENTTOOLW* = 1083

+  TTM_GETTEXTW* = 1080

+  TTM_GETTOOLINFOW* = 1077

+  TTM_HITTESTW* = 1079

+  TTM_NEWTOOLRECTW* = 1076

+  TTM_SETTOOLINFOW* = 1078

+  TTM_UPDATETIPTEXTW* = 1081

+  TTM_ADDTOOLA* = 1028

+  TTM_DELTOOLA* = 1029

+  TTM_ENUMTOOLSA* = 1038

+  TTM_GETCURRENTTOOLA* = 1039

+  TTM_GETTEXTA* = 1035

+  TTM_GETTOOLINFOA* = 1032

+  TTM_HITTESTA* = 1034

+  TTM_NEWTOOLRECTA* = 1030

+  TTM_SETTOOLINFOA* = 1033

+  TTM_UPDATETIPTEXTA* = 1036

+

+when defined(winUnicode):

+  const

+    TTM_ADDTOOL* = TTM_ADDTOOLW

+    TTM_DELTOOL* = TTM_DELTOOLW

+    TTM_ENUMTOOLS* = TTM_ENUMTOOLSW

+    TTM_GETCURRENTTOOL* = TTM_GETCURRENTTOOLW

+    TTM_GETTEXT* = TTM_GETTEXTW

+    TTM_GETTOOLINFO* = TTM_GETTOOLINFOW

+    TTM_HITTEST* = TTM_HITTESTW

+    TTM_NEWTOOLRECT* = TTM_NEWTOOLRECTW

+    TTM_SETTOOLINFO* = TTM_SETTOOLINFOW

+    TTM_UPDATETIPTEXT* = TTM_UPDATETIPTEXTW

+else:

+  const

+    TTM_ADDTOOL* = TTM_ADDTOOLA

+    TTM_DELTOOL* = TTM_DELTOOLA

+    TTM_ENUMTOOLS* = TTM_ENUMTOOLSA

+    TTM_GETCURRENTTOOL* = TTM_GETCURRENTTOOLA

+    TTM_GETTEXT* = TTM_GETTEXTA

+    TTM_GETTOOLINFO* = TTM_GETTOOLINFOA

+    TTM_HITTEST* = TTM_HITTESTA

+    TTM_NEWTOOLRECT* = TTM_NEWTOOLRECTA

+    TTM_SETTOOLINFO* = TTM_SETTOOLINFOA

+    TTM_UPDATETIPTEXT* = TTM_UPDATETIPTEXTA

+# UNICODE

+

+const

+  TTM_GETTOOLCOUNT* = 1037

+  TTM_RELAYEVENT* = 1031

+  TTM_SETDELAYTIME* = 1027

+  TTM_WINDOWFROMPOINT* = 1040

+  # Tool tip control notification

+  TTN_NEEDTEXTW* = -530

+  TTN_NEEDTEXTA* = -520

+

+when defined(winUnicode):

+  const

+    TTN_NEEDTEXT* = TTN_NEEDTEXTW

+else:

+  const

+    TTN_NEEDTEXT* = TTN_NEEDTEXTA

+# UNICODE

+

+const

+  TTN_POP* = -522

+  TTN_SHOW* = -521

+  # Tree view control

+  TVM_CREATEDRAGIMAGE* = 4370

+  TVM_DELETEITEM* = 4353

+  TVM_ENDEDITLABELNOW* = 4374

+  TVM_ENSUREVISIBLE* = 4372

+  TVM_EXPAND* = 4354

+  TVM_GETCOUNT* = 4357

+  TVM_GETEDITCONTROL* = 4367

+  TVM_GETIMAGELIST* = 4360

+  TVM_GETINDENT* = 4358

+  TVM_GETITEMRECT* = 4356

+  TVM_GETNEXTITEM* = 4362

+  TVM_GETVISIBLECOUNT* = 4368

+  TVM_HITTEST* = 4369

+  TVM_EDITLABELW* = 4417

+  TVM_GETISEARCHSTRINGW* = 4416

+  TVM_GETITEMW* = 4414

+  TVM_INSERTITEMW* = 4402

+  TVM_SETITEMW* = 4415

+  TVM_EDITLABELA* = 4366

+  TVM_GETISEARCHSTRINGA* = 4375

+  TVM_GETITEMA* = 4364

+  TVM_INSERTITEMA* = 4352

+  TVM_SETITEMA* = 4365

+

+when defined(winUnicode):

+  const

+    TVM_EDITLABEL* = TVM_EDITLABELW

+    TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGW

+    TVM_GETITEM* = TVM_GETITEMW

+    TVM_INSERTITEM* = TVM_INSERTITEMW

+    TVM_SETITEM* = TVM_SETITEMW

+else:

+  const

+    TVM_EDITLABEL* = TVM_EDITLABELA

+    TVM_GETISEARCHSTRING* = TVM_GETISEARCHSTRINGA

+    TVM_GETITEM* = TVM_GETITEMA

+    TVM_INSERTITEM* = TVM_INSERTITEMA

+    TVM_SETITEM* = TVM_SETITEMA

+# UNICODE

+

+const

+  TVM_SELECTITEM* = 4363

+  TVM_SETIMAGELIST* = 4361

+  TVM_SETINDENT* = 4359

+  TVM_SORTCHILDREN* = 4371

+  TVM_SORTCHILDRENCB* = 4373

+  # Tree view control notification

+  TVN_KEYDOWN* = -412

+  TVN_BEGINDRAGW* = -456

+  TVN_BEGINLABELEDITW* = -459

+  TVN_BEGINRDRAGW* = -457

+  TVN_DELETEITEMW* = -458

+  TVN_ENDLABELEDITW* = -460

+  TVN_GETDISPINFOW* = -452

+  TVN_ITEMEXPANDEDW* = -455

+  TVN_ITEMEXPANDINGW* = -454

+  TVN_SELCHANGEDW* = -451

+  TVN_SELCHANGINGW* = -450

+  TVN_SETDISPINFOW* = -453

+  TVN_BEGINDRAGA* = -407

+  TVN_BEGINLABELEDITA* = -410

+  TVN_BEGINRDRAGA* = -408

+  TVN_DELETEITEMA* = -409

+  TVN_ENDLABELEDITA* = -411

+  TVN_GETDISPINFOA* = -403

+  TVN_ITEMEXPANDEDA* = -406

+  TVN_ITEMEXPANDINGA* = -405

+  TVN_SELCHANGEDA* = -402

+  TVN_SELCHANGINGA* = -401

+  TVN_SETDISPINFOA* = -404

+

+when defined(winUnicode):

+  const

+    TVN_BEGINDRAG* = TVN_BEGINDRAGW

+    TVN_BEGINLABELEDIT* = TVN_BEGINLABELEDITW

+    TVN_BEGINRDRAG* = TVN_BEGINRDRAGW

+    TVN_DELETEITEM* = TVN_DELETEITEMW

+    TVN_ENDLABELEDIT* = TVN_ENDLABELEDITW

+    TVN_GETDISPINFO* = TVN_GETDISPINFOW

+    TVN_ITEMEXPANDED* = TVN_ITEMEXPANDEDW

+    TVN_ITEMEXPANDING* = TVN_ITEMEXPANDINGW

+    TVN_SELCHANGED* = TVN_SELCHANGEDW

+    TVN_SELCHANGING* = TVN_SELCHANGINGW

+    TVN_SETDISPINFO* = TVN_SETDISPINFOW

+else:

+  const

+    TVN_BEGINDRAG* = TVN_BEGINDRAGA

+    TVN_BEGINLABELEDIT* = TVN_BEGINLABELEDITA

+    TVN_BEGINRDRAG* = TVN_BEGINRDRAGA

+    TVN_DELETEITEM* = TVN_DELETEITEMA

+    TVN_ENDLABELEDIT* = TVN_ENDLABELEDITA

+    TVN_GETDISPINFO* = TVN_GETDISPINFOA

+    TVN_ITEMEXPANDED* = TVN_ITEMEXPANDEDA

+    TVN_ITEMEXPANDING* = TVN_ITEMEXPANDINGA

+    TVN_SELCHANGED* = TVN_SELCHANGEDA

+    TVN_SELCHANGING* = TVN_SELCHANGINGA

+    TVN_SETDISPINFO* = TVN_SETDISPINFOA

+# UNICODE

+

+const

+  # Up/down control

+  UDM_GETACCEL* = 1132

+  UDM_GETBASE* = 1134

+  UDM_GETBUDDY* = 1130

+  UDM_GETPOS* = 1128

+  UDM_GETPOS32* = 1138

+  UDM_GETRANGE* = 1126

+  UDM_GETRANGE32* = 1136

+  UDM_SETACCEL* = 1131

+  UDM_SETBASE* = 1133

+  UDM_SETBUDDY* = 1129

+  UDM_SETPOS* = 1127

+  UDM_SETPOS32* = 1137

+  UDM_SETRANGE* = 1125

+  UDM_SETRANGE32* = 1135

+  # Up/down control notification

+  UDN_DELTAPOS* = -722

+  # Window messages

+  WM_ACTIVATE* = 6

+  WM_ACTIVATEAPP* = 28

+  WM_ASKCBFORMATNAME* = 780

+  WM_CANCELJOURNAL* = 75

+  WM_CANCELMODE* = 31

+  WM_CAPTURECHANGED* = 533

+  WM_CHANGECBCHAIN* = 781

+  WM_CHAR* = 258

+  WM_CHARTOITEM* = 47

+  WM_CHILDACTIVATE* = 34

+  WM_CHOOSEFONT_GETLOGFONT* = 1025

+  WM_CHOOSEFONT_SETLOGFONT* = 1125

+  WM_CHOOSEFONT_SETFLAGS* = 1126

+  WM_CLEAR* = 771

+  WM_CLOSE* = 16

+  WM_COMMAND* = 273

+  WM_COMPACTING* = 65

+  WM_COMPAREITEM* = 57

+  WM_CONTEXTMENU* = 123

+  WM_COPY* = 769

+  WM_COPYDATA* = 74

+  WM_CREATE* = 1

+  WM_CTLCOLORBTN* = 309

+  WM_CTLCOLORDLG* = 310

+  WM_CTLCOLOREDIT* = 307

+  WM_CTLCOLORLISTBOX* = 308

+  WM_CTLCOLORMSGBOX* = 306

+  WM_CTLCOLORSCROLLBAR* = 311

+  WM_CTLCOLORSTATIC* = 312

+  WM_CUT* = 768

+  WM_DEADCHAR* = 259

+  WM_DELETEITEM* = 45

+  WM_DESTROY* = 2

+  WM_DESTROYCLIPBOARD* = 775

+  WM_DEVICECHANGE* = 537

+  WM_DEVMODECHANGE* = 27

+  WM_DISPLAYCHANGE* = 126

+  WM_DRAWCLIPBOARD* = 776

+  WM_DRAWITEM* = 43

+  WM_DROPFILES* = 563

+  WM_ENABLE* = 10

+  WM_ENDSESSION* = 22

+  WM_ENTERIDLE* = 289

+  WM_ENTERMENULOOP* = 529

+  WM_ENTERSIZEMOVE* = 561

+  WM_ERASEBKGND* = 20

+  WM_EXITMENULOOP* = 530

+  WM_EXITSIZEMOVE* = 562

+  WM_FONTCHANGE* = 29

+  WM_GETDLGCODE* = 135

+  WM_GETFONT* = 49

+  WM_GETHOTKEY* = 51

+  WM_GETICON* = 127

+  WM_GETMINMAXINFO* = 36

+  WM_GETTEXT* = 13

+  WM_GETTEXTLENGTH* = 14

+  WM_HELP* = 83

+  WM_HOTKEY* = 786

+  WM_HSCROLL* = 276

+  WM_HSCROLLCLIPBOARD* = 782

+  WM_ICONERASEBKGND* = 39

+  WM_IME_CHAR* = 646

+  WM_IME_COMPOSITION* = 271

+  WM_IME_COMPOSITIONFULL* = 644

+  WM_IME_CONTROL* = 643

+  WM_IME_ENDCOMPOSITION* = 270

+  WM_IME_KEYDOWN* = 656

+  WM_IME_KEYUP* = 657

+  WM_IME_NOTIFY* = 642

+  WM_IME_SELECT* = 645

+  WM_IME_SETCONTEXT* = 641

+  WM_IME_STARTCOMPOSITION* = 269

+  WM_INITDIALOG* = 272

+  WM_INITMENU* = 278

+  WM_INITMENUPOPUP* = 279

+  WM_INPUTLANGCHANGE* = 81

+  WM_INPUTLANGCHANGEREQUEST* = 80

+  WM_KEYDOWN* = 256

+  WM_KEYUP* = 257

+  WM_KILLFOCUS* = 8

+  WM_LBUTTONDBLCLK* = 515

+  WM_LBUTTONDOWN* = 513

+  WM_LBUTTONUP* = 514

+  WM_MBUTTONDBLCLK* = 521

+  WM_MBUTTONDOWN* = 519

+  WM_MBUTTONUP* = 520

+  WM_MDIACTIVATE* = 546

+  WM_MDICASCADE* = 551

+  WM_MDICREATE* = 544

+  WM_MDIDESTROY* = 545

+  WM_MDIGETACTIVE* = 553

+  WM_MDIICONARRANGE* = 552

+  WM_MDIMAXIMIZE* = 549

+  WM_MDINEXT* = 548

+  WM_MDIREFRESHMENU* = 564

+  WM_MDIRESTORE* = 547

+  WM_MDISETMENU* = 560

+  WM_MDITILE* = 550

+  WM_MEASUREITEM* = 44

+  WM_MENUCHAR* = 288

+  WM_MENUSELECT* = 287

+  WM_MOUSEACTIVATE* = 33

+  WM_MOUSEMOVE* = 512

+  WM_MOUSEWHEEL* = 522

+  WM_MOUSEHOVER* = 673

+  WM_MOUSELEAVE* = 675

+  WM_MOVE* = 3

+  WM_MOVING* = 534

+  WM_NCACTIVATE* = 134

+  WM_NCCALCSIZE* = 131

+  WM_NCCREATE* = 129

+  WM_NCDESTROY* = 130

+  WM_NCHITTEST* = 132

+  WM_NCLBUTTONDBLCLK* = 163

+  WM_NCLBUTTONDOWN* = 161

+  WM_NCLBUTTONUP* = 162

+  WM_NCMBUTTONDBLCLK* = 169

+  WM_NCMBUTTONDOWN* = 167

+  WM_NCMBUTTONUP* = 168

+  WM_NCMOUSEMOVE* = 160

+  WM_NCPAINT* = 133

+  WM_NCRBUTTONDBLCLK* = 166

+  WM_NCRBUTTONDOWN* = 164

+  WM_NCRBUTTONUP* = 165

+  WM_NEXTDLGCTL* = 40

+  WM_NOTIFY* = 78

+  WM_NOTIFYFORMAT* = 85

+  WM_NULL* = 0

+  WM_PAINT* = 15

+  WM_PAINTCLIPBOARD* = 777

+  WM_PAINTICON* = 38

+  WM_PALETTECHANGED* = 785

+  WM_PALETTEISCHANGING* = 784

+  WM_PARENTNOTIFY* = 528

+  WM_PASTE* = 770

+  WM_PENWINFIRST* = 896

+  WM_PENWINLAST* = 911

+  WM_POWER* = 72

+  WM_POWERBROADCAST* = 536

+  WM_PRINT* = 791

+  WM_PRINTCLIENT* = 792

+  WM_PSD_ENVSTAMPRECT* = 1029

+  WM_PSD_FULLPAGERECT* = 1025

+  WM_PSD_GREEKTEXTRECT* = 1028

+  WM_PSD_MARGINRECT* = 1027

+  WM_PSD_MINMARGINRECT* = 1026

+  WM_PSD_PAGESETUPDLG* = 1024

+  WM_PSD_YAFULLPAGERECT* = 1030

+  WM_QUERYDRAGICON* = 55

+  WM_QUERYENDSESSION* = 17

+  WM_QUERYNEWPALETTE* = 783

+  WM_QUERYOPEN* = 19

+  WM_QUEUESYNC* = 35

+  WM_QUIT* = 18

+  WM_RBUTTONDBLCLK* = 518

+  WM_RBUTTONDOWN* = 516

+  WM_RBUTTONUP* = 517

+  WM_RENDERALLFORMATS* = 774

+  WM_RENDERFORMAT* = 773

+  WM_SETCURSOR* = 32

+  WM_SETFOCUS* = 7

+  WM_SETFONT* = 48

+  WM_SETHOTKEY* = 50

+  WM_SETICON* = 128

+  WM_SETREDRAW* = 11

+  WM_SETTEXT* = 12

+  WM_SETTINGCHANGE* = 26

+  WM_SHOWWINDOW* = 24

+  WM_SIZE* = 5

+  WM_SIZECLIPBOARD* = 779

+  WM_SIZING* = 532

+  WM_SPOOLERSTATUS* = 42

+  WM_STYLECHANGED* = 125

+  WM_STYLECHANGING* = 124

+  WM_SYSCHAR* = 262

+  WM_SYSCOLORCHANGE* = 21

+  WM_SYSCOMMAND* = 274

+  WM_SYSDEADCHAR* = 263

+  WM_SYSKEYDOWN* = 260

+  WM_SYSKEYUP* = 261

+  WM_TCARD* = 82

+  WM_TIMECHANGE* = 30

+  WM_TIMER* = 275

+  WM_UNDO* = 772

+  WM_USER* = 1024

+  WM_USERCHANGED* = 84

+  WM_VKEYTOITEM* = 46

+  WM_VSCROLL* = 277

+  WM_VSCROLLCLIPBOARD* = 778

+  WM_WINDOWPOSCHANGED* = 71

+  WM_WINDOWPOSCHANGING* = 70

+  WM_WININICHANGE* = 26

+  # Window message ranges

+  WM_KEYFIRST* = 256

+  WM_KEYLAST* = 264

+  WM_MOUSEFIRST* = 512

+  WM_MOUSELAST* = 525

+  WM_XBUTTONDOWN* = 523

+  WM_XBUTTONUP* = 524

+  WM_XBUTTONDBLCLK* = 525

+

+when defined(cpu64):

+  type

+    HALFLRESULT* = DWORD

+    HALFPARAM* = DWORD

+    HALFPARAMBOOL* = WINBOOL

+else:

+  type

+    HALFLRESULT* = int16

+    HALFPARAM* = int16

+    HALFPARAMBOOL* = WORDBOOL

+type

+  MSG* {.final, pure.} = object

+    hwnd*: HWND

+    message*: UINT

+    wParam*: WPARAM

+    lParam*: LPARAM

+    time*: DWORD

+    pt*: POINT

+

+  LPMSG* = ptr MSG

+  TMSG* = MSG

+  PMSG* = ptr MSG

+  PMessage* = ptr TMessage

+  TMessage* {.final, pure.} = object          #fields according to ICS

+    msg*: UINT

+    wParam*: WPARAM

+    lParam*: LPARAM

+    Result*: LRESULT

+

+  TWMSize* {.final, pure.} = object

+    Msg*: UINT

+    SizeType*: WPARAM

+    Width*: HALFPARAM

+    Height*: HALFPARAM

+    Result*: LRESULT

+

+  TWMNoParams* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: array[0..3, HALFPARAM]

+    Result*: LRESULT

+

+  TWMCancelMode* = TWMNoParams

+  TWMNCDestroy* = TWMNoParams

+  TWMDestroy* = TWMNoParams

+  TWMClose* = TWMNoParams

+  TWMQueryUIState* = TWMNoParams

+  TWMUIState* {.final, pure.} = object

+    Msg*: UINT

+    Action*: int16

+    Flags*: int16

+    Unused*: HRESULT

+

+  TWMChangeUIState* = TWMUIState

+  TWMUpdateUIState* = TWMUIState

+  TWMKey* {.final, pure.} = object

+    Msg*: UINT

+    CharCode*: int16

+    Unused*: int16

+    KeyData*: int32

+    Result*: LRESULT

+

+  TWMKeyDown* = TWMKey

+  TWMKeyUp* = TWMKey

+  TWMChar* = TWMKey

+  TWMSysChar* = TWMKey

+  TWMSysKeyDown* = TWMKey

+  TWMSysKeyUp* = TWMKey

+  TWMMenuChar* {.final, pure.} = object

+    Msg*: UINT

+    User*: Char

+    MenuFlag*: int16

+    Menu*: HMENU

+    Result*: LRESULT

+

+  TWMGetDlgCode* = TWMNoParams

+  TWMFontChange* = TWMNoParams

+  TWMGetFont* = TWMNoParams

+  TWMSysColorChange* = TWMNoParams

+  TWMQueryDragIcon* = TWMNoParams

+  TWMScroll* {.final, pure.} = object

+    Msg*: UINT

+    ScrollCode*: HALFPARAM

+    Pos*: HALFPARAM

+    ScrollBar*: HWND

+    Result*: LRESULT

+

+  TWMHScroll* = TWMScroll

+  TWMVScroll* = TWMScroll

+  TWMGetText* {.final, pure.} = object

+    Msg*: UINT

+    TextMax*: LPARAM

+    Text*: cstring

+    Result*: LRESULT

+

+  TWMGetTextLength* = TWMNoParams

+  TWMKillFocus* {.final, pure.} = object

+    Msg*: UINT

+    FocusedWnd*: HWND

+    UnUsed*: WPARAM

+    Result*: LRESULT

+

+  TWMSetCursor* {.final, pure.} = object

+    Msg*: UINT

+    CursorWnd*: HWND

+    HitTest*: HALFPARAM

+    MouseMsg*: HALFPARAM

+    Result*: LRESULT

+

+  TWMSetFocus* {.final, pure.} = object

+    Msg*: UINT

+    FocusedWnd*: HWND

+    Unused*: WPARAM

+    Result*: LRESULT

+

+  TWMSetFont* {.final, pure.} = object

+    Msg*: UINT

+    Font*: HFONT

+    Redraw*: HALFPARAMBOOL

+    Unused*: HALFPARAM

+    Result*: LRESULT

+

+  TWMShowWindow* {.final, pure.} = object

+    Msg*: UINT

+    Show*: HALFPARAMBOOL

+    Unused*: HALFPARAM

+    Status*: WPARAM

+    Result*: LRESULT

+

+  TWMEraseBkgnd* {.final, pure.} = object

+    Msg*: UINT

+    DC*: HDC

+    Unused*: LPARAM

+    Result*: LRESULT

+

+  TWMNCHitTest* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int32

+    Pos*: TSmallPoint

+    Result*: LRESULT

+

+  TWMMouse* {.final, pure.} = object

+    Msg*: UINT

+    Keys*: int32

+    Pos*: TSmallPoint

+    Result*: LRESULT

+

+  TWMLButtonDblClk* = TWMMouse

+  TWMLButtonDown* = TWMMouse

+  TWMLButtonUp* = TWMMouse

+  TWMMButtonDblClk* = TWMMouse

+  TWMMButtonDown* = TWMMouse

+  TWMMButtonUp* = TWMMouse

+  TWMMouseWheel* {.final, pure.} = object

+    Msg*: UINT

+    Keys*: int16

+    WheelDelta*: int16

+    Pos*: TSmallPoint

+    Result*: LRESULT

+

+  TWMNCHitMessage* {.final, pure.} = object

+    Msg*: UINT

+    HitTest*: int32

+    XCursor*: int16

+    YCursor*: int16

+    Result*: LRESULT

+

+  TWMNCLButtonDblClk* = TWMNCHitMessage

+  TWMNCLButtonDown* = TWMNCHitMessage

+  TWMNCLButtonUp* = TWMNCHitMessage

+  TWMNCMButtonDblClk* = TWMNCHitMessage

+  TWMNCMButtonDown* = TWMNCHitMessage

+  TWMNCMButtonUp* = TWMNCHitMessage

+  TWMNCMouseMove* = TWMNCHitMessage

+  TWMRButtonDblClk* = TWMMouse

+  TWMRButtonDown* = TWMMouse

+  TWMRButtonUp* = TWMMouse

+  TWMMouseMove* = TWMMouse

+  TWMPaint* {.final, pure.} = object

+    Msg*: UINT

+    DC*: HDC

+    Unused*: int32

+    Result*: LRESULT

+

+  TWMCommand* {.final, pure.} = object

+    Msg*: UINT

+    ItemID*: int16

+    NotifyCode*: int16

+    Ctl*: HWND

+    Result*: LRESULT

+

+  TWMNotify* {.final, pure.} = object

+    Msg*: UINT

+    IDCtrl*: int32

+    NMHdr*: PNMHdr

+    Result*: LRESULT

+

+  TWMPrint* {.final, pure.} = object

+    Msg*: UINT

+    DC*: HDC

+    Flags*: int

+    Result*: LRESULT

+

+  TWMPrintClient* = TWMPrint

+  TWMWinIniChange* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    Section*: cstring

+    Result*: LRESULT

+

+  TWMContextMenu* {.final, pure.} = object

+    Msg*: UINT

+    hWnd*: HWND

+    Pos*: TSmallPoint

+    Result*: LRESULT

+

+  TWMNCCalcSize* {.final, pure.} = object

+    Msg*: UINT

+    CalcValidRects*: WINBOOL

+    CalcSize_Params*: PNCCalcSizeParams

+    Result*: LRESULT

+

+  TWMCharToItem* {.final, pure.} = object

+    Msg*: UINT

+    Key*: int16

+    CaretPos*: int16

+    ListBox*: HWND

+    Result*: LRESULT

+

+  TWMVKeyToItem* = TWMCharToItem

+  TMyEventRange = range[0'i16..16000'i16]

+  TWMParentNotify* {.final, pure.} = object

+    Msg*: UINT

+    case Event*: TMyEventRange

+    of TMyEventRange(WM_CREATE), TMyEventRange(WM_DESTROY):

+        ChildID*: int16

+        ChildWnd*: HWnd

+

+    of TMyEventRange(WM_LBUTTONDOWN),

+      TMyEventRange(WM_MBUTTONDOWN),

+      TMyEventRange(WM_RBUTTONDOWN):

+        Value*: int16

+        XPos*: int16

+        YPos*: int16

+

+    else:

+        Value1*: int16

+        Value2*: int32

+        Result*: LRESULT

+

+  TWMSysCommand* {.final, pure.} = object

+    Msg*: UINT

+    CmdType*: int32

+    XPos*: int16

+    YPos*: int16

+    Result*: LRESULT

+  #  case CmdType*: int32

+  #  of SC_HOTKEY:

+  #      ActivateWnd*: HWND

+  #  of SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE,

+  #     SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE,

+  #     SC_TASKLIST, SC_VSCROLL:

+  #      XPos*: int16

+  #      YPos*: int16

+  #      Result*: LRESULT

+  #  else: # of SC_KEYMENU:

+  #      Key*: int16

+

+  TWMMove* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    Pos*: TSmallPoint

+    Result*: LRESULT

+

+  TWMWindowPosMsg* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    WindowPos*: PWindowPos

+    Result*: LRESULT

+

+  TWMWindowPosChanged* = TWMWindowPosMsg

+  TWMWindowPosChanging* = TWMWindowPosMsg

+  TWMCompareItem* {.final, pure.} = object

+    Msg*: UINT

+    Ctl*: HWnd

+    CompareItemStruct*: PCompareItemStruct

+    Result*: LRESULT

+

+  TWMDeleteItem* {.final, pure.} = object

+    Msg*: UINT

+    Ctl*: HWND

+    DeleteItemStruct*: PDeleteItemStruct

+    Result*: LRESULT

+

+  TWMDrawItem* {.final, pure.} = object

+    Msg*: UINT

+    Ctl*: HWND

+    DrawItemStruct*: PDrawItemStruct

+    Result*: LRESULT

+

+  TWMMeasureItem* {.final, pure.} = object

+    Msg*: UINT

+    IDCtl*: HWnd

+    MeasureItemStruct*: PMeasureItemStruct

+    Result*: LRESULT

+

+  TWMNCCreate* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    CreateStruct*: PCreateStruct

+    Result*: LRESULT

+

+  TWMInitMenuPopup* {.final, pure.} = object

+    Msg*: UINT

+    MenuPopup*: HMENU

+    Pos*: int16

+    SystemMenu*: WordBool

+    Result*: LRESULT

+

+  TWMMenuSelect* {.final, pure.} = object

+    Msg*: UINT

+    IDItem*: int16

+    MenuFlag*: int16

+    Menu*: HMENU

+    Result*: LRESULT

+

+  TWMActivate* {.final, pure.} = object

+    Msg*: UINT

+    Active*: int16

+    Minimized*: WordBool

+    ActiveWindow*: HWND

+    Result*: LRESULT

+

+  TWMQueryEndSession* {.final, pure.} = object

+    Msg*: UINT

+    Source*: int32

+    Unused*: int32

+    Result*: LRESULT

+

+  TWMMDIActivate* {.final, pure.} = object

+    Msg*: UINT

+    DeactiveWnd*: HWND

+    ActiveWnd*: HWND

+    Result*: LRESULT

+

+  TWMNextDlgCtl* {.final, pure.} = object

+    Msg*: UINT

+    CtlFocus*: int32

+    Handle*: WordBool

+    Unused*: int16

+    Result*: LRESULT

+

+  TWMHelp* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    HelpInfo*: PHelpInfo

+    Result*: LRESULT

+

+  TWMGetMinMaxInfo* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    MinMaxInfo*: PMinMaxInfo

+    Result*: LRESULT

+

+  TWMSettingChange* {.final, pure.} = object

+    Msg*: UINT

+    Flag*: int

+    Section*: cstring

+    Result*: LRESULT

+

+  TWMCreate* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int

+    CreateStruct*: PCreateStruct

+    Result*: LRESULT

+

+  TWMCtlColor* {.final, pure.} = object

+    Msg*: UINT

+    ChildDC*: HDC

+    ChildWnd*: HWND

+    Result*: LRESULT

+

+  TWMCtlColorScrollbar* = TWMCtlColor

+  TWMCtlColorStatic* = TWMCtlColor

+  TWMCtlColorBtn* = TWMCtlColor

+  TWMCtlColorListbox* = TWMCtlColor

+  TWMCtlColorMsgbox* = TWMCtlColor

+  TWMCtlColorDlg* = TWMCtlColor

+  TWMCtlColorEdit* = TWMCtlColor

+  TWMInitDialog* {.final, pure.} = object

+    Msg*: UINT

+    Focus*: HWND

+    InitParam*: int32

+    Result*: LRESULT

+

+  TWMNCPaint* {.final, pure.} = object

+    Msg*: UINT

+    RGN*: HRGN

+    Unused*: int32

+    Result*: LRESULT

+

+  TWMSetText* {.final, pure.} = object

+    Msg*: UINT

+    Unused*: int32

+    Text*: cstring

+    Result*: LRESULT

+

+  TWMSizeClipboard* {.final, pure.} = object

+    Msg*: UINT

+    Viewer*: HWND

+    RC*: THandle

+    Result*: LRESULT

+

+  TWMSpoolerStatus* {.final, pure.} = object

+    Msg*: UINT

+    JobStatus*: LPARAM

+    JobsLeft*: WPARAM

+    Unused*: WPARAM

+    Result*: LRESULT

+

+  TWMStyleChange* {.final, pure.} = object

+    Msg*: UINT

+    StyleType*: LPARAM

+    StyleStruct*: PStyleStruct

+    Result*: LRESULT

+

+  TWMStyleChanged* = TWMStyleChange

+  TWMStyleChanging* = TWMStyleChange

+  TWMSysDeadChar* {.final, pure.} = object

+    Msg*: UINT

+    CharCode*: WPARAM

+    Unused*: WPARAM

+    KeyData*: LPARAM

+    Result*: LRESULT

+

+  TWMSystemError* {.final, pure.} = object

+    Msg*: UINT

+    ErrSpec*: WPARAM

+    Unused*: LPARAM

+    Result*: LRESULT

+

+  TWMTimeChange* = TWMNoParams

+  TWMTimer* {.final, pure.} = object

+    Msg*: UINT

+    TimerID*: LPARAM

+    TimerProc*: TFarProc

+    Result*: LRESULT

+

+  TWMUndo* = TWMNoParams

+  TWMVScrollClipboard* {.final, pure.} = object

+    Msg*: UINT

+    Viewer*: HWND

+    ScollCode*: WPARAM

+    ThumbPos*: WPARAM

+    Result*: LRESULT

+

+  TWMDisplayChange* {.final, pure.} = object

+    Msg*: UINT

+    BitsPerPixel*: int

+    Width*: WPARAM

+    Height*: WPARAM

+    Result*: LRESULT

+

+  TWMDropFiles* {.final, pure.} = object

+    Msg*: UINT

+    Drop*: THANDLE

+    Unused*: LPARAM

+    Result*: LRESULT

+

+  TWMEnable* {.final, pure.} = object

+    Msg*: int

+    Enabled*: WINBOOL

+    Unused*: int32

+    Result*: int32

+

+  TWMMouseActivate* {.final, pure.} = object

+    Msg*: int

+    TopLevel*: HWND

+    HitTestCode*: int16

+    MouseMsg*: int16

+    Result*: int32

+

+

+proc GetBinaryTypeA*(lpApplicationName: LPCSTR, lpBinaryType: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}

+

+proc GetShortPathNameA*(lpszLongPath: LPCSTR, lpszShortPath: LPSTR,

+                        cchBuffer: DWORD): DWORD{.stdcall,

+                        dynlib: "kernel32", importc.}

+proc GetEnvironmentStringsA*(): LPSTR{.stdcall, dynlib: "kernel32", importc.}

+proc FreeEnvironmentStringsA*(para1: LPSTR): WINBOOL{.stdcall, dynlib: "kernel32", importc.}

+proc FormatMessageA*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,

+                     dwLanguageId: DWORD, lpBuffer: LPSTR, nSize: DWORD,

+                     Arguments: va_list): DWORD{.stdcall,dynlib: "kernel32", importc.}

+proc CreateMailslotA*(lpName: LPCSTR, nMaxMessageSize: DWORD,

+                      lReadTimeout: DWORD,

+                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+    stdcall, dynlib: "kernel32", importc.}

+proc lstrcmpA*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall,

+  dynlib: "kernel32", importc.}

+proc lstrcmpiA*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall, dynlib: "kernel32", importc.}

+proc lstrcpynA*(lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32): LPSTR{.

+    stdcall, dynlib: "kernel32", importc.}

+proc CreateMutexA*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,

+                   bInitialOwner: WINBOOL, lpName: LPCSTR): HANDLE{.stdcall,

+                   dynlib: "kernel32", importc.}

+proc OpenMutexA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc.}

+proc CreateEventA*(lpEventAttributes: LPSECURITY_ATTRIBUTES,

+                   bManualReset: WINBOOL, bInitialState: WINBOOL, lpName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc.}

+proc OpenEventA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, lpName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc.}

+proc CreateSemaphoreA*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,

+                       lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc.}

+proc OpenSemaphoreA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                     lpName: LPCSTR): HANDLE{.stdcall,

+                     dynlib: "kernel32", importc.}

+proc CreateFileMappingA*(hFile: HANDLE,

+                         lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,

+                         flProtect: DWORD, dwMaximumSizeHigh: DWORD,

+                         dwMaximumSizeLow: DWORD, lpName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc.}

+proc OpenFileMappingA*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                       lpName: LPCSTR): HANDLE{.stdcall,

+                       dynlib: "kernel32", importc.}

+proc GetLogicalDriveStringsA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc.}

+proc LoadLibraryA*(lpLibFileName: LPCSTR): HINST{.stdcall,

+  dynlib: "kernel32", importc.}

+proc LoadLibraryExA*(lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.

+    stdcall, dynlib: "kernel32", importc.}

+proc GetModuleFileNameA*(hModule: HINST, lpFilename: LPSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc.}

+proc GetModuleHandleA*(lpModuleName: LPCSTR): HMODULE{.stdcall,

+     dynlib: "kernel32", importc.}

+proc FatalAppExitA*(uAction: UINT, lpMessageText: LPCSTR){.stdcall,

+     dynlib: "kernel32", importc.}

+proc GetCommandLineA*(): LPSTR{.stdcall, dynlib: "kernel32", importc.}

+proc GetEnvironmentVariableA*(lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc.}

+proc SetEnvironmentVariableA*(lpName: LPCSTR, lpValue: LPCSTR): WINBOOL{.stdcall,

+  dynlib: "kernel32", importc.}

+proc ExpandEnvironmentStringsA*(lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc.}

+proc OutputDebugStringA*(lpOutputString: LPCSTR){.stdcall,

+   dynlib: "kernel32", importc.}

+proc FindResourceA*(hModule: HINST, lpName: LPCSTR, lpType: LPCSTR): HRSRC{.

+    stdcall, dynlib: "kernel32", importc.}

+proc FindResourceExA*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,

+                      wLanguage: int16): HRSRC{.stdcall,

+                      dynlib: "kernel32", importc.}

+proc EnumResourceTypesA*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,

+                         lParam: LONG): WINBOOL{.stdcall,

+                         dynlib: "kernel32", importc.}

+proc EnumResourceNamesA*(hModule: HINST, lpType: LPCSTR,

+                         lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc.}

+proc EnumResourceLanguagesA*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,

+                             lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesA".}

+

+proc BeginUpdateResourceA*(pFileName: LPCSTR, bDeleteExistingResources: WINBOOL): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceA".}

+

+proc UpdateResourceA*(hUpdate: HANDLE, lpType: LPCSTR, lpName: LPCSTR,

+                      wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "UpdateResourceA".}

+proc EndUpdateResourceA*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "EndUpdateResourceA".}

+proc GlobalAddAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "GlobalAddAtomA".}

+proc GlobalFindAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "GlobalFindAtomA".}

+proc GlobalGetAtomNameA*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.

+    stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameA".}

+proc AddAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+                                        importc: "AddAtomA".}

+proc FindAtomA*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "FindAtomA".}

+proc GetAtomNameA*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetAtomNameA".}

+proc GetProfileIntA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: WINT): UINT{.

+    stdcall, dynlib: "kernel32", importc: "GetProfileIntA".}

+proc GetProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpDefault: LPCSTR,

+                        lpReturnedString: LPSTR, nSize: DWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetProfileStringA".}

+proc WriteProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR, lpString: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteProfileStringA".}

+proc GetProfileSectionA*(lpAppName: LPCSTR, lpReturnedString: LPSTR,

+                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetProfileSectionA".}

+proc WriteProfileSectionA*(lpAppName: LPCSTR, lpString: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteProfileSectionA".}

+proc GetPrivateProfileIntA*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                            nDefault: WINT, lpFileName: LPCSTR): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetPrivateProfileIntA".}

+proc GetPrivateProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                               lpDefault: LPCSTR, lpReturnedString: LPSTR,

+                               nSize: DWORD, lpFileName: LPCSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringA".}

+proc WritePrivateProfileStringA*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                                 lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringA".}

+proc GetPrivateProfileSectionA*(lpAppName: LPCSTR, lpReturnedString: LPSTR,

+                                nSize: DWORD, lpFileName: LPCSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionA".}

+proc WritePrivateProfileSectionA*(lpAppName: LPCSTR, lpString: LPCSTR,

+                                  lpFileName: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WritePrivateProfileSectionA".}

+proc GetDriveTypeA*(lpRootPathName: LPCSTR): UINT{.stdcall, dynlib: "kernel32",

+    importc: "GetDriveTypeA".}

+proc GetSystemDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetSystemDirectoryA".}

+proc GetTempPathA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetTempPathA".}

+proc GetTempFileNameA*(lpPathName: LPCSTR, lpPrefixString: LPCSTR,

+                       uUnique: UINT, lpTempFileName: LPSTR): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetTempFileNameA".}

+proc GetWindowsDirectoryA*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetWindowsDirectoryA".}

+proc SetCurrentDirectoryA*(lpPathName: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetCurrentDirectoryA".}

+proc GetCurrentDirectoryA*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryA".}

+proc GetDiskFreeSpaceA*(lpRootPathName: LPCSTR, lpSectorsPerCluster: LPDWORD,

+                        lpBytesPerSector: LPDWORD,

+                        lpNumberOfFreeClusters: LPDWORD,

+                        lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}

+proc CreateDirectoryA*(lpPathName: LPCSTR,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateDirectoryA".}

+proc CreateDirectoryExA*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR,

+                         lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateDirectoryExA".}

+proc RemoveDirectoryA*(lpPathName: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "RemoveDirectoryA".}

+proc GetFullPathNameA*(lpFileName: LPCSTR, nBufferLength: DWORD,

+                       lpBuffer: LPSTR, lpFilePart: var LPSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetFullPathNameA".}

+proc DefineDosDeviceA*(dwFlags: DWORD, lpDeviceName: LPCSTR,

+                       lpTargetPath: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "DefineDosDeviceA".}

+proc QueryDosDeviceA*(lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "QueryDosDeviceA".}

+proc CreateFileA*(lpFileName: LPCSTR, dwDesiredAccess: DWORD,

+                  dwShareMode: DWORD,

+                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                  dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,

+                  hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "CreateFileA".}

+proc SetFileAttributesA*(lpFileName: LPCSTR, dwFileAttributes: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetFileAttributesA".}

+proc GetFileAttributesA*(lpFileName: LPCSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetFileAttributesA".}

+proc GetCompressedFileSizeA*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeA".}

+proc DeleteFileA*(lpFileName: LPCSTR): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "DeleteFileA".}

+proc SearchPathA*(lpPath: LPCSTR, lpFileName: LPCSTR, lpExtension: LPCSTR,

+                  nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: LPSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "SearchPathA".}

+proc CopyFileA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,

+                bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CopyFileA".}

+proc MoveFileA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "MoveFileA".}

+proc MoveFileExA*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,

+                  dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "MoveFileExA".}

+proc CreateNamedPipeA*(lpName: LPCSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,

+                       nMaxInstances: DWORD, nOutBufferSize: DWORD,

+                       nInBufferSize: DWORD, nDefaultTimeOut: DWORD,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "CreateNamedPipeA".}

+proc GetNamedPipeHandleStateA*(hNamedPipe: HANDLE, lpState: LPDWORD,

+                               lpCurInstances: LPDWORD,

+                               lpMaxCollectionCount: LPDWORD,

+                               lpCollectDataTimeout: LPDWORD, lpUserName: LPSTR,

+                               nMaxUserNameSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetNamedPipeHandleStateA".}

+proc CallNamedPipeA*(lpNamedPipeName: LPCSTR, lpInBuffer: LPVOID,

+                     nInBufferSize: DWORD, lpOutBuffer: LPVOID,

+                     nOutBufferSize: DWORD, lpBytesRead: LPDWORD,

+                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CallNamedPipeA".}

+proc WaitNamedPipeA*(lpNamedPipeName: LPCSTR, nTimeOut: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WaitNamedPipeA".}

+proc SetVolumeLabelA*(lpRootPathName: LPCSTR, lpVolumeName: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetVolumeLabelA".}

+proc GetVolumeInformationA*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPSTR,

+                            nVolumeNameSize: DWORD,

+                            lpVolumeSerialNumber: LPDWORD,

+                            lpMaximumComponentLength: LPDWORD,

+                            lpFileSystemFlags: LPDWORD,

+                            lpFileSystemNameBuffer: LPSTR,

+                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVolumeInformationA".}

+proc ClearEventLogA*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ClearEventLogA".}

+proc BackupEventLogA*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "BackupEventLogA".}

+proc OpenEventLogA*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "OpenEventLogA".}

+proc RegisterEventSourceA*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "RegisterEventSourceA".}

+proc OpenBackupEventLogA*(lpUNCServerName: LPCSTR, lpFileName: LPCSTR): HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogA".}

+proc ReadEventLogA*(hEventLog: HANDLE, dwReadFlags: DWORD,

+                    dwRecordOffset: DWORD, lpBuffer: LPVOID,

+                    nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,

+                    pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ReadEventLogA".}

+proc ReportEventA*(hEventLog: HANDLE, wType: int16, wCategory: int16,

+                   dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,

+                   dwDataSize: DWORD, lpStrings: LPPCSTR, lpRawData: LPVOID): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ReportEventA".}

+proc AccessCheckAndAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                                ObjectTypeName: LPSTR, ObjectName: LPSTR,

+                                SecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                DesiredAccess: DWORD,

+                                GenericMapping: PGENERIC_MAPPING,

+                                ObjectCreation: WINBOOL, GrantedAccess: LPDWORD,

+                                AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmA".}

+proc ObjectOpenAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                            ObjectTypeName: LPSTR, ObjectName: LPSTR,

+                            pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                            ClientToken: HANDLE, DesiredAccess: DWORD,

+                            GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,

+                            ObjectCreation: WINBOOL, AccessGranted: WINBOOL,

+                            GenerateOnClose: LPBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}

+proc ObjectPrivilegeAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                                 ClientToken: HANDLE, DesiredAccess: DWORD,

+                                 Privileges: PPRIVILEGE_SET,

+                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}

+proc ObjectCloseAuditAlarmA*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                             GenerateOnClose: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectCloseAuditAlarmA".}

+proc PrivilegedServiceAuditAlarmA*(SubsystemName: LPCSTR, ServiceName: LPCSTR,

+                                   ClientToken: HANDLE,

+                                   Privileges: PPRIVILEGE_SET,

+                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}

+proc SetFileSecurityA*(lpFileName: LPCSTR,

+                       SecurityInformation: SECURITY_INFORMATION,

+                       pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetFileSecurityA".}

+proc GetFileSecurityA*(lpFileName: LPCSTR,

+                       RequestedInformation: SECURITY_INFORMATION,

+                       pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                       nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetFileSecurityA".}

+proc FindFirstChangeNotificationA*(lpPathName: LPCSTR, bWatchSubtree: WINBOOL,

+                                   dwNotifyFilter: DWORD): HANDLE{.stdcall,

+    dynlib: "kernel32", importc: "FindFirstChangeNotificationA".}

+proc IsBadStringPtrA*(lpsz: LPCSTR, ucchMax: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsBadStringPtrA".}

+proc LookupAccountSidA*(lpSystemName: LPCSTR, Sid: PSID, Name: LPSTR,

+                        cbName: LPDWORD, ReferencedDomainName: LPSTR,

+                        cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupAccountSidA".}

+proc LookupAccountNameA*(lpSystemName: LPCSTR, lpAccountName: LPCSTR, Sid: PSID,

+                         cbSid: LPDWORD, ReferencedDomainName: LPSTR,

+                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupAccountNameA".}

+proc LookupPrivilegeValueA*(lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueA".}

+proc LookupPrivilegeNameA*(lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR,

+                           cbName: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeNameA".}

+proc LookupPrivilegeDisplayNameA*(lpSystemName: LPCSTR, lpName: LPCSTR,

+                                  lpDisplayName: LPSTR, cbDisplayName: LPDWORD,

+                                  lpLanguageId: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}

+proc BuildCommDCBA*(lpDef: LPCSTR, lpDCB: LPDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "BuildCommDCBA".}

+proc BuildCommDCBAndTimeoutsA*(lpDef: LPCSTR, lpDCB: LPDCB,

+                               lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}

+proc CommConfigDialogA*(lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}

+proc GetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG,

+                            lpdwSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDefaultCommConfigA".}

+proc SetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigA".}

+proc GetComputerNameA*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetComputerNameA".}

+proc SetComputerNameA*(lpComputerName: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetComputerNameA".}

+proc GetUserNameA*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetUserNameA".}

+proc LoadKeyboardLayoutA*(pwszKLID: LPCSTR, Flags: UINT): HKL{.stdcall,

+    dynlib: "user32", importc: "LoadKeyboardLayoutA".}

+proc GetKeyboardLayoutNameA*(pwszKLID: LPSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetKeyboardLayoutNameA".}

+proc CreateDesktopA*(lpszDesktop: LPSTR, lpszDevice: LPSTR, pDevmode: LPDEVMODE,

+                     dwFlags: DWORD, dwDesiredAccess: DWORD,

+                     lpsa: LPSECURITY_ATTRIBUTES): HDESK{.stdcall,

+    dynlib: "user32", importc: "CreateDesktopA".}

+proc OpenDesktopA*(lpszDesktop: LPSTR, dwFlags: DWORD, fInherit: WINBOOL,

+                   dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",

+    importc: "OpenDesktopA".}

+proc EnumDesktopsA*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,

+                    lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "EnumDesktopsA".}

+proc CreateWindowStationA*(lpwinsta: LPSTR, dwReserved: DWORD,

+                           dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.

+    stdcall, dynlib: "user32", importc: "CreateWindowStationA".}

+proc OpenWindowStationA*(lpszWinSta: LPSTR, fInherit: WINBOOL,

+                         dwDesiredAccess: DWORD): HWINSTA{.stdcall,

+    dynlib: "user32", importc: "OpenWindowStationA".}

+proc EnumWindowStationsA*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnumWindowStationsA".}

+proc GetUserObjectInformationA*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}

+proc SetUserObjectInformationA*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                nLength: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetUserObjectInformationA".}

+proc RegisterWindowMessageA*(lpString: LPCSTR): UINT{.stdcall, dynlib: "user32",

+    importc: "RegisterWindowMessageA".}

+proc GetMessageA*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                  wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetMessageA".}

+proc DispatchMessageA*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",

+    importc: "DispatchMessageA".}

+proc PeekMessageA*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                   wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "PeekMessageA".}

+proc SendMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageA".}

+proc SendMessageTimeoutA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,

+                          fuFlags: UINT, uTimeout: UINT, lpdwResult: LPDWORD): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}

+proc SendNotifyMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SendNotifyMessageA".}

+proc SendMessageCallbackA*(hWnd: HWND, Msg: UINT, wParam: WPARAM,

+                           lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,

+                           dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SendMessageCallbackA".}

+proc PostMessageA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "PostMessageA".}

+proc PostThreadMessageA*(idThread: DWORD, Msg: UINT, wParam: WPARAM,

+                         lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "PostThreadMessageA".}

+proc DefWindowProcA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "DefWindowProcA".}

+proc CallWindowProcA*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,

+                      wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,

+    dynlib: "user32", importc: "CallWindowProcA".}

+proc RegisterClassA*(lpWndClass: LPWNDCLASS): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassA".}

+proc UnregisterClassA*(lpClassName: LPCSTR, hInstance: HINST): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "UnregisterClassA".}

+proc GetClassInfoA*(hInstance: HINST, lpClassName: LPCSTR,

+                    lpWndClass: LPWNDCLASS): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetClassInfoA".}

+proc RegisterClassExA*(para1: LPWNDCLASSEX): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassExA".}

+proc GetClassInfoExA*(para1: HINST, para2: LPCSTR, para3: LPWNDCLASSEX): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetClassInfoExA".}

+proc CreateWindowExA*(dwExStyle: DWORD, lpClassName: LPCSTR,

+                      lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32,

+                      nWidth: int32, nHeight: int32, hWndParent: HWND,

+                      hMenu: HMENU, hInstance: HINST, lpParam: LPVOID): HWND{.

+    stdcall, dynlib: "user32", importc: "CreateWindowExA".}

+proc CreateDialogParamA*(hInstance: HINST, lpTemplateName: LPCSTR,

+                         hWndParent: HWND, lpDialogFunc: DLGPROC,

+                         dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",

+    importc: "CreateDialogParamA".}

+proc CreateDialogIndirectParamA*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                                 hWndParent: HWND, lpDialogFunc: DLGPROC,

+                                 dwInitParam: LPARAM): HWND{.stdcall,

+    dynlib: "user32", importc: "CreateDialogIndirectParamA".}

+proc DialogBoxParamA*(hInstance: HINST, lpTemplateName: LPCSTR,

+                      hWndParent: HWND, lpDialogFunc: DLGPROC,

+                      dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",

+    importc: "DialogBoxParamA".}

+proc DialogBoxIndirectParamA*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,

+                              hWndParent: HWND, lpDialogFunc: DLGPROC,

+                              dwInitParam: LPARAM): int32{.stdcall,

+    dynlib: "user32", importc: "DialogBoxIndirectParamA".}

+proc SetDlgItemTextA*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetDlgItemTextA".}

+proc GetDlgItemTextA*(hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR,

+                      nMaxCount: int32): UINT{.stdcall, dynlib: "user32",

+    importc: "GetDlgItemTextA".}

+proc SendDlgItemMessageA*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,

+                          wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,

+    dynlib: "user32", importc: "SendDlgItemMessageA".}

+proc DefDlgProcA*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "DefDlgProcA".}

+proc CallMsgFilterA*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CallMsgFilterA".}

+proc RegisterClipboardFormatA*(lpszFormat: LPCSTR): UINT{.stdcall,

+    dynlib: "user32", importc: "RegisterClipboardFormatA".}

+proc GetClipboardFormatNameA*(format: UINT, lpszFormatName: LPSTR,

+                              cchMaxCount: int32): int32{.stdcall,

+    dynlib: "user32", importc: "GetClipboardFormatNameA".}

+proc CharToOemA*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CharToOemA".}

+proc OemToCharA*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "OemToCharA".}

+proc CharToOemBuffA*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "CharToOemBuffA".}

+proc OemToCharBuffA*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "OemToCharBuffA".}

+proc CharUpperA*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",

+                                      importc: "CharUpperA".}

+proc CharUpperBuffA*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "CharUpperBuffA".}

+proc CharLowerA*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",

+                                      importc: "CharLowerA".}

+proc CharLowerBuffA*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "CharLowerBuffA".}

+proc CharNextA*(lpsz: LPCSTR): LPSTR{.stdcall, dynlib: "user32",

+                                      importc: "CharNextA".}

+proc CharPrevA*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR{.stdcall,

+    dynlib: "user32", importc: "CharPrevA".}

+proc IsCharAlphaA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                       importc: "IsCharAlphaA".}

+proc IsCharAlphaNumericA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsCharAlphaNumericA".}

+proc IsCharUpperA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                       importc: "IsCharUpperA".}

+proc IsCharLowerA*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                       importc: "IsCharLowerA".}

+proc GetKeyNameTextA*(lParam: LONG, lpString: LPSTR, nSize: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetKeyNameTextA".}

+proc VkKeyScanA*(ch: CHAR): SHORT{.stdcall, dynlib: "user32",

+                                   importc: "VkKeyScanA".}

+proc VkKeyScanExA*(ch: CHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",

+    importc: "VkKeyScanExA".}

+proc MapVirtualKeyA*(uCode: UINT, uMapType: UINT): UINT{.stdcall,

+    dynlib: "user32", importc: "MapVirtualKeyA".}

+proc MapVirtualKeyExA*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,

+    dynlib: "user32", importc: "MapVirtualKeyExA".}

+proc LoadAcceleratorsA*(hInstance: HINST, lpTableName: LPCSTR): HACCEL{.stdcall,

+    dynlib: "user32", importc: "LoadAcceleratorsA".}

+proc CreateAcceleratorTableA*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,

+    dynlib: "user32", importc: "CreateAcceleratorTableA".}

+proc CopyAcceleratorTableA*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,

+                            cAccelEntries: int32): int32{.stdcall,

+    dynlib: "user32", importc: "CopyAcceleratorTableA".}

+proc TranslateAcceleratorA*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.

+    stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}

+proc LoadMenuA*(hInstance: HINST, lpMenuName: LPCSTR): HMENU{.stdcall,

+    dynlib: "user32", importc: "LoadMenuA".}

+proc LoadMenuIndirectA*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,

+    dynlib: "user32", importc: "LoadMenuIndirectA".}

+proc ChangeMenuA*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR, cmdInsert: UINT,

+                  flags: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ChangeMenuA".}

+proc GetMenuStringA*(hMenu: HMENU, uIDItem: UINT, lpString: LPSTR,

+                     nMaxCount: int32, uFlag: UINT): int32{.stdcall,

+    dynlib: "user32", importc: "GetMenuStringA".}

+proc InsertMenuA*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,

+                  lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "InsertMenuA".}

+proc AppendMenuA*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,

+                  lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "AppendMenuA".}

+proc ModifyMenuA*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,

+                  lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ModifyMenuA".}

+proc InsertMenuItemA*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                      para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "InsertMenuItemA".}

+proc GetMenuItemInfoA*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                       para4: LPMENUITEMINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetMenuItemInfoA".}

+proc SetMenuItemInfoA*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetMenuItemInfoA".}

+proc DrawTextA*(hDC: HDC, lpString: LPCSTR, nCount: int32, lpRect: LPRECT,

+                uFormat: UINT): int32{.stdcall, dynlib: "user32",

+                                       importc: "DrawTextA".}

+proc DrawTextExA*(para1: HDC, para2: LPSTR, para3: int32, para4: LPRECT,

+                  para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,

+    dynlib: "user32", importc: "DrawTextExA".}

+proc GrayStringA*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,

+                  lpData: LPARAM, nCount: int32, X: int32, Y: int32,

+                  nWidth: int32, nHeight: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GrayStringA".}

+proc DrawStateA*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC, para4: LPARAM,

+                 para5: WPARAM, para6: int32, para7: int32, para8: int32,

+                 para9: int32, para10: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DrawStateA".}

+proc TabbedTextOutA*(hDC: HDC, X: int32, Y: int32, lpString: LPCSTR,

+                     nCount: int32, nTabPositions: int32,

+                     lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.

+    stdcall, dynlib: "user32", importc: "TabbedTextOutA".}

+proc GetTabbedTextExtentA*(hDC: HDC, lpString: LPCSTR, nCount: int32,

+                           nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.

+    stdcall, dynlib: "user32", importc: "GetTabbedTextExtentA".}

+proc SetPropA*(hWnd: HWND, lpString: LPCSTR, hData: HANDLE): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetPropA".}

+proc GetPropA*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall, dynlib: "user32",

+    importc: "GetPropA".}

+proc RemovePropA*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall,

+    dynlib: "user32", importc: "RemovePropA".}

+proc EnumPropsExA*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.

+    stdcall, dynlib: "user32", importc: "EnumPropsExA".}

+proc EnumPropsA*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,

+    dynlib: "user32", importc: "EnumPropsA".}

+proc SetWindowTextA*(hWnd: HWND, lpString: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetWindowTextA".}

+proc GetWindowTextA*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetWindowTextA".}

+proc GetWindowTextLengthA*(hWnd: HWND): int32{.stdcall, dynlib: "user32",

+    importc: "GetWindowTextLengthA".}

+proc MessageBoxA*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32{.

+    stdcall, dynlib: "user32", importc: "MessageBoxA".}

+proc MessageBoxExA*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT,

+                    wLanguageId: int16): int32{.stdcall, dynlib: "user32",

+    importc: "MessageBoxExA".}

+proc MessageBoxIndirectA*(para1: LPMSGBOXPARAMS): int32{.stdcall,

+    dynlib: "user32", importc: "MessageBoxIndirectA".}

+proc GetWindowLongA*(hWnd: HWND, nIndex: int32): LONG{.stdcall,

+    dynlib: "user32", importc: "GetWindowLongA".}

+proc SetWindowLongA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.stdcall,

+    dynlib: "user32", importc: "SetWindowLongA".}

+proc GetClassLongA*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,

+    dynlib: "user32", importc: "GetClassLongA".}

+proc SetClassLongA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.stdcall,

+    dynlib: "user32", importc: "SetClassLongA".}

+when defined(cpu64):

+  proc GetWindowLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetWindowLongPtrA".}

+  proc SetWindowLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}

+  proc GetClassLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetClassLongPtrA".}

+  proc SetClassLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetClassLongPtrA".}

+else:

+  proc GetWindowLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetWindowLongA".}

+  proc SetWindowLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetWindowLongA".}

+  proc GetClassLongPtrA*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetClassLongA".}

+  proc SetClassLongPtrA*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetClassLongA".}

+proc FindWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND{.stdcall,

+    dynlib: "user32", importc: "FindWindowA".}

+proc FindWindowExA*(para1: HWND, para2: HWND, para3: LPCSTR, para4: LPCSTR): HWND{.

+    stdcall, dynlib: "user32", importc: "FindWindowExA".}

+proc GetClassNameA*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetClassNameA".}

+proc SetWindowsHookExA*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,

+                        dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",

+    importc: "SetWindowsHookExA".}

+proc LoadBitmapA*(hInstance: HINST, lpBitmapName: LPCSTR): HBITMAP{.stdcall,

+    dynlib: "user32", importc: "LoadBitmapA".}

+proc LoadCursorA*(hInstance: HINST, lpCursorName: LPCSTR): HCURSOR{.stdcall,

+    dynlib: "user32", importc: "LoadCursorA".}

+proc LoadCursorFromFileA*(lpFileName: LPCSTR): HCURSOR{.stdcall,

+    dynlib: "user32", importc: "LoadCursorFromFileA".}

+proc LoadIconA*(hInstance: HINST, lpIconName: LPCSTR): HICON{.stdcall,

+    dynlib: "user32", importc: "LoadIconA".}

+proc LoadImageA*(para1: HINST, para2: LPCSTR, para3: UINT, para4: int32,

+                 para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",

+    importc: "LoadImageA".}

+proc LoadStringA*(hInstance: HINST, uID: UINT, lpBuffer: LPSTR,

+                  nBufferMax: int32): int32{.stdcall, dynlib: "user32",

+    importc: "LoadStringA".}

+proc IsDialogMessageA*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "IsDialogMessageA".}

+proc DlgDirListA*(hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: int32,

+                  nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,

+    dynlib: "user32", importc: "DlgDirListA".}

+proc DlgDirSelectExA*(hDlg: HWND, lpString: LPSTR, nCount: int32,

+                      nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DlgDirSelectExA".}

+proc DlgDirListComboBoxA*(hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: int32,

+                          nIDStaticPath: int32, uFiletype: UINT): int32{.

+    stdcall, dynlib: "user32", importc: "DlgDirListComboBoxA".}

+proc DlgDirSelectComboBoxExA*(hDlg: HWND, lpString: LPSTR, nCount: int32,

+                              nIDComboBox: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DlgDirSelectComboBoxExA".}

+proc DefFrameProcA*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM,

+                    lParam: LPARAM): LRESULT{.stdcall, dynlib: "user32",

+    importc: "DefFrameProcA".}

+proc DefMDIChildProcA*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "DefMDIChildProcA".}

+proc CreateMDIWindowA*(lpClassName: LPSTR, lpWindowName: LPSTR, dwStyle: DWORD,

+                       X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                       hWndParent: HWND, hInstance: HINST, lParam: LPARAM): HWND{.

+    stdcall, dynlib: "user32", importc: "CreateMDIWindowA".}

+proc WinHelpA*(hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "WinHelpA".}

+proc ChangeDisplaySettingsA*(lpDevMode: LPDEVMODE, dwFlags: DWORD): LONG{.

+    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}

+proc EnumDisplaySettingsA*(lpszDeviceName: LPCSTR, iModeNum: DWORD,

+                           lpDevMode: LPDEVMODE): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EnumDisplaySettingsA".}

+proc SystemParametersInfoA*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,

+                            fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SystemParametersInfoA".}

+proc AddFontResourceA*(para1: LPCSTR): int32{.stdcall, dynlib: "gdi32",

+    importc: "AddFontResourceA".}

+proc CopyMetaFileA*(para1: HMETAFILE, para2: LPCSTR): HMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "CopyMetaFileA".}

+proc CreateFontA*(para1: int32, para2: int32, para3: int32, para4: int32,

+                  para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,

+                  para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,

+                  para13: DWORD, para14: LPCSTR): HFONT{.stdcall,

+    dynlib: "gdi32", importc: "CreateFontA".}

+proc CreateFontIndirectA*(para1: LPLOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+    importc: "CreateFontIndirectA".}

+proc CreateFontIndirectA*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+    importc: "CreateFontIndirectA".}

+proc CreateICA*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: LPDEVMODE): HDC{.

+    stdcall, dynlib: "gdi32", importc: "CreateICA".}

+proc CreateMetaFileA*(para1: LPCSTR): HDC{.stdcall, dynlib: "gdi32",

+    importc: "CreateMetaFileA".}

+proc CreateScalableFontResourceA*(para1: DWORD, para2: LPCSTR, para3: LPCSTR,

+                                  para4: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "CreateScalableFontResourceA".}

+proc EnumFontFamiliesExA*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,

+                          para4: LPARAM, para5: DWORD): int32{.stdcall,

+    dynlib: "gdi32", importc: "EnumFontFamiliesExA".}

+proc EnumFontFamiliesA*(para1: HDC, para2: LPCSTR, para3: FONTENUMPROC,

+                        para4: LPARAM): int32{.stdcall, dynlib: "gdi32",

+    importc: "EnumFontFamiliesA".}

+proc EnumFontsA*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC, para4: LPARAM): int32{.

+    stdcall, dynlib: "gdi32", importc: "EnumFontsA".}

+proc EnumFontsA*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC, para4: pointer): int32{.

+    stdcall, dynlib: "gdi32", importc: "EnumFontsA".}

+proc GetCharWidthA*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}

+proc GetCharWidth32A*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidth32A".}

+proc GetCharWidthFloatA*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}

+proc GetCharABCWidthsA*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}

+proc GetCharABCWidthsFloatA*(para1: HDC, para2: UINT, para3: UINT,

+                             para4: LPABCFLOAT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}

+proc GetGlyphOutlineA*(para1: HDC, para2: UINT, para3: UINT,

+                       para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,

+                       para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GetGlyphOutlineA".}

+proc GetMetaFileA*(para1: LPCSTR): HMETAFILE{.stdcall, dynlib: "gdi32",

+    importc: "GetMetaFileA".}

+proc GetOutlineTextMetricsA*(para1: HDC, para2: UINT, para3: LPOUTLINETEXTMETRIC): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsA".}

+proc GetTextExtentPointA*(para1: HDC, para2: LPCSTR, para3: int32, para4: LPSIZE): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}

+proc GetTextExtentPoint32A*(para1: HDC, para2: LPCSTR, para3: int32,

+                            para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentPoint32A".}

+proc GetTextExtentExPointA*(para1: HDC, para2: LPCSTR, para3: int32,

+                            para4: int32, para5: LPINT, para6: LPINT,

+                            para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentExPointA".}

+proc GetCharacterPlacementA*(para1: HDC, para2: LPCSTR, para3: int32,

+                             para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.

+    stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementA".}

+proc ResetDCA*(para1: HDC, para2: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",

+    importc: "ResetDCA".}

+proc RemoveFontResourceA*(para1: LPCSTR): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "RemoveFontResourceA".}

+proc CopyEnhMetaFileA*(para1: HENHMETAFILE, para2: LPCSTR): HENHMETAFILE{.

+    stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileA".}

+proc CreateEnhMetaFileA*(para1: HDC, para2: LPCSTR, para3: LPRECT, para4: LPCSTR): HDC{.

+    stdcall, dynlib: "gdi32", importc: "CreateEnhMetaFileA".}

+proc GetEnhMetaFileA*(para1: LPCSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",

+    importc: "GetEnhMetaFileA".}

+proc GetEnhMetaFileDescriptionA*(para1: HENHMETAFILE, para2: UINT, para3: LPSTR): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionA".}

+proc GetTextMetricsA*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetTextMetricsA".}

+proc StartDocA*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",

+    importc: "StartDocA".}

+proc GetObjectA*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,

+    dynlib: "gdi32", importc: "GetObjectA".}

+proc TextOutA*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,

+               para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+                                       importc: "TextOutA".}

+proc ExtTextOutA*(para1: HDC, para2: int32, para3: int32, para4: UINT,

+                  para5: LPRECT, para6: LPCSTR, para7: UINT, para8: LPINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}

+proc PolyTextOutA*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}

+proc GetTextFaceA*(para1: HDC, para2: int32, para3: LPSTR): int32{.stdcall,

+    dynlib: "gdi32", importc: "GetTextFaceA".}

+proc GetKerningPairsA*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.

+    stdcall, dynlib: "gdi32", importc: "GetKerningPairsA".}

+proc CreateColorSpaceA*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,

+    dynlib: "gdi32", importc: "CreateColorSpaceA".}

+proc GetLogColorSpaceA*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE, para3: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceA".}

+proc GetICMProfileA*(para1: HDC, para2: DWORD, para3: LPSTR): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetICMProfileA".}

+proc SetICMProfileA*(para1: HDC, para2: LPSTR): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SetICMProfileA".}

+proc UpdateICMRegKeyA*(para1: DWORD, para2: DWORD, para3: LPSTR, para4: UINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyA".}

+proc EnumICMProfilesA*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.

+    stdcall, dynlib: "gdi32", importc: "EnumICMProfilesA".}

+proc PropertySheetA*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,

+    dynlib: "comctl32", importc: "PropertySheetA".}

+proc ImageList_LoadImageA*(hi: HINST, lpbmp: LPCSTR, cx: int32, cGrow: int32,

+                           crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageA".}

+proc CreateStatusWindowA*(style: LONG, lpszText: LPCSTR, hwndParent: HWND,

+                          wID: UINT): HWND{.stdcall, dynlib: "comctl32",

+    importc: "CreateStatusWindowA".}

+proc DrawStatusTextA*(hDC: HDC, lprc: LPRECT, pszText: LPCSTR, uFlags: UINT){.

+    stdcall, dynlib: "comctl32", importc: "DrawStatusTextA".}

+proc GetOpenFileNameA*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+    dynlib: "comdlg32", importc: "GetOpenFileNameA".}

+proc GetSaveFileNameA*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+    dynlib: "comdlg32", importc: "GetSaveFileNameA".}

+proc GetFileTitleA*(para1: LPCSTR, para2: LPSTR, para3: int16): int{.stdcall,

+    dynlib: "comdlg32", importc: "GetFileTitleA".}

+proc ChooseColorA*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",

+    importc: "ChooseColorA".}

+proc FindTextA*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+    importc: "FindTextA".}

+proc ReplaceTextA*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+    importc: "ReplaceTextA".}

+proc ChooseFontA*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",

+    importc: "ChooseFontA".}

+proc PrintDlgA*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",

+    importc: "PrintDlgA".}

+proc PageSetupDlgA*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,

+    dynlib: "comdlg32", importc: "PageSetupDlgA".}

+proc CreateProcessA*(lpApplicationName: LPCSTR, lpCommandLine: LPSTR,

+                     lpProcessAttributes: LPSECURITY_ATTRIBUTES,

+                     lpThreadAttributes: LPSECURITY_ATTRIBUTES,

+                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                     lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR,

+                     lpStartupInfo: LPSTARTUPINFO,

+                     lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateProcessA".}

+proc GetStartupInfoA*(lpStartupInfo: LPSTARTUPINFO){.stdcall,

+    dynlib: "kernel32", importc: "GetStartupInfoA".}

+proc FindFirstFileA*(lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATA): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}

+proc FindNextFileA*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATA): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FindNextFileA".}

+proc GetVersionExA*(VersionInformation: LPOSVERSIONINFO): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVersionExA".}

+proc CreateWindowA*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,

+                    X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                    lpParam: LPVOID): HWND

+proc CreateDialogA*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                    lpDialogFunc: DLGPROC): HWND

+proc CreateDialogIndirectA*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND

+proc DialogBoxA*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                 lpDialogFunc: DLGPROC): int32

+proc DialogBoxIndirectA*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,

+                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32

+proc CreateDCA*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: pDEVMODE): HDC{.

+    stdcall, dynlib: "gdi32", importc: "CreateDCA".}

+proc VerInstallFileA*(uFlags: DWORD, szSrcFileName: LPSTR,

+                      szDestFileName: LPSTR, szSrcDir: LPSTR, szDestDir: LPSTR,

+                      szCurDir: LPSTR, szTmpFile: LPSTR, lpuTmpFileLen: PUINT): DWORD{.

+    stdcall, dynlib: "version", importc: "VerInstallFileA".}

+proc GetFileVersionInfoSizeA*(lptstrFilename: LPSTR, lpdwHandle: LPDWORD): DWORD{.

+    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}

+proc GetFileVersionInfoA*(lptstrFilename: LPSTR, dwHandle: DWORD, dwLen: DWORD,

+                          lpData: LPVOID): WINBOOL{.stdcall, dynlib: "version",

+    importc: "GetFileVersionInfoA".}

+proc VerLanguageNameA*(wLang: DWORD, szLang: LPSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "VerLanguageNameA".}

+proc VerQueryValueA*(pBlock: LPVOID, lpSubBlock: LPSTR, lplpBuffer: LPVOID,

+                     puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",

+    importc: "VerQueryValueA".}

+proc VerFindFileA*(uFlags: DWORD, szFileName: LPSTR, szWinDir: LPSTR,

+                   szAppDir: LPSTR, szCurDir: LPSTR, lpuCurDirLen: PUINT,

+                   szDestDir: LPSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,

+    dynlib: "version", importc: "VerFindFileA".}

+proc RegConnectRegistryA*(lpMachineName: LPSTR, hKey: HKEY, phkResult: PHKEY): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}

+proc RegCreateKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}

+proc RegCreateKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD,

+                      lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM,

+                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                      phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}

+proc RegDeleteKeyA*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegDeleteKeyA".}

+proc RegDeleteValueA*(hKey: HKEY, lpValueName: LPCSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegDeleteValueA".}

+proc RegEnumKeyA*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cbName: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyA".}

+proc RegEnumKeyExA*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR,

+                    lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR,

+                    lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}

+proc RegEnumValueA*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR,

+                    lpcbValueName: LPDWORD, lpReserved: LPDWORD,

+                    lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}

+proc RegLoadKeyA*(hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegLoadKeyA".}

+proc RegOpenKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}

+proc RegOpenKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD,

+                    samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegOpenKeyExA".}

+proc RegQueryInfoKeyA*(hKey: HKEY, lpClass: LPSTR, lpcbClass: LPDWORD,

+                       lpReserved: LPDWORD, lpcSubKeys: LPDWORD,

+                       lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,

+                       lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,

+                       lpcbMaxValueLen: LPDWORD,

+                       lpcbSecurityDescriptor: LPDWORD,

+                       lpftLastWriteTime: PFILETIME): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegQueryInfoKeyA".}

+proc RegQueryValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpValue: LPSTR,

+                     lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",

+    importc: "RegQueryValueA".}

+proc RegQueryMultipleValuesA*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,

+                              lpValueBuf: LPSTR, ldwTotsize: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}

+proc RegQueryValueExA*(hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD,

+                       lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryValueExA".}

+proc RegReplaceKeyA*(hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR,

+                     lpOldFile: LPCSTR): LONG{.stdcall, dynlib: "advapi32",

+    importc: "RegReplaceKeyA".}

+proc RegRestoreKeyA*(hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegRestoreKeyA".}

+proc RegSaveKeyA*(hKey: HKEY, lpFile: LPCSTR,

+                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegSaveKeyA".}

+proc RegSetValueA*(hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR,

+                   cbData: DWORD): LONG{.stdcall, dynlib: "advapi32",

+    importc: "RegSetValueA".}

+proc RegSetValueExA*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,

+                     dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}

+proc RegUnLoadKeyA*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegUnLoadKeyA".}

+proc InitiateSystemShutdownA*(lpMachineName: LPSTR, lpMessage: LPSTR,

+                              dwTimeout: DWORD, bForceAppsClosed: WINBOOL,

+                              bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "InitiateSystemShutdownA".}

+proc AbortSystemShutdownA*(lpMachineName: LPSTR): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AbortSystemShutdownA".}

+proc CompareStringA*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCSTR,

+                     cchCount1: int32, lpString2: LPCSTR, cchCount2: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "CompareStringA".}

+proc LCMapStringA*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR,

+                   cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "LCMapStringA".}

+proc GetLocaleInfoA*(Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR,

+                     cchData: int32): int32{.stdcall, dynlib: "kernel32",

+    importc: "GetLocaleInfoA".}

+proc SetLocaleInfoA*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetLocaleInfoA".}

+proc GetTimeFormatA*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,

+                     lpFormat: LPCSTR, lpTimeStr: LPSTR, cchTime: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "GetTimeFormatA".}

+proc GetDateFormatA*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,

+                     lpFormat: LPCSTR, lpDateStr: LPSTR, cchDate: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "GetDateFormatA".}

+proc GetNumberFormatA*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,

+                       lpFormat: PNUMBERFMT, lpNumberStr: LPSTR,

+                       cchNumber: int32): int32{.stdcall, dynlib: "kernel32",

+    importc: "GetNumberFormatA".}

+proc GetCurrencyFormatA*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,

+                         lpFormat: PCURRENCYFMT, lpCurrencyStr: LPSTR,

+                         cchCurrency: int32): int32{.stdcall,

+    dynlib: "kernel32", importc: "GetCurrencyFormatA".}

+proc EnumCalendarInfoA*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,

+                        Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "EnumCalendarInfoA".}

+proc EnumTimeFormatsA*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,

+                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "EnumTimeFormatsA".}

+proc EnumDateFormatsA*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,

+                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "EnumDateFormatsA".}

+proc GetStringTypeExA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,

+                       cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeExA".}

+proc GetStringTypeA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,

+                     cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeA".}

+proc FoldStringA*(dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32,

+                  lpDestStr: LPSTR, cchDest: int32): int32{.stdcall,

+    dynlib: "kernel32", importc: "FoldStringA".}

+proc EnumSystemLocalesA*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesA".}

+proc EnumSystemCodePagesA*(lpCodePageEnumProc: CODEPAGE_ENUMPROC, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesA".}

+proc PeekConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}

+proc ReadConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}

+proc WriteConsoleInputA*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                         nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}

+proc ReadConsoleOutputA*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                         dwBufferSize: COORD, dwBufferCoord: COORD,

+                         lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadConsoleOutputA".}

+proc WriteConsoleOutputA*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                          dwBufferSize: COORD, dwBufferCoord: COORD,

+                          lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteConsoleOutputA".}

+proc ReadConsoleOutputCharacterA*(hConsoleOutput: HANDLE, lpCharacter: LPSTR,

+                                  nLength: DWORD, dwReadCoord: COORD,

+                                  lpNumberOfCharsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}

+proc WriteConsoleOutputCharacterA*(hConsoleOutput: HANDLE, lpCharacter: LPCSTR,

+                                   nLength: DWORD, dwWriteCoord: COORD,

+                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}

+proc FillConsoleOutputCharacterA*(hConsoleOutput: HANDLE, cCharacter: CHAR,

+                                  nLength: DWORD, dwWriteCoord: COORD,

+                                  lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}

+proc ScrollConsoleScreenBufferA*(hConsoleOutput: HANDLE,

+                                 lpScrollRectangle: PSMALL_RECT,

+                                 lpClipRectangle: PSMALL_RECT,

+                                 dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}

+proc GetConsoleTitleA*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetConsoleTitleA".}

+proc SetConsoleTitleA*(lpConsoleTitle: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetConsoleTitleA".}

+proc ReadConsoleA*(hConsoleInput: HANDLE, lpBuffer: LPVOID,

+                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,

+                   lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ReadConsoleA".}

+proc WriteConsoleA*(hConsoleOutput: HANDLE, lpBuffer: pointer,

+                    nNumberOfCharsToWrite: DWORD,

+                    lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}

+proc WNetAddConnectionA*(lpRemoteName: LPCSTR, lpPassword: LPCSTR,

+                         lpLocalName: LPCSTR): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetAddConnectionA".}

+proc WNetAddConnection2A*(lpNetResource: LPNETRESOURCE, lpPassword: LPCSTR,

+                          lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetAddConnection2A".}

+proc WNetAddConnection3A*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                          lpPassword: LPCSTR, lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}

+proc WNetCancelConnectionA*(lpName: LPCSTR, fForce: WINBOOL): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetCancelConnectionA".}

+proc WNetCancelConnection2A*(lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetCancelConnection2A".}

+proc WNetGetConnectionA*(lpLocalName: LPCSTR, lpRemoteName: LPSTR,

+                         lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetConnectionA".}

+proc WNetUseConnectionA*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                         lpUserID: LPCSTR, lpPassword: LPCSTR, dwFlags: DWORD,

+                         lpAccessName: LPSTR, lpBufferSize: LPDWORD,

+                         lpResult: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetUseConnectionA".}

+proc WNetSetConnectionA*(lpName: LPCSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetSetConnectionA".}

+proc WNetConnectionDialog1A*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}

+proc WNetDisconnectDialog1A*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetDisconnectDialog1A".}

+proc WNetOpenEnumA*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,

+                    lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}

+proc WNetEnumResourceA*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,

+                        lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetEnumResourceA".}

+proc WNetGetUniversalNameA*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD,

+                            lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}

+proc WNetGetUserA*(lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUserA".}

+proc WNetGetProviderNameA*(dwNetType: DWORD, lpProviderName: LPSTR,

+                           lpBufferSize: LPDWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetGetProviderNameA".}

+proc WNetGetNetworkInformationA*(lpProvider: LPCSTR,

+                                 lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}

+proc WNetGetLastErrorA*(lpError: LPDWORD, lpErrorBuf: LPSTR,

+                        nErrorBufSize: DWORD, lpNameBuf: LPSTR,

+                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetLastErrorA".}

+proc MultinetGetConnectionPerformanceA*(lpNetResource: LPNETRESOURCE,

+    lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,

+    dynlib: "mpr", importc: "MultinetGetConnectionPerformanceA".}

+proc ChangeServiceConfigA*(hService: SC_HANDLE, dwServiceType: DWORD,

+                           dwStartType: DWORD, dwErrorControl: DWORD,

+                           lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR,

+                           lpdwTagId: LPDWORD, lpDependencies: LPCSTR,

+                           lpServiceStartName: LPCSTR, lpPassword: LPCSTR,

+                           lpDisplayName: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ChangeServiceConfigA".}

+proc CreateServiceA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,

+                     lpDisplayName: LPCSTR, dwDesiredAccess: DWORD,

+                     dwServiceType: DWORD, dwStartType: DWORD,

+                     dwErrorControl: DWORD, lpBinaryPathName: LPCSTR,

+                     lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD,

+                     lpDependencies: LPCSTR, lpServiceStartName: LPCSTR,

+                     lpPassword: LPCSTR): SC_HANDLE{.stdcall,

+    dynlib: "advapi32", importc: "CreateServiceA".}

+proc EnumDependentServicesA*(hService: SC_HANDLE, dwServiceState: DWORD,

+                             lpServices: LPENUM_SERVICE_STATUS,

+                             cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,

+                             lpServicesReturned: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "EnumDependentServicesA".}

+proc EnumServicesStatusA*(hSCManager: SC_HANDLE, dwServiceType: DWORD,

+                          dwServiceState: DWORD,

+                          lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,

+                          pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,

+                          lpResumeHandle: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "EnumServicesStatusA".}

+proc GetServiceKeyNameA*(hSCManager: SC_HANDLE, lpDisplayName: LPCSTR,

+                         lpServiceName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameA".}

+proc GetServiceDisplayNameA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,

+                             lpDisplayName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameA".}

+proc OpenSCManagerA*(lpMachineName: LPCSTR, lpDatabaseName: LPCSTR,

+                     dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+    dynlib: "advapi32", importc: "OpenSCManagerA".}

+proc OpenServiceA*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,

+                   dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+    dynlib: "advapi32", importc: "OpenServiceA".}

+proc QueryServiceConfigA*(hService: SC_HANDLE,

+                          lpServiceConfig: LPQUERY_SERVICE_CONFIG,

+                          cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "QueryServiceConfigA".}

+proc QueryServiceLockStatusA*(hSCManager: SC_HANDLE,

+                              lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,

+                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusA".}

+proc RegisterServiceCtrlHandlerA*(lpServiceName: LPCSTR,

+                                  lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerA".}

+proc StartServiceCtrlDispatcherA*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherA".}

+proc StartServiceA*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,

+                    lpServiceArgVectors: LPCSTR): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "StartServiceA".}

+proc DragQueryFileA*(para1: HDROP, para2: int, para3: cstring, para4: int): int{.

+    stdcall, dynlib: "shell32", importc: "DragQueryFileA".}

+proc ExtractAssociatedIconA*(para1: HINST, para2: cstring, para3: LPWORD): HICON{.

+    stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconA".}

+proc ExtractIconA*(para1: HINST, para2: cstring, para3: int): HICON{.stdcall,

+    dynlib: "shell32", importc: "ExtractIconA".}

+proc FindExecutableA*(para1: cstring, para2: cstring, para3: cstring): HINST{.

+    stdcall, dynlib: "shell32", importc: "FindExecutableA".}

+proc ShellAboutA*(para1: HWND, para2: cstring, para3: cstring, para4: HICON): int32{.

+    stdcall, dynlib: "shell32", importc: "ShellAboutA".}

+proc ShellExecuteA*(para1: HWND, para2: cstring, para3: cstring, para4: cstring,

+                    para5: cstring, para6: int32): HINST{.stdcall,

+    dynlib: "shell32", importc: "ShellExecuteA".}

+proc Shell_NotifyIconA*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.

+    stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}

+proc DdeCreateStringHandleA*(para1: DWORD, para2: cstring, para3: int32): HSZ{.

+    stdcall, dynlib: "user32", importc: "DdeCreateStringHandleA".}

+proc DdeInitializeA*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,

+                     para4: DWORD): UINT{.stdcall, dynlib: "user32",

+    importc: "DdeInitializeA".}

+proc DdeQueryStringA*(para1: DWORD, para2: HSZ, para3: cstring, para4: DWORD,

+                      para5: int32): DWORD{.stdcall, dynlib: "user32",

+    importc: "DdeQueryStringA".}

+proc LogonUserA*(para1: LPSTR, para2: LPSTR, para3: LPSTR, para4: DWORD,

+                 para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LogonUserA".}

+proc CreateProcessAsUserA*(para1: HANDLE, para2: LPCTSTR, para3: LPTSTR,

+                           para4: LPSECURITY_ATTRIBUTES,

+                           para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,

+                           para7: DWORD, para8: LPVOID, para9: LPCTSTR,

+                           para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserA".}

+proc GetBinaryTypeW*(lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}

+proc GetShortPathNameW*(lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR,

+                        cchBuffer: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetShortPathNameW".}

+proc GetEnvironmentStringsW*(): LPWSTR{.stdcall, dynlib: "kernel32",

+                                        importc: "GetEnvironmentStringsW".}

+proc FreeEnvironmentStringsW*(para1: LPWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}

+proc FormatMessageW*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,

+                     dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD,

+                     Arguments: va_list): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "FormatMessageW".}

+proc CreateMailslotW*(lpName: LPCWSTR, nMaxMessageSize: DWORD,

+                      lReadTimeout: DWORD,

+                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "CreateMailslotW".}

+proc lstrcmpW*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,

+    dynlib: "kernel32", importc: "lstrcmpW".}

+proc lstrcmpiW*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,

+    dynlib: "kernel32", importc: "lstrcmpiW".}

+proc lstrcpynW*(lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32): LPWSTR{.

+    stdcall, dynlib: "kernel32", importc: "lstrcpynW".}

+proc lstrcpyW*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,

+    dynlib: "kernel32", importc: "lstrcpyW".}

+proc lstrcatW*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,

+    dynlib: "kernel32", importc: "lstrcatW".}

+proc lstrlenW*(lpString: LPCWSTR): int32{.stdcall, dynlib: "kernel32",

+    importc: "lstrlenW".}

+proc CreateMutexW*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,

+                   bInitialOwner: WINBOOL, lpName: LPCWSTR): HANDLE{.stdcall,

+    dynlib: "kernel32", importc: "CreateMutexW".}

+proc OpenMutexW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                 lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "OpenMutexW".}

+proc CreateEventW*(lpEventAttributes: LPSECURITY_ATTRIBUTES,

+                   bManualReset: WINBOOL, bInitialState: WINBOOL,

+                   lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "CreateEventW".}

+proc OpenEventW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                 lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "OpenEventW".}

+proc CreateSemaphoreW*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,

+                       lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "CreateSemaphoreW".}

+proc OpenSemaphoreW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                     lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "OpenSemaphoreW".}

+proc CreateFileMappingW*(hFile: HANDLE,

+                         lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,

+                         flProtect: DWORD, dwMaximumSizeHigh: DWORD,

+                         dwMaximumSizeLow: DWORD, lpName: LPCWSTR): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "CreateFileMappingW".}

+proc OpenFileMappingW*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                       lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "OpenFileMappingW".}

+proc GetLogicalDriveStringsW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsW".}

+proc LoadLibraryW*(lpLibFileName: LPCWSTR): HINST{.stdcall, dynlib: "kernel32",

+    importc: "LoadLibraryW".}

+proc LoadLibraryExW*(lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.

+    stdcall, dynlib: "kernel32", importc: "LoadLibraryExW".}

+proc GetModuleFileNameW*(hModule: HINST, lpFilename: LPWSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetModuleFileNameW".}

+proc GetModuleHandleW*(lpModuleName: LPCWSTR): HMODULE{.stdcall,

+    dynlib: "kernel32", importc: "GetModuleHandleW".}

+proc FatalAppExitW*(uAction: UINT, lpMessageText: LPCWSTR){.stdcall,

+    dynlib: "kernel32", importc: "FatalAppExitW".}

+proc GetCommandLineW*(): LPWSTR{.stdcall, dynlib: "kernel32",

+                                 importc: "GetCommandLineW".}

+proc GetEnvironmentVariableW*(lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableW".}

+proc SetEnvironmentVariableW*(lpName: LPCWSTR, lpValue: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableW".}

+proc ExpandEnvironmentStringsW*(lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsW".}

+proc OutputDebugStringW*(lpOutputString: LPCWSTR){.stdcall, dynlib: "kernel32",

+    importc: "OutputDebugStringW".}

+proc FindResourceW*(hModule: HINST, lpName: LPCWSTR, lpType: LPCWSTR): HRSRC{.

+    stdcall, dynlib: "kernel32", importc: "FindResourceW".}

+proc FindResourceExW*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,

+                      wLanguage: int16): HRSRC{.stdcall, dynlib: "kernel32",

+    importc: "FindResourceExW".}

+proc EnumResourceTypesW*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,

+                         lParam: LONG): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "EnumResourceTypesW".}

+proc EnumResourceNamesW*(hModule: HINST, lpType: LPCWSTR,

+                         lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumResourceNamesW".}

+proc EnumResourceLanguagesW*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,

+                             lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesW".}

+proc BeginUpdateResourceW*(pFileName: LPCWSTR, bDeleteExistingResources: WINBOOL): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceW".}

+proc UpdateResourceW*(hUpdate: HANDLE, lpType: LPCWSTR, lpName: LPCWSTR,

+                      wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "UpdateResourceW".}

+proc EndUpdateResourceW*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "EndUpdateResourceW".}

+proc GlobalAddAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "GlobalAddAtomW".}

+proc GlobalFindAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "GlobalFindAtomW".}

+proc GlobalGetAtomNameW*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.

+    stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameW".}

+proc AddAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "AddAtomW".}

+proc FindAtomW*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "FindAtomW".}

+proc GetAtomNameW*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetAtomNameW".}

+proc GetProfileIntW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: WINT): UINT{.

+    stdcall, dynlib: "kernel32", importc: "GetProfileIntW".}

+proc GetProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                        lpDefault: LPCWSTR, lpReturnedString: LPWSTR,

+                        nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetProfileStringW".}

+proc WriteProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                          lpString: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteProfileStringW".}

+proc GetProfileSectionW*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,

+                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetProfileSectionW".}

+proc WriteProfileSectionW*(lpAppName: LPCWSTR, lpString: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteProfileSectionW".}

+proc GetPrivateProfileIntW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                            nDefault: WINT, lpFileName: LPCWSTR): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetPrivateProfileIntW".}

+proc GetPrivateProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                               lpDefault: LPCWSTR, lpReturnedString: LPWSTR,

+                               nSize: DWORD, lpFileName: LPCWSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringW".}

+proc WritePrivateProfileStringW*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                                 lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringW".}

+proc GetPrivateProfileSectionW*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,

+                                nSize: DWORD, lpFileName: LPCWSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionW".}

+proc WritePrivateProfileSectionW*(lpAppName: LPCWSTR, lpString: LPCWSTR,

+                                  lpFileName: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WritePrivateProfileSectionW".}

+proc GetDriveTypeW*(lpRootPathName: LPCWSTR): UINT{.stdcall, dynlib: "kernel32",

+    importc: "GetDriveTypeW".}

+proc GetSystemDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetSystemDirectoryW".}

+proc GetTempPathW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetTempPathW".}

+proc GetTempFileNameW*(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR,

+                       uUnique: UINT, lpTempFileName: LPWSTR): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetTempFileNameW".}

+proc GetWindowsDirectoryW*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "GetWindowsDirectoryW".}

+proc SetCurrentDirectoryW*(lpPathName: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetCurrentDirectoryW".}

+proc GetCurrentDirectoryW*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryW".}

+proc GetDiskFreeSpaceW*(lpRootPathName: LPCWSTR, lpSectorsPerCluster: LPDWORD,

+                        lpBytesPerSector: LPDWORD,

+                        lpNumberOfFreeClusters: LPDWORD,

+                        lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}

+proc CreateDirectoryW*(lpPathName: LPCWSTR,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateDirectoryW".}

+proc CreateDirectoryExW*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR,

+                         lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateDirectoryExW".}

+proc RemoveDirectoryW*(lpPathName: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "RemoveDirectoryW".}

+proc GetFullPathNameW*(lpFileName: LPCWSTR, nBufferLength: DWORD,

+                       lpBuffer: LPWSTR, lpFilePart: var LPWSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}

+proc DefineDosDeviceW*(dwFlags: DWORD, lpDeviceName: LPCWSTR,

+                       lpTargetPath: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "DefineDosDeviceW".}

+proc QueryDosDeviceW*(lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR,

+                      ucchMax: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "QueryDosDeviceW".}

+proc CreateFileW*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD,

+                  dwShareMode: DWORD,

+                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                  dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,

+                  hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "CreateFileW".}

+proc SetFileAttributesW*(lpFileName: LPCWSTR, dwFileAttributes: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}

+proc GetFileAttributesW*(lpFileName: LPCWSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetFileAttributesW".}

+proc GetCompressedFileSizeW*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeW".}

+proc DeleteFileW*(lpFileName: LPCWSTR): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "DeleteFileW".}

+proc SearchPathW*(lpPath: LPCWSTR, lpFileName: LPCWSTR, lpExtension: LPCWSTR,

+                  nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: LPWSTR): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "SearchPathW".}

+proc CopyFileW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,

+                bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CopyFileW".}

+proc MoveFileW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "MoveFileW".}

+proc MoveFileExW*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,

+                  dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "MoveFileExW".}

+proc CreateNamedPipeW*(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,

+                       nMaxInstances: DWORD, nOutBufferSize: DWORD,

+                       nInBufferSize: DWORD, nDefaultTimeOut: DWORD,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}

+proc GetNamedPipeHandleStateW*(hNamedPipe: HANDLE, lpState: LPDWORD,

+                               lpCurInstances: LPDWORD,

+                               lpMaxCollectionCount: LPDWORD,

+                               lpCollectDataTimeout: LPDWORD,

+                               lpUserName: LPWSTR, nMaxUserNameSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateW".}

+proc CallNamedPipeW*(lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID,

+                     nInBufferSize: DWORD, lpOutBuffer: LPVOID,

+                     nOutBufferSize: DWORD, lpBytesRead: LPDWORD,

+                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CallNamedPipeW".}

+proc WaitNamedPipeW*(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WaitNamedPipeW".}

+proc SetVolumeLabelW*(lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetVolumeLabelW".}

+proc GetVolumeInformationW*(lpRootPathName: LPCWSTR, lpVolumeNameBuffer: LPWSTR,

+                            nVolumeNameSize: DWORD,

+                            lpVolumeSerialNumber: LPDWORD,

+                            lpMaximumComponentLength: LPDWORD,

+                            lpFileSystemFlags: LPDWORD,

+                            lpFileSystemNameBuffer: LPWSTR,

+                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVolumeInformationW".}

+proc ClearEventLogW*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ClearEventLogW".}

+proc BackupEventLogW*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "BackupEventLogW".}

+proc OpenEventLogW*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "OpenEventLogW".}

+proc RegisterEventSourceW*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "RegisterEventSourceW".}

+proc OpenBackupEventLogW*(lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR): HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogW".}

+proc ReadEventLogW*(hEventLog: HANDLE, dwReadFlags: DWORD,

+                    dwRecordOffset: DWORD, lpBuffer: LPVOID,

+                    nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,

+                    pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ReadEventLogW".}

+proc ReportEventW*(hEventLog: HANDLE, wType: int16, wCategory: int16,

+                   dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,

+                   dwDataSize: DWORD, lpStrings: LPPCWSTR, lpRawData: LPVOID): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ReportEventW".}

+proc AccessCheckAndAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                                ObjectTypeName: LPWSTR, ObjectName: LPWSTR,

+                                SecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                DesiredAccess: DWORD,

+                                GenericMapping: PGENERIC_MAPPING,

+                                ObjectCreation: WINBOOL, GrantedAccess: LPDWORD,

+                                AccessStatus: LPBOOL, pfGenerateOnClose: LPBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmW".}

+proc ObjectOpenAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                            ObjectTypeName: LPWSTR, ObjectName: LPWSTR,

+                            pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                            ClientToken: HANDLE, DesiredAccess: DWORD,

+                            GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,

+                            ObjectCreation: WINBOOL, AccessGranted: WINBOOL,

+                            GenerateOnClose: LPBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}

+proc ObjectPrivilegeAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                                 ClientToken: HANDLE, DesiredAccess: DWORD,

+                                 Privileges: PPRIVILEGE_SET,

+                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}

+proc ObjectCloseAuditAlarmW*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                             GenerateOnClose: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectCloseAuditAlarmW".}

+proc PrivilegedServiceAuditAlarmW*(SubsystemName: LPCWSTR, ServiceName: LPCWSTR,

+                                   ClientToken: HANDLE,

+                                   Privileges: PPRIVILEGE_SET,

+                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}

+proc SetFileSecurityW*(lpFileName: LPCWSTR,

+                       SecurityInformation: SECURITY_INFORMATION,

+                       pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetFileSecurityW".}

+proc GetFileSecurityW*(lpFileName: LPCWSTR,

+                       RequestedInformation: SECURITY_INFORMATION,

+                       pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                       nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetFileSecurityW".}

+proc FindFirstChangeNotificationW*(lpPathName: LPCWSTR, bWatchSubtree: WINBOOL,

+                                   dwNotifyFilter: DWORD): HANDLE{.stdcall,

+    dynlib: "kernel32", importc: "FindFirstChangeNotificationW".}

+proc IsBadStringPtrW*(lpsz: LPCWSTR, ucchMax: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsBadStringPtrW".}

+proc LookupAccountSidW*(lpSystemName: LPCWSTR, Sid: PSID, Name: LPWSTR,

+                        cbName: LPDWORD, ReferencedDomainName: LPWSTR,

+                        cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupAccountSidW".}

+proc LookupAccountNameW*(lpSystemName: LPCWSTR, lpAccountName: LPCWSTR,

+                         Sid: PSID, cbSid: LPDWORD,

+                         ReferencedDomainName: LPWSTR,

+                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupAccountNameW".}

+proc LookupPrivilegeValueW*(lpSystemName: LPCWSTR, lpName: LPCWSTR,

+                            lpLuid: PLUID): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeValueW".}

+proc LookupPrivilegeNameW*(lpSystemName: LPCWSTR, lpLuid: PLUID, lpName: LPWSTR,

+                           cbName: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeNameW".}

+proc LookupPrivilegeDisplayNameW*(lpSystemName: LPCWSTR, lpName: LPCWSTR,

+                                  lpDisplayName: LPWSTR, cbDisplayName: LPDWORD,

+                                  lpLanguageId: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}

+proc BuildCommDCBW*(lpDef: LPCWSTR, lpDCB: LPDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "BuildCommDCBW".}

+proc BuildCommDCBAndTimeoutsW*(lpDef: LPCWSTR, lpDCB: LPDCB,

+                               lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}

+proc CommConfigDialogW*(lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}

+proc GetDefaultCommConfigW*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG,

+                            lpdwSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDefaultCommConfigW".}

+proc SetDefaultCommConfigW*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigW".}

+proc GetComputerNameW*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetComputerNameW".}

+proc SetComputerNameW*(lpComputerName: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetComputerNameW".}

+proc GetUserNameW*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetUserNameW".}

+proc LoadKeyboardLayoutW*(pwszKLID: LPCWSTR, Flags: UINT): HKL{.stdcall,

+    dynlib: "user32", importc: "LoadKeyboardLayoutW".}

+proc GetKeyboardLayoutNameW*(pwszKLID: LPWSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetKeyboardLayoutNameW".}

+proc CreateDesktopW*(lpszDesktop: LPWSTR, lpszDevice: LPWSTR,

+                     pDevmodew: LPDEVMODEw, dwFlags: DWORD,

+                     dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HDESK{.

+    stdcall, dynlib: "user32", importc: "CreateDesktopW".}

+proc OpenDesktopW*(lpszDesktop: LPWSTR, dwFlags: DWORD, fInherit: WINBOOL,

+                   dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",

+    importc: "OpenDesktopW".}

+proc EnumDesktopsW*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,

+                    lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "EnumDesktopsW".}

+proc CreateWindowStationW*(lpwinsta: LPWSTR, dwReserved: DWORD,

+                           dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.

+    stdcall, dynlib: "user32", importc: "CreateWindowStationW".}

+proc OpenWindowStationW*(lpszWinSta: LPWSTR, fInherit: WINBOOL,

+                         dwDesiredAccess: DWORD): HWINSTA{.stdcall,

+    dynlib: "user32", importc: "OpenWindowStationW".}

+proc EnumWindowStationsW*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnumWindowStationsW".}

+proc GetUserObjectInformationW*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}

+proc SetUserObjectInformationW*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                nLength: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetUserObjectInformationW".}

+proc RegisterWindowMessageW*(lpString: LPCWSTR): UINT{.stdcall,

+    dynlib: "user32", importc: "RegisterWindowMessageW".}

+proc GetMessageW*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                  wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetMessageW".}

+proc DispatchMessageW*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",

+    importc: "DispatchMessageW".}

+proc PeekMessageW*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                   wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "PeekMessageW".}

+proc SendMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageW".}

+proc SendMessageTimeoutW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,

+                          fuFlags: UINT, uTimeout: UINT, lpdwResult: LPDWORD): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageTimeoutW".}

+proc SendNotifyMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SendNotifyMessageW".}

+proc SendMessageCallbackW*(hWnd: HWND, Msg: UINT, wParam: WPARAM,

+                           lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,

+                           dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SendMessageCallbackW".}

+proc PostMessageW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "PostMessageW".}

+proc PostThreadMessageW*(idThread: DWORD, Msg: UINT, wParam: WPARAM,

+                         lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "PostThreadMessageW".}

+proc DefWindowProcW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "DefWindowProcW".}

+proc CallWindowProcW*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,

+                      wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,

+    dynlib: "user32", importc: "CallWindowProcW".}

+proc RegisterClassW*(lpWndClass: LPWNDCLASSW): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassW".}

+proc UnregisterClassW*(lpClassName: LPCWSTR, hInstance: HINST): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "UnregisterClassW".}

+proc GetClassInfoW*(hInstance: HINST, lpClassName: LPCWSTR,

+                    lpWndClass: LPWNDCLASS): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetClassInfoW".}

+proc RegisterClassExW*(para1: LPWNDCLASSEXW): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassExW".}

+proc GetClassInfoExW*(para1: HINST, para2: LPCWSTR, para3: LPWNDCLASSEX): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetClassInfoExW".}

+proc CreateWindowExW*(dwExStyle: DWORD, lpClassName: LPCWSTR,

+                      lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32, Y: int32,

+                      nWidth: int32, nHeight: int32, hWndParent: HWND,

+                      hMenu: HMENU, hInstance: HINST, lpParam: LPVOID): HWND{.

+    stdcall, dynlib: "user32", importc: "CreateWindowExW".}

+proc CreateDialogParamW*(hInstance: HINST, lpTemplateName: LPCWSTR,

+                         hWndParent: HWND, lpDialogFunc: DLGPROC,

+                         dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",

+    importc: "CreateDialogParamW".}

+proc CreateDialogIndirectParamW*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                                 hWndParent: HWND, lpDialogFunc: DLGPROC,

+                                 dwInitParam: LPARAM): HWND{.stdcall,

+    dynlib: "user32", importc: "CreateDialogIndirectParamW".}

+proc DialogBoxParamW*(hInstance: HINST, lpTemplateName: LPCWSTR,

+                      hWndParent: HWND, lpDialogFunc: DLGPROC,

+                      dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",

+    importc: "DialogBoxParamW".}

+proc DialogBoxIndirectParamW*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,

+                              hWndParent: HWND, lpDialogFunc: DLGPROC,

+                              dwInitParam: LPARAM): int32{.stdcall,

+    dynlib: "user32", importc: "DialogBoxIndirectParamW".}

+proc SetDlgItemTextW*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetDlgItemTextW".}

+proc GetDlgItemTextW*(hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR,

+                      nMaxCount: int32): UINT{.stdcall, dynlib: "user32",

+    importc: "GetDlgItemTextW".}

+proc SendDlgItemMessageW*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,

+                          wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,

+    dynlib: "user32", importc: "SendDlgItemMessageW".}

+proc DefDlgProcW*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "DefDlgProcW".}

+proc CallMsgFilterW*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CallMsgFilterW".}

+proc RegisterClipboardFormatW*(lpszFormat: LPCWSTR): UINT{.stdcall,

+    dynlib: "user32", importc: "RegisterClipboardFormatW".}

+proc GetClipboardFormatNameW*(format: UINT, lpszFormatName: LPWSTR,

+                              cchMaxCount: int32): int32{.stdcall,

+    dynlib: "user32", importc: "GetClipboardFormatNameW".}

+proc CharToOemW*(lpszSrc: LPCWSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CharToOemW".}

+proc OemToCharW*(lpszSrc: LPCSTR, lpszDst: LPWSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "OemToCharW".}

+proc CharToOemBuffW*(lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "CharToOemBuffW".}

+proc OemToCharBuffW*(lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "OemToCharBuffW".}

+proc CharUpperW*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",

+                                        importc: "CharUpperW".}

+proc CharUpperBuffW*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "CharUpperBuffW".}

+proc CharLowerW*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",

+                                        importc: "CharLowerW".}

+proc CharLowerBuffW*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "CharLowerBuffW".}

+proc CharNextW*(lpsz: LPCWSTR): LPWSTR{.stdcall, dynlib: "user32",

+                                        importc: "CharNextW".}

+proc CharPrevW*(lpszStart: LPCWSTR, lpszCurrent: LPCWSTR): LPWSTR{.stdcall,

+    dynlib: "user32", importc: "CharPrevW".}

+proc IsCharAlphaW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "IsCharAlphaW".}

+proc IsCharAlphaNumericW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsCharAlphaNumericW".}

+proc IsCharUpperW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "IsCharUpperW".}

+proc IsCharLowerW*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "IsCharLowerW".}

+proc GetKeyNameTextW*(lParam: LONG, lpString: LPWSTR, nSize: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetKeyNameTextW".}

+proc VkKeyScanW*(ch: WCHAR): SHORT{.stdcall, dynlib: "user32",

+                                    importc: "VkKeyScanW".}

+proc VkKeyScanExW*(ch: WCHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",

+    importc: "VkKeyScanExW".}

+proc MapVirtualKeyW*(uCode: UINT, uMapType: UINT): UINT{.stdcall,

+    dynlib: "user32", importc: "MapVirtualKeyW".}

+proc MapVirtualKeyExW*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,

+    dynlib: "user32", importc: "MapVirtualKeyExW".}

+proc LoadAcceleratorsW*(hInstance: HINST, lpTableName: LPCWSTR): HACCEL{.

+    stdcall, dynlib: "user32", importc: "LoadAcceleratorsW".}

+proc CreateAcceleratorTableW*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,

+    dynlib: "user32", importc: "CreateAcceleratorTableW".}

+proc CopyAcceleratorTableW*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,

+                            cAccelEntries: int32): int32{.stdcall,

+    dynlib: "user32", importc: "CopyAcceleratorTableW".}

+proc TranslateAcceleratorW*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.

+    stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}

+proc LoadMenuW*(hInstance: HINST, lpMenuName: LPCWSTR): HMENU{.stdcall,

+    dynlib: "user32", importc: "LoadMenuW".}

+proc LoadMenuIndirectW*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,

+    dynlib: "user32", importc: "LoadMenuIndirectW".}

+proc ChangeMenuW*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR,

+                  cmdInsert: UINT, flags: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ChangeMenuW".}

+proc GetMenuStringW*(hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR,

+                     nMaxCount: int32, uFlag: UINT): int32{.stdcall,

+    dynlib: "user32", importc: "GetMenuStringW".}

+proc InsertMenuW*(hMenu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,

+                  lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "InsertMenuW".}

+proc AppendMenuW*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,

+                  lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "AppendMenuW".}

+proc ModifyMenuW*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,

+                  lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ModifyMenuW".}

+proc InsertMenuItemW*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                      para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "InsertMenuItemW".}

+proc GetMenuItemInfoW*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                       para4: LPMENUITEMINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetMenuItemInfoW".}

+proc SetMenuItemInfoW*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetMenuItemInfoW".}

+proc DrawTextW*(hDC: HDC, lpString: LPCWSTR, nCount: int32, lpRect: LPRECT,

+                uFormat: UINT): int32{.stdcall, dynlib: "user32",

+                                       importc: "DrawTextW".}

+proc DrawTextExW*(para1: HDC, para2: LPWSTR, para3: int32, para4: LPRECT,

+                  para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,

+    dynlib: "user32", importc: "DrawTextExW".}

+proc GrayStringW*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,

+                  lpData: LPARAM, nCount: int32, X: int32, Y: int32,

+                  nWidth: int32, nHeight: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GrayStringW".}

+proc DrawStateW*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC, para4: LPARAM,

+                 para5: WPARAM, para6: int32, para7: int32, para8: int32,

+                 para9: int32, para10: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DrawStateW".}

+proc TabbedTextOutW*(hDC: HDC, X: int32, Y: int32, lpString: LPCWSTR,

+                     nCount: int32, nTabPositions: int32,

+                     lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.

+    stdcall, dynlib: "user32", importc: "TabbedTextOutW".}

+proc GetTabbedTextExtentW*(hDC: HDC, lpString: LPCWSTR, nCount: int32,

+                           nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.

+    stdcall, dynlib: "user32", importc: "GetTabbedTextExtentW".}

+proc SetPropW*(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetPropW".}

+proc GetPropW*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,

+    dynlib: "user32", importc: "GetPropW".}

+proc RemovePropW*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,

+    dynlib: "user32", importc: "RemovePropW".}

+proc EnumPropsExW*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.

+    stdcall, dynlib: "user32", importc: "EnumPropsExW".}

+proc EnumPropsW*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,

+    dynlib: "user32", importc: "EnumPropsW".}

+proc SetWindowTextW*(hWnd: HWND, lpString: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetWindowTextW".}

+proc GetWindowTextW*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetWindowTextW".}

+proc GetWindowTextLengthW*(hWnd: HWND): int32{.stdcall, dynlib: "user32",

+    importc: "GetWindowTextLengthW".}

+proc MessageBoxW*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32{.

+    stdcall, dynlib: "user32", importc: "MessageBoxW".}

+proc MessageBoxExW*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR,

+                    uType: UINT, wLanguageId: int16): int32{.stdcall,

+    dynlib: "user32", importc: "MessageBoxExW".}

+proc MessageBoxIndirectW*(para1: LPMSGBOXPARAMS): int32{.stdcall,

+    dynlib: "user32", importc: "MessageBoxIndirectW".}

+proc GetWindowLongW*(hWnd: HWND, nIndex: int32): LONG{.stdcall,

+    dynlib: "user32", importc: "GetWindowLongW".}

+proc SetWindowLongW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.stdcall,

+    dynlib: "user32", importc: "SetWindowLongW".}

+proc GetClassLongW*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,

+    dynlib: "user32", importc: "GetClassLongW".}

+proc SetClassLongW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.stdcall,

+    dynlib: "user32", importc: "SetClassLongW".}

+when defined(cpu64):

+  proc GetWindowLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetWindowLongPtrW".}

+  proc SetWindowLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}

+  proc GetClassLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetClassLongPtrW".}

+  proc SetClassLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetClassLongPtrW".}

+else:

+  proc GetWindowLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetWindowLongW".}

+  proc SetWindowLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetWindowLongW".}

+  proc GetClassLongPtrW*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+      dynlib: "user32", importc: "GetClassLongW".}

+  proc SetClassLongPtrW*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+      stdcall, dynlib: "user32", importc: "SetClassLongW".}

+proc FindWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND{.stdcall,

+    dynlib: "user32", importc: "FindWindowW".}

+proc FindWindowExW*(para1: HWND, para2: HWND, para3: LPCWSTR, para4: LPCWSTR): HWND{.

+    stdcall, dynlib: "user32", importc: "FindWindowExW".}

+proc GetClassNameW*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetClassNameW".}

+proc SetWindowsHookExW*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,

+                        dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",

+    importc: "SetWindowsHookExW".}

+proc LoadBitmapW*(hInstance: HINST, lpBitmapName: LPCWSTR): HBITMAP{.stdcall,

+    dynlib: "user32", importc: "LoadBitmapW".}

+proc LoadCursorW*(hInstance: HINST, lpCursorName: LPCWSTR): HCURSOR{.stdcall,

+    dynlib: "user32", importc: "LoadCursorW".}

+proc LoadCursorFromFileW*(lpFileName: LPCWSTR): HCURSOR{.stdcall,

+    dynlib: "user32", importc: "LoadCursorFromFileW".}

+proc LoadIconW*(hInstance: HINST, lpIconName: LPCWSTR): HICON{.stdcall,

+    dynlib: "user32", importc: "LoadIconW".}

+proc LoadImageW*(para1: HINST, para2: LPCWSTR, para3: UINT, para4: int32,

+                 para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",

+    importc: "LoadImageW".}

+proc LoadStringW*(hInstance: HINST, uID: UINT, lpBuffer: LPWSTR,

+                  nBufferMax: int32): int32{.stdcall, dynlib: "user32",

+    importc: "LoadStringW".}

+proc IsDialogMessageW*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "IsDialogMessageW".}

+proc DlgDirListW*(hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: int32,

+                  nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,

+    dynlib: "user32", importc: "DlgDirListW".}

+proc DlgDirSelectExW*(hDlg: HWND, lpString: LPWSTR, nCount: int32,

+                      nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DlgDirSelectExW".}

+proc DlgDirListComboBoxW*(hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: int32,

+                          nIDStaticPath: int32, uFiletype: UINT): int32{.

+    stdcall, dynlib: "user32", importc: "DlgDirListComboBoxW".}

+proc DlgDirSelectComboBoxExW*(hDlg: HWND, lpString: LPWSTR, nCount: int32,

+                              nIDComboBox: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DlgDirSelectComboBoxExW".}

+proc DefFrameProcW*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT, wParam: WPARAM,

+                    lParam: LPARAM): LRESULT{.stdcall, dynlib: "user32",

+    importc: "DefFrameProcW".}

+proc DefMDIChildProcW*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "DefMDIChildProcW".}

+proc CreateMDIWindowW*(lpClassName: LPWSTR, lpWindowName: LPWSTR,

+                       dwStyle: DWORD, X: int32, Y: int32, nWidth: int32,

+                       nHeight: int32, hWndParent: HWND, hInstance: HINST,

+                       lParam: LPARAM): HWND{.stdcall, dynlib: "user32",

+    importc: "CreateMDIWindowW".}

+proc WinHelpW*(hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "WinHelpW".}

+proc ChangeDisplaySettingsW*(lpDevMode: LPDEVMODEW, dwFlags: DWORD): LONG{.

+    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}

+proc EnumDisplaySettingsW*(lpszDeviceName: LPCWSTR, iModeNum: DWORD,

+                           lpDevMode: LPDEVMODEW): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EnumDisplaySettingsW".}

+proc SystemParametersInfoW*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,

+                            fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SystemParametersInfoW".}

+proc AddFontResourceW*(para1: LPCWSTR): int32{.stdcall, dynlib: "gdi32",

+    importc: "AddFontResourceW".}

+proc CopyMetaFileW*(para1: HMETAFILE, para2: LPCWSTR): HMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "CopyMetaFileW".}

+proc CreateFontIndirectW*(para1: PLOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+    importc: "CreateFontIndirectW".}

+proc CreateFontIndirectW*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+    importc: "CreateFontIndirectW".}

+proc CreateFontW*(para1: int32, para2: int32, para3: int32, para4: int32,

+                  para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,

+                  para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,

+                  para13: DWORD, para14: LPCWSTR): HFONT{.stdcall,

+    dynlib: "gdi32", importc: "CreateFontW".}

+proc CreateICW*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR,

+                para4: LPDEVMODEw): HDC{.stdcall, dynlib: "gdi32",

+    importc: "CreateICW".}

+proc CreateMetaFileW*(para1: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",

+    importc: "CreateMetaFileW".}

+proc CreateScalableFontResourceW*(para1: DWORD, para2: LPCWSTR, para3: LPCWSTR,

+                                  para4: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "CreateScalableFontResourceW".}

+proc EnumFontFamiliesExW*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,

+                          para4: LPARAM, para5: DWORD): int32{.stdcall,

+    dynlib: "gdi32", importc: "EnumFontFamiliesExW".}

+proc EnumFontFamiliesW*(para1: HDC, para2: LPCWSTR, para3: FONTENUMPROC,

+                        para4: LPARAM): int32{.stdcall, dynlib: "gdi32",

+    importc: "EnumFontFamiliesW".}

+proc EnumFontsW*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC, para4: LPARAM): int32{.

+    stdcall, dynlib: "gdi32", importc: "EnumFontsW".}

+proc EnumFontsW*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC,

+                 para4: pointer): int32{.stdcall, dynlib: "gdi32",

+    importc: "EnumFontsW".}

+proc GetCharWidthW*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}

+proc GetCharWidth32W*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidth32W".}

+proc GetCharWidthFloatW*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}

+proc GetCharABCWidthsW*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}

+proc GetCharABCWidthsFloatW*(para1: HDC, para2: UINT, para3: UINT,

+                             para4: LPABCFLOAT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}

+proc GetGlyphOutlineW*(para1: HDC, para2: UINT, para3: UINT,

+                       para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,

+                       para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GetGlyphOutlineW".}

+proc GetMetaFileW*(para1: LPCWSTR): HMETAFILE{.stdcall, dynlib: "gdi32",

+    importc: "GetMetaFileW".}

+proc GetOutlineTextMetricsW*(para1: HDC, para2: UINT, para3: LPOUTLINETEXTMETRIC): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetOutlineTextMetricsW".}

+proc GetTextExtentPointW*(para1: HDC, para2: LPCWSTR, para3: int32,

+                          para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentPointW".}

+proc GetTextExtentPoint32W*(para1: HDC, para2: LPCWSTR, para3: int32,

+                            para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentPoint32W".}

+proc GetTextExtentExPointW*(para1: HDC, para2: LPCWSTR, para3: int32,

+                            para4: int32, para5: LPINT, para6: LPINT,

+                            para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentExPointW".}

+proc GetCharacterPlacementW*(para1: HDC, para2: LPCWSTR, para3: int32,

+                             para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.

+    stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementW".}

+proc ResetDCW*(para1: HDC, para2: LPDEVMODEW): HDC{.stdcall, dynlib: "gdi32",

+    importc: "ResetDCW".}

+proc RemoveFontResourceW*(para1: LPCWSTR): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "RemoveFontResourceW".}

+proc CopyEnhMetaFileW*(para1: HENHMETAFILE, para2: LPCWSTR): HENHMETAFILE{.

+    stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileW".}

+proc CreateEnhMetaFileW*(para1: HDC, para2: LPCWSTR, para3: LPRECT,

+                         para4: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",

+    importc: "CreateEnhMetaFileW".}

+proc GetEnhMetaFileW*(para1: LPCWSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",

+    importc: "GetEnhMetaFileW".}

+proc GetEnhMetaFileDescriptionW*(para1: HENHMETAFILE, para2: UINT, para3: LPWSTR): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionW".}

+proc GetTextMetricsW*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetTextMetricsW".}

+proc StartDocW*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",

+    importc: "StartDocW".}

+proc GetObjectW*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,

+    dynlib: "gdi32", importc: "GetObjectW".}

+proc TextOutW*(para1: HDC, para2: int32, para3: int32, para4: LPCWSTR,

+               para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+                                       importc: "TextOutW".}

+proc ExtTextOutW*(para1: HDC, para2: int32, para3: int32, para4: UINT,

+                  para5: LPRECT, para6: LPCWSTR, para7: UINT, para8: LPINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}

+proc PolyTextOutW*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}

+proc GetTextFaceW*(para1: HDC, para2: int32, para3: LPWSTR): int32{.stdcall,

+    dynlib: "gdi32", importc: "GetTextFaceW".}

+proc GetKerningPairsW*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.

+    stdcall, dynlib: "gdi32", importc: "GetKerningPairsW".}

+proc GetLogColorSpaceW*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE, para3: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetLogColorSpaceW".}

+proc CreateColorSpaceW*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,

+    dynlib: "gdi32", importc: "CreateColorSpaceW".}

+proc GetICMProfileW*(para1: HDC, para2: DWORD, para3: LPWSTR): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetICMProfileW".}

+proc SetICMProfileW*(para1: HDC, para2: LPWSTR): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SetICMProfileW".}

+proc UpdateICMRegKeyW*(para1: DWORD, para2: DWORD, para3: LPWSTR, para4: UINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyW".}

+proc EnumICMProfilesW*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.

+    stdcall, dynlib: "gdi32", importc: "EnumICMProfilesW".}

+proc CreatePropertySheetPageW*(lppsp: LPCPROPSHEETPAGE): HPROPSHEETPAGE{.

+    stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageW".}

+proc PropertySheetW*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,

+    dynlib: "comctl32", importc: "PropertySheetW".}

+proc ImageList_LoadImageW*(hi: HINST, lpbmp: LPCWSTR, cx: int32, cGrow: int32,

+                           crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageW".}

+proc CreateStatusWindowW*(style: LONG, lpszText: LPCWSTR, hwndParent: HWND,

+                          wID: UINT): HWND{.stdcall, dynlib: "comctl32",

+    importc: "CreateStatusWindowW".}

+proc DrawStatusTextW*(hDC: HDC, lprc: LPRECT, pszText: LPCWSTR, uFlags: UINT){.

+    stdcall, dynlib: "comctl32", importc: "DrawStatusTextW".}

+proc GetOpenFileNameW*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+    dynlib: "comdlg32", importc: "GetOpenFileNameW".}

+proc GetSaveFileNameW*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+    dynlib: "comdlg32", importc: "GetSaveFileNameW".}

+proc GetFileTitleW*(para1: LPCWSTR, para2: LPWSTR, para3: int16): int{.stdcall,

+    dynlib: "comdlg32", importc: "GetFileTitleW".}

+proc ChooseColorW*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",

+    importc: "ChooseColorW".}

+proc ReplaceTextW*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+    importc: "ReplaceTextW".}

+proc ChooseFontW*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",

+    importc: "ChooseFontW".}

+proc FindTextW*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+    importc: "FindTextW".}

+proc PrintDlgW*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",

+    importc: "PrintDlgW".}

+proc PageSetupDlgW*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,

+    dynlib: "comdlg32", importc: "PageSetupDlgW".}

+proc CreateProcessW*(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR,

+                     lpProcessAttributes: LPSECURITY_ATTRIBUTES,

+                     lpThreadAttributes: LPSECURITY_ATTRIBUTES,

+                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                     lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR,

+                     lpStartupInfo: LPSTARTUPINFO,

+                     lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateProcessW".}

+proc GetStartupInfoW*(lpStartupInfo: LPSTARTUPINFO){.stdcall,

+    dynlib: "kernel32", importc: "GetStartupInfoW".}

+proc FindFirstFileW*(lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATAW): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}

+proc FindNextFileW*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FindNextFileW".}

+proc GetVersionExW*(VersionInformation: LPOSVERSIONINFOW): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVersionExW".}

+proc CreateWindowW*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD,

+                    X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                    lpParam: LPVOID): HWND

+proc CreateDialogW*(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,

+                    lpDialogFunc: DLGPROC): HWND

+proc CreateDialogIndirectW*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND

+proc DialogBoxW*(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,

+                 lpDialogFunc: DLGPROC): int32

+proc DialogBoxIndirectW*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32

+proc CreateDCW*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR, para4: pDEVMODEW): HDC{.

+    stdcall, dynlib: "gdi32", importc: "CreateDCW".}

+proc VerInstallFileW*(uFlags: DWORD, szSrcFileName: LPWSTR,

+                      szDestFileName: LPWSTR, szSrcDir: LPWSTR,

+                      szDestDir: LPWSTR, szCurDir: LPWSTR, szTmpFile: LPWSTR,

+                      lpuTmpFileLen: PUINT): DWORD{.stdcall, dynlib: "version",

+    importc: "VerInstallFileW".}

+proc GetFileVersionInfoSizeW*(lptstrFilename: LPWSTR, lpdwHandle: LPDWORD): DWORD{.

+    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}

+proc GetFileVersionInfoW*(lptstrFilename: LPWSTR, dwHandle: DWORD, dwLen: DWORD,

+                          lpData: LPVOID): WINBOOL{.stdcall, dynlib: "version",

+    importc: "GetFileVersionInfoW".}

+proc VerLanguageNameW*(wLang: DWORD, szLang: LPWSTR, nSize: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "VerLanguageNameW".}

+proc VerQueryValueW*(pBlock: LPVOID, lpSubBlock: LPWSTR, lplpBuffer: LPVOID,

+                     puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",

+    importc: "VerQueryValueW".}

+proc VerFindFileW*(uFlags: DWORD, szFileName: LPWSTR, szWinDir: LPWSTR,

+                   szAppDir: LPWSTR, szCurDir: LPWSTR, lpuCurDirLen: PUINT,

+                   szDestDir: LPWSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,

+    dynlib: "version", importc: "VerFindFileW".}

+proc RegSetValueExW*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD,

+                     dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}

+proc RegUnLoadKeyW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegUnLoadKeyW".}

+proc InitiateSystemShutdownW*(lpMachineName: LPWSTR, lpMessage: LPWSTR,

+                              dwTimeout: DWORD, bForceAppsClosed: WINBOOL,

+                              bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "InitiateSystemShutdownW".}

+proc AbortSystemShutdownW*(lpMachineName: LPWSTR): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AbortSystemShutdownW".}

+proc RegRestoreKeyW*(hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegRestoreKeyW".}

+proc RegSaveKeyW*(hKey: HKEY, lpFile: LPCWSTR,

+                  lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegSaveKeyW".}

+proc RegSetValueW*(hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD,

+                   lpData: LPCWSTR, cbData: DWORD): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegSetValueW".}

+proc RegQueryValueW*(hKey: HKEY, lpSubKey: LPCWSTR, lpValue: LPWSTR,

+                     lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",

+    importc: "RegQueryValueW".}

+proc RegQueryMultipleValuesW*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,

+                              lpValueBuf: LPWSTR, ldwTotsize: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}

+proc RegQueryValueExW*(hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD,

+                       lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryValueExW".}

+proc RegReplaceKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR,

+                     lpOldFile: LPCWSTR): LONG{.stdcall, dynlib: "advapi32",

+    importc: "RegReplaceKeyW".}

+proc RegConnectRegistryW*(lpMachineName: LPWSTR, hKey: HKEY, phkResult: PHKEY): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}

+proc RegCreateKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}

+proc RegCreateKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD,

+                      lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM,

+                      lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                      phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}

+proc RegDeleteKeyW*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegDeleteKeyW".}

+proc RegDeleteValueW*(hKey: HKEY, lpValueName: LPCWSTR): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegDeleteValueW".}

+proc RegEnumKeyW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cbName: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyW".}

+proc RegEnumKeyExW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR,

+                    lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR,

+                    lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}

+proc RegEnumValueW*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR,

+                    lpcbValueName: LPDWORD, lpReserved: LPDWORD,

+                    lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}

+proc RegLoadKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegLoadKeyW".}

+proc RegOpenKeyW*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}

+proc RegOpenKeyExW*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD,

+                    samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegOpenKeyExW".}

+proc RegQueryInfoKeyW*(hKey: HKEY, lpClass: LPWSTR, lpcbClass: LPDWORD,

+                       lpReserved: LPDWORD, lpcSubKeys: LPDWORD,

+                       lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,

+                       lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,

+                       lpcbMaxValueLen: LPDWORD,

+                       lpcbSecurityDescriptor: LPDWORD,

+                       lpftLastWriteTime: PFILETIME): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegQueryInfoKeyW".}

+proc CompareStringW*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCWSTR,

+                     cchCount1: int32, lpString2: LPCWSTR, cchCount2: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "CompareStringW".}

+proc LCMapStringW*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR,

+                   cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "LCMapStringW".}

+proc GetLocaleInfoW*(Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR,

+                     cchData: int32): int32{.stdcall, dynlib: "kernel32",

+    importc: "GetLocaleInfoW".}

+proc SetLocaleInfoW*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetLocaleInfoW".}

+proc GetTimeFormatW*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,

+                     lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "GetTimeFormatW".}

+proc GetDateFormatW*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,

+                     lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "GetDateFormatW".}

+proc GetNumberFormatW*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,

+                       lpFormat: PNUMBERFMT, lpNumberStr: LPWSTR,

+                       cchNumber: int32): int32{.stdcall, dynlib: "kernel32",

+    importc: "GetNumberFormatW".}

+proc GetCurrencyFormatW*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,

+                         lpFormat: PCURRENCYFMT, lpCurrencyStr: LPWSTR,

+                         cchCurrency: int32): int32{.stdcall,

+    dynlib: "kernel32", importc: "GetCurrencyFormatW".}

+proc EnumCalendarInfoW*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,

+                        Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "EnumCalendarInfoW".}

+proc EnumTimeFormatsW*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,

+                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "EnumTimeFormatsW".}

+proc EnumDateFormatsW*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,

+                       dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "EnumDateFormatsW".}

+proc GetStringTypeExW*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWSTR,

+                       cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeExW".}

+proc GetStringTypeW*(dwInfoType: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,

+                     lpCharType: LPWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "GetStringTypeW".}

+proc FoldStringW*(dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,

+                  lpDestStr: LPWSTR, cchDest: int32): int32{.stdcall,

+    dynlib: "kernel32", importc: "FoldStringW".}

+proc EnumSystemLocalesW*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesW".}

+proc EnumSystemCodePagesW*(lpCodePageEnumProc: CODEPAGE_ENUMPROC, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "EnumSystemCodePagesW".}

+proc PeekConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}

+proc ReadConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                        nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}

+proc WriteConsoleInputW*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                         nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}

+proc ReadConsoleOutputW*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                         dwBufferSize: COORD, dwBufferCoord: COORD,

+                         lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadConsoleOutputW".}

+proc WriteConsoleOutputW*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                          dwBufferSize: COORD, dwBufferCoord: COORD,

+                          lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteConsoleOutputW".}

+proc ReadConsoleOutputCharacterW*(hConsoleOutput: HANDLE, lpCharacter: LPWSTR,

+                                  nLength: DWORD, dwReadCoord: COORD,

+                                  lpNumberOfCharsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}

+proc WriteConsoleOutputCharacterW*(hConsoleOutput: HANDLE, lpCharacter: LPCWSTR,

+                                   nLength: DWORD, dwWriteCoord: COORD,

+                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}

+proc FillConsoleOutputCharacterW*(hConsoleOutput: HANDLE, cCharacter: WCHAR,

+                                  nLength: DWORD, dwWriteCoord: COORD,

+                                  lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}

+proc ScrollConsoleScreenBufferW*(hConsoleOutput: HANDLE,

+                                 lpScrollRectangle: PSMALL_RECT,

+                                 lpClipRectangle: PSMALL_RECT,

+                                 dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}

+proc GetConsoleTitleW*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetConsoleTitleW".}

+proc SetConsoleTitleW*(lpConsoleTitle: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetConsoleTitleW".}

+proc ReadConsoleW*(hConsoleInput: HANDLE, lpBuffer: LPVOID,

+                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,

+                   lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ReadConsoleW".}

+proc WriteConsoleW*(hConsoleOutput: HANDLE, lpBuffer: pointer,

+                    nNumberOfCharsToWrite: DWORD,

+                    lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}

+proc WNetAddConnectionW*(lpRemoteName: LPCWSTR, lpPassword: LPCWSTR,

+                         lpLocalName: LPCWSTR): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetAddConnectionW".}

+proc WNetAddConnection2W*(lpNetResource: LPNETRESOURCE, lpPassword: LPCWSTR,

+                          lpUserName: LPCWSTR, dwFlags: DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetAddConnection2W".}

+proc WNetAddConnection3W*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                          lpPassword: LPCWSTR, lpUserName: LPCWSTR,

+                          dwFlags: DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetAddConnection3W".}

+proc WNetCancelConnectionW*(lpName: LPCWSTR, fForce: WINBOOL): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetCancelConnectionW".}

+proc WNetCancelConnection2W*(lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetCancelConnection2W".}

+proc WNetGetConnectionW*(lpLocalName: LPCWSTR, lpRemoteName: LPWSTR,

+                         lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetConnectionW".}

+proc WNetUseConnectionW*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                         lpUserID: LPCWSTR, lpPassword: LPCWSTR, dwFlags: DWORD,

+                         lpAccessName: LPWSTR, lpBufferSize: LPDWORD,

+                         lpResult: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetUseConnectionW".}

+proc WNetSetConnectionW*(lpName: LPCWSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetSetConnectionW".}

+proc WNetConnectionDialog1W*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1W".}

+proc WNetDisconnectDialog1W*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetDisconnectDialog1W".}

+proc WNetOpenEnumW*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,

+                    lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetOpenEnumW".}

+proc WNetEnumResourceW*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,

+                        lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetEnumResourceW".}

+proc WNetGetUniversalNameW*(lpLocalPath: LPCWSTR, dwInfoLevel: DWORD,

+                            lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}

+proc WNetGetUserW*(lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUserW".}

+proc WNetGetProviderNameW*(dwNetType: DWORD, lpProviderName: LPWSTR,

+                           lpBufferSize: LPDWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetGetProviderNameW".}

+proc WNetGetNetworkInformationW*(lpProvider: LPCWSTR,

+                                 lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}

+proc WNetGetLastErrorW*(lpError: LPDWORD, lpErrorBuf: LPWSTR,

+                        nErrorBufSize: DWORD, lpNameBuf: LPWSTR,

+                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetLastErrorW".}

+proc MultinetGetConnectionPerformanceW*(lpNetResource: LPNETRESOURCE,

+    lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,

+    dynlib: "mpr", importc: "MultinetGetConnectionPerformanceW".}

+proc ChangeServiceConfigW*(hService: SC_HANDLE, dwServiceType: DWORD,

+                           dwStartType: DWORD, dwErrorControl: DWORD,

+                           lpBinaryPathName: LPCWSTR, lpLoadOrderGroup: LPCWSTR,

+                           lpdwTagId: LPDWORD, lpDependencies: LPCWSTR,

+                           lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR,

+                           lpDisplayName: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ChangeServiceConfigW".}

+proc CreateServiceW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,

+                     lpDisplayName: LPCWSTR, dwDesiredAccess: DWORD,

+                     dwServiceType: DWORD, dwStartType: DWORD,

+                     dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR,

+                     lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD,

+                     lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR,

+                     lpPassword: LPCWSTR): SC_HANDLE{.stdcall,

+    dynlib: "advapi32", importc: "CreateServiceW".}

+proc EnumDependentServicesW*(hService: SC_HANDLE, dwServiceState: DWORD,

+                             lpServices: LPENUM_SERVICE_STATUS,

+                             cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,

+                             lpServicesReturned: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "EnumDependentServicesW".}

+proc EnumServicesStatusW*(hSCManager: SC_HANDLE, dwServiceType: DWORD,

+                          dwServiceState: DWORD,

+                          lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,

+                          pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,

+                          lpResumeHandle: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "EnumServicesStatusW".}

+proc GetServiceKeyNameW*(hSCManager: SC_HANDLE, lpDisplayName: LPCWSTR,

+                         lpServiceName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameW".}

+proc GetServiceDisplayNameW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,

+                             lpDisplayName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameW".}

+proc OpenSCManagerW*(lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR,

+                     dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+    dynlib: "advapi32", importc: "OpenSCManagerW".}

+proc OpenServiceW*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,

+                   dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+    dynlib: "advapi32", importc: "OpenServiceW".}

+proc QueryServiceConfigW*(hService: SC_HANDLE,

+                          lpServiceConfig: LPQUERY_SERVICE_CONFIG,

+                          cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "QueryServiceConfigW".}

+proc QueryServiceLockStatusW*(hSCManager: SC_HANDLE,

+                              lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,

+                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusW".}

+proc RegisterServiceCtrlHandlerW*(lpServiceName: LPCWSTR,

+                                  lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.

+    stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerW".}

+proc StartServiceCtrlDispatcherW*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherW".}

+proc StartServiceW*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,

+                    lpServiceArgVectors: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "StartServiceW".}

+proc DragQueryFileW*(para1: HDROP, para2: int, para3: LPCWSTR, para4: int): int{.

+    stdcall, dynlib: "shell32", importc: "DragQueryFileW".}

+proc ExtractAssociatedIconW*(para1: HINST, para2: LPCWSTR, para3: LPWORD): HICON{.

+    stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconW".}

+proc ExtractIconW*(para1: HINST, para2: LPCWSTR, para3: int): HICON{.stdcall,

+    dynlib: "shell32", importc: "ExtractIconW".}

+proc FindExecutableW*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR): HINST{.

+    stdcall, dynlib: "shell32", importc: "FindExecutableW".}

+proc ShellAboutW*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR, para4: HICON): int32{.

+    stdcall, dynlib: "shell32", importc: "ShellAboutW".}

+proc ShellExecuteW*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR, para4: LPCWSTR,

+                    para5: LPCWSTR, para6: int32): HINST{.stdcall,

+    dynlib: "shell32", importc: "ShellExecuteW".}

+proc Shell_NotifyIconW*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.

+    stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}

+proc DdeCreateStringHandleW*(para1: DWORD, para2: LPCWSTR, para3: int32): HSZ{.

+    stdcall, dynlib: "user32", importc: "DdeCreateStringHandleW".}

+proc DdeInitializeW*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,

+                     para4: DWORD): UINT{.stdcall, dynlib: "user32",

+    importc: "DdeInitializeW".}

+proc DdeQueryStringW*(para1: DWORD, para2: HSZ, para3: LPCWSTR, para4: DWORD,

+                      para5: int32): DWORD{.stdcall, dynlib: "user32",

+    importc: "DdeQueryStringW".}

+proc LogonUserW*(para1: LPWSTR, para2: LPWSTR, para3: LPWSTR, para4: DWORD,

+                 para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LogonUserW".}

+proc CreateProcessAsUserW*(para1: HANDLE, para2: LPCWSTR, para3: LPWSTR,

+                           para4: LPSECURITY_ATTRIBUTES,

+                           para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,

+                           para7: DWORD, para8: LPVOID, para9: LPCWSTR,

+                           para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserW".}

+when defined(winUnicode):

+  proc GetBinaryType*(lpApplicationName: LPCWSTR, lpBinaryType: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}

+  proc GetShortPathName*(lpszLongPath: LPCWSTR, lpszShortPath: LPWSTR,

+                         cchBuffer: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "GetShortPathNameW".}

+  proc GetEnvironmentStrings*(): LPWSTR{.stdcall, dynlib: "kernel32",

+      importc: "GetEnvironmentStringsW".}

+  proc FreeEnvironmentStrings*(para1: LPWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "FreeEnvironmentStringsW".}

+  proc FormatMessage*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,

+                      dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD,

+                      Arguments: va_list): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "FormatMessageW".}

+  proc CreateMailslot*(lpName: LPCWSTR, nMaxMessageSize: DWORD,

+                       lReadTimeout: DWORD,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateMailslotW".}

+  proc lstrcmp*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,

+      dynlib: "kernel32", importc: "lstrcmpW".}

+  proc lstrcmpi*(lpString1: LPCWSTR, lpString2: LPCWSTR): int32{.stdcall,

+      dynlib: "kernel32", importc: "lstrcmpiW".}

+  proc lstrcpyn*(lpString1: LPWSTR, lpString2: LPCWSTR, iMaxLength: int32): LPWSTR{.

+      stdcall, dynlib: "kernel32", importc: "lstrcpynW".}

+  proc lstrcpy*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,

+      dynlib: "kernel32", importc: "lstrcpyW".}

+  proc lstrcat*(lpString1: LPWSTR, lpString2: LPCWSTR): LPWSTR{.stdcall,

+      dynlib: "kernel32", importc: "lstrcatW".}

+  proc lstrlen*(lpString: LPCWSTR): int32{.stdcall, dynlib: "kernel32",

+      importc: "lstrlenW".}

+  proc CreateMutex*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,

+                    bInitialOwner: WINBOOL, lpName: LPCWSTR): HANDLE{.stdcall,

+      dynlib: "kernel32", importc: "CreateMutexW".}

+  proc OpenMutex*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                  lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenMutexW".}

+  proc CreateEvent*(lpEventAttributes: LPSECURITY_ATTRIBUTES,

+                    bManualReset: WINBOOL, bInitialState: WINBOOL,

+                    lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "CreateEventW".}

+  proc OpenEvent*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                  lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenEventW".}

+  proc CreateSemaphore*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,

+                        lInitialCount: LONG, lMaximumCount: LONG,

+                        lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "CreateSemaphoreW".}

+  proc OpenSemaphore*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                      lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenSemaphoreW".}

+  proc CreateFileMapping*(hFile: HANDLE,

+                          lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,

+                          flProtect: DWORD, dwMaximumSizeHigh: DWORD,

+                          dwMaximumSizeLow: DWORD, lpName: LPCWSTR): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateFileMappingW".}

+  proc OpenFileMapping*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                        lpName: LPCWSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenFileMappingW".}

+  proc GetLogicalDriveStrings*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsW".}

+  proc LoadLibrary*(lpLibFileName: LPCWSTR): HINST{.stdcall, dynlib: "kernel32",

+      importc: "LoadLibraryW".}

+  proc LoadLibraryEx*(lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.

+      stdcall, dynlib: "kernel32", importc: "LoadLibraryExW".}

+  proc GetModuleFileName*(hModule: HINST, lpFilename: LPWSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetModuleFileNameW".}

+  proc GetModuleHandle*(lpModuleName: LPCWSTR): HMODULE{.stdcall,

+      dynlib: "kernel32", importc: "GetModuleHandleW".}

+  proc FatalAppExit*(uAction: UINT, lpMessageText: LPCWSTR){.stdcall,

+      dynlib: "kernel32", importc: "FatalAppExitW".}

+  proc GetCommandLine*(): LPWSTR{.stdcall, dynlib: "kernel32",

+                                  importc: "GetCommandLineW".}

+  proc GetEnvironmentVariable*(lpName: LPCWSTR, lpBuffer: LPWSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableW".}

+  proc SetEnvironmentVariable*(lpName: LPCWSTR, lpValue: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableW".}

+  proc ExpandEnvironmentStrings*(lpSrc: LPCWSTR, lpDst: LPWSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsW".}

+  proc OutputDebugString*(lpOutputString: LPCWSTR){.stdcall, dynlib: "kernel32",

+      importc: "OutputDebugStringW".}

+  proc FindResource*(hModule: HINST, lpName: LPCWSTR, lpType: LPCWSTR): HRSRC{.

+      stdcall, dynlib: "kernel32", importc: "FindResourceW".}

+  proc FindResourceEx*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,

+                       wLanguage: int16): HRSRC{.stdcall, dynlib: "kernel32",

+      importc: "FindResourceExW".}

+  proc EnumResourceTypes*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,

+                          lParam: LONG): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "EnumResourceTypesW".}

+  proc EnumResourceNames*(hModule: HINST, lpType: LPCWSTR,

+                          lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "EnumResourceNamesW".}

+  proc EnumResourceLanguages*(hModule: HINST, lpType: LPCWSTR, lpName: LPCWSTR,

+                              lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesW".}

+  proc BeginUpdateResource*(pFileName: LPCWSTR,

+                            bDeleteExistingResources: WINBOOL): HANDLE{.stdcall,

+      dynlib: "kernel32", importc: "BeginUpdateResourceW".}

+  proc UpdateResource*(hUpdate: HANDLE, lpType: LPCWSTR, lpName: LPCWSTR,

+                       wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "UpdateResourceW".}

+  proc EndUpdateResource*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "EndUpdateResourceW".}

+  proc GlobalAddAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "GlobalAddAtomW".}

+  proc GlobalFindAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "GlobalFindAtomW".}

+  proc GlobalGetAtomName*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.

+      stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameW".}

+  proc AddAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "AddAtomW".}

+  proc FindAtom*(lpString: LPCWSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "FindAtomW".}

+  proc GetAtomName*(nAtom: ATOM, lpBuffer: LPWSTR, nSize: int32): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetAtomNameW".}

+  proc GetProfileInt*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR, nDefault: WINT): UINT{.

+      stdcall, dynlib: "kernel32", importc: "GetProfileIntW".}

+  proc GetProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                         lpDefault: LPCWSTR, lpReturnedString: LPWSTR,

+                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "GetProfileStringW".}

+  proc WriteProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                           lpString: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "WriteProfileStringW".}

+  proc GetProfileSection*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,

+                          nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "GetProfileSectionW".}

+  proc WriteProfileSection*(lpAppName: LPCWSTR, lpString: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteProfileSectionW".}

+  proc GetPrivateProfileInt*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                             nDefault: WINT, lpFileName: LPCWSTR): UINT{.

+      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileIntW".}

+  proc GetPrivateProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                                lpDefault: LPCWSTR, lpReturnedString: LPWSTR,

+                                nSize: DWORD, lpFileName: LPCWSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringW".}

+  proc WritePrivateProfileString*(lpAppName: LPCWSTR, lpKeyName: LPCWSTR,

+                                  lpString: LPCWSTR, lpFileName: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringW".}

+  proc GetPrivateProfileSection*(lpAppName: LPCWSTR, lpReturnedString: LPWSTR,

+                                 nSize: DWORD, lpFileName: LPCWSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionW".}

+  proc WritePrivateProfileSection*(lpAppName: LPCWSTR, lpString: LPCWSTR,

+                                   lpFileName: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "WritePrivateProfileSectionW".}

+  proc GetDriveType*(lpRootPathName: LPCWSTR): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetDriveTypeW".}

+  proc GetSystemDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetSystemDirectoryW".}

+  proc GetTempPath*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetTempPathW".}

+  proc GetTempFileName*(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR,

+                        uUnique: UINT, lpTempFileName: LPWSTR): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetTempFileNameW".}

+  proc GetWindowsDirectory*(lpBuffer: LPWSTR, uSize: UINT): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetWindowsDirectoryW".}

+  proc SetCurrentDirectory*(lpPathName: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetCurrentDirectoryW".}

+  proc GetCurrentDirectory*(nBufferLength: DWORD, lpBuffer: LPWSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryW".}

+  proc GetDiskFreeSpace*(lpRootPathName: LPCWSTR, lpSectorsPerCluster: LPDWORD,

+                         lpBytesPerSector: LPDWORD,

+                         lpNumberOfFreeClusters: LPDWORD,

+                         lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}

+  proc CreateDirectory*(lpPathName: LPCWSTR,

+                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CreateDirectoryW".}

+  proc CreateDirectoryEx*(lpTemplateDirectory: LPCWSTR, lpNewDirectory: LPCWSTR,

+                          lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CreateDirectoryExW".}

+  proc RemoveDirectory*(lpPathName: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "RemoveDirectoryW".}

+  proc GetFullPathName*(lpFileName: LPCWSTR, nBufferLength: DWORD,

+                        lpBuffer: LPWSTR, lpFilePart: var LPWSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetFullPathNameW".}

+  proc DefineDosDevice*(dwFlags: DWORD, lpDeviceName: LPCWSTR,

+                        lpTargetPath: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "DefineDosDeviceW".}

+  proc QueryDosDevice*(lpDeviceName: LPCWSTR, lpTargetPath: LPWSTR,

+                       ucchMax: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "QueryDosDeviceW".}

+  proc CreateFile*(lpFileName: LPCWSTR, dwDesiredAccess: DWORD,

+                   dwShareMode: DWORD,

+                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                   dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,

+                   hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "CreateFileW".}

+  proc SetFileAttributes*(lpFileName: LPCWSTR, dwFileAttributes: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetFileAttributesW".}

+  proc GetFileAttributes*(lpFileName: LPCWSTR): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetFileAttributesW".}

+  proc GetCompressedFileSize*(lpFileName: LPCWSTR, lpFileSizeHigh: LPDWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeW".}

+  proc DeleteFile*(lpFileName: LPCWSTR): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "DeleteFileW".}

+  proc SearchPath*(lpPath: LPCWSTR, lpFileName: LPCWSTR, lpExtension: LPCWSTR,

+                   nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: LPWSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "SearchPathW".}

+  proc CopyFile*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,

+                 bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "CopyFileW".}

+  proc MoveFile*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "MoveFileW".}

+  proc MoveFileEx*(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR,

+                   dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "MoveFileExW".}

+  proc CreateNamedPipe*(lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,

+                        nMaxInstances: DWORD, nOutBufferSize: DWORD,

+                        nInBufferSize: DWORD, nDefaultTimeOut: DWORD,

+                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".}

+  proc GetNamedPipeHandleState*(hNamedPipe: HANDLE, lpState: LPDWORD,

+                                lpCurInstances: LPDWORD,

+                                lpMaxCollectionCount: LPDWORD,

+                                lpCollectDataTimeout: LPDWORD,

+                                lpUserName: LPWSTR, nMaxUserNameSize: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateW".}

+  proc CallNamedPipe*(lpNamedPipeName: LPCWSTR, lpInBuffer: LPVOID,

+                      nInBufferSize: DWORD, lpOutBuffer: LPVOID,

+                      nOutBufferSize: DWORD, lpBytesRead: LPDWORD,

+                      nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "CallNamedPipeW".}

+  proc WaitNamedPipe*(lpNamedPipeName: LPCWSTR, nTimeOut: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WaitNamedPipeW".}

+  proc SetVolumeLabel*(lpRootPathName: LPCWSTR, lpVolumeName: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetVolumeLabelW".}

+  proc GetVolumeInformation*(lpRootPathName: LPCWSTR,

+                             lpVolumeNameBuffer: LPWSTR, nVolumeNameSize: DWORD,

+                             lpVolumeSerialNumber: LPDWORD,

+                             lpMaximumComponentLength: LPDWORD,

+                             lpFileSystemFlags: LPDWORD,

+                             lpFileSystemNameBuffer: LPWSTR,

+                             nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetVolumeInformationW".}

+  proc ClearEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "ClearEventLogW".}

+  proc BackupEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "BackupEventLogW".}

+  proc OpenEventLog*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "OpenEventLogW".}

+  proc RegisterEventSource*(lpUNCServerName: LPCWSTR, lpSourceName: LPCWSTR): HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "RegisterEventSourceW".}

+  proc OpenBackupEventLog*(lpUNCServerName: LPCWSTR, lpFileName: LPCWSTR): HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogW".}

+  proc ReadEventLog*(hEventLog: HANDLE, dwReadFlags: DWORD,

+                     dwRecordOffset: DWORD, lpBuffer: LPVOID,

+                     nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,

+                     pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ReadEventLogW".}

+  proc ReportEvent*(hEventLog: HANDLE, wType: int16, wCategory: int16,

+                    dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,

+                    dwDataSize: DWORD, lpStrings: LPPCWSTR, lpRawData: LPVOID): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "ReportEventW".}

+  proc AccessCheckAndAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                                 ObjectTypeName: LPWSTR, ObjectName: LPWSTR,

+                                 SecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 DesiredAccess: DWORD,

+                                 GenericMapping: PGENERIC_MAPPING,

+                                 ObjectCreation: WINBOOL,

+                                 GrantedAccess: LPDWORD, AccessStatus: LPBOOL,

+                                 pfGenerateOnClose: LPBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmW".}

+  proc ObjectOpenAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                             ObjectTypeName: LPWSTR, ObjectName: LPWSTR,

+                             pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                             ClientToken: HANDLE, DesiredAccess: DWORD,

+                             GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,

+                             ObjectCreation: WINBOOL, AccessGranted: WINBOOL,

+                             GenerateOnClose: LPBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}

+  proc ObjectPrivilegeAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                                  ClientToken: HANDLE, DesiredAccess: DWORD,

+                                  Privileges: PPRIVILEGE_SET,

+                                  AccessGranted: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}

+  proc ObjectCloseAuditAlarm*(SubsystemName: LPCWSTR, HandleId: LPVOID,

+                              GenerateOnClose: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ObjectCloseAuditAlarmW".}

+  proc PrivilegedServiceAuditAlarm*(SubsystemName: LPCWSTR,

+                                    ServiceName: LPCWSTR, ClientToken: HANDLE,

+                                    Privileges: PPRIVILEGE_SET,

+                                    AccessGranted: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}

+  proc SetFileSecurity*(lpFileName: LPCWSTR,

+                        SecurityInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "SetFileSecurityW".}

+  proc GetFileSecurity*(lpFileName: LPCWSTR,

+                        RequestedInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                        nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "GetFileSecurityW".}

+  proc FindFirstChangeNotification*(lpPathName: LPCWSTR, bWatchSubtree: WINBOOL,

+                                    dwNotifyFilter: DWORD): HANDLE{.stdcall,

+      dynlib: "kernel32", importc: "FindFirstChangeNotificationW".}

+  proc IsBadStringPtr*(lpsz: LPCWSTR, ucchMax: UINT): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "IsBadStringPtrW".}

+  proc LookupAccountSid*(lpSystemName: LPCWSTR, Sid: PSID, Name: LPWSTR,

+                         cbName: LPDWORD, ReferencedDomainName: LPWSTR,

+                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "LookupAccountSidW".}

+  proc LookupAccountName*(lpSystemName: LPCWSTR, lpAccountName: LPCWSTR,

+                          Sid: PSID, cbSid: LPDWORD,

+                          ReferencedDomainName: LPWSTR,

+                          cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "LookupAccountNameW".}

+  proc LookupPrivilegeValue*(lpSystemName: LPCWSTR, lpName: LPCWSTR,

+                             lpLuid: PLUID): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "LookupPrivilegeValueW".}

+  proc LookupPrivilegeName*(lpSystemName: LPCWSTR, lpLuid: PLUID,

+                            lpName: LPWSTR, cbName: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "LookupPrivilegeNameW".}

+  proc LookupPrivilegeDisplayName*(lpSystemName: LPCWSTR, lpName: LPCWSTR,

+                                   lpDisplayName: LPWSTR,

+                                   cbDisplayName: LPDWORD, lpLanguageId: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}

+  proc BuildCommDCB*(lpDef: LPCWSTR, lpDCB: LPDCB): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "BuildCommDCBW".}

+  proc BuildCommDCBAndTimeouts*(lpDef: LPCWSTR, lpDCB: LPDCB,

+                                lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}

+  proc CommConfigDialog*(lpszName: LPCWSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}

+  proc GetDefaultCommConfig*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG,

+                             lpdwSize: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetDefaultCommConfigW".}

+  proc SetDefaultCommConfig*(lpszName: LPCWSTR, lpCC: LPCOMMCONFIG,

+                             dwSize: DWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetDefaultCommConfigW".}

+  proc GetComputerName*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetComputerNameW".}

+  proc SetComputerName*(lpComputerName: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetComputerNameW".}

+  proc GetUserName*(lpBuffer: LPWSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "GetUserNameW".}

+  proc LoadKeyboardLayout*(pwszKLID: LPCWSTR, Flags: UINT): HKL{.stdcall,

+      dynlib: "user32", importc: "LoadKeyboardLayoutW".}

+  proc GetKeyboardLayoutName*(pwszKLID: LPWSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GetKeyboardLayoutNameW".}

+  proc CreateDesktop*(lpszDesktop: LPWSTR, lpszDevice: LPWSTR,

+                      pDevmode: LPDEVMODE, dwFlags: DWORD,

+                      dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HDESK{.

+      stdcall, dynlib: "user32", importc: "CreateDesktopW".}

+  proc OpenDesktop*(lpszDesktop: LPWSTR, dwFlags: DWORD, fInherit: WINBOOL,

+                    dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",

+      importc: "OpenDesktopW".}

+  proc EnumDesktops*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,

+                     lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "EnumDesktopsW".}

+  proc CreateWindowStation*(lpwinsta: LPWSTR, dwReserved: DWORD,

+                            dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.

+      stdcall, dynlib: "user32", importc: "CreateWindowStationW".}

+  proc OpenWindowStation*(lpszWinSta: LPWSTR, fInherit: WINBOOL,

+                          dwDesiredAccess: DWORD): HWINSTA{.stdcall,

+      dynlib: "user32", importc: "OpenWindowStationW".}

+  proc EnumWindowStations*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "EnumWindowStationsW".}

+  proc GetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                 nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}

+  proc SetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                 nLength: DWORD): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetUserObjectInformationW".}

+  proc RegisterWindowMessage*(lpString: LPCWSTR): UINT{.stdcall,

+      dynlib: "user32", importc: "RegisterWindowMessageW".}

+  proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                   wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "GetMessageW".}

+  proc DispatchMessage*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",

+      importc: "DispatchMessageW".}

+  proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                    wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "PeekMessageW".}

+  proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "SendMessageW".}

+  proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM,

+                           lParam: LPARAM, fuFlags: UINT, uTimeout: UINT,

+                           lpdwResult: LPDWORD): LRESULT{.stdcall,

+      dynlib: "user32", importc: "SendMessageTimeoutW".}

+  proc SendNotifyMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "SendNotifyMessageW".}

+  proc SendMessageCallback*(hWnd: HWND, Msg: UINT, wParam: WPARAM,

+                            lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,

+                            dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "SendMessageCallbackW".}

+  proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "PostMessageW".}

+  proc PostThreadMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM,

+                          lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "PostThreadMessageW".}

+  proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "DefWindowProcW".}

+  proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,

+                       wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,

+      dynlib: "user32", importc: "CallWindowProcW".}

+  proc RegisterClass*(lpWndClass: LPWNDCLASS): ATOM{.stdcall, dynlib: "user32",

+      importc: "RegisterClassW".}

+  proc UnregisterClass*(lpClassName: LPCWSTR, hInstance: HINST): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "UnregisterClassW".}

+  proc GetClassInfo*(hInstance: HINST, lpClassName: LPCWSTR,

+                     lpWndClass: LPWNDCLASS): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GetClassInfoW".}

+  proc RegisterClassEx*(para1: LPWNDCLASSEXW): ATOM{.stdcall, dynlib: "user32",

+      importc: "RegisterClassExW".}

+  proc GetClassInfoEx*(para1: HINST, para2: LPCWSTR, para3: LPWNDCLASSEX): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "GetClassInfoExW".}

+  proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCWSTR,

+                       lpWindowName: LPCWSTR, dwStyle: DWORD, X: int32,

+                       Y: int32, nWidth: int32, nHeight: int32,

+                       hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                       lpParam: LPVOID): HWND{.stdcall, dynlib: "user32",

+      importc: "CreateWindowExW".}

+  proc CreateDialogParam*(hInstance: HINST, lpTemplateName: LPCWSTR,

+                          hWndParent: HWND, lpDialogFunc: DLGPROC,

+                          dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",

+      importc: "CreateDialogParamW".}

+  proc CreateDialogIndirectParam*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                                  hWndParent: HWND, lpDialogFunc: DLGPROC,

+                                  dwInitParam: LPARAM): HWND{.stdcall,

+      dynlib: "user32", importc: "CreateDialogIndirectParamW".}

+  proc DialogBoxParam*(hInstance: HINST, lpTemplateName: LPCWSTR,

+                       hWndParent: HWND, lpDialogFunc: DLGPROC,

+                       dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",

+      importc: "DialogBoxParamW".}

+  proc DialogBoxIndirectParam*(hInstance: HINST,

+                               hDialogTemplate: LPCDLGTEMPLATE,

+                               hWndParent: HWND, lpDialogFunc: DLGPROC,

+                               dwInitParam: LPARAM): int32{.stdcall,

+      dynlib: "user32", importc: "DialogBoxIndirectParamW".}

+  proc SetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "SetDlgItemTextW".}

+  proc GetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPWSTR,

+                       nMaxCount: int32): UINT{.stdcall, dynlib: "user32",

+      importc: "GetDlgItemTextW".}

+  proc SendDlgItemMessage*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,

+                           wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,

+      dynlib: "user32", importc: "SendDlgItemMessageW".}

+  proc DefDlgProc*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "DefDlgProcW".}

+  proc CallMsgFilter*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "CallMsgFilterW".}

+  proc RegisterClipboardFormat*(lpszFormat: LPCWSTR): UINT{.stdcall,

+      dynlib: "user32", importc: "RegisterClipboardFormatW".}

+  proc GetClipboardFormatName*(format: UINT, lpszFormatName: LPWSTR,

+                               cchMaxCount: int32): int32{.stdcall,

+      dynlib: "user32", importc: "GetClipboardFormatNameW".}

+  proc CharToOem*(lpszSrc: LPCWSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "CharToOemW".}

+  proc OemToChar*(lpszSrc: LPCSTR, lpszDst: LPWSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "OemToCharW".}

+  proc CharToOemBuff*(lpszSrc: LPCWSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "CharToOemBuffW".}

+  proc OemToCharBuff*(lpszSrc: LPCSTR, lpszDst: LPWSTR, cchDstLength: DWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "OemToCharBuffW".}

+  proc CharUpper*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",

+      importc: "CharUpperW".}

+  proc CharUpperBuff*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,

+      dynlib: "user32", importc: "CharUpperBuffW".}

+  proc CharLower*(lpsz: LPWSTR): LPWSTR{.stdcall, dynlib: "user32",

+      importc: "CharLowerW".}

+  proc CharLowerBuff*(lpsz: LPWSTR, cchLength: DWORD): DWORD{.stdcall,

+      dynlib: "user32", importc: "CharLowerBuffW".}

+  proc CharNext*(lpsz: LPCWSTR): LPWSTR{.stdcall, dynlib: "user32",

+      importc: "CharNextW".}

+  proc CharPrev*(lpszStart: LPCWSTR, lpszCurrent: LPCWSTR): LPWSTR{.stdcall,

+      dynlib: "user32", importc: "CharPrevW".}

+  proc IsCharAlpha*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "IsCharAlphaW".}

+  proc IsCharAlphaNumeric*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "IsCharAlphaNumericW".}

+  proc IsCharUpper*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "IsCharUpperW".}

+  proc IsCharLower*(ch: WCHAR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "IsCharLowerW".}

+  proc GetKeyNameText*(lParam: LONG, lpString: LPWSTR, nSize: int32): int32{.

+      stdcall, dynlib: "user32", importc: "GetKeyNameTextW".}

+  proc VkKeyScan*(ch: WCHAR): SHORT{.stdcall, dynlib: "user32",

+                                     importc: "VkKeyScanW".}

+  proc VkKeyScanEx*(ch: WCHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",

+      importc: "VkKeyScanExW".}

+  proc MapVirtualKey*(uCode: UINT, uMapType: UINT): UINT{.stdcall,

+      dynlib: "user32", importc: "MapVirtualKeyW".}

+  proc MapVirtualKeyEx*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,

+      dynlib: "user32", importc: "MapVirtualKeyExW".}

+  proc LoadAccelerators*(hInstance: HINST, lpTableName: LPCWSTR): HACCEL{.

+      stdcall, dynlib: "user32", importc: "LoadAcceleratorsW".}

+  proc CreateAcceleratorTable*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,

+      dynlib: "user32", importc: "CreateAcceleratorTableW".}

+  proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,

+                             cAccelEntries: int32): int32{.stdcall,

+      dynlib: "user32", importc: "CopyAcceleratorTableW".}

+  proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.

+      stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}

+  proc LoadMenu*(hInstance: HINST, lpMenuName: LPCWSTR): HMENU{.stdcall,

+      dynlib: "user32", importc: "LoadMenuW".}

+  proc LoadMenuIndirect*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,

+      dynlib: "user32", importc: "LoadMenuIndirectW".}

+  proc ChangeMenu*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCWSTR,

+                   cmdInsert: UINT, flags: UINT): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "ChangeMenuW".}

+  proc GetMenuString*(hMenu: HMENU, uIDItem: UINT, lpString: LPWSTR,

+                      nMaxCount: int32, uFlag: UINT): int32{.stdcall,

+      dynlib: "user32", importc: "GetMenuStringW".}

+  proc InsertMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT,

+                   uIDNewItem: UINT, lpNewItem: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "InsertMenuW".}

+  proc AppendMenu*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,

+                   lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "AppendMenuW".}

+  proc ModifyMenu*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,

+                   lpNewItem: LPCWSTR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "ModifyMenuW".}

+  proc InsertMenuItem*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "InsertMenuItemW".}

+  proc GetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                        para4: LPMENUITEMINFO): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GetMenuItemInfoW".}

+  proc SetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                        para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetMenuItemInfoW".}

+  proc DrawText*(hDC: HDC, lpString: LPCWSTR, nCount: int32, lpRect: LPRECT,

+                 uFormat: UINT): int32{.stdcall, dynlib: "user32",

+                                        importc: "DrawTextW".}

+  proc DrawTextEx*(para1: HDC, para2: LPWSTR, para3: int32, para4: LPRECT,

+                   para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,

+      dynlib: "user32", importc: "DrawTextExW".}

+  proc GrayString*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,

+                   lpData: LPARAM, nCount: int32, X: int32, Y: int32,

+                   nWidth: int32, nHeight: int32): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GrayStringW".}

+  proc DrawState*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC,

+                  para4: LPARAM, para5: WPARAM, para6: int32, para7: int32,

+                  para8: int32, para9: int32, para10: UINT): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "DrawStateW".}

+  proc TabbedTextOut*(hDC: HDC, X: int32, Y: int32, lpString: LPCWSTR,

+                      nCount: int32, nTabPositions: int32,

+                      lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.

+      stdcall, dynlib: "user32", importc: "TabbedTextOutW".}

+  proc GetTabbedTextExtent*(hDC: HDC, lpString: LPCWSTR, nCount: int32,

+                            nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.

+      stdcall, dynlib: "user32", importc: "GetTabbedTextExtentW".}

+  proc SetProp*(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetPropW".}

+  proc GetProp*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,

+      dynlib: "user32", importc: "GetPropW".}

+  proc RemoveProp*(hWnd: HWND, lpString: LPCWSTR): HANDLE{.stdcall,

+      dynlib: "user32", importc: "RemovePropW".}

+  proc EnumPropsEx*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.

+      stdcall, dynlib: "user32", importc: "EnumPropsExW".}

+  proc EnumProps*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,

+      dynlib: "user32", importc: "EnumPropsW".}

+  proc SetWindowText*(hWnd: HWND, lpString: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetWindowTextW".}

+  proc GetWindowText*(hWnd: HWND, lpString: LPWSTR, nMaxCount: int32): int32{.

+      stdcall, dynlib: "user32", importc: "GetWindowTextW".}

+  proc GetWindowTextLength*(hWnd: HWND): int32{.stdcall, dynlib: "user32",

+      importc: "GetWindowTextLengthW".}

+  proc MessageBox*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT): int32{.

+      stdcall, dynlib: "user32", importc: "MessageBoxW".}

+  proc MessageBoxEx*(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR,

+                     uType: UINT, wLanguageId: int16): int32{.stdcall,

+      dynlib: "user32", importc: "MessageBoxExW".}

+  proc MessageBoxIndirect*(para1: LPMSGBOXPARAMS): int32{.stdcall,

+      dynlib: "user32", importc: "MessageBoxIndirectW".}

+  proc GetWindowLong*(hWnd: HWND, nIndex: int32): LONG{.stdcall,

+      dynlib: "user32", importc: "GetWindowLongW".}

+  proc SetWindowLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.

+      stdcall, dynlib: "user32", importc: "SetWindowLongW".}

+  proc GetClassLong*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,

+      dynlib: "user32", importc: "GetClassLongW".}

+  proc SetClassLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.

+      stdcall, dynlib: "user32", importc: "SetClassLongW".}

+  when defined(cpu64):

+    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetWindowLongPtrW".}

+    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetWindowLongPtrW".}

+    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetClassLongPtrW".}

+    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetClassLongPtrW".}

+  else:

+    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetWindowLongW".}

+    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetWindowLongW".}

+    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetClassLongW".}

+    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetClassLongW".}

+  proc FindWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR): HWND{.stdcall,

+      dynlib: "user32", importc: "FindWindowW".}

+  proc FindWindowEx*(para1: HWND, para2: HWND, para3: LPCWSTR, para4: LPCWSTR): HWND{.

+      stdcall, dynlib: "user32", importc: "FindWindowExW".}

+  proc GetClassName*(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: int32): int32{.

+      stdcall, dynlib: "user32", importc: "GetClassNameW".}

+  proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,

+                         dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",

+      importc: "SetWindowsHookExW".}

+  proc LoadBitmap*(hInstance: HINST, lpBitmapName: LPCWSTR): HBITMAP{.stdcall,

+      dynlib: "user32", importc: "LoadBitmapW".}

+  proc LoadCursor*(hInstance: HINST, lpCursorName: LPCWSTR): HCURSOR{.stdcall,

+      dynlib: "user32", importc: "LoadCursorW".}

+  proc LoadCursorFromFile*(lpFileName: LPCWSTR): HCURSOR{.stdcall,

+      dynlib: "user32", importc: "LoadCursorFromFileW".}

+  proc LoadIcon*(hInstance: HINST, lpIconName: LPCWSTR): HICON{.stdcall,

+      dynlib: "user32", importc: "LoadIconW".}

+  proc LoadImage*(para1: HINST, para2: LPCWSTR, para3: UINT, para4: int32,

+                  para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",

+      importc: "LoadImageW".}

+  proc LoadString*(hInstance: HINST, uID: UINT, lpBuffer: LPWSTR,

+                   nBufferMax: int32): int32{.stdcall, dynlib: "user32",

+      importc: "LoadStringW".}

+  proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "IsDialogMessageW".}

+  proc DlgDirList*(hDlg: HWND, lpPathSpec: LPWSTR, nIDListBox: int32,

+                   nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,

+      dynlib: "user32", importc: "DlgDirListW".}

+  proc DlgDirSelectEx*(hDlg: HWND, lpString: LPWSTR, nCount: int32,

+                       nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "DlgDirSelectExW".}

+  proc DlgDirListComboBox*(hDlg: HWND, lpPathSpec: LPWSTR, nIDComboBox: int32,

+                           nIDStaticPath: int32, uFiletype: UINT): int32{.

+      stdcall, dynlib: "user32", importc: "DlgDirListComboBoxW".}

+  proc DlgDirSelectComboBoxEx*(hDlg: HWND, lpString: LPWSTR, nCount: int32,

+                               nIDComboBox: int32): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "DlgDirSelectComboBoxExW".}

+  proc DefFrameProc*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT,

+                     wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,

+      dynlib: "user32", importc: "DefFrameProcW".}

+  proc DefMDIChildProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "DefMDIChildProcW".}

+  proc CreateMDIWindow*(lpClassName: LPWSTR, lpWindowName: LPWSTR,

+                        dwStyle: DWORD, X: int32, Y: int32, nWidth: int32,

+                        nHeight: int32, hWndParent: HWND, hInstance: HINST,

+                        lParam: LPARAM): HWND{.stdcall, dynlib: "user32",

+      importc: "CreateMDIWindowW".}

+  proc WinHelp*(hWndMain: HWND, lpszHelp: LPCWSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "WinHelpW".}

+  proc ChangeDisplaySettings*(lpDevMode: LPDEVMODE, dwFlags: DWORD): LONG{.

+      stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}

+  proc EnumDisplaySettings*(lpszDeviceName: LPCWSTR, iModeNum: DWORD,

+                            lpDevMode: LPDEVMODEW): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "EnumDisplaySettingsW".}

+  proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,

+                             fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "SystemParametersInfoW".}

+  proc AddFontResource*(para1: LPCWSTR): int32{.stdcall, dynlib: "gdi32",

+      importc: "AddFontResourceW".}

+  proc CopyMetaFile*(para1: HMETAFILE, para2: LPCWSTR): HMETAFILE{.stdcall,

+      dynlib: "gdi32", importc: "CopyMetaFileW".}

+  proc CreateFontIndirect*(para1: PLOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+      importc: "CreateFontIndirectW".}

+  proc CreateFontIndirect*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+      importc: "CreateFontIndirectW".}

+  proc CreateFont*(para1: int32, para2: int32, para3: int32, para4: int32,

+                   para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,

+                   para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,

+                   para13: DWORD, para14: LPCWSTR): HFONT{.stdcall,

+      dynlib: "gdi32", importc: "CreateFontW".}

+  proc CreateIC*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR,

+                 para4: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",

+      importc: "CreateICW".}

+  proc CreateMetaFile*(para1: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",

+      importc: "CreateMetaFileW".}

+  proc CreateScalableFontResource*(para1: DWORD, para2: LPCWSTR, para3: LPCWSTR,

+                                   para4: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "CreateScalableFontResourceW".}

+  proc EnumFontFamiliesEx*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,

+                           para4: LPARAM, para5: DWORD): int32{.stdcall,

+      dynlib: "gdi32", importc: "EnumFontFamiliesExW".}

+  proc EnumFontFamilies*(para1: HDC, para2: LPCWSTR, para3: FONTENUMPROC,

+                         para4: LPARAM): int32{.stdcall, dynlib: "gdi32",

+      importc: "EnumFontFamiliesW".}

+  proc EnumFonts*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC,

+                  para4: LPARAM): int32{.stdcall, dynlib: "gdi32",

+      importc: "EnumFontsW".}

+  proc EnumFonts*(para1: HDC, para2: LPCWSTR, para3: ENUMFONTSPROC,

+                  para4: pointer): int32{.stdcall, dynlib: "gdi32",

+      importc: "EnumFontsW".}

+  proc GetCharWidth*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharWidthW".}

+  proc GetCharWidth32*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharWidth32W".}

+  proc GetCharWidthFloat*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}

+  proc GetCharABCWidths*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}

+  proc GetCharABCWidthsFloat*(para1: HDC, para2: UINT, para3: UINT,

+                              para4: LPABCFLOAT): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}

+  proc GetGlyphOutline*(para1: HDC, para2: UINT, para3: UINT,

+                        para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,

+                        para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",

+      importc: "GetGlyphOutlineW".}

+  proc GetMetaFile*(para1: LPCWSTR): HMETAFILE{.stdcall, dynlib: "gdi32",

+      importc: "GetMetaFileW".}

+  proc GetOutlineTextMetrics*(para1: HDC, para2: UINT,

+                              para3: LPOUTLINETEXTMETRIC): UINT{.stdcall,

+      dynlib: "gdi32", importc: "GetOutlineTextMetricsW".}

+  proc GetTextExtentPoint*(para1: HDC, para2: LPCWSTR, para3: int32,

+                           para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetTextExtentPointW".}

+  proc GetTextExtentPoint32*(para1: HDC, para2: LPCWSTR, para3: int32,

+                             para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetTextExtentPoint32W".}

+  proc GetTextExtentExPoint*(para1: HDC, para2: LPCWSTR, para3: int32,

+                             para4: int32, para5: LPINT, para6: LPINT,

+                             para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetTextExtentExPointW".}

+  proc GetCharacterPlacement*(para1: HDC, para2: LPCWSTR, para3: int32,

+                              para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.

+      stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementW".}

+  proc ResetDC*(para1: HDC, para2: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",

+      importc: "ResetDCW".}

+  proc RemoveFontResource*(para1: LPCWSTR): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "RemoveFontResourceW".}

+  proc CopyEnhMetaFile*(para1: HENHMETAFILE, para2: LPCWSTR): HENHMETAFILE{.

+      stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileW".}

+  proc CreateEnhMetaFile*(para1: HDC, para2: LPCWSTR, para3: LPRECT,

+                          para4: LPCWSTR): HDC{.stdcall, dynlib: "gdi32",

+      importc: "CreateEnhMetaFileW".}

+  proc GetEnhMetaFile*(para1: LPCWSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",

+      importc: "GetEnhMetaFileW".}

+  proc GetEnhMetaFileDescription*(para1: HENHMETAFILE, para2: UINT,

+                                  para3: LPWSTR): UINT{.stdcall,

+      dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionW".}

+  proc GetTextMetrics*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "GetTextMetricsW".}

+  proc StartDoc*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",

+      importc: "StartDocW".}

+  proc GetObject*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,

+      dynlib: "gdi32", importc: "GetObjectW".}

+  proc TextOut*(para1: HDC, para2: int32, para3: int32, para4: LPCWSTR,

+                para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+                                        importc: "TextOutW".}

+  proc ExtTextOut*(para1: HDC, para2: int32, para3: int32, para4: UINT,

+                   para5: LPRECT, para6: LPCWSTR, para7: UINT, para8: LPINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "ExtTextOutW".}

+  proc PolyTextOut*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}

+  proc GetTextFace*(para1: HDC, para2: int32, para3: LPWSTR): int32{.stdcall,

+      dynlib: "gdi32", importc: "GetTextFaceW".}

+  proc GetKerningPairs*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.

+      stdcall, dynlib: "gdi32", importc: "GetKerningPairsW".}

+  proc GetLogColorSpace*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE,

+                         para3: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetLogColorSpaceW".}

+  proc CreateColorSpace*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,

+      dynlib: "gdi32", importc: "CreateColorSpaceW".}

+  proc GetICMProfile*(para1: HDC, para2: DWORD, para3: LPWSTR): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetICMProfileW".}

+  proc SetICMProfile*(para1: HDC, para2: LPWSTR): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "SetICMProfileW".}

+  proc UpdateICMRegKey*(para1: DWORD, para2: DWORD, para3: LPWSTR, para4: UINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyW".}

+  proc EnumICMProfiles*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.

+      stdcall, dynlib: "gdi32", importc: "EnumICMProfilesW".}

+  proc CreatePropertySheetPage*(lppsp: LPCPROPSHEETPAGE): HPROPSHEETPAGE{.

+      stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageW".}

+  proc PropertySheet*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,

+      dynlib: "comctl32", importc: "PropertySheetW".}

+  proc ImageList_LoadImage*(hi: HINST, lpbmp: LPCWSTR, cx: int32, cGrow: int32,

+                            crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.

+      stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageW".}

+  proc CreateStatusWindow*(style: LONG, lpszText: LPCWSTR, hwndParent: HWND,

+                           wID: UINT): HWND{.stdcall, dynlib: "comctl32",

+      importc: "CreateStatusWindowW".}

+  proc DrawStatusText*(hDC: HDC, lprc: LPRECT, pszText: LPCWSTR, uFlags: UINT){.

+      stdcall, dynlib: "comctl32", importc: "DrawStatusTextW".}

+  proc GetOpenFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+      dynlib: "comdlg32", importc: "GetOpenFileNameW".}

+  proc GetSaveFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+      dynlib: "comdlg32", importc: "GetSaveFileNameW".}

+  proc GetFileTitle*(para1: LPCWSTR, para2: LPWSTR, para3: int16): int{.stdcall,

+      dynlib: "comdlg32", importc: "GetFileTitleW".}

+  proc ChooseColor*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",

+      importc: "ChooseColorW".}

+  proc ReplaceText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+      importc: "ReplaceTextW".}

+  proc ChooseFont*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",

+      importc: "ChooseFontW".}

+  proc FindText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+      importc: "FindTextW".}

+  proc PrintDlg*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",

+      importc: "PrintDlgW".}

+  proc PageSetupDlg*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,

+      dynlib: "comdlg32", importc: "PageSetupDlgW".}

+  proc CreateProcess*(lpApplicationName: LPCWSTR, lpCommandLine: LPWSTR,

+                      lpProcessAttributes: LPSECURITY_ATTRIBUTES,

+                      lpThreadAttributes: LPSECURITY_ATTRIBUTES,

+                      bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                      lpEnvironment: LPVOID, lpCurrentDirectory: LPCWSTR,

+                      lpStartupInfo: LPSTARTUPINFO,

+                      lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CreateProcessW".}

+  proc GetStartupInfo*(lpStartupInfo: LPSTARTUPINFO){.stdcall,

+      dynlib: "kernel32", importc: "GetStartupInfoW".}

+  proc FindFirstFile*(lpFileName: LPCWSTR, lpFindFileData: LPWIN32_FIND_DATA): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}

+  proc FindNextFile*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATA): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "FindNextFileW".}

+  proc GetVersionEx*(VersionInformation: LPOSVERSIONINFOW): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetVersionExW".}

+  proc GetVersionExW*(VersionInformation: LPOSVERSIONINFOW): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetVersionExW".}

+  proc CreateWindow*(lpClassName: LPCWSTR, lpWindowName: LPCWSTR,

+                     dwStyle: DWORD, X: int32, Y: int32, nWidth: int32,

+                     nHeight: int32, hWndParent: HWND, hMenu: HMENU,

+                     hInstance: HINST, lpParam: LPVOID): HWND

+  proc CreateDialog*(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,

+                     lpDialogFunc: DLGPROC): HWND

+  proc CreateDialogIndirect*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                             hWndParent: HWND, lpDialogFunc: DLGPROC): HWND

+  proc DialogBox*(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,

+                  lpDialogFunc: DLGPROC): int32

+  proc DialogBoxIndirect*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                          hWndParent: HWND, lpDialogFunc: DLGPROC): int32

+  proc CreateDC*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR, para4: pDEVMODE): HDC{.

+      stdcall, dynlib: "gdi32", importc: "CreateDCW".}

+  proc VerInstallFile*(uFlags: DWORD, szSrcFileName: LPWSTR,

+                       szDestFileName: LPWSTR, szSrcDir: LPWSTR,

+                       szDestDir: LPWSTR, szCurDir: LPWSTR, szTmpFile: LPWSTR,

+                       lpuTmpFileLen: PUINT): DWORD{.stdcall, dynlib: "version",

+      importc: "VerInstallFileW".}

+  proc GetFileVersionInfoSize*(lptstrFilename: LPWSTR, lpdwHandle: LPDWORD): DWORD{.

+      stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}

+  proc GetFileVersionInfo*(lptstrFilename: LPWSTR, dwHandle: DWORD,

+                           dwLen: DWORD, lpData: LPVOID): WINBOOL{.stdcall,

+      dynlib: "version", importc: "GetFileVersionInfoW".}

+  proc VerLanguageName*(wLang: DWORD, szLang: LPWSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "VerLanguageNameW".}

+  proc VerQueryValue*(pBlock: LPVOID, lpSubBlock: LPWSTR, lplpBuffer: LPVOID,

+                      puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",

+      importc: "VerQueryValueW".}

+  proc VerFindFile*(uFlags: DWORD, szFileName: LPWSTR, szWinDir: LPWSTR,

+                    szAppDir: LPWSTR, szCurDir: LPWSTR, lpuCurDirLen: PUINT,

+                    szDestDir: LPWSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,

+      dynlib: "version", importc: "VerFindFileW".}

+  proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD,

+                      dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}

+  proc RegUnLoadKey*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegUnLoadKeyW".}

+  proc InitiateSystemShutdown*(lpMachineName: LPWSTR, lpMessage: LPWSTR,

+                               dwTimeout: DWORD, bForceAppsClosed: WINBOOL,

+                               bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "InitiateSystemShutdownW".}

+  proc AbortSystemShutdown*(lpMachineName: LPWSTR): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "AbortSystemShutdownW".}

+  proc RegRestoreKey*(hKey: HKEY, lpFile: LPCWSTR, dwFlags: DWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegRestoreKeyW".}

+  proc RegSaveKey*(hKey: HKEY, lpFile: LPCWSTR,

+                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegSaveKeyW".}

+  proc RegSetValue*(hKey: HKEY, lpSubKey: LPCWSTR, dwType: DWORD,

+                    lpData: LPCWSTR, cbData: DWORD): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegSetValueW".}

+  proc RegQueryValue*(hKey: HKEY, lpSubKey: LPCWSTR, lpValue: LPWSTR,

+                      lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",

+      importc: "RegQueryValueW".}

+  proc RegQueryMultipleValues*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,

+                               lpValueBuf: LPWSTR, ldwTotsize: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}

+  proc RegQueryValueEx*(hKey: HKEY, lpValueName: LPCWSTR, lpReserved: LPDWORD,

+                        lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegQueryValueExW".}

+  proc RegReplaceKey*(hKey: HKEY, lpSubKey: LPCWSTR, lpNewFile: LPCWSTR,

+                      lpOldFile: LPCWSTR): LONG{.stdcall, dynlib: "advapi32",

+      importc: "RegReplaceKeyW".}

+  proc RegConnectRegistry*(lpMachineName: LPWSTR, hKey: HKEY, phkResult: PHKEY): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}

+  proc RegCreateKey*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}

+  proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, Reserved: DWORD,

+                       lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                       phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}

+  proc RegDeleteKey*(hKey: HKEY, lpSubKey: LPCWSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegDeleteKeyW".}

+  proc RegDeleteValue*(hKey: HKEY, lpValueName: LPCWSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegDeleteValueW".}

+  proc RegEnumKey*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR, cbName: DWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegEnumKeyW".}

+  proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR,

+                     lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPWSTR,

+                     lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}

+  proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPWSTR,

+                     lpcbValueName: LPDWORD, lpReserved: LPDWORD,

+                     lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}

+  proc RegLoadKey*(hKey: HKEY, lpSubKey: LPCWSTR, lpFile: LPCWSTR): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegLoadKeyW".}

+  proc RegOpenKey*(hKey: HKEY, lpSubKey: LPCWSTR, phkResult: PHKEY): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}

+  proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: LPCWSTR, ulOptions: DWORD,

+                     samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegOpenKeyExW".}

+  proc RegQueryInfoKey*(hKey: HKEY, lpClass: LPWSTR, lpcbClass: LPDWORD,

+                        lpReserved: LPDWORD, lpcSubKeys: LPDWORD,

+                        lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,

+                        lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,

+                        lpcbMaxValueLen: LPDWORD,

+                        lpcbSecurityDescriptor: LPDWORD,

+                        lpftLastWriteTime: PFILETIME): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegQueryInfoKeyW".}

+  proc CompareString*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCWSTR,

+                      cchCount1: int32, lpString2: LPCWSTR, cchCount2: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "CompareStringW".}

+  proc LCMapString*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR,

+                    cchSrc: int32, lpDestStr: LPWSTR, cchDest: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "LCMapStringW".}

+  proc GetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR,

+                      cchData: int32): int32{.stdcall, dynlib: "kernel32",

+      importc: "GetLocaleInfoW".}

+  proc SetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetLocaleInfoW".}

+  proc GetTimeFormat*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,

+                      lpFormat: LPCWSTR, lpTimeStr: LPWSTR, cchTime: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "GetTimeFormatW".}

+  proc GetDateFormat*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,

+                      lpFormat: LPCWSTR, lpDateStr: LPWSTR, cchDate: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "GetDateFormatW".}

+  proc GetNumberFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,

+                        lpFormat: PNUMBERFMT, lpNumberStr: LPWSTR,

+                        cchNumber: int32): int32{.stdcall, dynlib: "kernel32",

+      importc: "GetNumberFormatW".}

+  proc GetCurrencyFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR,

+                          lpFormat: PCURRENCYFMT, lpCurrencyStr: LPWSTR,

+                          cchCurrency: int32): int32{.stdcall,

+      dynlib: "kernel32", importc: "GetCurrencyFormatW".}

+  proc EnumCalendarInfo*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,

+                         Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "EnumCalendarInfoW".}

+  proc EnumTimeFormats*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,

+                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "EnumTimeFormatsW".}

+  proc EnumDateFormats*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,

+                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "EnumDateFormatsW".}

+  proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCWSTR,

+                        cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetStringTypeExW".}

+  proc GetStringType*(dwInfoType: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,

+                      lpCharType: LPWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "GetStringTypeW".}

+  proc FoldString*(dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: int32,

+                   lpDestStr: LPWSTR, cchDest: int32): int32{.stdcall,

+      dynlib: "kernel32", importc: "FoldStringW".}

+  proc EnumSystemLocales*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesW".}

+  proc EnumSystemCodePages*(lpCodePageEnumProc: CODEPAGE_ENUMPROC,

+                            dwFlags: DWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "EnumSystemCodePagesW".}

+  proc PeekConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}

+  proc ReadConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}

+  proc WriteConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                          nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}

+  proc ReadConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                          dwBufferSize: COORD, dwBufferCoord: COORD,

+                          lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "ReadConsoleOutputW".}

+  proc WriteConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                           dwBufferSize: COORD, dwBufferCoord: COORD,

+                           lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "WriteConsoleOutputW".}

+  proc ReadConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPWSTR,

+                                   nLength: DWORD, dwReadCoord: COORD,

+                                   lpNumberOfCharsRead: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}

+  proc WriteConsoleOutputCharacter*(hConsoleOutput: HANDLE,

+                                    lpCharacter: LPCWSTR, nLength: DWORD,

+                                    dwWriteCoord: COORD,

+                                    lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}

+  proc FillConsoleOutputCharacter*(hConsoleOutput: HANDLE, cCharacter: WCHAR,

+                                   nLength: DWORD, dwWriteCoord: COORD,

+                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}

+  proc ScrollConsoleScreenBuffer*(hConsoleOutput: HANDLE,

+                                  lpScrollRectangle: PSMALL_RECT,

+                                  lpClipRectangle: PSMALL_RECT,

+                                  dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}

+  proc GetConsoleTitle*(lpConsoleTitle: LPWSTR, nSize: DWORD): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetConsoleTitleW".}

+  proc SetConsoleTitle*(lpConsoleTitle: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetConsoleTitleW".}

+  proc ReadConsole*(hConsoleInput: HANDLE, lpBuffer: LPVOID,

+                    nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,

+                    lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "ReadConsoleW".}

+  proc WriteConsole*(hConsoleOutput: HANDLE, lpBuffer: pointer,

+                     nNumberOfCharsToWrite: DWORD,

+                     lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}

+  proc WNetAddConnection*(lpRemoteName: LPCWSTR, lpPassword: LPCWSTR,

+                          lpLocalName: LPCWSTR): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetAddConnectionW".}

+  proc WNetAddConnection2*(lpNetResource: LPNETRESOURCE, lpPassword: LPCWSTR,

+                           lpUserName: LPCWSTR, dwFlags: DWORD): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetAddConnection2W".}

+  proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                           lpPassword: LPCWSTR, lpUserName: LPCWSTR,

+                           dwFlags: DWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetAddConnection3W".}

+  proc WNetCancelConnection*(lpName: LPCWSTR, fForce: WINBOOL): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetCancelConnectionW".}

+  proc WNetCancelConnection2*(lpName: LPCWSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetCancelConnection2W".}

+  proc WNetGetConnection*(lpLocalName: LPCWSTR, lpRemoteName: LPWSTR,

+                          lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetGetConnectionW".}

+  proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                          lpUserID: LPCWSTR, lpPassword: LPCWSTR,

+                          dwFlags: DWORD, lpAccessName: LPWSTR,

+                          lpBufferSize: LPDWORD, lpResult: LPDWORD): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetUseConnectionW".}

+  proc WNetSetConnection*(lpName: LPCWSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetSetConnectionW".}

+  proc WNetConnectionDialog1*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1W".}

+  proc WNetDisconnectDialog1*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetDisconnectDialog1W".}

+  proc WNetOpenEnum*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,

+                     lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetOpenEnumW".}

+  proc WNetEnumResource*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,

+                         lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetEnumResourceW".}

+  proc WNetGetUniversalName*(lpLocalPath: LPCWSTR, dwInfoLevel: DWORD,

+                             lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}

+  proc WNetGetUser*(lpName: LPCWSTR, lpUserName: LPWSTR, lpnLength: LPDWORD): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetGetUserW".}

+  proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: LPWSTR,

+                            lpBufferSize: LPDWORD): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetGetProviderNameW".}

+  proc WNetGetNetworkInformation*(lpProvider: LPCWSTR,

+                                  lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}

+  proc WNetGetLastError*(lpError: LPDWORD, lpErrorBuf: LPWSTR,

+                         nErrorBufSize: DWORD, lpNameBuf: LPWSTR,

+                         nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetGetLastErrorW".}

+  proc MultinetGetConnectionPerformance*(lpNetResource: LPNETRESOURCE,

+      lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,

+      dynlib: "mpr", importc: "MultinetGetConnectionPerformanceW".}

+  proc ChangeServiceConfig*(hService: SC_HANDLE, dwServiceType: DWORD,

+                            dwStartType: DWORD, dwErrorControl: DWORD,

+                            lpBinaryPathName: LPCWSTR,

+                            lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD,

+                            lpDependencies: LPCWSTR,

+                            lpServiceStartName: LPCWSTR, lpPassword: LPCWSTR,

+                            lpDisplayName: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ChangeServiceConfigW".}

+  proc CreateService*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,

+                      lpDisplayName: LPCWSTR, dwDesiredAccess: DWORD,

+                      dwServiceType: DWORD, dwStartType: DWORD,

+                      dwErrorControl: DWORD, lpBinaryPathName: LPCWSTR,

+                      lpLoadOrderGroup: LPCWSTR, lpdwTagId: LPDWORD,

+                      lpDependencies: LPCWSTR, lpServiceStartName: LPCWSTR,

+                      lpPassword: LPCWSTR): SC_HANDLE{.stdcall,

+      dynlib: "advapi32", importc: "CreateServiceW".}

+  proc EnumDependentServices*(hService: SC_HANDLE, dwServiceState: DWORD,

+                              lpServices: LPENUM_SERVICE_STATUS,

+                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,

+                              lpServicesReturned: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "EnumDependentServicesW".}

+  proc EnumServicesStatus*(hSCManager: SC_HANDLE, dwServiceType: DWORD,

+                           dwServiceState: DWORD,

+                           lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,

+                           pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,

+                           lpResumeHandle: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "EnumServicesStatusW".}

+  proc GetServiceKeyName*(hSCManager: SC_HANDLE, lpDisplayName: LPCWSTR,

+                          lpServiceName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameW".}

+  proc GetServiceDisplayName*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,

+                              lpDisplayName: LPWSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameW".}

+  proc OpenSCManager*(lpMachineName: LPCWSTR, lpDatabaseName: LPCWSTR,

+                      dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+      dynlib: "advapi32", importc: "OpenSCManagerW".}

+  proc OpenService*(hSCManager: SC_HANDLE, lpServiceName: LPCWSTR,

+                    dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+      dynlib: "advapi32", importc: "OpenServiceW".}

+  proc QueryServiceConfig*(hService: SC_HANDLE,

+                           lpServiceConfig: LPQUERY_SERVICE_CONFIG,

+                           cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "QueryServiceConfigW".}

+  proc QueryServiceLockStatus*(hSCManager: SC_HANDLE,

+                               lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,

+                               cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusW".}

+  proc RegisterServiceCtrlHandler*(lpServiceName: LPCWSTR,

+                                   lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerW".}

+  proc StartServiceCtrlDispatcher*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherW".}

+  proc StartService*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,

+                     lpServiceArgVectors: LPCWSTR): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "StartServiceW".}

+  proc DragQueryFile*(para1: HDROP, para2: int, para3: LPCWSTR, para4: int): int{.

+      stdcall, dynlib: "shell32", importc: "DragQueryFileW".}

+  proc ExtractAssociatedIcon*(para1: HINST, para2: LPCWSTR, para3: LPWORD): HICON{.

+      stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconW".}

+  proc ExtractIcon*(para1: HINST, para2: LPCWSTR, para3: int): HICON{.stdcall,

+      dynlib: "shell32", importc: "ExtractIconW".}

+  proc FindExecutable*(para1: LPCWSTR, para2: LPCWSTR, para3: LPCWSTR): HINST{.

+      stdcall, dynlib: "shell32", importc: "FindExecutableW".}

+  proc ShellAbout*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR, para4: HICON): int32{.

+      stdcall, dynlib: "shell32", importc: "ShellAboutW".}

+  proc ShellExecute*(para1: HWND, para2: LPCWSTR, para3: LPCWSTR,

+                     para4: LPCWSTR, para5: LPCWSTR, para6: int32): HINST{.

+      stdcall, dynlib: "shell32", importc: "ShellExecuteW".}

+  proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.

+      stdcall, dynlib: "shell32", importc: "Shell_NotifyIconW".}

+  proc DdeCreateStringHandle*(para1: DWORD, para2: LPCWSTR, para3: int32): HSZ{.

+      stdcall, dynlib: "user32", importc: "DdeCreateStringHandleW".}

+  proc DdeInitialize*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,

+                      para4: DWORD): UINT{.stdcall, dynlib: "user32",

+      importc: "DdeInitializeW".}

+  proc DdeQueryString*(para1: DWORD, para2: HSZ, para3: LPCWSTR, para4: DWORD,

+                       para5: int32): DWORD{.stdcall, dynlib: "user32",

+      importc: "DdeQueryStringW".}

+  proc LogonUser*(para1: LPWSTR, para2: LPWSTR, para3: LPWSTR, para4: DWORD,

+                  para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "LogonUserW".}

+  proc CreateProcessAsUser*(para1: HANDLE, para2: LPCWSTR, para3: LPWSTR,

+                            para4: LPSECURITY_ATTRIBUTES,

+                            para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,

+                            para7: DWORD, para8: LPVOID, para9: LPCWSTR,

+                            para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserW".}

+else:

+  proc GetBinaryType*(lpApplicationName: LPCSTR, lpBinaryType: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}

+  proc GetShortPathName*(lpszLongPath: LPCSTR, lpszShortPath: LPSTR,

+                         cchBuffer: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "GetShortPathNameA".}

+  proc GetEnvironmentStrings*(): LPSTR{.stdcall, dynlib: "kernel32",

+                                        importc: "GetEnvironmentStringsA".}

+  proc FreeEnvironmentStrings*(para1: LPSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "FreeEnvironmentStringsA".}

+  proc FormatMessage*(dwFlags: DWORD, lpSource: LPCVOID, dwMessageId: DWORD,

+                      dwLanguageId: DWORD, lpBuffer: LPSTR, nSize: DWORD,

+                      Arguments: va_list): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "FormatMessageA".}

+  proc CreateMailslot*(lpName: LPCSTR, nMaxMessageSize: DWORD,

+                       lReadTimeout: DWORD,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateMailslotA".}

+  proc lstrcmp*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall,

+      dynlib: "kernel32", importc: "lstrcmpA".}

+  proc lstrcmpi*(lpString1: LPCSTR, lpString2: LPCSTR): int32{.stdcall,

+      dynlib: "kernel32", importc: "lstrcmpiA".}

+  proc lstrcpyn*(lpString1: LPSTR, lpString2: LPCSTR, iMaxLength: int32): LPSTR{.

+      stdcall, dynlib: "kernel32", importc: "lstrcpynA".}

+  proc lstrcpy*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR{.stdcall,

+      dynlib: "kernel32", importc: "lstrcpyA".}

+  proc lstrcat*(lpString1: LPSTR, lpString2: LPCSTR): LPSTR{.stdcall,

+      dynlib: "kernel32", importc: "lstrcatA".}

+  proc lstrlen*(lpString: LPCSTR): int32{.stdcall, dynlib: "kernel32",

+      importc: "lstrlenA".}

+  proc CreateMutex*(lpMutexAttributes: LPSECURITY_ATTRIBUTES,

+                    bInitialOwner: WINBOOL, lpName: LPCSTR): HANDLE{.stdcall,

+      dynlib: "kernel32", importc: "CreateMutexA".}

+  proc OpenMutex*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                  lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenMutexA".}

+  proc CreateEvent*(lpEventAttributes: LPSECURITY_ATTRIBUTES,

+                    bManualReset: WINBOOL, bInitialState: WINBOOL,

+                    lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "CreateEventA".}

+  proc OpenEvent*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                  lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenEventA".}

+  proc CreateSemaphore*(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES,

+                        lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateSemaphoreA".}

+  proc OpenSemaphore*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                      lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenSemaphoreA".}

+  proc CreateFileMapping*(hFile: HANDLE,

+                          lpFileMappingAttributes: LPSECURITY_ATTRIBUTES,

+                          flProtect: DWORD, dwMaximumSizeHigh: DWORD,

+                          dwMaximumSizeLow: DWORD, lpName: LPCSTR): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateFileMappingA".}

+  proc OpenFileMapping*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                        lpName: LPCSTR): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "OpenFileMappingA".}

+  proc GetLogicalDriveStrings*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetLogicalDriveStringsA".}

+  proc LoadLibrary*(lpLibFileName: LPCSTR): HINST{.stdcall, dynlib: "kernel32",

+      importc: "LoadLibraryA".}

+  proc LoadLibraryEx*(lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD): HINST{.

+      stdcall, dynlib: "kernel32", importc: "LoadLibraryExA".}

+  proc GetModuleFileName*(hModule: HINST, lpFilename: LPSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetModuleFileNameA".}

+  proc GetModuleHandle*(lpModuleName: LPCSTR): HMODULE{.stdcall,

+      dynlib: "kernel32", importc: "GetModuleHandleA".}

+  proc FatalAppExit*(uAction: UINT, lpMessageText: LPCSTR){.stdcall,

+      dynlib: "kernel32", importc: "FatalAppExitA".}

+  proc GetCommandLine*(): LPSTR{.stdcall, dynlib: "kernel32",

+                                 importc: "GetCommandLineA".}

+  proc GetEnvironmentVariable*(lpName: LPCSTR, lpBuffer: LPSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetEnvironmentVariableA".}

+  proc SetEnvironmentVariable*(lpName: LPCSTR, lpValue: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetEnvironmentVariableA".}

+  proc ExpandEnvironmentStrings*(lpSrc: LPCSTR, lpDst: LPSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "ExpandEnvironmentStringsA".}

+  proc OutputDebugString*(lpOutputString: LPCSTR){.stdcall, dynlib: "kernel32",

+      importc: "OutputDebugStringA".}

+  proc FindResource*(hModule: HINST, lpName: LPCSTR, lpType: LPCSTR): HRSRC{.

+      stdcall, dynlib: "kernel32", importc: "FindResourceA".}

+  proc FindResourceEx*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,

+                       wLanguage: int16): HRSRC{.stdcall, dynlib: "kernel32",

+      importc: "FindResourceExA".}

+  proc EnumResourceTypes*(hModule: HINST, lpEnumFunc: ENUMRESTYPEPROC,

+                          lParam: LONG): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "EnumResourceTypesA".}

+  proc EnumResourceNames*(hModule: HINST, lpType: LPCSTR,

+                          lpEnumFunc: ENUMRESNAMEPROC, lParam: LONG): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "EnumResourceNamesA".}

+  proc EnumResourceLanguages*(hModule: HINST, lpType: LPCSTR, lpName: LPCSTR,

+                              lpEnumFunc: ENUMRESLANGPROC, lParam: LONG): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "EnumResourceLanguagesA".}

+  proc BeginUpdateResource*(pFileName: LPCSTR, bDeleteExistingResources: WINBOOL): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "BeginUpdateResourceA".}

+  proc UpdateResource*(hUpdate: HANDLE, lpType: LPCSTR, lpName: LPCSTR,

+                       wLanguage: int16, lpData: LPVOID, cbData: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "UpdateResourceA".}

+  proc EndUpdateResource*(hUpdate: HANDLE, fDiscard: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "EndUpdateResourceA".}

+  proc GlobalAddAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "GlobalAddAtomA".}

+  proc GlobalFindAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "GlobalFindAtomA".}

+  proc GlobalGetAtomName*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.

+      stdcall, dynlib: "kernel32", importc: "GlobalGetAtomNameA".}

+  proc AddAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "AddAtomA".}

+  proc FindAtom*(lpString: LPCSTR): ATOM{.stdcall, dynlib: "kernel32",

+      importc: "FindAtomA".}

+  proc GetAtomName*(nAtom: ATOM, lpBuffer: LPSTR, nSize: int32): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetAtomNameA".}

+  proc GetProfileInt*(lpAppName: LPCSTR, lpKeyName: LPCSTR, nDefault: WINT): UINT{.

+      stdcall, dynlib: "kernel32", importc: "GetProfileIntA".}

+  proc GetProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                         lpDefault: LPCSTR, lpReturnedString: LPSTR,

+                         nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "GetProfileStringA".}

+  proc WriteProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                           lpString: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "WriteProfileStringA".}

+  proc GetProfileSection*(lpAppName: LPCSTR, lpReturnedString: LPSTR,

+                          nSize: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+      importc: "GetProfileSectionA".}

+  proc WriteProfileSection*(lpAppName: LPCSTR, lpString: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteProfileSectionA".}

+  proc GetPrivateProfileInt*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                             nDefault: WINT, lpFileName: LPCSTR): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetPrivateProfileIntA".}

+  proc GetPrivateProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                                lpDefault: LPCSTR, lpReturnedString: LPSTR,

+                                nSize: DWORD, lpFileName: LPCSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStringA".}

+  proc WritePrivateProfileString*(lpAppName: LPCSTR, lpKeyName: LPCSTR,

+                                  lpString: LPCSTR, lpFileName: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStringA".}

+  proc GetPrivateProfileSection*(lpAppName: LPCSTR, lpReturnedString: LPSTR,

+                                 nSize: DWORD, lpFileName: LPCSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetPrivateProfileSectionA".}

+  proc WritePrivateProfileSection*(lpAppName: LPCSTR, lpString: LPCSTR,

+                                   lpFileName: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "WritePrivateProfileSectionA".}

+  proc GetDriveType*(lpRootPathName: LPCSTR): UINT{.stdcall, dynlib: "kernel32",

+      importc: "GetDriveTypeA".}

+  proc GetSystemDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetSystemDirectoryA".}

+  proc GetTempPath*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetTempPathA".}

+  proc GetTempFileName*(lpPathName: LPCSTR, lpPrefixString: LPCSTR,

+                        uUnique: UINT, lpTempFileName: LPSTR): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetTempFileNameA".}

+  proc GetWindowsDirectory*(lpBuffer: LPSTR, uSize: UINT): UINT{.stdcall,

+      dynlib: "kernel32", importc: "GetWindowsDirectoryA".}

+  proc SetCurrentDirectory*(lpPathName: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetCurrentDirectoryA".}

+  proc GetCurrentDirectory*(nBufferLength: DWORD, lpBuffer: LPSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetCurrentDirectoryA".}

+  proc GetDiskFreeSpace*(lpRootPathName: LPCSTR, lpSectorsPerCluster: LPDWORD,

+                         lpBytesPerSector: LPDWORD,

+                         lpNumberOfFreeClusters: LPDWORD,

+                         lpTotalNumberOfClusters: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}

+  proc CreateDirectory*(lpPathName: LPCSTR,

+                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CreateDirectoryA".}

+  proc CreateDirectoryEx*(lpTemplateDirectory: LPCSTR, lpNewDirectory: LPCSTR,

+                          lpSecurityAttributes: LPSECURITY_ATTRIBUTES): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CreateDirectoryExA".}

+  proc RemoveDirectory*(lpPathName: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "RemoveDirectoryA".}

+  proc GetFullPathName*(lpFileName: LPCSTR, nBufferLength: DWORD,

+                        lpBuffer: LPSTR, lpFilePart: var LPSTR): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetFullPathNameA".}

+  proc DefineDosDevice*(dwFlags: DWORD, lpDeviceName: LPCSTR,

+                        lpTargetPath: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "DefineDosDeviceA".}

+  proc QueryDosDevice*(lpDeviceName: LPCSTR, lpTargetPath: LPSTR, ucchMax: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "QueryDosDeviceA".}

+  proc CreateFile*(lpFileName: LPCSTR, dwDesiredAccess: DWORD,

+                   dwShareMode: DWORD,

+                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                   dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD,

+                   hTemplateFile: HANDLE): HANDLE{.stdcall, dynlib: "kernel32",

+      importc: "CreateFileA".}

+  proc SetFileAttributes*(lpFileName: LPCSTR, dwFileAttributes: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetFileAttributesA".}

+  proc GetFileAttributes*(lpFileName: LPCSTR): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetFileAttributesA".}

+  proc GetCompressedFileSize*(lpFileName: LPCSTR, lpFileSizeHigh: LPDWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "GetCompressedFileSizeA".}

+  proc DeleteFile*(lpFileName: LPCSTR): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "DeleteFileA".}

+  proc SearchPath*(lpPath: LPCSTR, lpFileName: LPCSTR, lpExtension: LPCSTR,

+                   nBufferLength: DWORD, lpBuffer: LPSTR, lpFilePart: LPSTR): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "SearchPathA".}

+  proc CopyFile*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,

+                 bFailIfExists: WINBOOL): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "CopyFileA".}

+  proc MoveFile*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "MoveFileA".}

+  proc MoveFileEx*(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR,

+                   dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "MoveFileExA".}

+  proc CreateNamedPipe*(lpName: LPCSTR, dwOpenMode: DWORD, dwPipeMode: DWORD,

+                        nMaxInstances: DWORD, nOutBufferSize: DWORD,

+                        nInBufferSize: DWORD, nDefaultTimeOut: DWORD,

+                        lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "CreateNamedPipeA".}

+  proc GetNamedPipeHandleState*(hNamedPipe: HANDLE, lpState: LPDWORD,

+                                lpCurInstances: LPDWORD,

+                                lpMaxCollectionCount: LPDWORD,

+                                lpCollectDataTimeout: LPDWORD,

+                                lpUserName: LPSTR, nMaxUserNameSize: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "GetNamedPipeHandleStateA".}

+  proc CallNamedPipe*(lpNamedPipeName: LPCSTR, lpInBuffer: LPVOID,

+                      nInBufferSize: DWORD, lpOutBuffer: LPVOID,

+                      nOutBufferSize: DWORD, lpBytesRead: LPDWORD,

+                      nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "CallNamedPipeA".}

+  proc WaitNamedPipe*(lpNamedPipeName: LPCSTR, nTimeOut: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WaitNamedPipeA".}

+  proc SetVolumeLabel*(lpRootPathName: LPCSTR, lpVolumeName: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetVolumeLabelA".}

+  proc GetVolumeInformation*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPSTR,

+                             nVolumeNameSize: DWORD,

+                             lpVolumeSerialNumber: LPDWORD,

+                             lpMaximumComponentLength: LPDWORD,

+                             lpFileSystemFlags: LPDWORD,

+                             lpFileSystemNameBuffer: LPSTR,

+                             nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetVolumeInformationA".}

+  proc ClearEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "ClearEventLogA".}

+  proc BackupEventLog*(hEventLog: HANDLE, lpBackupFileName: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "BackupEventLogA".}

+  proc OpenEventLog*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "OpenEventLogA".}

+  proc RegisterEventSource*(lpUNCServerName: LPCSTR, lpSourceName: LPCSTR): HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "RegisterEventSourceA".}

+  proc OpenBackupEventLog*(lpUNCServerName: LPCSTR, lpFileName: LPCSTR): HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "OpenBackupEventLogA".}

+  proc ReadEventLog*(hEventLog: HANDLE, dwReadFlags: DWORD,

+                     dwRecordOffset: DWORD, lpBuffer: LPVOID,

+                     nNumberOfBytesToRead: DWORD, pnBytesRead: LPDWORD,

+                     pnMinNumberOfBytesNeeded: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ReadEventLogA".}

+  proc ReportEvent*(hEventLog: HANDLE, wType: int16, wCategory: int16,

+                    dwEventID: DWORD, lpUserSid: PSID, wNumStrings: int16,

+                    dwDataSize: DWORD, lpStrings: LPPCSTR, lpRawData: LPVOID): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "ReportEventA".}

+  proc AccessCheckAndAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                                 ObjectTypeName: LPSTR, ObjectName: LPSTR,

+                                 SecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 DesiredAccess: DWORD,

+                                 GenericMapping: PGENERIC_MAPPING,

+                                 ObjectCreation: WINBOOL,

+                                 GrantedAccess: LPDWORD, AccessStatus: LPBOOL,

+                                 pfGenerateOnClose: LPBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "AccessCheckAndAuditAlarmA".}

+  proc ObjectOpenAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                             ObjectTypeName: LPSTR, ObjectName: LPSTR,

+                             pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                             ClientToken: HANDLE, DesiredAccess: DWORD,

+                             GrantedAccess: DWORD, Privileges: PPRIVILEGE_SET,

+                             ObjectCreation: WINBOOL, AccessGranted: WINBOOL,

+                             GenerateOnClose: LPBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}

+  proc ObjectPrivilegeAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                                  ClientToken: HANDLE, DesiredAccess: DWORD,

+                                  Privileges: PPRIVILEGE_SET,

+                                  AccessGranted: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}

+  proc ObjectCloseAuditAlarm*(SubsystemName: LPCSTR, HandleId: LPVOID,

+                              GenerateOnClose: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ObjectCloseAuditAlarmA".}

+  proc PrivilegedServiceAuditAlarm*(SubsystemName: LPCSTR, ServiceName: LPCSTR,

+                                    ClientToken: HANDLE,

+                                    Privileges: PPRIVILEGE_SET,

+                                    AccessGranted: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}

+  proc SetFileSecurity*(lpFileName: LPCSTR,

+                        SecurityInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "SetFileSecurityA".}

+  proc GetFileSecurity*(lpFileName: LPCSTR,

+                        RequestedInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                        nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "GetFileSecurityA".}

+  proc FindFirstChangeNotification*(lpPathName: LPCSTR, bWatchSubtree: WINBOOL,

+                                    dwNotifyFilter: DWORD): HANDLE{.stdcall,

+      dynlib: "kernel32", importc: "FindFirstChangeNotificationA".}

+  proc IsBadStringPtr*(lpsz: LPCSTR, ucchMax: UINT): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "IsBadStringPtrA".}

+  proc LookupAccountSid*(lpSystemName: LPCSTR, Sid: PSID, Name: LPSTR,

+                         cbName: LPDWORD, ReferencedDomainName: LPSTR,

+                         cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "LookupAccountSidA".}

+  proc LookupAccountName*(lpSystemName: LPCSTR, lpAccountName: LPCSTR,

+                          Sid: PSID, cbSid: LPDWORD,

+                          ReferencedDomainName: LPSTR,

+                          cbReferencedDomainName: LPDWORD, peUse: PSID_NAME_USE): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "LookupAccountNameA".}

+  proc LookupPrivilegeValue*(lpSystemName: LPCSTR, lpName: LPCSTR, lpLuid: PLUID): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "LookupPrivilegeValueA".}

+  proc LookupPrivilegeName*(lpSystemName: LPCSTR, lpLuid: PLUID, lpName: LPSTR,

+                            cbName: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "LookupPrivilegeNameA".}

+  proc LookupPrivilegeDisplayName*(lpSystemName: LPCSTR, lpName: LPCSTR,

+                                   lpDisplayName: LPSTR, cbDisplayName: LPDWORD,

+                                   lpLanguageId: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}

+  proc BuildCommDCB*(lpDef: LPCSTR, lpDCB: LPDCB): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "BuildCommDCBA".}

+  proc BuildCommDCBAndTimeouts*(lpDef: LPCSTR, lpDCB: LPDCB,

+                                lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}

+  proc CommConfigDialog*(lpszName: LPCSTR, hWnd: HWND, lpCC: LPCOMMCONFIG): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}

+  proc GetDefaultCommConfig*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG,

+                             lpdwSize: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetDefaultCommConfigA".}

+  proc SetDefaultCommConfig*(lpszName: LPCSTR, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetDefaultCommConfigA".}

+  proc GetComputerName*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetComputerNameA".}

+  proc SetComputerName*(lpComputerName: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetComputerNameA".}

+  proc GetUserName*(lpBuffer: LPSTR, nSize: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "GetUserNameA".}

+  proc wvsprintf*(para1: LPSTR, para2: LPCSTR, arglist: va_list): int32{.

+      stdcall, dynlib: "user32", importc: "wvsprintfA".}

+  proc LoadKeyboardLayout*(pwszKLID: LPCSTR, Flags: UINT): HKL{.stdcall,

+      dynlib: "user32", importc: "LoadKeyboardLayoutA".}

+  proc GetKeyboardLayoutName*(pwszKLID: LPSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GetKeyboardLayoutNameA".}

+  proc CreateDesktop*(lpszDesktop: LPSTR, lpszDevice: LPSTR,

+                      pDevmode: LPDEVMODE, dwFlags: DWORD,

+                      dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HDESK{.

+      stdcall, dynlib: "user32", importc: "CreateDesktopA".}

+  proc OpenDesktop*(lpszDesktop: LPSTR, dwFlags: DWORD, fInherit: WINBOOL,

+                    dwDesiredAccess: DWORD): HDESK{.stdcall, dynlib: "user32",

+      importc: "OpenDesktopA".}

+  proc EnumDesktops*(hwinsta: HWINSTA, lpEnumFunc: DESKTOPENUMPROC,

+                     lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "EnumDesktopsA".}

+  proc CreateWindowStation*(lpwinsta: LPSTR, dwReserved: DWORD,

+                            dwDesiredAccess: DWORD, lpsa: LPSECURITY_ATTRIBUTES): HWINSTA{.

+      stdcall, dynlib: "user32", importc: "CreateWindowStationA".}

+  proc OpenWindowStation*(lpszWinSta: LPSTR, fInherit: WINBOOL,

+                          dwDesiredAccess: DWORD): HWINSTA{.stdcall,

+      dynlib: "user32", importc: "OpenWindowStationA".}

+  proc EnumWindowStations*(lpEnumFunc: ENUMWINDOWSTATIONPROC, lParam: LPARAM): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "EnumWindowStationsA".}

+  proc GetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                 nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}

+  proc SetUserObjectInformation*(hObj: HANDLE, nIndex: int32, pvInfo: PVOID,

+                                 nLength: DWORD): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetUserObjectInformationA".}

+  proc RegisterWindowMessage*(lpString: LPCSTR): UINT{.stdcall,

+      dynlib: "user32", importc: "RegisterWindowMessageA".}

+  proc GetMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                   wMsgFilterMax: UINT): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "GetMessageA".}

+  proc DispatchMessage*(lpMsg: LPMSG): LONG{.stdcall, dynlib: "user32",

+      importc: "DispatchMessageA".}

+  proc PeekMessage*(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT,

+                    wMsgFilterMax: UINT, wRemoveMsg: UINT): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "PeekMessageA".}

+  proc SendMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "SendMessageA".}

+  proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM,

+                           lParam: LPARAM, fuFlags: UINT, uTimeout: UINT,

+                           lpdwResult: LPDWORD): LRESULT{.stdcall,

+      dynlib: "user32", importc: "SendMessageTimeoutA".}

+  proc SendNotifyMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "SendNotifyMessageA".}

+  proc SendMessageCallback*(hWnd: HWND, Msg: UINT, wParam: WPARAM,

+                            lParam: LPARAM, lpResultCallBack: SENDASYNCPROC,

+                            dwData: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "SendMessageCallbackA".}

+  proc PostMessage*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "PostMessageA".}

+  proc PostThreadMessage*(idThread: DWORD, Msg: UINT, wParam: WPARAM,

+                          lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "PostThreadMessageA".}

+  proc DefWindowProc*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "DefWindowProcA".}

+  proc CallWindowProc*(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT,

+                       wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,

+      dynlib: "user32", importc: "CallWindowProcA".}

+  proc RegisterClass*(lpWndClass: LPWNDCLASS): ATOM{.stdcall, dynlib: "user32",

+      importc: "RegisterClassA".}

+  proc UnregisterClass*(lpClassName: LPCSTR, hInstance: HINST): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "UnregisterClassA".}

+  proc GetClassInfo*(hInstance: HINST, lpClassName: LPCSTR,

+                     lpWndClass: LPWNDCLASS): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GetClassInfoA".}

+  proc RegisterClassEx*(para1: LPWNDCLASSEX): ATOM{.stdcall, dynlib: "user32",

+      importc: "RegisterClassExA".}

+  proc GetClassInfoEx*(para1: HINST, para2: LPCSTR, para3: LPWNDCLASSEX): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "GetClassInfoExA".}

+  proc CreateWindowEx*(dwExStyle: DWORD, lpClassName: LPCSTR,

+                       lpWindowName: LPCSTR, dwStyle: DWORD, X: int32, Y: int32,

+                       nWidth: int32, nHeight: int32, hWndParent: HWND,

+                       hMenu: HMENU, hInstance: HINST, lpParam: LPVOID): HWND{.

+      stdcall, dynlib: "user32", importc: "CreateWindowExA".}

+  proc CreateDialogParam*(hInstance: HINST, lpTemplateName: LPCSTR,

+                          hWndParent: HWND, lpDialogFunc: DLGPROC,

+                          dwInitParam: LPARAM): HWND{.stdcall, dynlib: "user32",

+      importc: "CreateDialogParamA".}

+  proc CreateDialogIndirectParam*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                                  hWndParent: HWND, lpDialogFunc: DLGPROC,

+                                  dwInitParam: LPARAM): HWND{.stdcall,

+      dynlib: "user32", importc: "CreateDialogIndirectParamA".}

+  proc DialogBoxParam*(hInstance: HINST, lpTemplateName: LPCSTR,

+                       hWndParent: HWND, lpDialogFunc: DLGPROC,

+                       dwInitParam: LPARAM): int32{.stdcall, dynlib: "user32",

+      importc: "DialogBoxParamA".}

+  proc DialogBoxIndirectParam*(hInstance: HINST,

+                               hDialogTemplate: LPCDLGTEMPLATE,

+                               hWndParent: HWND, lpDialogFunc: DLGPROC,

+                               dwInitParam: LPARAM): int32{.stdcall,

+      dynlib: "user32", importc: "DialogBoxIndirectParamA".}

+  proc SetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "SetDlgItemTextA".}

+  proc GetDlgItemText*(hDlg: HWND, nIDDlgItem: int32, lpString: LPSTR,

+                       nMaxCount: int32): UINT{.stdcall, dynlib: "user32",

+      importc: "GetDlgItemTextA".}

+  proc SendDlgItemMessage*(hDlg: HWND, nIDDlgItem: int32, Msg: UINT,

+                           wParam: WPARAM, lParam: LPARAM): LONG{.stdcall,

+      dynlib: "user32", importc: "SendDlgItemMessageA".}

+  proc DefDlgProc*(hDlg: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "DefDlgProcA".}

+  proc CallMsgFilter*(lpMsg: LPMSG, nCode: int32): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "CallMsgFilterA".}

+  proc RegisterClipboardFormat*(lpszFormat: LPCSTR): UINT{.stdcall,

+      dynlib: "user32", importc: "RegisterClipboardFormatA".}

+  proc GetClipboardFormatName*(format: UINT, lpszFormatName: LPSTR,

+                               cchMaxCount: int32): int32{.stdcall,

+      dynlib: "user32", importc: "GetClipboardFormatNameA".}

+  proc CharToOem*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "CharToOemA".}

+  proc OemToChar*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "OemToCharA".}

+  proc CharToOemBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "CharToOemBuffA".}

+  proc OemToCharBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "OemToCharBuffA".}

+  proc CharUpper*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",

+                                       importc: "CharUpperA".}

+  proc CharUpperBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,

+      dynlib: "user32", importc: "CharUpperBuffA".}

+  proc CharLower*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",

+                                       importc: "CharLowerA".}

+  proc CharLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,

+      dynlib: "user32", importc: "CharLowerBuffA".}

+  proc CharNext*(lpsz: LPCSTR): LPSTR{.stdcall, dynlib: "user32",

+                                       importc: "CharNextA".}

+  proc CharPrev*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR{.stdcall,

+      dynlib: "user32", importc: "CharPrevA".}

+  proc IsCharAlpha*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "IsCharAlphaA".}

+  proc IsCharAlphaNumeric*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "IsCharAlphaNumericA".}

+  proc IsCharUpper*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "IsCharUpperA".}

+  proc IsCharLower*(ch: CHAR): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "IsCharLowerA".}

+  proc GetKeyNameText*(lParam: LONG, lpString: LPSTR, nSize: int32): int32{.

+      stdcall, dynlib: "user32", importc: "GetKeyNameTextA".}

+  proc VkKeyScan*(ch: CHAR): SHORT{.stdcall, dynlib: "user32",

+                                    importc: "VkKeyScanA".}

+  proc VkKeyScanEx*(ch: CHAR, dwhkl: HKL): SHORT{.stdcall, dynlib: "user32",

+      importc: "VkKeyScanExA".}

+  proc MapVirtualKey*(uCode: UINT, uMapType: UINT): UINT{.stdcall,

+      dynlib: "user32", importc: "MapVirtualKeyA".}

+  proc MapVirtualKeyEx*(uCode: UINT, uMapType: UINT, dwhkl: HKL): UINT{.stdcall,

+      dynlib: "user32", importc: "MapVirtualKeyExA".}

+  proc LoadAccelerators*(hInstance: HINST, lpTableName: LPCSTR): HACCEL{.

+      stdcall, dynlib: "user32", importc: "LoadAcceleratorsA".}

+  proc CreateAcceleratorTable*(para1: LPACCEL, para2: int32): HACCEL{.stdcall,

+      dynlib: "user32", importc: "CreateAcceleratorTableA".}

+  proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: LPACCEL,

+                             cAccelEntries: int32): int32{.stdcall,

+      dynlib: "user32", importc: "CopyAcceleratorTableA".}

+  proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: LPMSG): int32{.

+      stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}

+  proc LoadMenu*(hInstance: HINST, lpMenuName: LPCSTR): HMENU{.stdcall,

+      dynlib: "user32", importc: "LoadMenuA".}

+  proc LoadMenuIndirect*(lpMenuTemplate: LPMENUTEMPLATE): HMENU{.stdcall,

+      dynlib: "user32", importc: "LoadMenuIndirectA".}

+  proc ChangeMenu*(hMenu: HMENU, cmd: UINT, lpszNewItem: LPCSTR,

+                   cmdInsert: UINT, flags: UINT): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "ChangeMenuA".}

+  proc GetMenuString*(hMenu: HMENU, uIDItem: UINT, lpString: LPSTR,

+                      nMaxCount: int32, uFlag: UINT): int32{.stdcall,

+      dynlib: "user32", importc: "GetMenuStringA".}

+  proc InsertMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT,

+                   uIDNewItem: UINT, lpNewItem: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "InsertMenuA".}

+  proc AppendMenu*(hMenu: HMENU, uFlags: UINT, uIDNewItem: UINT,

+                   lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "AppendMenuA".}

+  proc ModifyMenu*(hMnu: HMENU, uPosition: UINT, uFlags: UINT, uIDNewItem: UINT,

+                   lpNewItem: LPCSTR): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "ModifyMenuA".}

+  proc InsertMenuItem*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                       para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "InsertMenuItemA".}

+  proc GetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                        para4: LPMENUITEMINFO): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GetMenuItemInfoA".}

+  proc SetMenuItemInfo*(para1: HMENU, para2: UINT, para3: WINBOOL,

+                        para4: LPCMENUITEMINFO): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetMenuItemInfoA".}

+  proc DrawText*(hDC: HDC, lpString: LPCSTR, nCount: int32, lpRect: LPRECT,

+                 uFormat: UINT): int32{.stdcall, dynlib: "user32",

+                                        importc: "DrawTextA".}

+  proc DrawTextEx*(para1: HDC, para2: LPSTR, para3: int32, para4: LPRECT,

+                   para5: UINT, para6: LPDRAWTEXTPARAMS): int32{.stdcall,

+      dynlib: "user32", importc: "DrawTextExA".}

+  proc GrayString*(hDC: HDC, hBrush: HBRUSH, lpOutputFunc: GRAYSTRINGPROC,

+                   lpData: LPARAM, nCount: int32, X: int32, Y: int32,

+                   nWidth: int32, nHeight: int32): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "GrayStringA".}

+  proc DrawState*(para1: HDC, para2: HBRUSH, para3: DRAWSTATEPROC,

+                  para4: LPARAM, para5: WPARAM, para6: int32, para7: int32,

+                  para8: int32, para9: int32, para10: UINT): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "DrawStateA".}

+  proc TabbedTextOut*(hDC: HDC, X: int32, Y: int32, lpString: LPCSTR,

+                      nCount: int32, nTabPositions: int32,

+                      lpnTabStopPositions: LPINT, nTabOrigin: int32): LONG{.

+      stdcall, dynlib: "user32", importc: "TabbedTextOutA".}

+  proc GetTabbedTextExtent*(hDC: HDC, lpString: LPCSTR, nCount: int32,

+                            nTabPositions: int32, lpnTabStopPositions: LPINT): DWORD{.

+      stdcall, dynlib: "user32", importc: "GetTabbedTextExtentA".}

+  proc SetProp*(hWnd: HWND, lpString: LPCSTR, hData: HANDLE): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetPropA".}

+  proc GetProp*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall,

+      dynlib: "user32", importc: "GetPropA".}

+  proc RemoveProp*(hWnd: HWND, lpString: LPCSTR): HANDLE{.stdcall,

+      dynlib: "user32", importc: "RemovePropA".}

+  proc EnumPropsEx*(hWnd: HWND, lpEnumFunc: PROPENUMPROCEX, lParam: LPARAM): int32{.

+      stdcall, dynlib: "user32", importc: "EnumPropsExA".}

+  proc EnumProps*(hWnd: HWND, lpEnumFunc: PROPENUMPROC): int32{.stdcall,

+      dynlib: "user32", importc: "EnumPropsA".}

+  proc SetWindowText*(hWnd: HWND, lpString: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "SetWindowTextA".}

+  proc GetWindowText*(hWnd: HWND, lpString: LPSTR, nMaxCount: int32): int32{.

+      stdcall, dynlib: "user32", importc: "GetWindowTextA".}

+  proc GetWindowTextLength*(hWnd: HWND): int32{.stdcall, dynlib: "user32",

+      importc: "GetWindowTextLengthA".}

+  proc MessageBox*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32{.

+      stdcall, dynlib: "user32", importc: "MessageBoxA".}

+  proc MessageBoxEx*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT,

+                     wLanguageId: int16): int32{.stdcall, dynlib: "user32",

+      importc: "MessageBoxExA".}

+  proc MessageBoxIndirect*(para1: LPMSGBOXPARAMS): int32{.stdcall,

+      dynlib: "user32", importc: "MessageBoxIndirectA".}

+  proc GetWindowLong*(hWnd: HWND, nIndex: int32): LONG{.stdcall,

+      dynlib: "user32", importc: "GetWindowLongA".}

+  proc SetWindowLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): LONG{.

+      stdcall, dynlib: "user32", importc: "SetWindowLongA".}

+  proc GetClassLong*(hWnd: HWND, nIndex: int32): DWORD{.stdcall,

+      dynlib: "user32", importc: "GetClassLongA".}

+  proc SetClassLong*(hWnd: HWND, nIndex: int32, dwNewLong: LONG): DWORD{.

+      stdcall, dynlib: "user32", importc: "SetClassLongA".}

+  when defined(cpu64):

+    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetWindowLongPtrA".}

+    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetWindowLongPtrA".}

+    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetClassLongPtrA".}

+    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetClassLongPtrA".}

+  else:

+    proc GetWindowLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetWindowLongA".}

+    proc SetWindowLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetWindowLongA".}

+    proc GetClassLongPtr*(hWnd: HWND, nIndex: int32): LONG_PTR{.stdcall,

+        dynlib: "user32", importc: "GetClassLongA".}

+    proc SetClassLongPtr*(hWnd: HWND, nIndex: int32, dwNewLong: LONG_PTR): LONG_PTR{.

+        stdcall, dynlib: "user32", importc: "SetClassLongA".}

+  proc FindWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR): HWND{.stdcall,

+      dynlib: "user32", importc: "FindWindowA".}

+  proc FindWindowEx*(para1: HWND, para2: HWND, para3: LPCSTR, para4: LPCSTR): HWND{.

+      stdcall, dynlib: "user32", importc: "FindWindowExA".}

+  proc GetClassName*(hWnd: HWND, lpClassName: LPSTR, nMaxCount: int32): int32{.

+      stdcall, dynlib: "user32", importc: "GetClassNameA".}

+  proc SetWindowsHookEx*(idHook: int32, lpfn: HOOKPROC, hmod: HINST,

+                         dwThreadId: DWORD): HHOOK{.stdcall, dynlib: "user32",

+      importc: "SetWindowsHookExA".}

+  proc LoadBitmap*(hInstance: HINST, lpBitmapName: LPCSTR): HBITMAP{.stdcall,

+      dynlib: "user32", importc: "LoadBitmapA".}

+  proc LoadCursor*(hInstance: HINST, lpCursorName: LPCSTR): HCURSOR{.stdcall,

+      dynlib: "user32", importc: "LoadCursorA".}

+  proc LoadCursorFromFile*(lpFileName: LPCSTR): HCURSOR{.stdcall,

+      dynlib: "user32", importc: "LoadCursorFromFileA".}

+  proc LoadIcon*(hInstance: HINST, lpIconName: LPCSTR): HICON{.stdcall,

+      dynlib: "user32", importc: "LoadIconA".}

+  proc LoadImage*(para1: HINST, para2: LPCSTR, para3: UINT, para4: int32,

+                  para5: int32, para6: UINT): HANDLE{.stdcall, dynlib: "user32",

+      importc: "LoadImageA".}

+  proc LoadString*(hInstance: HINST, uID: UINT, lpBuffer: LPSTR,

+                   nBufferMax: int32): int32{.stdcall, dynlib: "user32",

+      importc: "LoadStringA".}

+  proc IsDialogMessage*(hDlg: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "IsDialogMessageA".}

+  proc DlgDirList*(hDlg: HWND, lpPathSpec: LPSTR, nIDListBox: int32,

+                   nIDStaticPath: int32, uFileType: UINT): int32{.stdcall,

+      dynlib: "user32", importc: "DlgDirListA".}

+  proc DlgDirSelectEx*(hDlg: HWND, lpString: LPSTR, nCount: int32,

+                       nIDListBox: int32): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "DlgDirSelectExA".}

+  proc DlgDirListComboBox*(hDlg: HWND, lpPathSpec: LPSTR, nIDComboBox: int32,

+                           nIDStaticPath: int32, uFiletype: UINT): int32{.

+      stdcall, dynlib: "user32", importc: "DlgDirListComboBoxA".}

+  proc DlgDirSelectComboBoxEx*(hDlg: HWND, lpString: LPSTR, nCount: int32,

+                               nIDComboBox: int32): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "DlgDirSelectComboBoxExA".}

+  proc DefFrameProc*(hWnd: HWND, hWndMDIClient: HWND, uMsg: UINT,

+                     wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall,

+      dynlib: "user32", importc: "DefFrameProcA".}

+  proc DefMDIChildProc*(hWnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+      stdcall, dynlib: "user32", importc: "DefMDIChildProcA".}

+  proc CreateMDIWindow*(lpClassName: LPSTR, lpWindowName: LPSTR, dwStyle: DWORD,

+                        X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                        hWndParent: HWND, hInstance: HINST, lParam: LPARAM): HWND{.

+      stdcall, dynlib: "user32", importc: "CreateMDIWindowA".}

+  proc WinHelp*(hWndMain: HWND, lpszHelp: LPCSTR, uCommand: UINT, dwData: DWORD): WINBOOL{.

+      stdcall, dynlib: "user32", importc: "WinHelpA".}

+  proc ChangeDisplaySettings*(lpDevMode: LPDEVMODE, dwFlags: DWORD): LONG{.

+      stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}

+  proc EnumDisplaySettings*(lpszDeviceName: LPCSTR, iModeNum: DWORD,

+                            lpDevMode: LPDEVMODE): WINBOOL{.stdcall,

+      dynlib: "user32", importc: "EnumDisplaySettingsA".}

+  proc SystemParametersInfo*(uiAction: UINT, uiParam: UINT, pvParam: PVOID,

+                             fWinIni: UINT): WINBOOL{.stdcall, dynlib: "user32",

+      importc: "SystemParametersInfoA".}

+  proc AddFontResource*(para1: LPCSTR): int32{.stdcall, dynlib: "gdi32",

+      importc: "AddFontResourceA".}

+  proc CopyMetaFile*(para1: HMETAFILE, para2: LPCSTR): HMETAFILE{.stdcall,

+      dynlib: "gdi32", importc: "CopyMetaFileA".}

+  proc CreateFont*(para1: int32, para2: int32, para3: int32, para4: int32,

+                   para5: int32, para6: DWORD, para7: DWORD, para8: DWORD,

+                   para9: DWORD, para10: DWORD, para11: DWORD, para12: DWORD,

+                   para13: DWORD, para14: LPCSTR): HFONT{.stdcall,

+      dynlib: "gdi32", importc: "CreateFontA".}

+  proc CreateFontIndirect*(para1: LPLOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+      importc: "CreateFontIndirectA".}

+  proc CreateFontIndirect*(para1: var LOGFONT): HFONT{.stdcall, dynlib: "gdi32",

+      importc: "CreateFontIndirectA".}

+  proc CreateIC*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: LPDEVMODE): HDC{.

+      stdcall, dynlib: "gdi32", importc: "CreateICA".}

+  proc CreateMetaFile*(para1: LPCSTR): HDC{.stdcall, dynlib: "gdi32",

+      importc: "CreateMetaFileA".}

+  proc CreateScalableFontResource*(para1: DWORD, para2: LPCSTR, para3: LPCSTR,

+                                   para4: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "CreateScalableFontResourceA".}

+  proc EnumFontFamiliesEx*(para1: HDC, para2: LPLOGFONT, para3: FONTENUMEXPROC,

+                           para4: LPARAM, para5: DWORD): int32{.stdcall,

+      dynlib: "gdi32", importc: "EnumFontFamiliesExA".}

+  proc EnumFontFamilies*(para1: HDC, para2: LPCSTR, para3: FONTENUMPROC,

+                         para4: LPARAM): int32{.stdcall, dynlib: "gdi32",

+      importc: "EnumFontFamiliesA".}

+  proc EnumFonts*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC, para4: LPARAM): int32{.

+      stdcall, dynlib: "gdi32", importc: "EnumFontsA".}

+  proc EnumFonts*(para1: HDC, para2: LPCSTR, para3: ENUMFONTSPROC,

+                  para4: pointer): int32{.stdcall, dynlib: "gdi32",

+      importc: "EnumFontsA".}

+  proc GetCharWidth*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharWidthA".}

+  proc GetCharWidth32*(para1: HDC, para2: UINT, para3: UINT, para4: LPINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharWidth32A".}

+  proc GetCharWidthFloat*(para1: HDC, para2: UINT, para3: UINT, para4: ptr float32): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}

+  proc GetCharABCWidths*(para1: HDC, para2: UINT, para3: UINT, para4: LPABC): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}

+  proc GetCharABCWidthsFloat*(para1: HDC, para2: UINT, para3: UINT,

+                              para4: LPABCFLOAT): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}

+  proc GetGlyphOutline*(para1: HDC, para2: UINT, para3: UINT,

+                        para4: LPGLYPHMETRICS, para5: DWORD, para6: LPVOID,

+                        para7: PMAT2): DWORD{.stdcall, dynlib: "gdi32",

+      importc: "GetGlyphOutlineA".}

+  proc GetMetaFile*(para1: LPCSTR): HMETAFILE{.stdcall, dynlib: "gdi32",

+      importc: "GetMetaFileA".}

+  proc GetOutlineTextMetrics*(para1: HDC, para2: UINT,

+                              para3: LPOUTLINETEXTMETRIC): UINT{.stdcall,

+      dynlib: "gdi32", importc: "GetOutlineTextMetricsA".}

+  proc GetTextExtentPoint*(para1: HDC, para2: LPCSTR, para3: int32,

+                           para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetTextExtentPointA".}

+  proc GetTextExtentPoint32*(para1: HDC, para2: LPCSTR, para3: int32,

+                             para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetTextExtentPoint32A".}

+  proc GetTextExtentExPoint*(para1: HDC, para2: LPCSTR, para3: int32,

+                             para4: int32, para5: LPINT, para6: LPINT,

+                             para7: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetTextExtentExPointA".}

+  proc GetCharacterPlacement*(para1: HDC, para2: LPCSTR, para3: int32,

+                              para4: int32, para5: LPGCP_RESULTS, para6: DWORD): DWORD{.

+      stdcall, dynlib: "gdi32", importc: "GetCharacterPlacementA".}

+  proc ResetDC*(para1: HDC, para2: LPDEVMODE): HDC{.stdcall, dynlib: "gdi32",

+      importc: "ResetDCA".}

+  proc RemoveFontResource*(para1: LPCSTR): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "RemoveFontResourceA".}

+  proc CopyEnhMetaFile*(para1: HENHMETAFILE, para2: LPCSTR): HENHMETAFILE{.

+      stdcall, dynlib: "gdi32", importc: "CopyEnhMetaFileA".}

+  proc CreateEnhMetaFile*(para1: HDC, para2: LPCSTR, para3: LPRECT,

+                          para4: LPCSTR): HDC{.stdcall, dynlib: "gdi32",

+      importc: "CreateEnhMetaFileA".}

+  proc GetEnhMetaFile*(para1: LPCSTR): HENHMETAFILE{.stdcall, dynlib: "gdi32",

+      importc: "GetEnhMetaFileA".}

+  proc GetEnhMetaFileDescription*(para1: HENHMETAFILE, para2: UINT, para3: LPSTR): UINT{.

+      stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileDescriptionA".}

+  proc GetTextMetrics*(para1: HDC, para2: LPTEXTMETRIC): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "GetTextMetricsA".}

+  proc StartDoc*(para1: HDC, para2: PDOCINFO): int32{.stdcall, dynlib: "gdi32",

+      importc: "StartDocA".}

+  proc GetObject*(para1: HGDIOBJ, para2: int32, para3: LPVOID): int32{.stdcall,

+      dynlib: "gdi32", importc: "GetObjectA".}

+  proc TextOut*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,

+                para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+                                        importc: "TextOutA".}

+  proc ExtTextOut*(para1: HDC, para2: int32, para3: int32, para4: UINT,

+                   para5: LPRECT, para6: LPCSTR, para7: UINT, para8: LPINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "ExtTextOutA".}

+  proc PolyTextOut*(para1: HDC, para2: PPOLYTEXT, para3: int32): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}

+  proc GetTextFace*(para1: HDC, para2: int32, para3: LPSTR): int32{.stdcall,

+      dynlib: "gdi32", importc: "GetTextFaceA".}

+  proc GetKerningPairs*(para1: HDC, para2: DWORD, para3: LPKERNINGPAIR): DWORD{.

+      stdcall, dynlib: "gdi32", importc: "GetKerningPairsA".}

+  proc CreateColorSpace*(para1: LPLOGCOLORSPACE): HCOLORSPACE{.stdcall,

+      dynlib: "gdi32", importc: "CreateColorSpaceA".}

+  proc GetLogColorSpace*(para1: HCOLORSPACE, para2: LPLOGCOLORSPACE,

+                         para3: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",

+      importc: "GetLogColorSpaceA".}

+  proc GetICMProfile*(para1: HDC, para2: DWORD, para3: LPSTR): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "GetICMProfileA".}

+  proc SetICMProfile*(para1: HDC, para2: LPSTR): WINBOOL{.stdcall,

+      dynlib: "gdi32", importc: "SetICMProfileA".}

+  proc UpdateICMRegKey*(para1: DWORD, para2: DWORD, para3: LPSTR, para4: UINT): WINBOOL{.

+      stdcall, dynlib: "gdi32", importc: "UpdateICMRegKeyA".}

+  proc EnumICMProfiles*(para1: HDC, para2: ICMENUMPROC, para3: LPARAM): int32{.

+      stdcall, dynlib: "gdi32", importc: "EnumICMProfilesA".}

+  proc PropertySheet*(lppsph: LPCPROPSHEETHEADER): int32{.stdcall,

+      dynlib: "comctl32", importc: "PropertySheetA".}

+  proc ImageList_LoadImage*(hi: HINST, lpbmp: LPCSTR, cx: int32, cGrow: int32,

+                            crMask: COLORREF, uType: UINT, uFlags: UINT): HIMAGELIST{.

+      stdcall, dynlib: "comctl32", importc: "ImageList_LoadImageA".}

+  proc CreateStatusWindow*(style: LONG, lpszText: LPCSTR, hwndParent: HWND,

+                           wID: UINT): HWND{.stdcall, dynlib: "comctl32",

+      importc: "CreateStatusWindowA".}

+  proc DrawStatusText*(hDC: HDC, lprc: LPRECT, pszText: LPCSTR, uFlags: UINT){.

+      stdcall, dynlib: "comctl32", importc: "DrawStatusTextA".}

+  proc GetOpenFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+      dynlib: "comdlg32", importc: "GetOpenFileNameA".}

+  proc GetSaveFileName*(para1: LPOPENFILENAME): WINBOOL{.stdcall,

+      dynlib: "comdlg32", importc: "GetSaveFileNameA".}

+  proc GetFileTitle*(para1: LPCSTR, para2: LPSTR, para3: int16): int{.stdcall,

+      dynlib: "comdlg32", importc: "GetFileTitleA".}

+  proc ChooseColor*(para1: LPCHOOSECOLOR): WINBOOL{.stdcall, dynlib: "comdlg32",

+      importc: "ChooseColorA".}

+  proc FindText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+      importc: "FindTextA".}

+  proc ReplaceText*(para1: LPFINDREPLACE): HWND{.stdcall, dynlib: "comdlg32",

+      importc: "ReplaceTextA".}

+  proc ChooseFont*(para1: LPCHOOSEFONT): WINBOOL{.stdcall, dynlib: "comdlg32",

+      importc: "ChooseFontA".}

+  proc PrintDlg*(para1: LPPRINTDLG): WINBOOL{.stdcall, dynlib: "comdlg32",

+      importc: "PrintDlgA".}

+  proc PageSetupDlg*(para1: LPPAGESETUPDLG): WINBOOL{.stdcall,

+      dynlib: "comdlg32", importc: "PageSetupDlgA".}

+  proc CreateProcess*(lpApplicationName: LPCSTR, lpCommandLine: LPSTR,

+                      lpProcessAttributes: LPSECURITY_ATTRIBUTES,

+                      lpThreadAttributes: LPSECURITY_ATTRIBUTES,

+                      bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                      lpEnvironment: LPVOID, lpCurrentDirectory: LPCSTR,

+                      lpStartupInfo: LPSTARTUPINFO,

+                      lpProcessInformation: LPPROCESS_INFORMATION): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "CreateProcessA".}

+  proc GetStartupInfo*(lpStartupInfo: LPSTARTUPINFO){.stdcall,

+      dynlib: "kernel32", importc: "GetStartupInfoA".}

+  proc FindFirstFile*(lpFileName: LPCSTR, lpFindFileData: LPWIN32_FIND_DATA): HANDLE{.

+      stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}

+  proc FindNextFile*(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATA): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "FindNextFileA".}

+  proc GetVersionEx*(VersionInformation: LPOSVERSIONINFO): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetVersionExA".}

+  proc CreateWindow*(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,

+                     X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                     hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                     lpParam: LPVOID): HWND

+  proc CreateDialog*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                     lpDialogFunc: DLGPROC): HWND

+  proc CreateDialogIndirect*(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                             hWndParent: HWND, lpDialogFunc: DLGPROC): HWND

+  proc DialogBox*(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                  lpDialogFunc: DLGPROC): int32

+  proc DialogBoxIndirect*(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,

+                          hWndParent: HWND, lpDialogFunc: DLGPROC): int32

+  proc CreateDC*(para1: LPCSTR, para2: LPCSTR, para3: LPCSTR, para4: pDEVMODE): HDC{.

+      stdcall, dynlib: "gdi32", importc: "CreateDCA".}

+  proc VerInstallFile*(uFlags: DWORD, szSrcFileName: LPSTR,

+                       szDestFileName: LPSTR, szSrcDir: LPSTR, szDestDir: LPSTR,

+                       szCurDir: LPSTR, szTmpFile: LPSTR, lpuTmpFileLen: PUINT): DWORD{.

+      stdcall, dynlib: "version", importc: "VerInstallFileA".}

+  proc GetFileVersionInfoSize*(lptstrFilename: LPSTR, lpdwHandle: LPDWORD): DWORD{.

+      stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}

+  proc GetFileVersionInfo*(lptstrFilename: LPSTR, dwHandle: DWORD, dwLen: DWORD,

+                           lpData: LPVOID): WINBOOL{.stdcall, dynlib: "version",

+      importc: "GetFileVersionInfoA".}

+  proc VerLanguageName*(wLang: DWORD, szLang: LPSTR, nSize: DWORD): DWORD{.

+      stdcall, dynlib: "kernel32", importc: "VerLanguageNameA".}

+  proc VerQueryValue*(pBlock: LPVOID, lpSubBlock: LPSTR, lplpBuffer: LPVOID,

+                      puLen: PUINT): WINBOOL{.stdcall, dynlib: "version",

+      importc: "VerQueryValueA".}

+  proc VerFindFile*(uFlags: DWORD, szFileName: LPSTR, szWinDir: LPSTR,

+                    szAppDir: LPSTR, szCurDir: LPSTR, lpuCurDirLen: PUINT,

+                    szDestDir: LPSTR, lpuDestDirLen: PUINT): DWORD{.stdcall,

+      dynlib: "version", importc: "VerFindFileA".}

+  proc RegConnectRegistry*(lpMachineName: LPSTR, hKey: HKEY, phkResult: PHKEY): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}

+  proc RegCreateKey*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}

+  proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD,

+                       lpClass: LPSTR, dwOptions: DWORD, samDesired: REGSAM,

+                       lpSecurityAttributes: LPSECURITY_ATTRIBUTES,

+                       phkResult: PHKEY, lpdwDisposition: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}

+  proc RegDeleteKey*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegDeleteKeyA".}

+  proc RegDeleteValue*(hKey: HKEY, lpValueName: LPCSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegDeleteValueA".}

+  proc RegEnumKey*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR, cbName: DWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegEnumKeyA".}

+  proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: LPSTR,

+                     lpcbName: LPDWORD, lpReserved: LPDWORD, lpClass: LPSTR,

+                     lpcbClass: LPDWORD, lpftLastWriteTime: PFILETIME): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}

+  proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: LPSTR,

+                     lpcbValueName: LPDWORD, lpReserved: LPDWORD,

+                     lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}

+  proc RegLoadKey*(hKey: HKEY, lpSubKey: LPCSTR, lpFile: LPCSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegLoadKeyA".}

+  proc RegOpenKey*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: PHKEY): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}

+  proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD,

+                     samDesired: REGSAM, phkResult: PHKEY): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegOpenKeyExA".}

+  proc RegQueryInfoKey*(hKey: HKEY, lpClass: LPSTR, lpcbClass: LPDWORD,

+                        lpReserved: LPDWORD, lpcSubKeys: LPDWORD,

+                        lpcbMaxSubKeyLen: LPDWORD, lpcbMaxClassLen: LPDWORD,

+                        lpcValues: LPDWORD, lpcbMaxValueNameLen: LPDWORD,

+                        lpcbMaxValueLen: LPDWORD,

+                        lpcbSecurityDescriptor: LPDWORD,

+                        lpftLastWriteTime: PFILETIME): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegQueryInfoKeyA".}

+  proc RegQueryValue*(hKey: HKEY, lpSubKey: LPCSTR, lpValue: LPSTR,

+                      lpcbValue: PLONG): LONG{.stdcall, dynlib: "advapi32",

+      importc: "RegQueryValueA".}

+  proc RegQueryMultipleValues*(hKey: HKEY, val_list: PVALENT, num_vals: DWORD,

+                               lpValueBuf: LPSTR, ldwTotsize: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}

+  proc RegQueryValueEx*(hKey: HKEY, lpValueName: LPCSTR, lpReserved: LPDWORD,

+                        lpType: LPDWORD, lpData: LPBYTE, lpcbData: LPDWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegQueryValueExA".}

+  proc RegReplaceKey*(hKey: HKEY, lpSubKey: LPCSTR, lpNewFile: LPCSTR,

+                      lpOldFile: LPCSTR): LONG{.stdcall, dynlib: "advapi32",

+      importc: "RegReplaceKeyA".}

+  proc RegRestoreKey*(hKey: HKEY, lpFile: LPCSTR, dwFlags: DWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegRestoreKeyA".}

+  proc RegSaveKey*(hKey: HKEY, lpFile: LPCSTR,

+                   lpSecurityAttributes: LPSECURITY_ATTRIBUTES): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegSaveKeyA".}

+  proc RegSetValue*(hKey: HKEY, lpSubKey: LPCSTR, dwType: DWORD, lpData: LPCSTR,

+                    cbData: DWORD): LONG{.stdcall, dynlib: "advapi32",

+      importc: "RegSetValueA".}

+  proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,

+                      dwType: DWORD, lpData: LPBYTE, cbData: DWORD): LONG{.

+      stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}

+  proc RegUnLoadKey*(hKey: HKEY, lpSubKey: LPCSTR): LONG{.stdcall,

+      dynlib: "advapi32", importc: "RegUnLoadKeyA".}

+  proc InitiateSystemShutdown*(lpMachineName: LPSTR, lpMessage: LPSTR,

+                               dwTimeout: DWORD, bForceAppsClosed: WINBOOL,

+                               bRebootAfterShutdown: WINBOOL): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "InitiateSystemShutdownA".}

+  proc AbortSystemShutdown*(lpMachineName: LPSTR): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "AbortSystemShutdownA".}

+  proc CompareString*(Locale: LCID, dwCmpFlags: DWORD, lpString1: LPCSTR,

+                      cchCount1: int32, lpString2: LPCSTR, cchCount2: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "CompareStringA".}

+  proc LCMapString*(Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR,

+                    cchSrc: int32, lpDestStr: LPSTR, cchDest: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "LCMapStringA".}

+  proc GetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR,

+                      cchData: int32): int32{.stdcall, dynlib: "kernel32",

+      importc: "GetLocaleInfoA".}

+  proc SetLocaleInfo*(Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "SetLocaleInfoA".}

+  proc GetTimeFormat*(Locale: LCID, dwFlags: DWORD, lpTime: LPSYSTEMTIME,

+                      lpFormat: LPCSTR, lpTimeStr: LPSTR, cchTime: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "GetTimeFormatA".}

+  proc GetDateFormat*(Locale: LCID, dwFlags: DWORD, lpDate: LPSYSTEMTIME,

+                      lpFormat: LPCSTR, lpDateStr: LPSTR, cchDate: int32): int32{.

+      stdcall, dynlib: "kernel32", importc: "GetDateFormatA".}

+  proc GetNumberFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,

+                        lpFormat: PNUMBERFMT, lpNumberStr: LPSTR,

+                        cchNumber: int32): int32{.stdcall, dynlib: "kernel32",

+      importc: "GetNumberFormatA".}

+  proc GetCurrencyFormat*(Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR,

+                          lpFormat: PCURRENCYFMT, lpCurrencyStr: LPSTR,

+                          cchCurrency: int32): int32{.stdcall,

+      dynlib: "kernel32", importc: "GetCurrencyFormatA".}

+  proc EnumCalendarInfo*(lpCalInfoEnumProc: CALINFO_ENUMPROC, Locale: LCID,

+                         Calendar: CALID, CalType: CALTYPE): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "EnumCalendarInfoA".}

+  proc EnumTimeFormats*(lpTimeFmtEnumProc: TIMEFMT_ENUMPROC, Locale: LCID,

+                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "EnumTimeFormatsA".}

+  proc EnumDateFormats*(lpDateFmtEnumProc: DATEFMT_ENUMPROC, Locale: LCID,

+                        dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "EnumDateFormatsA".}

+  proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,

+                        cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetStringTypeExA".}

+  proc GetStringType*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,

+                      cchSrc: int32, lpCharType: LPWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "GetStringTypeA".}

+  proc FoldString*(dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: int32,

+                   lpDestStr: LPSTR, cchDest: int32): int32{.stdcall,

+      dynlib: "kernel32", importc: "FoldStringA".}

+  proc EnumSystemLocales*(lpLocaleEnumProc: LOCALE_ENUMPROC, dwFlags: DWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "EnumSystemLocalesA".}

+  proc EnumSystemCodePages*(lpCodePageEnumProc: CODEPAGE_ENUMPROC,

+                            dwFlags: DWORD): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "EnumSystemCodePagesA".}

+  proc PeekConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}

+  proc ReadConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                         nLength: DWORD, lpNumberOfEventsRead: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}

+  proc WriteConsoleInput*(hConsoleInput: HANDLE, lpBuffer: PINPUTRECORD,

+                          nLength: DWORD, lpNumberOfEventsWritten: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}

+  proc ReadConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                          dwBufferSize: COORD, dwBufferCoord: COORD,

+                          lpReadRegion: PSMALL_RECT): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "ReadConsoleOutputA".}

+  proc WriteConsoleOutput*(hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO,

+                           dwBufferSize: COORD, dwBufferCoord: COORD,

+                           lpWriteRegion: PSMALL_RECT): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "WriteConsoleOutputA".}

+  proc ReadConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPSTR,

+                                   nLength: DWORD, dwReadCoord: COORD,

+                                   lpNumberOfCharsRead: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}

+  proc WriteConsoleOutputCharacter*(hConsoleOutput: HANDLE, lpCharacter: LPCSTR,

+                                    nLength: DWORD, dwWriteCoord: COORD,

+                                    lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}

+  proc FillConsoleOutputCharacter*(hConsoleOutput: HANDLE, cCharacter: CHAR,

+                                   nLength: DWORD, dwWriteCoord: COORD,

+                                   lpNumberOfCharsWritten: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}

+  proc ScrollConsoleScreenBuffer*(hConsoleOutput: HANDLE,

+                                  lpScrollRectangle: PSMALL_RECT,

+                                  lpClipRectangle: PSMALL_RECT,

+                                  dwDestinationOrigin: COORD, lpFill: PCHAR_INFO): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}

+  proc GetConsoleTitle*(lpConsoleTitle: LPSTR, nSize: DWORD): DWORD{.stdcall,

+      dynlib: "kernel32", importc: "GetConsoleTitleA".}

+  proc SetConsoleTitle*(lpConsoleTitle: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "kernel32", importc: "SetConsoleTitleA".}

+  proc ReadConsole*(hConsoleInput: HANDLE, lpBuffer: LPVOID,

+                    nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: LPDWORD,

+                    lpReserved: LPVOID): WINBOOL{.stdcall, dynlib: "kernel32",

+      importc: "ReadConsoleA".}

+  proc WriteConsole*(hConsoleOutput: HANDLE, lpBuffer: pointer,

+                     nNumberOfCharsToWrite: DWORD,

+                     lpNumberOfCharsWritten: LPDWORD, lpReserved: LPVOID): WINBOOL{.

+      stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}

+  proc WNetAddConnection*(lpRemoteName: LPCSTR, lpPassword: LPCSTR,

+                          lpLocalName: LPCSTR): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetAddConnectionA".}

+  proc WNetAddConnection2*(lpNetResource: LPNETRESOURCE, lpPassword: LPCSTR,

+                           lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetAddConnection2A".}

+  proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                           lpPassword: LPCSTR, lpUserName: LPCSTR,

+                           dwFlags: DWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetAddConnection3A".}

+  proc WNetCancelConnection*(lpName: LPCSTR, fForce: WINBOOL): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetCancelConnectionA".}

+  proc WNetCancelConnection2*(lpName: LPCSTR, dwFlags: DWORD, fForce: WINBOOL): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetCancelConnection2A".}

+  proc WNetGetConnection*(lpLocalName: LPCSTR, lpRemoteName: LPSTR,

+                          lpnLength: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetGetConnectionA".}

+  proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: LPNETRESOURCE,

+                          lpUserID: LPCSTR, lpPassword: LPCSTR, dwFlags: DWORD,

+                          lpAccessName: LPSTR, lpBufferSize: LPDWORD,

+                          lpResult: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetUseConnectionA".}

+  proc WNetSetConnection*(lpName: LPCSTR, dwProperties: DWORD, pvValues: LPVOID): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetSetConnectionA".}

+  proc WNetConnectionDialog1*(lpConnDlgStruct: LPCONNECTDLGSTRUCT): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}

+  proc WNetDisconnectDialog1*(lpConnDlgStruct: LPDISCDLGSTRUCT): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetDisconnectDialog1A".}

+  proc WNetOpenEnum*(dwScope: DWORD, dwType: DWORD, dwUsage: DWORD,

+                     lpNetResource: LPNETRESOURCE, lphEnum: LPHANDLE): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}

+  proc WNetEnumResource*(hEnum: HANDLE, lpcCount: LPDWORD, lpBuffer: LPVOID,

+                         lpBufferSize: LPDWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetEnumResourceA".}

+  proc WNetGetUniversalName*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD,

+                             lpBuffer: LPVOID, lpBufferSize: LPDWORD): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}

+  proc WNetGetUser*(lpName: LPCSTR, lpUserName: LPSTR, lpnLength: LPDWORD): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetGetUserA".}

+  proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: LPSTR,

+                            lpBufferSize: LPDWORD): DWORD{.stdcall,

+      dynlib: "mpr", importc: "WNetGetProviderNameA".}

+  proc WNetGetNetworkInformation*(lpProvider: LPCSTR,

+                                  lpNetInfoStruct: LPNETINFOSTRUCT): DWORD{.

+      stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}

+  proc WNetGetLastError*(lpError: LPDWORD, lpErrorBuf: LPSTR,

+                         nErrorBufSize: DWORD, lpNameBuf: LPSTR,

+                         nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+      importc: "WNetGetLastErrorA".}

+  proc MultinetGetConnectionPerformance*(lpNetResource: LPNETRESOURCE,

+      lpNetConnectInfoStruct: LPNETCONNECTINFOSTRUCT): DWORD{.stdcall,

+      dynlib: "mpr", importc: "MultinetGetConnectionPerformanceA".}

+  proc ChangeServiceConfig*(hService: SC_HANDLE, dwServiceType: DWORD,

+                            dwStartType: DWORD, dwErrorControl: DWORD,

+                            lpBinaryPathName: LPCSTR, lpLoadOrderGroup: LPCSTR,

+                            lpdwTagId: LPDWORD, lpDependencies: LPCSTR,

+                            lpServiceStartName: LPCSTR, lpPassword: LPCSTR,

+                            lpDisplayName: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "ChangeServiceConfigA".}

+  proc CreateService*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,

+                      lpDisplayName: LPCSTR, dwDesiredAccess: DWORD,

+                      dwServiceType: DWORD, dwStartType: DWORD,

+                      dwErrorControl: DWORD, lpBinaryPathName: LPCSTR,

+                      lpLoadOrderGroup: LPCSTR, lpdwTagId: LPDWORD,

+                      lpDependencies: LPCSTR, lpServiceStartName: LPCSTR,

+                      lpPassword: LPCSTR): SC_HANDLE{.stdcall,

+      dynlib: "advapi32", importc: "CreateServiceA".}

+  proc EnumDependentServices*(hService: SC_HANDLE, dwServiceState: DWORD,

+                              lpServices: LPENUM_SERVICE_STATUS,

+                              cbBufSize: DWORD, pcbBytesNeeded: LPDWORD,

+                              lpServicesReturned: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "EnumDependentServicesA".}

+  proc EnumServicesStatus*(hSCManager: SC_HANDLE, dwServiceType: DWORD,

+                           dwServiceState: DWORD,

+                           lpServices: LPENUM_SERVICE_STATUS, cbBufSize: DWORD,

+                           pcbBytesNeeded: LPDWORD, lpServicesReturned: LPDWORD,

+                           lpResumeHandle: LPDWORD): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "EnumServicesStatusA".}

+  proc GetServiceKeyName*(hSCManager: SC_HANDLE, lpDisplayName: LPCSTR,

+                          lpServiceName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "GetServiceKeyNameA".}

+  proc GetServiceDisplayName*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,

+                              lpDisplayName: LPSTR, lpcchBuffer: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "GetServiceDisplayNameA".}

+  proc OpenSCManager*(lpMachineName: LPCSTR, lpDatabaseName: LPCSTR,

+                      dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+      dynlib: "advapi32", importc: "OpenSCManagerA".}

+  proc OpenService*(hSCManager: SC_HANDLE, lpServiceName: LPCSTR,

+                    dwDesiredAccess: DWORD): SC_HANDLE{.stdcall,

+      dynlib: "advapi32", importc: "OpenServiceA".}

+  proc QueryServiceConfig*(hService: SC_HANDLE,

+                           lpServiceConfig: LPQUERY_SERVICE_CONFIG,

+                           cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "QueryServiceConfigA".}

+  proc QueryServiceLockStatus*(hSCManager: SC_HANDLE,

+                               lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS,

+                               cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "QueryServiceLockStatusA".}

+  proc RegisterServiceCtrlHandler*(lpServiceName: LPCSTR,

+                                   lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE{.

+      stdcall, dynlib: "advapi32", importc: "RegisterServiceCtrlHandlerA".}

+  proc StartServiceCtrlDispatcher*(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "StartServiceCtrlDispatcherA".}

+  proc StartService*(hService: SC_HANDLE, dwNumServiceArgs: DWORD,

+                     lpServiceArgVectors: LPCSTR): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "StartServiceA".}

+  proc DragQueryFile*(para1: HDROP, para2: int, para3: cstring, para4: int): int{.

+      stdcall, dynlib: "shell32", importc: "DragQueryFileA".}

+  proc ExtractAssociatedIcon*(para1: HINST, para2: cstring, para3: LPWORD): HICON{.

+      stdcall, dynlib: "shell32", importc: "ExtractAssociatedIconA".}

+  proc ExtractIcon*(para1: HINST, para2: cstring, para3: int): HICON{.stdcall,

+      dynlib: "shell32", importc: "ExtractIconA".}

+  proc FindExecutable*(para1: cstring, para2: cstring, para3: cstring): HINST{.

+      stdcall, dynlib: "shell32", importc: "FindExecutableA".}

+  proc ShellAbout*(para1: HWND, para2: cstring, para3: cstring, para4: HICON): int32{.

+      stdcall, dynlib: "shell32", importc: "ShellAboutA".}

+  proc ShellExecute*(para1: HWND, para2: cstring, para3: cstring,

+                     para4: cstring, para5: cstring, para6: int32): HINST{.

+      stdcall, dynlib: "shell32", importc: "ShellExecuteA".}

+  proc Shell_NotifyIcon*(dwMessage: DWORD, lpData: PNotifyIconDataA): WINBOOL{.

+      stdcall, dynlib: "shell32", importc: "Shell_NotifyIconA".}

+  proc DdeCreateStringHandle*(para1: DWORD, para2: cstring, para3: int32): HSZ{.

+      stdcall, dynlib: "user32", importc: "DdeCreateStringHandleA".}

+  proc DdeInitialize*(para1: LPDWORD, para2: PFNCALLBACK, para3: DWORD,

+                      para4: DWORD): UINT{.stdcall, dynlib: "user32",

+      importc: "DdeInitializeA".}

+  proc DdeQueryString*(para1: DWORD, para2: HSZ, para3: cstring, para4: DWORD,

+                       para5: int32): DWORD{.stdcall, dynlib: "user32",

+      importc: "DdeQueryStringA".}

+  proc LogonUser*(para1: LPSTR, para2: LPSTR, para3: LPSTR, para4: DWORD,

+                  para5: DWORD, para6: PHANDLE): WINBOOL{.stdcall,

+      dynlib: "advapi32", importc: "LogonUserA".}

+  proc CreateProcessAsUser*(para1: HANDLE, para2: LPCTSTR, para3: LPTSTR,

+                            para4: LPSECURITY_ATTRIBUTES,

+                            para5: LPSECURITY_ATTRIBUTES, para6: WINBOOL,

+                            para7: DWORD, para8: LPVOID, para9: LPCTSTR,

+                            para10: LPSTARTUPINFO, para11: LPPROCESS_INFORMATION): WINBOOL{.

+      stdcall, dynlib: "advapi32", importc: "CreateProcessAsUserA".}

+proc GetRandomRgn*(aHDC: HDC, aHRGN: HRGN, iNum: WINT): WINT{.stdcall,

+     importc, dynlib: "gdi32".}

+

+proc AccessCheck*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                  ClientToken: HANDLE, DesiredAccess: DWORD,

+                  GenericMapping: PGENERIC_MAPPING,

+                  PrivilegeSet: PPRIVILEGE_SET, PrivilegeSetLength: LPDWORD,

+                  GrantedAccess: LPDWORD, AccessStatus: LPBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AccessCheck".}

+proc FreeResource*(hResData: HGLOBAL): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "FreeResource".}

+proc LockResource*(hResData: HGLOBAL): LPVOID{.stdcall, dynlib: "kernel32",

+    importc: "LockResource".}

+proc FreeLibrary*(hLibModule: HINST): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "FreeLibrary".}

+proc FreeLibraryAndExitThread*(hLibModule: HMODULE, dwExitCode: DWORD){.stdcall,

+    dynlib: "kernel32", importc: "FreeLibraryAndExitThread".}

+proc DisableThreadLibraryCalls*(hLibModule: HMODULE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "DisableThreadLibraryCalls".}

+proc GetProcAddress*(hModule: HINST, lpProcName: LPCSTR): FARPROC{.stdcall,

+    dynlib: "kernel32", importc: "GetProcAddress".}

+proc GetVersion*(): DWORD{.stdcall, dynlib: "kernel32", importc: "GetVersion".}

+proc GlobalAlloc*(uFlags: UINT, dwBytes: DWORD): HGLOBAL{.stdcall,

+    dynlib: "kernel32", importc: "GlobalAlloc".}

+proc GlobalReAlloc*(hMem: HGLOBAL, dwBytes: DWORD, uFlags: UINT): HGLOBAL{.

+    stdcall, dynlib: "kernel32", importc: "GlobalReAlloc".}

+proc GlobalSize*(hMem: HGLOBAL): DWORD{.stdcall, dynlib: "kernel32",

+                                        importc: "GlobalSize".}

+proc GlobalFlags*(hMem: HGLOBAL): UINT{.stdcall, dynlib: "kernel32",

+                                        importc: "GlobalFlags".}

+proc GlobalLock*(hMem: HGLOBAL): LPVOID{.stdcall, dynlib: "kernel32",

+    importc: "GlobalLock".}

+proc GlobalHandle*(pMem: LPCVOID): HGLOBAL{.stdcall, dynlib: "kernel32",

+    importc: "GlobalHandle".}

+proc GlobalUnlock*(hMem: HGLOBAL): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "GlobalUnlock".}

+proc GlobalFree*(hMem: HGLOBAL): HGLOBAL{.stdcall, dynlib: "kernel32",

+    importc: "GlobalFree".}

+proc GlobalCompact*(dwMinFree: DWORD): UINT{.stdcall, dynlib: "kernel32",

+    importc: "GlobalCompact".}

+proc GlobalFix*(hMem: HGLOBAL){.stdcall, dynlib: "kernel32",

+                                importc: "GlobalFix".}

+proc GlobalUnfix*(hMem: HGLOBAL){.stdcall, dynlib: "kernel32",

+                                  importc: "GlobalUnfix".}

+proc GlobalWire*(hMem: HGLOBAL): LPVOID{.stdcall, dynlib: "kernel32",

+    importc: "GlobalWire".}

+proc GlobalUnWire*(hMem: HGLOBAL): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "GlobalUnWire".}

+proc GlobalMemoryStatus*(lpBuffer: LPMEMORYSTATUS){.stdcall, dynlib: "kernel32",

+    importc: "GlobalMemoryStatus".}

+proc LocalAlloc*(uFlags: UINT, uBytes: UINT): HLOCAL{.stdcall,

+    dynlib: "kernel32", importc: "LocalAlloc".}

+proc LocalReAlloc*(hMem: HLOCAL, uBytes: UINT, uFlags: UINT): HLOCAL{.stdcall,

+    dynlib: "kernel32", importc: "LocalReAlloc".}

+proc LocalLock*(hMem: HLOCAL): LPVOID{.stdcall, dynlib: "kernel32",

+                                       importc: "LocalLock".}

+proc LocalHandle*(pMem: LPCVOID): HLOCAL{.stdcall, dynlib: "kernel32",

+    importc: "LocalHandle".}

+proc LocalUnlock*(hMem: HLOCAL): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "LocalUnlock".}

+proc LocalSize*(hMem: HLOCAL): UINT{.stdcall, dynlib: "kernel32",

+                                     importc: "LocalSize".}

+proc LocalFlags*(hMem: HLOCAL): UINT{.stdcall, dynlib: "kernel32",

+                                      importc: "LocalFlags".}

+proc LocalFree*(hMem: HLOCAL): HLOCAL{.stdcall, dynlib: "kernel32",

+                                       importc: "LocalFree".}

+proc LocalShrink*(hMem: HLOCAL, cbNewSize: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "LocalShrink".}

+proc LocalCompact*(uMinFree: UINT): UINT{.stdcall, dynlib: "kernel32",

+    importc: "LocalCompact".}

+proc FlushInstructionCache*(hProcess: HANDLE, lpBaseAddress: LPCVOID,

+                            dwSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FlushInstructionCache".}

+proc VirtualAlloc*(lpAddress: LPVOID, dwSize: DWORD, flAllocationType: DWORD,

+                   flProtect: DWORD): LPVOID{.stdcall, dynlib: "kernel32",

+    importc: "VirtualAlloc".}

+proc VirtualFree*(lpAddress: LPVOID, dwSize: DWORD, dwFreeType: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "VirtualFree".}

+proc VirtualProtect*(lpAddress: LPVOID, dwSize: DWORD, flNewProtect: DWORD,

+                     lpflOldProtect: PDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "VirtualProtect".}

+proc VirtualQuery*(lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION,

+                   dwLength: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "VirtualQuery".}

+proc VirtualProtectEx*(hProcess: HANDLE, lpAddress: LPVOID, dwSize: DWORD,

+                       flNewProtect: DWORD, lpflOldProtect: PDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "VirtualProtectEx".}

+proc VirtualQueryEx*(hProcess: HANDLE, lpAddress: LPCVOID,

+                     lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "VirtualQueryEx".}

+proc HeapCreate*(flOptions: DWORD, dwInitialSize: DWORD, dwMaximumSize: DWORD): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "HeapCreate".}

+proc HeapDestroy*(hHeap: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "HeapDestroy".}

+proc HeapAlloc*(hHeap: HANDLE, dwFlags: DWORD, dwBytes: DWORD): LPVOID{.stdcall,

+    dynlib: "kernel32", importc: "HeapAlloc".}

+proc HeapReAlloc*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: DWORD): LPVOID{.

+    stdcall, dynlib: "kernel32", importc: "HeapReAlloc".}

+proc HeapFree*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "HeapFree".}

+proc HeapSize*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "HeapSize".}

+proc HeapValidate*(hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "HeapValidate".}

+proc HeapCompact*(hHeap: HANDLE, dwFlags: DWORD): UINT{.stdcall,

+    dynlib: "kernel32", importc: "HeapCompact".}

+proc GetProcessHeap*(): HANDLE{.stdcall, dynlib: "kernel32",

+                                importc: "GetProcessHeap".}

+proc GetProcessHeaps*(NumberOfHeaps: DWORD, ProcessHeaps: PHANDLE): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetProcessHeaps".}

+proc HeapLock*(hHeap: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+                                        importc: "HeapLock".}

+proc HeapUnlock*(hHeap: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "HeapUnlock".}

+proc HeapWalk*(hHeap: HANDLE, lpEntry: LPPROCESS_HEAP_ENTRY): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "HeapWalk".}

+proc GetProcessAffinityMask*(hProcess: HANDLE, lpProcessAffinityMask: LPDWORD,

+                             lpSystemAffinityMask: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetProcessAffinityMask".}

+proc GetProcessTimes*(hProcess: HANDLE, lpCreationTime: LPFILETIME,

+                      lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME,

+                      lpUserTime: LPFILETIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetProcessTimes".}

+proc GetProcessWorkingSetSize*(hProcess: HANDLE,

+                               lpMinimumWorkingSetSize: LPDWORD,

+                               lpMaximumWorkingSetSize: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetProcessWorkingSetSize".}

+proc SetProcessWorkingSetSize*(hProcess: HANDLE, dwMinimumWorkingSetSize: DWORD,

+                               dwMaximumWorkingSetSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetProcessWorkingSetSize".}

+proc OpenProcess*(dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                  dwProcessId: DWORD): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "OpenProcess".}

+proc GetCurrentProcess*(): HANDLE{.stdcall, dynlib: "kernel32",

+                                   importc: "GetCurrentProcess".}

+proc GetCurrentProcessId*(): DWORD{.stdcall, dynlib: "kernel32",

+                                    importc: "GetCurrentProcessId".}

+proc ExitProcess*(uExitCode: UINT){.stdcall, dynlib: "kernel32",

+                                    importc: "ExitProcess".}

+proc TerminateProcess*(hProcess: HANDLE, uExitCode: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "TerminateProcess".}

+proc SetProcessAffinityMask*(hProcess: THandle, dwProcessAffinityMask: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetProcessAffinityMask".}

+proc GetExitCodeProcess*(hProcess: HANDLE, lpExitCode: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetExitCodeProcess".}

+proc FatalExit*(ExitCode: int32){.stdcall, dynlib: "kernel32",

+                                  importc: "FatalExit".}

+proc RaiseException*(dwExceptionCode: DWORD, dwExceptionFlags: DWORD,

+                     nNumberOfArguments: DWORD, lpArguments: LPDWORD){.stdcall,

+    dynlib: "kernel32", importc: "RaiseException".}

+proc UnhandledExceptionFilter*(ExceptionInfo: lpemptyrecord): LONG{.stdcall,

+    dynlib: "kernel32", importc: "UnhandledExceptionFilter".}

+proc CreateRemoteThread*(hProcess: HANDLE,

+                         lpThreadAttributes: LPSECURITY_ATTRIBUTES,

+                         dwStackSize: DWORD,

+                         lpStartAddress: LPTHREAD_START_ROUTINE,

+                         lpParameter: LPVOID, dwCreationFlags: DWORD,

+                         lpThreadId: LPDWORD): HANDLE{.stdcall,

+    dynlib: "kernel32", importc: "CreateRemoteThread".}

+proc GetCurrentThread*(): HANDLE{.stdcall, dynlib: "kernel32",

+                                  importc: "GetCurrentThread".}

+proc GetCurrentThreadId*(): DWORD{.stdcall, dynlib: "kernel32",

+                                   importc: "GetCurrentThreadId".}

+proc SetThreadAffinityMask*(hThread: HANDLE, dwThreadAffinityMask: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "SetThreadAffinityMask".}

+proc SetThreadPriority*(hThread: HANDLE, nPriority: int32): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetThreadPriority".}

+proc GetThreadPriority*(hThread: HANDLE): int32{.stdcall, dynlib: "kernel32",

+    importc: "GetThreadPriority".}

+proc GetThreadTimes*(hThread: HANDLE, lpCreationTime: LPFILETIME,

+                     lpExitTime: LPFILETIME, lpKernelTime: LPFILETIME,

+                     lpUserTime: LPFILETIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetThreadTimes".}

+proc ExitThread*(dwExitCode: DWORD){.stdcall, dynlib: "kernel32",

+                                     importc: "ExitThread".}

+proc TerminateThread*(hThread: HANDLE, dwExitCode: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "TerminateThread".}

+proc GetExitCodeThread*(hThread: HANDLE, lpExitCode: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetExitCodeThread".}

+proc GetThreadSelectorEntry*(hThread: HANDLE, dwSelector: DWORD,

+                             lpSelectorEntry: LPLDT_ENTRY): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetThreadSelectorEntry".}

+proc GetLastError*(): DWORD{.stdcall, dynlib: "kernel32",

+                             importc: "GetLastError".}

+proc SetLastError*(dwErrCode: DWORD){.stdcall, dynlib: "kernel32",

+                                      importc: "SetLastError".}

+proc CreateIoCompletionPort*(FileHandle: HANDLE, ExistingCompletionPort: HANDLE,

+                             CompletionKey: DWORD,

+                             NumberOfConcurrentThreads: DWORD): HANDLE{.stdcall,

+    dynlib: "kernel32", importc: "CreateIoCompletionPort".}

+proc SetErrorMode*(uMode: UINT): UINT{.stdcall, dynlib: "kernel32",

+                                       importc: "SetErrorMode".}

+proc ReadProcessMemory*(hProcess: HANDLE, lpBaseAddress: LPCVOID,

+                        lpBuffer: LPVOID, nSize: DWORD,

+                        lpNumberOfBytesRead: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadProcessMemory".}

+proc WriteProcessMemory*(hProcess: HANDLE, lpBaseAddress: LPVOID,

+                         lpBuffer: LPVOID, nSize: DWORD,

+                         lpNumberOfBytesWritten: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteProcessMemory".}

+proc GetThreadContext*(hThread: HANDLE, lpContext: LPCONTEXT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetThreadContext".}

+proc SuspendThread*(hThread: HANDLE): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "SuspendThread".}

+proc ResumeThread*(hThread: HANDLE): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "ResumeThread".}

+proc DebugBreak*(){.stdcall, dynlib: "kernel32", importc: "DebugBreak".}

+proc WaitForDebugEvent*(lpDebugEvent: LPDEBUG_EVENT, dwMilliseconds: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WaitForDebugEvent".}

+proc ContinueDebugEvent*(dwProcessId: DWORD, dwThreadId: DWORD,

+                         dwContinueStatus: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ContinueDebugEvent".}

+proc DebugActiveProcess*(dwProcessId: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "DebugActiveProcess".}

+proc InitializeCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,

+    dynlib: "kernel32", importc: "InitializeCriticalSection".}

+proc EnterCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,

+    dynlib: "kernel32", importc: "EnterCriticalSection".}

+proc LeaveCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,

+    dynlib: "kernel32", importc: "LeaveCriticalSection".}

+proc DeleteCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION){.stdcall,

+    dynlib: "kernel32", importc: "DeleteCriticalSection".}

+proc TryEnterCriticalSection*(lpCriticalSection: LPCRITICAL_SECTION): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "TryEnterCriticalSection".}

+proc SetEvent*(hEvent: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "SetEvent".}

+proc ResetEvent*(hEvent: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ResetEvent".}

+proc PulseEvent*(hEvent: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "PulseEvent".}

+proc ReleaseSemaphore*(hSemaphore: HANDLE, lReleaseCount: LONG,

+                       lpPreviousCount: LPLONG): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReleaseSemaphore".}

+proc ReleaseMutex*(hMutex: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ReleaseMutex".}

+proc WaitForSingleObject*(hHandle: HANDLE, dwMilliseconds: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "WaitForSingleObject".}

+proc WaitForMultipleObjects*(nCount: DWORD, lpHandles: PWOHandleArray,

+                             bWaitAll: WINBOOL, dwMilliseconds: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "WaitForMultipleObjects".}

+proc Sleep*(dwMilliseconds: DWORD){.stdcall, dynlib: "kernel32",

+                                    importc: "Sleep".}

+proc LoadResource*(hModule: HINST, hResInfo: HRSRC): HGLOBAL{.stdcall,

+    dynlib: "kernel32", importc: "LoadResource".}

+proc SizeofResource*(hModule: HINST, hResInfo: HRSRC): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "SizeofResource".}

+proc GlobalDeleteAtom*(nAtom: ATOM): ATOM{.stdcall, dynlib: "kernel32",

+    importc: "GlobalDeleteAtom".}

+proc InitAtomTable*(nSize: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "InitAtomTable".}

+proc DeleteAtom*(nAtom: ATOM): ATOM{.stdcall, dynlib: "kernel32",

+                                     importc: "DeleteAtom".}

+proc SetHandleCount*(uNumber: UINT): UINT{.stdcall, dynlib: "kernel32",

+    importc: "SetHandleCount".}

+proc GetLogicalDrives*(): DWORD{.stdcall, dynlib: "kernel32",

+                                 importc: "GetLogicalDrives".}

+proc LockFile*(hFile: HANDLE, dwFileOffsetLow: DWORD, dwFileOffsetHigh: DWORD,

+               nNumberOfBytesToLockLow: DWORD, nNumberOfBytesToLockHigh: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "LockFile".}

+proc UnlockFile*(hFile: HANDLE, dwFileOffsetLow: DWORD, dwFileOffsetHigh: DWORD,

+                 nNumberOfBytesToUnlockLow: DWORD,

+                 nNumberOfBytesToUnlockHigh: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "UnlockFile".}

+proc LockFileEx*(hFile: HANDLE, dwFlags: DWORD, dwReserved: DWORD,

+                 nNumberOfBytesToLockLow: DWORD,

+                 nNumberOfBytesToLockHigh: DWORD, lpOverlapped: LPOVERLAPPED): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "LockFileEx".}

+proc UnlockFileEx*(hFile: HANDLE, dwReserved: DWORD,

+                   nNumberOfBytesToUnlockLow: DWORD,

+                   nNumberOfBytesToUnlockHigh: DWORD, lpOverlapped: LPOVERLAPPED): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "UnlockFileEx".}

+proc GetFileInformationByHandle*(hFile: HANDLE, lpFileInformation: LPBY_HANDLE_FILE_INFORMATION): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetFileInformationByHandle".}

+proc GetFileType*(hFile: HANDLE): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetFileType".}

+proc GetFileSize*(hFile: HANDLE, lpFileSizeHigh: LPDWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetFileSize".}

+proc GetStdHandle*(nStdHandle: DWORD): HANDLE{.stdcall, dynlib: "kernel32",

+    importc: "GetStdHandle".}

+proc SetStdHandle*(nStdHandle: DWORD, hHandle: HANDLE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetStdHandle".}

+proc FlushFileBuffers*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "FlushFileBuffers".}

+proc DeviceIoControl*(hDevice: HANDLE, dwIoControlCode: DWORD,

+                      lpInBuffer: LPVOID, nInBufferSize: DWORD,

+                      lpOutBuffer: LPVOID, nOutBufferSize: DWORD,

+                      lpBytesReturned: LPDWORD, lpOverlapped: LPOVERLAPPED): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "DeviceIoControl".}

+proc SetEndOfFile*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "SetEndOfFile".}

+proc SetFilePointer*(hFile: HANDLE, lDistanceToMove: LONG,

+                     lpDistanceToMoveHigh: PLONG, dwMoveMethod: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "SetFilePointer".}

+proc FindClose*(hFindFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "FindClose".}

+proc GetFileTime*(hFile: HANDLE, lpCreationTime: LPFILETIME,

+                  lpLastAccessTime: LPFILETIME, lpLastWriteTime: LPFILETIME): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetFileTime".}

+proc SetFileTime*(hFile: HANDLE, lpCreationTime: LPFILETIME,

+                  lpLastAccessTime: LPFILETIME, lpLastWriteTime: LPFILETIME): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetFileTime".}

+proc CloseHandle*(hObject: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CloseHandle".}

+proc DuplicateHandle*(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE,

+                      hTargetProcessHandle: HANDLE, lpTargetHandle: LPHANDLE,

+                      dwDesiredAccess: DWORD, bInheritHandle: WINBOOL,

+                      dwOptions: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "DuplicateHandle".}

+proc GetHandleInformation*(hObject: HANDLE, lpdwFlags: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetHandleInformation".}

+proc SetHandleInformation*(hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetHandleInformation".}

+proc LoadModule*(lpModuleName: LPCSTR, lpParameterBlock: LPVOID): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "LoadModule".}

+proc WinExec*(lpCmdLine: LPCSTR, uCmdShow: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "WinExec".}

+proc ClearCommBreak*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ClearCommBreak".}

+proc ClearCommError*(hFile: HANDLE, lpErrors: LPDWORD, lpStat: LPCOMSTAT): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ClearCommError".}

+proc SetupComm*(hFile: HANDLE, dwInQueue: DWORD, dwOutQueue: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetupComm".}

+proc EscapeCommFunction*(hFile: HANDLE, dwFunc: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "EscapeCommFunction".}

+proc GetCommConfig*(hCommDev: HANDLE, lpCC: LPCOMMCONFIG, lpdwSize: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetCommConfig".}

+proc GetCommProperties*(hFile: HANDLE, lpCommProp: LPCOMMPROP): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetCommProperties".}

+proc GetCommModemStatus*(hFile: HANDLE, lpModemStat: PDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetCommModemStatus".}

+proc GetCommState*(hFile: HANDLE, lpDCB: PDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetCommState".}

+proc GetCommTimeouts*(hFile: HANDLE, lpCommTimeouts: PCOMMTIMEOUTS): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetCommTimeouts".}

+proc PurgeComm*(hFile: HANDLE, dwFlags: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "PurgeComm".}

+proc SetCommBreak*(hFile: HANDLE): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "SetCommBreak".}

+proc SetCommConfig*(hCommDev: HANDLE, lpCC: LPCOMMCONFIG, dwSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetCommConfig".}

+proc SetCommMask*(hFile: HANDLE, dwEvtMask: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetCommMask".}

+proc SetCommState*(hFile: HANDLE, lpDCB: LPDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetCommState".}

+proc SetCommTimeouts*(hFile: HANDLE, lpCommTimeouts: LPCOMMTIMEOUTS): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetCommTimeouts".}

+proc TransmitCommChar*(hFile: HANDLE, cChar: char): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "TransmitCommChar".}

+proc WaitCommEvent*(hFile: HANDLE, lpEvtMask: LPDWORD,

+                    lpOverlapped: LPOVERLAPPED): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WaitCommEvent".}

+proc SetTapePosition*(hDevice: HANDLE, dwPositionMethod: DWORD,

+                      dwPartition: DWORD, dwOffsetLow: DWORD,

+                      dwOffsetHigh: DWORD, bImmediate: WINBOOL): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "SetTapePosition".}

+proc GetTapePosition*(hDevice: HANDLE, dwPositionType: DWORD,

+                      lpdwPartition: LPDWORD, lpdwOffsetLow: LPDWORD,

+                      lpdwOffsetHigh: LPDWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetTapePosition".}

+proc PrepareTape*(hDevice: HANDLE, dwOperation: DWORD, bImmediate: WINBOOL): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "PrepareTape".}

+proc EraseTape*(hDevice: HANDLE, dwEraseType: DWORD, bImmediate: WINBOOL): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "EraseTape".}

+proc CreateTapePartition*(hDevice: HANDLE, dwPartitionMethod: DWORD,

+                          dwCount: DWORD, dwSize: DWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "CreateTapePartition".}

+proc WriteTapemark*(hDevice: HANDLE, dwTapemarkType: DWORD,

+                    dwTapemarkCount: DWORD, bImmediate: WINBOOL): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "WriteTapemark".}

+proc GetTapeStatus*(hDevice: HANDLE): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetTapeStatus".}

+proc GetTapeParameters*(hDevice: HANDLE, dwOperation: DWORD, lpdwSize: LPDWORD,

+                        lpTapeInformation: LPVOID): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetTapeParameters".}

+proc SetTapeParameters*(hDevice: HANDLE, dwOperation: DWORD,

+                        lpTapeInformation: LPVOID): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "SetTapeParameters".}

+proc Beep*(dwFreq: DWORD, dwDuration: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "Beep".}

+proc MulDiv*(nNumber: int32, nNumerator: int32, nDenominator: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "MulDiv".}

+proc GetSystemTime*(lpSystemTime: LPSYSTEMTIME){.stdcall, dynlib: "kernel32",

+    importc: "GetSystemTime".}

+proc GetSystemTimeAsFileTime*(lpSystemTimeAsFileTime: LPFILETIME){.stdcall,

+    dynlib: "kernel32", importc: "GetSystemTimeAsFileTime".}

+proc SetSystemTime*(lpSystemTime: LPSYSTEMTIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetSystemTime".}

+proc GetLocalTime*(lpSystemTime: LPSYSTEMTIME){.stdcall, dynlib: "kernel32",

+    importc: "GetLocalTime".}

+proc SetLocalTime*(lpSystemTime: LPSYSTEMTIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetLocalTime".}

+proc GetSystemInfo*(lpSystemInfo: LPSYSTEM_INFO){.stdcall, dynlib: "kernel32",

+    importc: "GetSystemInfo".}

+proc SystemTimeToTzSpecificLocalTime*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION,

+                                      lpUniversalTime: LPSYSTEMTIME,

+                                      lpLocalTime: LPSYSTEMTIME): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SystemTimeToTzSpecificLocalTime".}

+proc GetTimeZoneInformation*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetTimeZoneInformation".}

+proc SetTimeZoneInformation*(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetTimeZoneInformation".}

+proc SystemTimeToFileTime*(lpSystemTime: LPSYSTEMTIME, lpFileTime: LPFILETIME): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SystemTimeToFileTime".}

+proc FileTimeToLocalFileTime*(lpFileTime: LPFILETIME,

+                              lpLocalFileTime: LPFILETIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FileTimeToLocalFileTime".}

+proc LocalFileTimeToFileTime*(lpLocalFileTime: LPFILETIME,

+                              lpFileTime: LPFILETIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "LocalFileTimeToFileTime".}

+proc FileTimeToSystemTime*(lpFileTime: LPFILETIME, lpSystemTime: LPSYSTEMTIME): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FileTimeToSystemTime".}

+proc CompareFileTime*(lpFileTime1: LPFILETIME, lpFileTime2: LPFILETIME): LONG{.

+    stdcall, dynlib: "kernel32", importc: "CompareFileTime".}

+proc FileTimeToDosDateTime*(lpFileTime: LPFILETIME, lpFatDate: LPWORD,

+                            lpFatTime: LPWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FileTimeToDosDateTime".}

+proc DosDateTimeToFileTime*(wFatDate: int16, wFatTime: int16,

+                            lpFileTime: LPFILETIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "DosDateTimeToFileTime".}

+proc GetTickCount*(): DWORD{.stdcall, dynlib: "kernel32",

+                             importc: "GetTickCount".}

+proc SetSystemTimeAdjustment*(dwTimeAdjustment: DWORD,

+                              bTimeAdjustmentDisabled: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetSystemTimeAdjustment".}

+proc GetSystemTimeAdjustment*(lpTimeAdjustment: PDWORD, lpTimeIncrement: PDWORD,

+                              lpTimeAdjustmentDisabled: PWINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetSystemTimeAdjustment".}

+proc CreatePipe*(hReadPipe: PHANDLE, hWritePipe: PHANDLE,

+                 lpPipeAttributes: LPSECURITY_ATTRIBUTES, nSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreatePipe".}

+proc ConnectNamedPipe*(hNamedPipe: HANDLE, lpOverlapped: LPOVERLAPPED): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ConnectNamedPipe".}

+proc DisconnectNamedPipe*(hNamedPipe: HANDLE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "DisconnectNamedPipe".}

+proc SetNamedPipeHandleState*(hNamedPipe: HANDLE, lpMode: LPDWORD,

+                              lpMaxCollectionCount: LPDWORD,

+                              lpCollectDataTimeout: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetNamedPipeHandleState".}

+proc GetNamedPipeInfo*(hNamedPipe: HANDLE, lpFlags: LPDWORD,

+                       lpOutBufferSize: LPDWORD, lpInBufferSize: LPDWORD,

+                       lpMaxInstances: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetNamedPipeInfo".}

+proc PeekNamedPipe*(hNamedPipe: HANDLE, lpBuffer: LPVOID, nBufferSize: DWORD,

+                    lpBytesRead: LPDWORD, lpTotalBytesAvail: LPDWORD,

+                    lpBytesLeftThisMessage: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "PeekNamedPipe".}

+proc TransactNamedPipe*(hNamedPipe: HANDLE, lpInBuffer: LPVOID,

+                        nInBufferSize: DWORD, lpOutBuffer: LPVOID,

+                        nOutBufferSize: DWORD, lpBytesRead: LPDWORD,

+                        lpOverlapped: LPOVERLAPPED): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "TransactNamedPipe".}

+proc GetMailslotInfo*(hMailslot: HANDLE, lpMaxMessageSize: LPDWORD,

+                      lpNextSize: LPDWORD, lpMessageCount: LPDWORD,

+                      lpReadTimeout: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetMailslotInfo".}

+proc SetMailslotInfo*(hMailslot: HANDLE, lReadTimeout: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetMailslotInfo".}

+proc MapViewOfFile*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD,

+                    dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD,

+                    dwNumberOfBytesToMap: DWORD): LPVOID{.stdcall,

+    dynlib: "kernel32", importc: "MapViewOfFile".}

+proc FlushViewOfFile*(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FlushViewOfFile".}

+proc UnmapViewOfFile*(lpBaseAddress: LPVOID): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "UnmapViewOfFile".}

+proc OpenFile*(lpFileName: LPCSTR, lpReOpenBuff: LPOFSTRUCT, uStyle: UINT): HFILE{.

+    stdcall, dynlib: "kernel32", importc: "OpenFile".}

+proc lopen*(lpPathName: LPCSTR, iReadWrite: int32): HFILE{.stdcall,

+    dynlib: "kernel32", importc: "_lopen".}

+proc lcreat*(lpPathName: LPCSTR, iAttribute: int32): HFILE{.stdcall,

+    dynlib: "kernel32", importc: "_lcreat".}

+proc lread*(hFile: HFILE, lpBuffer: LPVOID, uBytes: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "_lread".}

+proc lwrite*(hFile: HFILE, lpBuffer: LPCSTR, uBytes: UINT): UINT{.stdcall,

+    dynlib: "kernel32", importc: "_lwrite".}

+proc hread*(hFile: HFILE, lpBuffer: LPVOID, lBytes: int32): int32{.stdcall,

+    dynlib: "kernel32", importc: "_hread".}

+proc hwrite*(hFile: HFILE, lpBuffer: LPCSTR, lBytes: int32): int32{.stdcall,

+    dynlib: "kernel32", importc: "_hwrite".}

+proc lclose*(hFile: HFILE): HFILE{.stdcall, dynlib: "kernel32",

+                                   importc: "_lclose".}

+proc llseek*(hFile: HFILE, lOffset: LONG, iOrigin: int32): LONG{.stdcall,

+    dynlib: "kernel32", importc: "_llseek".}

+proc IsTextUnicode*(lpBuffer: LPVOID, cb: int32, lpi: LPINT): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "IsTextUnicode".}

+proc TlsAlloc*(): DWORD{.stdcall, dynlib: "kernel32", importc: "TlsAlloc".}

+proc TlsGetValue*(dwTlsIndex: DWORD): LPVOID{.stdcall, dynlib: "kernel32",

+    importc: "TlsGetValue".}

+proc TlsSetValue*(dwTlsIndex: DWORD, lpTlsValue: LPVOID): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "TlsSetValue".}

+proc TlsFree*(dwTlsIndex: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "TlsFree".}

+proc SleepEx*(dwMilliseconds: DWORD, bAlertable: WINBOOL): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "SleepEx".}

+proc WaitForSingleObjectEx*(hHandle: HANDLE, dwMilliseconds: DWORD,

+                            bAlertable: WINBOOL): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "WaitForSingleObjectEx".}

+proc WaitForMultipleObjectsEx*(nCount: DWORD, lpHandles: LPHANDLE,

+                               bWaitAll: WINBOOL, dwMilliseconds: DWORD,

+                               bAlertable: WINBOOL): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "WaitForMultipleObjectsEx".}

+proc ReadFileEx*(hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD,

+                 lpOverlapped: LPOVERLAPPED,

+                 lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadFileEx".}

+proc WriteFileEx*(hFile: HANDLE, lpBuffer: LPCVOID,

+                  nNumberOfBytesToWrite: DWORD, lpOverlapped: LPOVERLAPPED,

+                  lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteFileEx".}

+proc BackupRead*(hFile: HANDLE, lpBuffer: LPBYTE, nNumberOfBytesToRead: DWORD,

+                 lpNumberOfBytesRead: LPDWORD, bAbort: WINBOOL,

+                 bProcessSecurity: WINBOOL, lpContext: var LPVOID): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BackupRead".}

+proc BackupSeek*(hFile: HANDLE, dwLowBytesToSeek: DWORD,

+                 dwHighBytesToSeek: DWORD, lpdwLowByteSeeked: LPDWORD,

+                 lpdwHighByteSeeked: LPDWORD, lpContext: var LPVOID): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BackupSeek".}

+proc BackupWrite*(hFile: HANDLE, lpBuffer: LPBYTE, nNumberOfBytesToWrite: DWORD,

+                  lpNumberOfBytesWritten: LPDWORD, bAbort: WINBOOL,

+                  bProcessSecurity: WINBOOL, lpContext: var LPVOID): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BackupWrite".}

+proc SetProcessShutdownParameters*(dwLevel: DWORD, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetProcessShutdownParameters".}

+proc GetProcessShutdownParameters*(lpdwLevel: LPDWORD, lpdwFlags: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetProcessShutdownParameters".}

+proc SetFileApisToOEM*(){.stdcall, dynlib: "kernel32",

+                          importc: "SetFileApisToOEM".}

+proc SetFileApisToANSI*(){.stdcall, dynlib: "kernel32",

+                           importc: "SetFileApisToANSI".}

+proc AreFileApisANSI*(): WINBOOL{.stdcall, dynlib: "kernel32",

+                                  importc: "AreFileApisANSI".}

+proc CloseEventLog*(hEventLog: HANDLE): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "CloseEventLog".}

+proc DeregisterEventSource*(hEventLog: HANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "DeregisterEventSource".}

+proc NotifyChangeEventLog*(hEventLog: HANDLE, hEvent: HANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "NotifyChangeEventLog".}

+proc GetNumberOfEventLogRecords*(hEventLog: HANDLE, NumberOfRecords: PDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetNumberOfEventLogRecords".}

+proc GetOldestEventLogRecord*(hEventLog: HANDLE, OldestRecord: PDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetOldestEventLogRecord".}

+proc DuplicateToken*(ExistingTokenHandle: HANDLE,

+                     ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,

+                     DuplicateTokenHandle: PHANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "DuplicateToken".}

+proc GetKernelObjectSecurity*(Handle: HANDLE,

+                              RequestedInformation: SECURITY_INFORMATION,

+                              pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                              nLength: DWORD, lpnLengthNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetKernelObjectSecurity".}

+proc ImpersonateNamedPipeClient*(hNamedPipe: HANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ImpersonateNamedPipeClient".}

+proc ImpersonateLoggedOnUser*(hToken: HANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ImpersonateLoggedOnUser".}

+proc ImpersonateSelf*(ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ImpersonateSelf".}

+proc RevertToSelf*(): WINBOOL{.stdcall, dynlib: "advapi32",

+                               importc: "RevertToSelf".}

+proc SetThreadToken*(Thread: PHANDLE, Token: HANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "SetThreadToken".}

+proc OpenProcessToken*(ProcessHandle: HANDLE, DesiredAccess: DWORD,

+                       TokenHandle: PHANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "OpenProcessToken".}

+proc OpenThreadToken*(ThreadHandle: HANDLE, DesiredAccess: DWORD,

+                      OpenAsSelf: WINBOOL, TokenHandle: PHANDLE): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "OpenThreadToken".}

+proc GetTokenInformation*(TokenHandle: HANDLE,

+                          TokenInformationClass: TOKEN_INFORMATION_CLASS,

+                          TokenInformation: LPVOID,

+                          TokenInformationLength: DWORD, ReturnLength: PDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetTokenInformation".}

+proc SetTokenInformation*(TokenHandle: HANDLE,

+                          TokenInformationClass: TOKEN_INFORMATION_CLASS,

+                          TokenInformation: LPVOID,

+                          TokenInformationLength: DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "SetTokenInformation".}

+proc AdjustTokenPrivileges*(TokenHandle: HANDLE, DisableAllPrivileges: WINBOOL,

+                            NewState: PTOKEN_PRIVILEGES, BufferLength: DWORD,

+                            PreviousState: PTOKEN_PRIVILEGES,

+                            ReturnLength: PDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AdjustTokenPrivileges".}

+proc AdjustTokenGroups*(TokenHandle: HANDLE, ResetToDefault: WINBOOL,

+                        NewState: PTOKEN_GROUPS, BufferLength: DWORD,

+                        PreviousState: PTOKEN_GROUPS, ReturnLength: PDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AdjustTokenGroups".}

+proc PrivilegeCheck*(ClientToken: HANDLE, RequiredPrivileges: PPRIVILEGE_SET,

+                     pfResult: LPBOOL): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "PrivilegeCheck".}

+proc IsValidSid*(pSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",

+                                       importc: "IsValidSid".}

+proc EqualSid*(pSid1: PSID, pSid2: PSID): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "EqualSid".}

+proc EqualPrefixSid*(pSid1: PSID, pSid2: PSID): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "EqualPrefixSid".}

+proc GetSidLengthRequired*(nSubAuthorityCount: UCHAR): DWORD{.stdcall,

+    dynlib: "advapi32", importc: "GetSidLengthRequired".}

+proc AllocateAndInitializeSid*(pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,

+                               nSubAuthorityCount: int8, nSubAuthority0: DWORD,

+                               nSubAuthority1: DWORD, nSubAuthority2: DWORD,

+                               nSubAuthority3: DWORD, nSubAuthority4: DWORD,

+                               nSubAuthority5: DWORD, nSubAuthority6: DWORD,

+                               nSubAuthority7: DWORD, pSid: var PSID): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AllocateAndInitializeSid".}

+proc FreeSid*(pSid: PSID): PVOID{.stdcall, dynlib: "advapi32",

+                                  importc: "FreeSid".}

+proc InitializeSid*(Sid: PSID, pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY,

+                    nSubAuthorityCount: int8): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "InitializeSid".}

+proc GetSidIdentifierAuthority*(pSid: PSID): PSID_IDENTIFIER_AUTHORITY{.stdcall,

+    dynlib: "advapi32", importc: "GetSidIdentifierAuthority".}

+proc GetSidSubAuthority*(pSid: PSID, nSubAuthority: DWORD): PDWORD{.stdcall,

+    dynlib: "advapi32", importc: "GetSidSubAuthority".}

+proc GetSidSubAuthorityCount*(pSid: PSID): PUCHAR{.stdcall, dynlib: "advapi32",

+    importc: "GetSidSubAuthorityCount".}

+proc GetLengthSid*(pSid: PSID): DWORD{.stdcall, dynlib: "advapi32",

+                                       importc: "GetLengthSid".}

+proc CopySid*(nDestinationSidLength: DWORD, pDestinationSid: PSID,

+              pSourceSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "CopySid".}

+proc AreAllAccessesGranted*(GrantedAccess: DWORD, DesiredAccess: DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AreAllAccessesGranted".}

+proc AreAnyAccessesGranted*(GrantedAccess: DWORD, DesiredAccess: DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "AreAnyAccessesGranted".}

+proc MapGenericMask*(AccessMask: PDWORD, GenericMapping: PGENERIC_MAPPING){.

+    stdcall, dynlib: "advapi32", importc: "MapGenericMask".}

+proc IsValidAcl*(pAcl: PACL): WINBOOL{.stdcall, dynlib: "advapi32",

+                                       importc: "IsValidAcl".}

+proc InitializeAcl*(pAcl: PACL, nAclLength: DWORD, dwAclRevision: DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "InitializeAcl".}

+proc GetAclInformation*(pAcl: PACL, pAclInformation: LPVOID,

+                        nAclInformationLength: DWORD,

+                        dwAclInformationClass: ACL_INFORMATION_CLASS): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetAclInformation".}

+proc SetAclInformation*(pAcl: PACL, pAclInformation: LPVOID,

+                        nAclInformationLength: DWORD,

+                        dwAclInformationClass: ACL_INFORMATION_CLASS): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetAclInformation".}

+proc AddAce*(pAcl: PACL, dwAceRevision: DWORD, dwStartingAceIndex: DWORD,

+             pAceList: LPVOID, nAceListLength: DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AddAce".}

+proc DeleteAce*(pAcl: PACL, dwAceIndex: DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "DeleteAce".}

+proc GetAce*(pAcl: PACL, dwAceIndex: DWORD, pAce: var LPVOID): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetAce".}

+proc AddAccessAllowedAce*(pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD,

+                          pSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "AddAccessAllowedAce".}

+proc AddAccessDeniedAce*(pAcl: PACL, dwAceRevision: DWORD, AccessMask: DWORD,

+                         pSid: PSID): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "AddAccessDeniedAce".}

+proc AddAuditAccessAce*(pAcl: PACL, dwAceRevision: DWORD, dwAccessMask: DWORD,

+                        pSid: PSID, bAuditSuccess: WINBOOL,

+                        bAuditFailure: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AddAuditAccessAce".}

+proc FindFirstFreeAce*(pAcl: PACL, pAce: var LPVOID): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "FindFirstFreeAce".}

+proc InitializeSecurityDescriptor*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                   dwRevision: DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "InitializeSecurityDescriptor".}

+proc IsValidSecurityDescriptor*(pSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "IsValidSecurityDescriptor".}

+proc GetSecurityDescriptorLength*(pSecurityDescriptor: PSECURITY_DESCRIPTOR): DWORD{.

+    stdcall, dynlib: "advapi32", importc: "GetSecurityDescriptorLength".}

+proc GetSecurityDescriptorControl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                   pControl: PSECURITY_DESCRIPTOR_CONTROL,

+                                   lpdwRevision: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetSecurityDescriptorControl".}

+proc SetSecurityDescriptorDacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                bDaclPresent: WINBOOL, pDacl: PACL,

+                                bDaclDefaulted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "SetSecurityDescriptorDacl".}

+proc GetSecurityDescriptorDacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                lpbDaclPresent: LPBOOL, pDacl: var PACL,

+                                lpbDaclDefaulted: LPBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetSecurityDescriptorDacl".}

+proc SetSecurityDescriptorSacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                bSaclPresent: WINBOOL, pSacl: PACL,

+                                bSaclDefaulted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "SetSecurityDescriptorSacl".}

+proc GetSecurityDescriptorSacl*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                lpbSaclPresent: LPBOOL, pSacl: var PACL,

+                                lpbSaclDefaulted: LPBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetSecurityDescriptorSacl".}

+proc SetSecurityDescriptorOwner*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 pOwner: PSID, bOwnerDefaulted: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetSecurityDescriptorOwner".}

+proc GetSecurityDescriptorOwner*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 pOwner: var PSID, lpbOwnerDefaulted: LPBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetSecurityDescriptorOwner".}

+proc SetSecurityDescriptorGroup*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 pGroup: PSID, bGroupDefaulted: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetSecurityDescriptorGroup".}

+proc GetSecurityDescriptorGroup*(pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 pGroup: var PSID, lpbGroupDefaulted: LPBOOL): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetSecurityDescriptorGroup".}

+proc CreatePrivateObjectSecurity*(ParentDescriptor: PSECURITY_DESCRIPTOR,

+                                  CreatorDescriptor: PSECURITY_DESCRIPTOR,

+                                  NewDescriptor: var PSECURITY_DESCRIPTOR,

+                                  IsDirectoryObject: WINBOOL, Token: HANDLE,

+                                  GenericMapping: PGENERIC_MAPPING): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "CreatePrivateObjectSecurity".}

+proc SetPrivateObjectSecurity*(SecurityInformation: SECURITY_INFORMATION,

+                               ModificationDescriptor: PSECURITY_DESCRIPTOR,

+    ObjectsSecurityDescriptor: var PSECURITY_DESCRIPTOR,

+                               GenericMapping: PGENERIC_MAPPING, Token: HANDLE): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetPrivateObjectSecurity".}

+proc GetPrivateObjectSecurity*(ObjectDescriptor: PSECURITY_DESCRIPTOR,

+                               SecurityInformation: SECURITY_INFORMATION,

+                               ResultantDescriptor: PSECURITY_DESCRIPTOR,

+                               DescriptorLength: DWORD, ReturnLength: PDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "GetPrivateObjectSecurity".}

+proc DestroyPrivateObjectSecurity*(ObjectDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "DestroyPrivateObjectSecurity".}

+proc MakeSelfRelativeSD*(pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                         pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                         lpdwBufferLength: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "MakeSelfRelativeSD".}

+proc MakeAbsoluteSD*(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                     pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                     lpdwAbsoluteSecurityDescriptorSize: LPDWORD, pDacl: PACL,

+                     lpdwDaclSize: LPDWORD, pSacl: PACL, lpdwSaclSize: LPDWORD,

+                     pOwner: PSID, lpdwOwnerSize: LPDWORD, pPrimaryGroup: PSID,

+                     lpdwPrimaryGroupSize: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "MakeAbsoluteSD".}

+proc SetKernelObjectSecurity*(Handle: HANDLE,

+                              SecurityInformation: SECURITY_INFORMATION,

+                              SecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetKernelObjectSecurity".}

+proc FindNextChangeNotification*(hChangeHandle: HANDLE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FindNextChangeNotification".}

+proc FindCloseChangeNotification*(hChangeHandle: HANDLE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FindCloseChangeNotification".}

+proc VirtualLock*(lpAddress: LPVOID, dwSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "VirtualLock".}

+proc VirtualUnlock*(lpAddress: LPVOID, dwSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "VirtualUnlock".}

+proc MapViewOfFileEx*(hFileMappingObject: HANDLE, dwDesiredAccess: DWORD,

+                      dwFileOffsetHigh: DWORD, dwFileOffsetLow: DWORD,

+                      dwNumberOfBytesToMap: DWORD, lpBaseAddress: LPVOID): LPVOID{.

+    stdcall, dynlib: "kernel32", importc: "MapViewOfFileEx".}

+proc SetPriorityClass*(hProcess: HANDLE, dwPriorityClass: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetPriorityClass".}

+proc GetPriorityClass*(hProcess: HANDLE): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "GetPriorityClass".}

+proc IsBadReadPtr*(lp: pointer, ucb: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsBadReadPtr".}

+proc IsBadWritePtr*(lp: LPVOID, ucb: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsBadWritePtr".}

+proc IsBadHugeReadPtr*(lp: pointer, ucb: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsBadHugeReadPtr".}

+proc IsBadHugeWritePtr*(lp: LPVOID, ucb: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsBadHugeWritePtr".}

+proc IsBadCodePtr*(lpfn: FARPROC): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "IsBadCodePtr".}

+proc AllocateLocallyUniqueId*(Luid: PLUID): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AllocateLocallyUniqueId".}

+proc QueryPerformanceCounter*(lpPerformanceCount: PLARGE_INTEGER): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "QueryPerformanceCounter".}

+proc QueryPerformanceFrequency*(lpFrequency: PLARGE_INTEGER): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "QueryPerformanceFrequency".}

+proc ActivateKeyboardLayout*(hkl: HKL, Flags: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ActivateKeyboardLayout".}

+proc UnloadKeyboardLayout*(hkl: HKL): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "UnloadKeyboardLayout".}

+proc GetKeyboardLayoutList*(nBuff: int32, lpList: var HKL): int32{.stdcall,

+    dynlib: "user32", importc: "GetKeyboardLayoutList".}

+proc GetKeyboardLayout*(dwLayout: DWORD): HKL{.stdcall, dynlib: "user32",

+    importc: "GetKeyboardLayout".}

+proc OpenInputDesktop*(dwFlags: DWORD, fInherit: WINBOOL, dwDesiredAccess: DWORD): HDESK{.

+    stdcall, dynlib: "user32", importc: "OpenInputDesktop".}

+proc EnumDesktopWindows*(hDesktop: HDESK, lpfn: ENUMWINDOWSPROC, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnumDesktopWindows".}

+proc SwitchDesktop*(hDesktop: HDESK): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SwitchDesktop".}

+proc SetThreadDesktop*(hDesktop: HDESK): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetThreadDesktop".}

+proc CloseDesktop*(hDesktop: HDESK): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "CloseDesktop".}

+proc GetThreadDesktop*(dwThreadId: DWORD): HDESK{.stdcall, dynlib: "user32",

+    importc: "GetThreadDesktop".}

+proc CloseWindowStation*(hWinSta: HWINSTA): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "CloseWindowStation".}

+proc SetProcessWindowStation*(hWinSta: HWINSTA): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetProcessWindowStation".}

+proc GetProcessWindowStation*(): HWINSTA{.stdcall, dynlib: "user32",

+    importc: "GetProcessWindowStation".}

+proc SetUserObjectSecurity*(hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION,

+                            pSID: PSECURITY_DESCRIPTOR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetUserObjectSecurity".}

+proc GetUserObjectSecurity*(hObj: HANDLE, pSIRequested: PSECURITY_INFORMATION,

+                            pSID: PSECURITY_DESCRIPTOR, nLength: DWORD,

+                            lpnLengthNeeded: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetUserObjectSecurity".}

+proc TranslateMessage*(lpMsg: LPMSG): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "TranslateMessage".}

+proc SetMessageQueue*(cMessagesMax: int32): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetMessageQueue".}

+proc RegisterHotKey*(hWnd: HWND, anID: int32, fsModifiers: UINT, vk: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "RegisterHotKey".}

+proc UnregisterHotKey*(hWnd: HWND, anID: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "UnregisterHotKey".}

+proc ExitWindowsEx*(uFlags: UINT, dwReserved: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ExitWindowsEx".}

+proc SwapMouseButton*(fSwap: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SwapMouseButton".}

+proc GetMessagePos*(): DWORD{.stdcall, dynlib: "user32",

+                              importc: "GetMessagePos".}

+proc GetMessageTime*(): LONG{.stdcall, dynlib: "user32",

+                              importc: "GetMessageTime".}

+proc GetMessageExtraInfo*(): LONG{.stdcall, dynlib: "user32",

+                                   importc: "GetMessageExtraInfo".}

+proc SetMessageExtraInfo*(lParam: LPARAM): LPARAM{.stdcall, dynlib: "user32",

+    importc: "SetMessageExtraInfo".}

+proc BroadcastSystemMessage*(para1: DWORD, para2: LPDWORD, para3: UINT,

+                             para4: WPARAM, para5: LPARAM): int32{.stdcall,

+    dynlib: "user32", importc: "BroadcastSystemMessage".}

+proc AttachThreadInput*(idAttach: DWORD, idAttachTo: DWORD, fAttach: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "AttachThreadInput".}

+proc ReplyMessage*(lResult: LRESULT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ReplyMessage".}

+proc WaitMessage*(): WINBOOL{.stdcall, dynlib: "user32", importc: "WaitMessage".}

+proc WaitForInputIdle*(hProcess: HANDLE, dwMilliseconds: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "WaitForInputIdle".}

+proc PostQuitMessage*(nExitCode: int32){.stdcall, dynlib: "user32",

+    importc: "PostQuitMessage".}

+proc InSendMessage*(): WINBOOL{.stdcall, dynlib: "user32",

+                                importc: "InSendMessage".}

+proc GetDoubleClickTime*(): UINT{.stdcall, dynlib: "user32",

+                                  importc: "GetDoubleClickTime".}

+proc SetDoubleClickTime*(para1: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetDoubleClickTime".}

+proc IsWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                     importc: "IsWindow".}

+proc IsMenu*(hMenu: HMENU): WINBOOL{.stdcall, dynlib: "user32",

+                                     importc: "IsMenu".}

+proc IsChild*(hWndParent: HWND, hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsChild".}

+proc DestroyWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DestroyWindow".}

+proc ShowWindow*(hWnd: HWND, nCmdShow: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ShowWindow".}

+proc ShowWindowAsync*(hWnd: HWND, nCmdShow: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ShowWindowAsync".}

+proc FlashWindow*(hWnd: HWND, bInvert: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "FlashWindow".}

+proc ShowOwnedPopups*(hWnd: HWND, fShow: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ShowOwnedPopups".}

+proc OpenIcon*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                     importc: "OpenIcon".}

+proc CloseWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "CloseWindow".}

+proc MoveWindow*(hWnd: HWND, X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                 bRepaint: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "MoveWindow".}

+proc SetWindowPos*(hWnd: HWND, hWndInsertAfter: HWND, X: int32, Y: int32,

+                   cx: int32, cy: int32, uFlags: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetWindowPos".}

+proc GetWindowPlacement*(hWnd: HWND, lpwndpl: var WINDOWPLACEMENT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetWindowPlacement".}

+proc SetWindowPlacement*(hWnd: HWND, lpwndpl: var WINDOWPLACEMENT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetWindowPlacement".}

+proc GetWindowPlacement*(hWnd: HWND, lpwndpl: PWINDOWPLACEMENT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetWindowPlacement".}

+proc SetWindowPlacement*(hWnd: HWND, lpwndpl: PWINDOWPLACEMENT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetWindowPlacement".}

+proc BeginDeferWindowPos*(nNumWindows: int32): HDWP{.stdcall, dynlib: "user32",

+    importc: "BeginDeferWindowPos".}

+proc DeferWindowPos*(hWinPosInfo: HDWP, hWnd: HWND, hWndInsertAfter: HWND,

+                     x: int32, y: int32, cx: int32, cy: int32, uFlags: UINT): HDWP{.

+    stdcall, dynlib: "user32", importc: "DeferWindowPos".}

+proc EndDeferWindowPos*(hWinPosInfo: HDWP): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "EndDeferWindowPos".}

+proc IsWindowVisible*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsWindowVisible".}

+proc IsIconic*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                     importc: "IsIconic".}

+proc AnyPopup*(): WINBOOL{.stdcall, dynlib: "user32", importc: "AnyPopup".}

+proc BringWindowToTop*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "BringWindowToTop".}

+proc IsZoomed*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                     importc: "IsZoomed".}

+proc EndDialog*(hDlg: HWND, nResult: int32): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "EndDialog".}

+proc GetDlgItem*(hDlg: HWND, nIDDlgItem: int32): HWND{.stdcall,

+    dynlib: "user32", importc: "GetDlgItem".}

+proc SetDlgItemInt*(hDlg: HWND, nIDDlgItem: int32, uValue: UINT,

+                    bSigned: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetDlgItemInt".}

+proc GetDlgItemInt*(hDlg: HWND, nIDDlgItem: int32, lpTranslated: var WINBOOL,

+                    bSigned: WINBOOL): UINT{.stdcall, dynlib: "user32",

+    importc: "GetDlgItemInt".}

+proc CheckDlgButton*(hDlg: HWND, nIDButton: int32, uCheck: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "CheckDlgButton".}

+proc CheckRadioButton*(hDlg: HWND, nIDFirstButton: int32, nIDLastButton: int32,

+                       nIDCheckButton: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CheckRadioButton".}

+proc IsDlgButtonChecked*(hDlg: HWND, nIDButton: int32): UINT{.stdcall,

+    dynlib: "user32", importc: "IsDlgButtonChecked".}

+proc GetNextDlgGroupItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND{.

+    stdcall, dynlib: "user32", importc: "GetNextDlgGroupItem".}

+proc GetNextDlgTabItem*(hDlg: HWND, hCtl: HWND, bPrevious: WINBOOL): HWND{.

+    stdcall, dynlib: "user32", importc: "GetNextDlgTabItem".}

+proc GetDlgCtrlID*(hWnd: HWND): int32{.stdcall, dynlib: "user32",

+                                       importc: "GetDlgCtrlID".}

+proc GetDialogBaseUnits*(): int32{.stdcall, dynlib: "user32",

+                                   importc: "GetDialogBaseUnits".}

+proc OpenClipboard*(hWndNewOwner: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "OpenClipboard".}

+proc CloseClipboard*(): WINBOOL{.stdcall, dynlib: "user32",

+                                 importc: "CloseClipboard".}

+proc GetClipboardOwner*(): HWND{.stdcall, dynlib: "user32",

+                                 importc: "GetClipboardOwner".}

+proc SetClipboardViewer*(hWndNewViewer: HWND): HWND{.stdcall, dynlib: "user32",

+    importc: "SetClipboardViewer".}

+proc GetClipboardViewer*(): HWND{.stdcall, dynlib: "user32",

+                                  importc: "GetClipboardViewer".}

+proc ChangeClipboardChain*(hWndRemove: HWND, hWndNewNext: HWND): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "ChangeClipboardChain".}

+proc SetClipboardData*(uFormat: UINT, hMem: HANDLE): HANDLE{.stdcall,

+    dynlib: "user32", importc: "SetClipboardData".}

+proc GetClipboardData*(uFormat: UINT): HANDLE{.stdcall, dynlib: "user32",

+    importc: "GetClipboardData".}

+proc CountClipboardFormats*(): int32{.stdcall, dynlib: "user32",

+                                      importc: "CountClipboardFormats".}

+proc EnumClipboardFormats*(format: UINT): UINT{.stdcall, dynlib: "user32",

+    importc: "EnumClipboardFormats".}

+proc EmptyClipboard*(): WINBOOL{.stdcall, dynlib: "user32",

+                                 importc: "EmptyClipboard".}

+proc IsClipboardFormatAvailable*(format: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "IsClipboardFormatAvailable".}

+proc GetPriorityClipboardFormat*(paFormatPriorityList: var UINT, cFormats: int32): int32{.

+    stdcall, dynlib: "user32", importc: "GetPriorityClipboardFormat".}

+proc GetOpenClipboardWindow*(): HWND{.stdcall, dynlib: "user32",

+                                      importc: "GetOpenClipboardWindow".}

+proc CharNextExA*(CodePage: int16, lpCurrentChar: LPCSTR, dwFlags: DWORD): LPSTR{.

+    stdcall, dynlib: "user32", importc: "CharNextExA".}

+proc CharPrevExA*(CodePage: int16, lpStart: LPCSTR, lpCurrentChar: LPCSTR,

+                  dwFlags: DWORD): LPSTR{.stdcall, dynlib: "user32",

+    importc: "CharPrevExA".}

+proc SetFocus*(hWnd: HWND): HWND{.stdcall, dynlib: "user32", importc: "SetFocus".}

+proc GetActiveWindow*(): HWND{.stdcall, dynlib: "user32",

+                               importc: "GetActiveWindow".}

+proc GetFocus*(): HWND{.stdcall, dynlib: "user32", importc: "GetFocus".}

+proc GetKBCodePage*(): UINT{.stdcall, dynlib: "user32", importc: "GetKBCodePage".}

+proc GetKeyState*(nVirtKey: int32): SHORT{.stdcall, dynlib: "user32",

+    importc: "GetKeyState".}

+proc GetAsyncKeyState*(vKey: int32): SHORT{.stdcall, dynlib: "user32",

+    importc: "GetAsyncKeyState".}

+proc GetKeyboardState*(lpKeyState: PBYTE): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetKeyboardState".}

+proc SetKeyboardState*(lpKeyState: LPBYTE): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetKeyboardState".}

+proc GetKeyboardType*(nTypeFlag: int32): int32{.stdcall, dynlib: "user32",

+    importc: "GetKeyboardType".}

+proc ToAscii*(uVirtKey: UINT, uScanCode: UINT, lpKeyState: PBYTE,

+              lpChar: LPWORD, uFlags: UINT): int32{.stdcall, dynlib: "user32",

+    importc: "ToAscii".}

+proc ToAsciiEx*(uVirtKey: UINT, uScanCode: UINT, lpKeyState: PBYTE,

+                lpChar: LPWORD, uFlags: UINT, dwhkl: HKL): int32{.stdcall,

+    dynlib: "user32", importc: "ToAsciiEx".}

+proc ToUnicode*(wVirtKey: UINT, wScanCode: UINT, lpKeyState: PBYTE,

+                pwszBuff: LPWSTR, cchBuff: int32, wFlags: UINT): int32{.stdcall,

+    dynlib: "user32", importc: "ToUnicode".}

+proc OemKeyScan*(wOemChar: int16): DWORD{.stdcall, dynlib: "user32",

+    importc: "OemKeyScan".}

+proc keybd_event*(bVk: int8, bScan: int8, dwFlags: DWORD, dwExtraInfo: DWORD){.

+    stdcall, dynlib: "user32", importc: "keybd_event".}

+proc mouse_event*(dwFlags: DWORD, dx: DWORD, dy: DWORD, cButtons: DWORD,

+                  dwExtraInfo: DWORD){.stdcall, dynlib: "user32",

+                                       importc: "mouse_event".}

+proc GetInputState*(): WINBOOL{.stdcall, dynlib: "user32",

+                                importc: "GetInputState".}

+proc GetQueueStatus*(flags: UINT): DWORD{.stdcall, dynlib: "user32",

+    importc: "GetQueueStatus".}

+proc GetCapture*(): HWND{.stdcall, dynlib: "user32", importc: "GetCapture".}

+proc SetCapture*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",

+                                    importc: "SetCapture".}

+proc ReleaseCapture*(): WINBOOL{.stdcall, dynlib: "user32",

+                                 importc: "ReleaseCapture".}

+proc MsgWaitForMultipleObjects*(nCount: DWORD, pHandles: LPHANDLE,

+                                fWaitAll: WINBOOL, dwMilliseconds: DWORD,

+                                dwWakeMask: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "MsgWaitForMultipleObjects".}

+proc SetTimer*(hWnd: HWND, nIDEvent: UINT, uElapse: UINT, lpTimerFunc: TIMERPROC): UINT{.

+    stdcall, dynlib: "user32", importc: "SetTimer".}

+proc KillTimer*(hWnd: HWND, uIDEvent: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "KillTimer".}

+proc IsWindowUnicode*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsWindowUnicode".}

+proc EnableWindow*(hWnd: HWND, bEnable: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EnableWindow".}

+proc IsWindowEnabled*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsWindowEnabled".}

+proc DestroyAcceleratorTable*(hAccel: HACCEL): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DestroyAcceleratorTable".}

+proc GetSystemMetrics*(nIndex: int32): int32{.stdcall, dynlib: "user32",

+    importc: "GetSystemMetrics".}

+proc GetMenu*(hWnd: HWND): HMENU{.stdcall, dynlib: "user32", importc: "GetMenu".}

+proc SetMenu*(hWnd: HWND, hMenu: HMENU): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetMenu".}

+proc HiliteMenuItem*(hWnd: HWND, hMenu: HMENU, uIDHiliteItem: UINT,

+                     uHilite: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "HiliteMenuItem".}

+proc GetMenuState*(hMenu: HMENU, uId: UINT, uFlags: UINT): UINT{.stdcall,

+    dynlib: "user32", importc: "GetMenuState".}

+proc DrawMenuBar*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "DrawMenuBar".}

+proc GetSystemMenu*(hWnd: HWND, bRevert: WINBOOL): HMENU{.stdcall,

+    dynlib: "user32", importc: "GetSystemMenu".}

+proc CreateMenu*(): HMENU{.stdcall, dynlib: "user32", importc: "CreateMenu".}

+proc CreatePopupMenu*(): HMENU{.stdcall, dynlib: "user32",

+                                importc: "CreatePopupMenu".}

+proc DestroyMenu*(hMenu: HMENU): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DestroyMenu".}

+proc CheckMenuItem*(hMenu: HMENU, uIDCheckItem: UINT, uCheck: UINT): DWORD{.

+    stdcall, dynlib: "user32", importc: "CheckMenuItem".}

+proc EnableMenuItem*(hMenu: HMENU, uIDEnableItem: UINT, uEnable: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnableMenuItem".}

+proc GetSubMenu*(hMenu: HMENU, nPos: int32): HMENU{.stdcall, dynlib: "user32",

+    importc: "GetSubMenu".}

+proc GetMenuItemID*(hMenu: HMENU, nPos: int32): UINT{.stdcall, dynlib: "user32",

+    importc: "GetMenuItemID".}

+proc GetMenuItemCount*(hMenu: HMENU): int32{.stdcall, dynlib: "user32",

+    importc: "GetMenuItemCount".}

+proc RemoveMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "RemoveMenu".}

+proc DeleteMenu*(hMenu: HMENU, uPosition: UINT, uFlags: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DeleteMenu".}

+proc SetMenuItemBitmaps*(hMenu: HMENU, uPosition: UINT, uFlags: UINT,

+                         hBitmapUnchecked: HBITMAP, hBitmapChecked: HBITMAP): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetMenuItemBitmaps".}

+proc GetMenuCheckMarkDimensions*(): LONG{.stdcall, dynlib: "user32",

+    importc: "GetMenuCheckMarkDimensions".}

+proc TrackPopupMenu*(hMenu: HMENU, uFlags: UINT, x: int32, y: int32,

+                     nReserved: int32, hWnd: HWND, prcRect: var RECT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "TrackPopupMenu".}

+proc GetMenuDefaultItem*(hMenu: HMENU, fByPos: UINT, gmdiFlags: UINT): UINT{.

+    stdcall, dynlib: "user32", importc: "GetMenuDefaultItem".}

+proc SetMenuDefaultItem*(hMenu: HMENU, uItem: UINT, fByPos: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetMenuDefaultItem".}

+proc GetMenuItemRect*(hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: LPRECT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetMenuItemRect".}

+proc MenuItemFromPoint*(hWnd: HWND, hMenu: HMENU, ptScreen: POINT): int32{.

+    stdcall, dynlib: "user32", importc: "MenuItemFromPoint".}

+proc DragObject*(para1: HWND, para2: HWND, para3: UINT, para4: DWORD,

+                 para5: HCURSOR): DWORD{.stdcall, dynlib: "user32",

+    importc: "DragObject".}

+proc DragDetect*(hwnd: HWND, pt: POINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DragDetect".}

+proc DrawIcon*(hDC: HDC, X: int32, Y: int32, hIcon: HICON): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DrawIcon".}

+proc UpdateWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "UpdateWindow".}

+proc SetActiveWindow*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",

+    importc: "SetActiveWindow".}

+proc GetForegroundWindow*(): HWND{.stdcall, dynlib: "user32",

+                                   importc: "GetForegroundWindow".}

+proc PaintDesktop*(hdc: HDC): WINBOOL{.stdcall, dynlib: "user32",

+                                       importc: "PaintDesktop".}

+proc SetForegroundWindow*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetForegroundWindow".}

+proc WindowFromDC*(hDC: HDC): HWND{.stdcall, dynlib: "user32",

+                                    importc: "WindowFromDC".}

+proc GetDC*(hWnd: HWND): HDC{.stdcall, dynlib: "user32", importc: "GetDC".}

+proc GetDCEx*(hWnd: HWND, hrgnClip: HRGN, flags: DWORD): HDC{.stdcall,

+    dynlib: "user32", importc: "GetDCEx".}

+proc GetWindowDC*(hWnd: HWND): HDC{.stdcall, dynlib: "user32",

+                                    importc: "GetWindowDC".}

+proc ReleaseDC*(hWnd: HWND, hDC: HDC): int32{.stdcall, dynlib: "user32",

+    importc: "ReleaseDC".}

+proc BeginPaint*(hWnd: HWND, lpPaint: LPPAINTSTRUCT): HDC{.stdcall,

+    dynlib: "user32", importc: "BeginPaint".}

+proc EndPaint*(hWnd: HWND, lpPaint: LPPAINTSTRUCT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EndPaint".}

+proc GetUpdateRect*(hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUpdateRect".}

+proc GetUpdateRgn*(hWnd: HWND, hRgn: HRGN, bErase: WINBOOL): int32{.stdcall,

+    dynlib: "user32", importc: "GetUpdateRgn".}

+proc SetWindowRgn*(hWnd: HWND, hRgn: HRGN, bRedraw: WINBOOL): int32{.stdcall,

+    dynlib: "user32", importc: "SetWindowRgn".}

+proc GetWindowRgn*(hWnd: HWND, hRgn: HRGN): int32{.stdcall, dynlib: "user32",

+    importc: "GetWindowRgn".}

+proc ExcludeUpdateRgn*(hDC: HDC, hWnd: HWND): int32{.stdcall, dynlib: "user32",

+    importc: "ExcludeUpdateRgn".}

+proc InvalidateRect*(hWnd: HWND, lpRect: var RECT, bErase: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "InvalidateRect".}

+proc InvalidateRect*(hWnd: HWND, lpRect: LPRECT, bErase: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "InvalidateRect".}

+proc ValidateRect*(hWnd: HWND, lpRect: var RECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ValidateRect".}

+proc ValidateRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ValidateRect".}

+proc InvalidateRgn*(hWnd: HWND, hRgn: HRGN, bErase: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "InvalidateRgn".}

+proc ValidateRgn*(hWnd: HWND, hRgn: HRGN): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ValidateRgn".}

+proc RedrawWindow*(hWnd: HWND, lprcUpdate: var RECT, hrgnUpdate: HRGN,

+                   flags: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "RedrawWindow".}

+proc RedrawWindow*(hWnd: HWND, lprcUpdate: LPRECT, hrgnUpdate: HRGN, flags: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "RedrawWindow".}

+proc LockWindowUpdate*(hWndLock: HWND): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "LockWindowUpdate".}

+proc ScrollWindow*(hWnd: HWND, XAmount: int32, YAmount: int32, lpRect: var RECT,

+                   lpClipRect: var RECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ScrollWindow".}

+proc ScrollDC*(hDC: HDC, dx: int32, dy: int32, lprcScroll: var RECT,

+               lprcClip: var RECT, hrgnUpdate: HRGN, lprcUpdate: LPRECT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "ScrollDC".}

+proc ScrollWindowEx*(hWnd: HWND, dx: int32, dy: int32, prcScroll: var RECT,

+                     prcClip: var RECT, hrgnUpdate: HRGN, prcUpdate: LPRECT,

+                     flags: UINT): int32{.stdcall, dynlib: "user32",

+    importc: "ScrollWindowEx".}

+proc SetScrollPos*(hWnd: HWND, nBar: int32, nPos: int32, bRedraw: WINBOOL): int32{.

+    stdcall, dynlib: "user32", importc: "SetScrollPos".}

+proc GetScrollPos*(hWnd: HWND, nBar: int32): int32{.stdcall, dynlib: "user32",

+    importc: "GetScrollPos".}

+proc SetScrollRange*(hWnd: HWND, nBar: int32, nMinPos: int32, nMaxPos: int32,

+                     bRedraw: WINBOOL): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetScrollRange".}

+proc GetScrollRange*(hWnd: HWND, nBar: int32, lpMinPos: LPINT, lpMaxPos: LPINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetScrollRange".}

+proc ShowScrollBar*(hWnd: HWND, wBar: int32, bShow: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ShowScrollBar".}

+proc EnableScrollBar*(hWnd: HWND, wSBflags: UINT, wArrows: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnableScrollBar".}

+proc GetClientRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetClientRect".}

+proc GetWindowRect*(hWnd: HWND, lpRect: LPRECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetWindowRect".}

+proc AdjustWindowRect*(lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "AdjustWindowRect".}

+proc AdjustWindowRectEx*(lpRect: LPRECT, dwStyle: DWORD, bMenu: WINBOOL,

+                         dwExStyle: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "AdjustWindowRectEx".}

+proc SetWindowContextHelpId*(para1: HWND, para2: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetWindowContextHelpId".}

+proc GetWindowContextHelpId*(para1: HWND): DWORD{.stdcall, dynlib: "user32",

+    importc: "GetWindowContextHelpId".}

+proc SetMenuContextHelpId*(para1: HMENU, para2: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetMenuContextHelpId".}

+proc GetMenuContextHelpId*(para1: HMENU): DWORD{.stdcall, dynlib: "user32",

+    importc: "GetMenuContextHelpId".}

+proc MessageBeep*(uType: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "MessageBeep".}

+proc ShowCursor*(bShow: WINBOOL): int32{.stdcall, dynlib: "user32",

+    importc: "ShowCursor".}

+proc SetCursorPos*(X: int32, Y: int32): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetCursorPos".}

+proc SetCursor*(hCursor: HCURSOR): HCURSOR{.stdcall, dynlib: "user32",

+    importc: "SetCursor".}

+proc GetCursorPos*(lpPoint: LPPOINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetCursorPos".}

+proc ClipCursor*(lpRect: LPRECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ClipCursor".}

+proc GetClipCursor*(lpRect: LPRECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetClipCursor".}

+proc GetCursor*(): HCURSOR{.stdcall, dynlib: "user32", importc: "GetCursor".}

+proc CreateCaret*(hWnd: HWND, hBitmap: HBITMAP, nWidth: int32, nHeight: int32): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "CreateCaret".}

+proc GetCaretBlinkTime*(): UINT{.stdcall, dynlib: "user32",

+                                 importc: "GetCaretBlinkTime".}

+proc SetCaretBlinkTime*(uMSeconds: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetCaretBlinkTime".}

+proc DestroyCaret*(): WINBOOL{.stdcall, dynlib: "user32",

+                               importc: "DestroyCaret".}

+proc HideCaret*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                      importc: "HideCaret".}

+proc ShowCaret*(hWnd: HWND): WINBOOL{.stdcall, dynlib: "user32",

+                                      importc: "ShowCaret".}

+proc SetCaretPos*(X: int32, Y: int32): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetCaretPos".}

+proc GetCaretPos*(lpPoint: LPPOINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetCaretPos".}

+proc ClientToScreen*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ClientToScreen".}

+proc ScreenToClient*(hWnd: HWND, lpPoint: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ScreenToClient".}

+proc MapWindowPoints*(hWndFrom: HWND, hWndTo: HWND, lpPoints: LPPOINT,

+                      cPoints: UINT): int32{.stdcall, dynlib: "user32",

+    importc: "MapWindowPoints".}

+proc WindowFromPoint*(Point: POINT): HWND{.stdcall, dynlib: "user32",

+    importc: "WindowFromPoint".}

+proc ChildWindowFromPoint*(hWndParent: HWND, Point: POINT): HWND{.stdcall,

+    dynlib: "user32", importc: "ChildWindowFromPoint".}

+proc GetSysColor*(nIndex: int32): DWORD{.stdcall, dynlib: "user32",

+    importc: "GetSysColor".}

+proc GetSysColorBrush*(nIndex: int32): HBRUSH{.stdcall, dynlib: "user32",

+    importc: "GetSysColorBrush".}

+proc SetSysColors*(cElements: int32, lpaElements: var wINT,

+                   lpaRgbValues: var COLORREF): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetSysColors".}

+proc DrawFocusRect*(hDC: HDC, lprc: var RECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DrawFocusRect".}

+proc FillRect*(hDC: HDC, lprc: RECT, hbr: HBRUSH): int32{.stdcall,

+    dynlib: "user32", importc: "FillRect".}

+proc FrameRect*(hDC: HDC, lprc: var RECT, hbr: HBRUSH): int32{.stdcall,

+    dynlib: "user32", importc: "FrameRect".}

+proc InvertRect*(hDC: HDC, lprc: var RECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "InvertRect".}

+proc SetRect*(lprc: LPRECT, xLeft: int32, yTop: int32, xRight: int32,

+              yBottom: int32): WINBOOL{.stdcall, dynlib: "user32",

+                                        importc: "SetRect".}

+proc SetRectEmpty*(lprc: LPRECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetRectEmpty".}

+proc CopyRect*(lprcDst: LPRECT, lprcSrc: var RECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CopyRect".}

+proc InflateRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "InflateRect".}

+proc IntersectRect*(lprcDst: LPRECT, lprcSrc1: var RECT, lprcSrc2: var RECT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "IntersectRect".}

+proc UnionRect*(lprcDst: LPRECT, lprcSrc1: var RECT, lprcSrc2: var RECT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "UnionRect".}

+proc SubtractRect*(lprcDst: LPRECT, lprcSrc1: var RECT, lprcSrc2: var RECT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SubtractRect".}

+proc OffsetRect*(lprc: LPRECT, dx: int32, dy: int32): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "OffsetRect".}

+proc IsRectEmpty*(lprc: var RECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "IsRectEmpty".}

+proc EqualRect*(lprc1: var RECT, lprc2: var RECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EqualRect".}

+proc PtInRect*(lprc: var RECT, pt: POINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "PtInRect".}

+proc PtInRect*(lprc: LPRECT, pt: POINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "PtInRect".}

+proc GetWindowWord*(hWnd: HWND, nIndex: int32): int16{.stdcall,

+    dynlib: "user32", importc: "GetWindowWord".}

+proc SetWindowWord*(hWnd: HWND, nIndex: int32, wNewWord: int16): int16{.stdcall,

+    dynlib: "user32", importc: "SetWindowWord".}

+proc GetClassWord*(hWnd: HWND, nIndex: int32): int16{.stdcall, dynlib: "user32",

+    importc: "GetClassWord".}

+proc SetClassWord*(hWnd: HWND, nIndex: int32, wNewWord: int16): int16{.stdcall,

+    dynlib: "user32", importc: "SetClassWord".}

+proc GetDesktopWindow*(): HWND{.stdcall, dynlib: "user32",

+                                importc: "GetDesktopWindow".}

+proc GetParent*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",

+                                   importc: "GetParent".}

+proc SetParent*(hWndChild: HWND, hWndNewParent: HWND): HWND{.stdcall,

+    dynlib: "user32", importc: "SetParent".}

+proc EnumChildWindows*(hWndParent: HWND, lpEnumFunc: ENUMWINDOWSPROC,

+                       lParam: LPARAM): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "EnumChildWindows".}

+proc EnumWindows*(lpEnumFunc: ENUMWINDOWSPROC, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnumWindows".}

+proc EnumThreadWindows*(dwThreadId: DWORD, lpfn: ENUMWINDOWSPROC, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnumThreadWindows".}

+proc EnumTaskWindows*(hTask: HWND, lpfn: FARPROC, lParam: LPARAM): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "EnumThreadWindows".}

+proc GetTopWindow*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",

+                                      importc: "GetTopWindow".}

+proc GetWindowThreadProcessId*(hWnd: HWND, lpdwProcessId: LPDWORD): DWORD{.

+    stdcall, dynlib: "user32", importc: "GetWindowThreadProcessId".}

+proc GetLastActivePopup*(hWnd: HWND): HWND{.stdcall, dynlib: "user32",

+    importc: "GetLastActivePopup".}

+proc GetWindow*(hWnd: HWND, uCmd: UINT): HWND{.stdcall, dynlib: "user32",

+    importc: "GetWindow".}

+proc UnhookWindowsHook*(nCode: int32, pfnFilterProc: HOOKPROC): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "UnhookWindowsHook".}

+proc UnhookWindowsHookEx*(hhk: HHOOK): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "UnhookWindowsHookEx".}

+proc CallNextHookEx*(hhk: HHOOK, nCode: int32, wParam: WPARAM, lParam: LPARAM): LRESULT{.

+    stdcall, dynlib: "user32", importc: "CallNextHookEx".}

+proc CheckMenuRadioItem*(para1: HMENU, para2: UINT, para3: UINT, para4: UINT,

+                         para5: UINT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "CheckMenuRadioItem".}

+proc CreateCursor*(hInst: HINST, xHotSpot: int32, yHotSpot: int32,

+                   nWidth: int32, nHeight: int32, pvANDPlane: pointer,

+                   pvXORPlane: pointer): HCURSOR{.stdcall, dynlib: "user32",

+    importc: "CreateCursor".}

+proc DestroyCursor*(hCursor: HCURSOR): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DestroyCursor".}

+proc SetSystemCursor*(hcur: HCURSOR, anID: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetSystemCursor".}

+proc CreateIcon*(hInstance: HINST, nWidth: int32, nHeight: int32, cPlanes: int8,

+                 cBitsPixel: int8, lpbANDbits: var int8, lpbXORbits: var int8): HICON{.

+    stdcall, dynlib: "user32", importc: "CreateIcon".}

+proc DestroyIcon*(hIcon: HICON): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DestroyIcon".}

+proc LookupIconIdFromDirectory*(presbits: PBYTE, fIcon: WINBOOL): int32{.

+    stdcall, dynlib: "user32", importc: "LookupIconIdFromDirectory".}

+proc LookupIconIdFromDirectoryEx*(presbits: PBYTE, fIcon: WINBOOL,

+                                  cxDesired: int32, cyDesired: int32,

+                                  Flags: UINT): int32{.stdcall,

+    dynlib: "user32", importc: "LookupIconIdFromDirectoryEx".}

+proc CreateIconFromResource*(presbits: PBYTE, dwResSize: DWORD, fIcon: WINBOOL,

+                             dwVer: DWORD): HICON{.stdcall, dynlib: "user32",

+    importc: "CreateIconFromResource".}

+proc CreateIconFromResourceEx*(presbits: PBYTE, dwResSize: DWORD,

+                               fIcon: WINBOOL, dwVer: DWORD, cxDesired: int32,

+                               cyDesired: int32, Flags: UINT): HICON{.stdcall,

+    dynlib: "user32", importc: "CreateIconFromResourceEx".}

+proc CopyImage*(para1: HANDLE, para2: UINT, para3: int32, para4: int32,

+                para5: UINT): HICON{.stdcall, dynlib: "user32",

+                                     importc: "CopyImage".}

+proc CreateIconIndirect*(piconinfo: PICONINFO): HICON{.stdcall,

+    dynlib: "user32", importc: "CreateIconIndirect".}

+proc CopyIcon*(hIcon: HICON): HICON{.stdcall, dynlib: "user32",

+                                     importc: "CopyIcon".}

+proc GetIconInfo*(hIcon: HICON, piconinfo: PICONINFO): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetIconInfo".}

+proc MapDialogRect*(hDlg: HWND, lpRect: LPRECT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "MapDialogRect".}

+proc SetScrollInfo*(para1: HWND, para2: int32, para3: LPCSCROLLINFO,

+                    para4: WINBOOL): int32{.stdcall, dynlib: "user32",

+    importc: "SetScrollInfo".}

+proc GetScrollInfo*(para1: HWND, para2: int32, para3: LPSCROLLINFO): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetScrollInfo".}

+proc TranslateMDISysAccel*(hWndClient: HWND, lpMsg: LPMSG): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "TranslateMDISysAccel".}

+proc ArrangeIconicWindows*(hWnd: HWND): UINT{.stdcall, dynlib: "user32",

+    importc: "ArrangeIconicWindows".}

+proc TileWindows*(hwndParent: HWND, wHow: UINT, lpRect: var RECT, cKids: UINT,

+                  lpKids: var HWND): int16{.stdcall, dynlib: "user32",

+    importc: "TileWindows".}

+proc CascadeWindows*(hwndParent: HWND, wHow: UINT, lpRect: var RECT,

+                     cKids: UINT, lpKids: var HWND): int16{.stdcall,

+    dynlib: "user32", importc: "CascadeWindows".}

+proc SetLastErrorEx*(dwErrCode: DWORD, dwType: DWORD){.stdcall,

+    dynlib: "user32", importc: "SetLastErrorEx".}

+proc SetDebugErrorLevel*(dwLevel: DWORD){.stdcall, dynlib: "user32",

+    importc: "SetDebugErrorLevel".}

+proc DrawEdge*(hdc: HDC, qrc: LPRECT, edge: UINT, grfFlags: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DrawEdge".}

+proc DrawFrameControl*(para1: HDC, para2: LPRECT, para3: UINT, para4: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DrawFrameControl".}

+proc DrawCaption*(para1: HWND, para2: HDC, para3: var RECT, para4: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DrawCaption".}

+proc DrawAnimatedRects*(hwnd: HWND, idAni: int32, lprcFrom: var RECT,

+                        lprcTo: var RECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DrawAnimatedRects".}

+proc TrackPopupMenuEx*(para1: HMENU, para2: UINT, para3: int32, para4: int32,

+                       para5: HWND, para6: LPTPMPARAMS): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "TrackPopupMenuEx".}

+proc ChildWindowFromPointEx*(para1: HWND, para2: POINT, para3: UINT): HWND{.

+    stdcall, dynlib: "user32", importc: "ChildWindowFromPointEx".}

+proc DrawIconEx*(hdc: HDC, xLeft: int32, yTop: int32, hIcon: HICON,

+                 cxWidth: int32, cyWidth: int32, istepIfAniCur: UINT,

+                 hbrFlickerFreeDraw: HBRUSH, diFlags: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DrawIconEx".}

+proc AnimatePalette*(para1: HPALETTE, para2: UINT, para3: UINT,

+                     para4: var PALETTEENTRY): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "AnimatePalette".}

+proc Arc*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,

+          para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "Arc".}

+proc BitBlt*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,

+             para6: HDC, para7: int32, para8: int32, para9: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "BitBlt".}

+proc CancelDC*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                     importc: "CancelDC".}

+proc Chord*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,

+            para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "Chord".}

+proc CloseMetaFile*(para1: HDC): HMETAFILE{.stdcall, dynlib: "gdi32",

+    importc: "CloseMetaFile".}

+proc CombineRgn*(para1: HRGN, para2: HRGN, para3: HRGN, para4: int32): int32{.

+    stdcall, dynlib: "gdi32", importc: "CombineRgn".}

+proc CreateBitmap*(para1: int32, para2: int32, para3: UINT, para4: UINT,

+                   para5: pointer): HBITMAP{.stdcall, dynlib: "gdi32",

+    importc: "CreateBitmap".}

+proc CreateBitmapIndirect*(para1: var BITMAP): HBITMAP{.stdcall,

+    dynlib: "gdi32", importc: "CreateBitmapIndirect".}

+proc CreateBrushIndirect*(para1: var LOGBRUSH): HBRUSH{.stdcall,

+    dynlib: "gdi32", importc: "CreateBrushIndirect".}

+proc CreateCompatibleBitmap*(para1: HDC, para2: int32, para3: int32): HBITMAP{.

+    stdcall, dynlib: "gdi32", importc: "CreateCompatibleBitmap".}

+proc CreateDiscardableBitmap*(para1: HDC, para2: int32, para3: int32): HBITMAP{.

+    stdcall, dynlib: "gdi32", importc: "CreateDiscardableBitmap".}

+proc CreateCompatibleDC*(para1: HDC): HDC{.stdcall, dynlib: "gdi32",

+    importc: "CreateCompatibleDC".}

+proc CreateDIBitmap*(para1: HDC, para2: var BITMAPINFOHEADER, para3: DWORD,

+                     para4: pointer, para5: var BITMAPINFO, para6: UINT): HBITMAP{.

+    stdcall, dynlib: "gdi32", importc: "CreateDIBitmap".}

+proc CreateDIBPatternBrush*(para1: HGLOBAL, para2: UINT): HBRUSH{.stdcall,

+    dynlib: "gdi32", importc: "CreateDIBPatternBrush".}

+proc CreateDIBPatternBrushPt*(para1: pointer, para2: UINT): HBRUSH{.stdcall,

+    dynlib: "gdi32", importc: "CreateDIBPatternBrushPt".}

+proc CreateEllipticRgn*(para1: int32, para2: int32, para3: int32, para4: int32): HRGN{.

+    stdcall, dynlib: "gdi32", importc: "CreateEllipticRgn".}

+proc CreateEllipticRgnIndirect*(para1: var RECT): HRGN{.stdcall,

+    dynlib: "gdi32", importc: "CreateEllipticRgnIndirect".}

+proc CreateHatchBrush*(para1: int32, para2: COLORREF): HBRUSH{.stdcall,

+    dynlib: "gdi32", importc: "CreateHatchBrush".}

+proc CreatePalette*(para1: var LOGPALETTE): HPALETTE{.stdcall, dynlib: "gdi32",

+    importc: "CreatePalette".}

+proc CreatePen*(para1: int32, para2: int32, para3: COLORREF): HPEN{.stdcall,

+    dynlib: "gdi32", importc: "CreatePen".}

+proc CreatePenIndirect*(para1: var LOGPEN): HPEN{.stdcall, dynlib: "gdi32",

+    importc: "CreatePenIndirect".}

+proc CreatePolyPolygonRgn*(para1: var POINT, para2: var wINT, para3: int32,

+                           para4: int32): HRGN{.stdcall, dynlib: "gdi32",

+    importc: "CreatePolyPolygonRgn".}

+proc CreatePatternBrush*(para1: HBITMAP): HBRUSH{.stdcall, dynlib: "gdi32",

+    importc: "CreatePatternBrush".}

+proc CreateRectRgn*(para1: int32, para2: int32, para3: int32, para4: int32): HRGN{.

+    stdcall, dynlib: "gdi32", importc: "CreateRectRgn".}

+proc CreateRectRgnIndirect*(para1: var RECT): HRGN{.stdcall, dynlib: "gdi32",

+    importc: "CreateRectRgnIndirect".}

+proc CreateRoundRectRgn*(para1: int32, para2: int32, para3: int32, para4: int32,

+                         para5: int32, para6: int32): HRGN{.stdcall,

+    dynlib: "gdi32", importc: "CreateRoundRectRgn".}

+proc CreateSolidBrush*(para1: COLORREF): HBRUSH{.stdcall, dynlib: "gdi32",

+    importc: "CreateSolidBrush".}

+proc DeleteDC*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                     importc: "DeleteDC".}

+proc DeleteMetaFile*(para1: HMETAFILE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "DeleteMetaFile".}

+proc DeleteObject*(para1: HGDIOBJ): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "DeleteObject".}

+proc DrawEscape*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR): int32{.

+    stdcall, dynlib: "gdi32", importc: "DrawEscape".}

+proc Ellipse*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "Ellipse".}

+proc EnumObjects*(para1: HDC, para2: int32, para3: ENUMOBJECTSPROC,

+                  para4: LPARAM): int32{.stdcall, dynlib: "gdi32",

+    importc: "EnumObjects".}

+proc EqualRgn*(para1: HRGN, para2: HRGN): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "EqualRgn".}

+proc Escape*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,

+             para5: LPVOID): int32{.stdcall, dynlib: "gdi32", importc: "Escape".}

+proc ExtEscape*(para1: HDC, para2: int32, para3: int32, para4: LPCSTR,

+                para5: int32, para6: LPSTR): int32{.stdcall, dynlib: "gdi32",

+    importc: "ExtEscape".}

+proc ExcludeClipRect*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                      para5: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "ExcludeClipRect".}

+proc ExtCreateRegion*(para1: var XFORM, para2: DWORD, para3: var RGNDATA): HRGN{.

+    stdcall, dynlib: "gdi32", importc: "ExtCreateRegion".}

+proc ExtFloodFill*(para1: HDC, para2: int32, para3: int32, para4: COLORREF,

+                   para5: UINT): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "ExtFloodFill".}

+proc FillRgn*(para1: HDC, para2: HRGN, para3: HBRUSH): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "FillRgn".}

+proc FloodFill*(para1: HDC, para2: int32, para3: int32, para4: COLORREF): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "FloodFill".}

+proc FrameRgn*(para1: HDC, para2: HRGN, para3: HBRUSH, para4: int32,

+               para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+                                       importc: "FrameRgn".}

+proc GetROP2*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "GetROP2".}

+proc GetAspectRatioFilterEx*(para1: HDC, para2: LPSIZE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetAspectRatioFilterEx".}

+proc GetBkColor*(para1: HDC): COLORREF{.stdcall, dynlib: "gdi32",

+                                        importc: "GetBkColor".}

+proc GetBkMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+                                    importc: "GetBkMode".}

+proc GetBitmapBits*(para1: HBITMAP, para2: LONG, para3: LPVOID): LONG{.stdcall,

+    dynlib: "gdi32", importc: "GetBitmapBits".}

+proc GetBitmapDimensionEx*(para1: HBITMAP, para2: LPSIZE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetBitmapDimensionEx".}

+proc GetBoundsRect*(para1: HDC, para2: LPRECT, para3: UINT): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetBoundsRect".}

+proc GetBrushOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetBrushOrgEx".}

+proc GetClipBox*(para1: HDC, para2: LPRECT): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetClipBox".}

+proc GetClipRgn*(para1: HDC, para2: HRGN): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetClipRgn".}

+proc GetMetaRgn*(para1: HDC, para2: HRGN): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetMetaRgn".}

+proc GetCurrentObject*(para1: HDC, para2: UINT): HGDIOBJ{.stdcall,

+    dynlib: "gdi32", importc: "GetCurrentObject".}

+proc GetCurrentPositionEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCurrentPositionEx".}

+proc GetDeviceCaps*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetDeviceCaps".}

+proc GetDIBits*(para1: HDC, para2: HBITMAP, para3: UINT, para4: UINT,

+                para5: LPVOID, para6: LPBITMAPINFO, para7: UINT): int32{.

+    stdcall, dynlib: "gdi32", importc: "GetDIBits".}

+proc GetFontData*(para1: HDC, para2: DWORD, para3: DWORD, para4: LPVOID,

+                  para5: DWORD): DWORD{.stdcall, dynlib: "gdi32",

+                                        importc: "GetFontData".}

+proc GetGraphicsMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetGraphicsMode".}

+proc GetMapMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+                                     importc: "GetMapMode".}

+proc GetMetaFileBitsEx*(para1: HMETAFILE, para2: UINT, para3: LPVOID): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetMetaFileBitsEx".}

+proc GetNearestColor*(para1: HDC, para2: COLORREF): COLORREF{.stdcall,

+    dynlib: "gdi32", importc: "GetNearestColor".}

+proc GetNearestPaletteIndex*(para1: HPALETTE, para2: COLORREF): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetNearestPaletteIndex".}

+proc GetObjectType*(h: HGDIOBJ): DWORD{.stdcall, dynlib: "gdi32",

+                                        importc: "GetObjectType".}

+proc GetPaletteEntries*(para1: HPALETTE, para2: UINT, para3: UINT,

+                        para4: LPPALETTEENTRY): UINT{.stdcall, dynlib: "gdi32",

+    importc: "GetPaletteEntries".}

+proc GetPixel*(para1: HDC, para2: int32, para3: int32): COLORREF{.stdcall,

+    dynlib: "gdi32", importc: "GetPixel".}

+proc GetPixelFormat*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetPixelFormat".}

+proc GetPolyFillMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetPolyFillMode".}

+proc GetRasterizerCaps*(para1: LPRASTERIZER_STATUS, para2: UINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetRasterizerCaps".}

+proc GetRegionData*(para1: HRGN, para2: DWORD, para3: LPRGNDATA): DWORD{.

+    stdcall, dynlib: "gdi32", importc: "GetRegionData".}

+proc GetRgnBox*(para1: HRGN, para2: LPRECT): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetRgnBox".}

+proc GetStockObject*(para1: int32): HGDIOBJ{.stdcall, dynlib: "gdi32",

+    importc: "GetStockObject".}

+proc GetStretchBltMode*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetStretchBltMode".}

+proc GetSystemPaletteEntries*(para1: HDC, para2: UINT, para3: UINT,

+                              para4: LPPALETTEENTRY): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetSystemPaletteEntries".}

+proc GetSystemPaletteUse*(para1: HDC): UINT{.stdcall, dynlib: "gdi32",

+    importc: "GetSystemPaletteUse".}

+proc GetTextCharacterExtra*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetTextCharacterExtra".}

+proc GetTextAlign*(para1: HDC): UINT{.stdcall, dynlib: "gdi32",

+                                      importc: "GetTextAlign".}

+proc GetTextColor*(para1: HDC): COLORREF{.stdcall, dynlib: "gdi32",

+    importc: "GetTextColor".}

+proc GetTextCharset*(hdc: HDC): int32{.stdcall, dynlib: "gdi32",

+                                       importc: "GetTextCharset".}

+proc GetTextCharsetInfo*(hdc: HDC, lpSig: LPFONTSIGNATURE, dwFlags: DWORD): int32{.

+    stdcall, dynlib: "gdi32", importc: "GetTextCharsetInfo".}

+proc TranslateCharsetInfo*(lpSrc: var DWORD, lpCs: LPCHARSETINFO, dwFlags: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "TranslateCharsetInfo".}

+proc GetFontLanguageInfo*(para1: HDC): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GetFontLanguageInfo".}

+proc GetViewportExtEx*(para1: HDC, para2: LPSIZE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetViewportExtEx".}

+proc GetViewportOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetViewportOrgEx".}

+proc GetWindowExtEx*(para1: HDC, para2: LPSIZE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetWindowExtEx".}

+proc GetWindowOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetWindowOrgEx".}

+proc IntersectClipRect*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                        para5: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "IntersectClipRect".}

+proc InvertRgn*(para1: HDC, para2: HRGN): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "InvertRgn".}

+proc LineDDA*(para1: int32, para2: int32, para3: int32, para4: int32,

+              para5: LINEDDAPROC, para6: LPARAM): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "LineDDA".}

+proc LineTo*(para1: HDC, para2: int32, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "LineTo".}

+proc MaskBlt*(para1: HDC, para2: int32, para3: int32, para4: int32,

+              para5: int32, para6: HDC, para7: int32, para8: int32,

+              para9: HBITMAP, para10: int32, para11: int32, para12: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "MaskBlt".}

+proc PlgBlt*(para1: HDC, para2: var POINT, para3: HDC, para4: int32,

+             para5: int32, para6: int32, para7: int32, para8: HBITMAP,

+             para9: int32, para10: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "PlgBlt".}

+proc OffsetClipRgn*(para1: HDC, para2: int32, para3: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "OffsetClipRgn".}

+proc OffsetRgn*(para1: HRGN, para2: int32, para3: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "OffsetRgn".}

+proc PatBlt*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,

+             para6: DWORD): WINBOOL{.stdcall, dynlib: "gdi32", importc: "PatBlt".}

+proc Pie*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,

+          para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "Pie".}

+proc PlayMetaFile*(para1: HDC, para2: HMETAFILE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PlayMetaFile".}

+proc PaintRgn*(para1: HDC, para2: HRGN): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "PaintRgn".}

+proc PolyPolygon*(para1: HDC, para2: var POINT, para3: var wINT, para4: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyPolygon".}

+proc PtInRegion*(para1: HRGN, para2: int32, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PtInRegion".}

+proc PtVisible*(para1: HDC, para2: int32, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PtVisible".}

+proc RectInRegion*(para1: HRGN, para2: var RECT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "RectInRegion".}

+proc RectVisible*(para1: HDC, para2: var RECT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "RectVisible".}

+proc Rectangle*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+                                        importc: "Rectangle".}

+proc RestoreDC*(para1: HDC, para2: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "RestoreDC".}

+proc RealizePalette*(para1: HDC): UINT{.stdcall, dynlib: "gdi32",

+                                        importc: "RealizePalette".}

+proc RoundRect*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                para5: int32, para6: int32, para7: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "RoundRect".}

+proc ResizePalette*(para1: HPALETTE, para2: UINT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "ResizePalette".}

+proc SaveDC*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "SaveDC".}

+proc SelectClipRgn*(para1: HDC, para2: HRGN): int32{.stdcall, dynlib: "gdi32",

+    importc: "SelectClipRgn".}

+proc ExtSelectClipRgn*(para1: HDC, para2: HRGN, para3: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "ExtSelectClipRgn".}

+proc SetMetaRgn*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+                                     importc: "SetMetaRgn".}

+proc SelectObject*(para1: HDC, para2: HGDIOBJ): HGDIOBJ{.stdcall,

+    dynlib: "gdi32", importc: "SelectObject".}

+proc SelectPalette*(para1: HDC, para2: HPALETTE, para3: WINBOOL): HPALETTE{.

+    stdcall, dynlib: "gdi32", importc: "SelectPalette".}

+proc SetBkColor*(para1: HDC, para2: COLORREF): COLORREF{.stdcall,

+    dynlib: "gdi32", importc: "SetBkColor".}

+proc SetBkMode*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "SetBkMode".}

+proc SetBitmapBits*(para1: HBITMAP, para2: DWORD, para3: pointer): LONG{.

+    stdcall, dynlib: "gdi32", importc: "SetBitmapBits".}

+proc SetBoundsRect*(para1: HDC, para2: var RECT, para3: UINT): UINT{.stdcall,

+    dynlib: "gdi32", importc: "SetBoundsRect".}

+proc SetDIBits*(para1: HDC, para2: HBITMAP, para3: UINT, para4: UINT,

+                para5: pointer, para6: PBITMAPINFO, para7: UINT): int32{.

+    stdcall, dynlib: "gdi32", importc: "SetDIBits".}

+proc SetDIBitsToDevice*(para1: HDC, para2: int32, para3: int32, para4: DWORD,

+                        para5: DWORD, para6: int32, para7: int32, para8: UINT,

+                        para9: UINT, para10: pointer, para11: var BITMAPINFO,

+                        para12: UINT): int32{.stdcall, dynlib: "gdi32",

+    importc: "SetDIBitsToDevice".}

+proc SetMapperFlags*(para1: HDC, para2: DWORD): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "SetMapperFlags".}

+proc SetGraphicsMode*(hdc: HDC, iMode: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "SetGraphicsMode".}

+proc SetMapMode*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "SetMapMode".}

+proc SetMetaFileBitsEx*(para1: UINT, para2: var int8): HMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "SetMetaFileBitsEx".}

+proc SetPaletteEntries*(para1: HPALETTE, para2: UINT, para3: UINT,

+                        para4: var PALETTEENTRY): UINT{.stdcall,

+    dynlib: "gdi32", importc: "SetPaletteEntries".}

+proc SetPixel*(para1: HDC, para2: int32, para3: int32, para4: COLORREF): COLORREF{.

+    stdcall, dynlib: "gdi32", importc: "SetPixel".}

+proc SetPixelV*(para1: HDC, para2: int32, para3: int32, para4: COLORREF): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetPixelV".}

+proc SetPolyFillMode*(para1: HDC, para2: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "SetPolyFillMode".}

+proc StretchBlt*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                 para5: int32, para6: HDC, para7: int32, para8: int32,

+                 para9: int32, para10: int32, para11: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "StretchBlt".}

+proc SetRectRgn*(para1: HRGN, para2: int32, para3: int32, para4: int32,

+                 para5: int32): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "SetRectRgn".}

+proc StretchDIBits*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                    para5: int32, para6: int32, para7: int32, para8: int32,

+                    para9: int32, para10: pointer, para11: var BITMAPINFO,

+                    para12: UINT, para13: DWORD): int32{.stdcall,

+    dynlib: "gdi32", importc: "StretchDIBits".}

+proc SetROP2*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "SetROP2".}

+proc SetStretchBltMode*(para1: HDC, para2: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "SetStretchBltMode".}

+proc SetSystemPaletteUse*(para1: HDC, para2: UINT): UINT{.stdcall,

+    dynlib: "gdi32", importc: "SetSystemPaletteUse".}

+proc SetTextCharacterExtra*(para1: HDC, para2: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "SetTextCharacterExtra".}

+proc SetTextColor*(para1: HDC, para2: COLORREF): COLORREF{.stdcall,

+    dynlib: "gdi32", importc: "SetTextColor".}

+proc SetTextAlign*(para1: HDC, para2: UINT): UINT{.stdcall, dynlib: "gdi32",

+    importc: "SetTextAlign".}

+proc SetTextJustification*(para1: HDC, para2: int32, para3: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetTextJustification".}

+proc UpdateColors*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "UpdateColors".}

+proc PlayMetaFileRecord*(para1: HDC, para2: LPHANDLETABLE, para3: LPMETARECORD,

+                         para4: UINT): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "PlayMetaFileRecord".}

+proc EnumMetaFile*(para1: HDC, para2: HMETAFILE, para3: ENUMMETAFILEPROC,

+                   para4: LPARAM): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "EnumMetaFile".}

+proc CloseEnhMetaFile*(para1: HDC): HENHMETAFILE{.stdcall, dynlib: "gdi32",

+    importc: "CloseEnhMetaFile".}

+proc DeleteEnhMetaFile*(para1: HENHMETAFILE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "DeleteEnhMetaFile".}

+proc EnumEnhMetaFile*(para1: HDC, para2: HENHMETAFILE, para3: ENHMETAFILEPROC,

+                      para4: LPVOID, para5: var RECT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "EnumEnhMetaFile".}

+proc GetEnhMetaFileHeader*(para1: HENHMETAFILE, para2: UINT,

+                           para3: LPENHMETAHEADER): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetEnhMetaFileHeader".}

+proc GetEnhMetaFilePaletteEntries*(para1: HENHMETAFILE, para2: UINT,

+                                   para3: LPPALETTEENTRY): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetEnhMetaFilePaletteEntries".}

+proc GetEnhMetaFileBits*(para1: HENHMETAFILE, para2: UINT, para3: LPBYTE): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetEnhMetaFileBits".}

+proc GetWinMetaFileBits*(para1: HENHMETAFILE, para2: UINT, para3: LPBYTE,

+                         para4: wINT, para5: HDC): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetWinMetaFileBits".}

+proc PlayEnhMetaFile*(para1: HDC, para2: HENHMETAFILE, para3: RECT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PlayEnhMetaFile".}

+proc PlayEnhMetaFileRecord*(para1: HDC, para2: LPHANDLETABLE,

+                            para3: var TENHMETARECORD, para4: UINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PlayEnhMetaFileRecord".}

+proc SetEnhMetaFileBits*(para1: UINT, para2: var int8): HENHMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "SetEnhMetaFileBits".}

+proc SetWinMetaFileBits*(para1: UINT, para2: var int8, para3: HDC,

+                         para4: var METAFILEPICT): HENHMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "SetWinMetaFileBits".}

+proc GdiComment*(para1: HDC, para2: UINT, para3: var int8): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GdiComment".}

+proc AngleArc*(para1: HDC, para2: int32, para3: int32, para4: DWORD,

+               para5: float32, para6: float32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "AngleArc".}

+proc PolyPolyline*(para1: HDC, para2: var POINT, para3: var DWORD, para4: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyPolyline".}

+proc GetWorldTransform*(para1: HDC, para2: LPXFORM): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetWorldTransform".}

+proc SetWorldTransform*(para1: HDC, para2: var XFORM): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SetWorldTransform".}

+proc ModifyWorldTransform*(para1: HDC, para2: var XFORM, para3: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "ModifyWorldTransform".}

+proc CombineTransform*(para1: LPXFORM, para2: var XFORM, para3: var XFORM): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "CombineTransform".}

+proc CreateDIBSection*(para1: HDC, para2: var BITMAPINFO, para3: UINT,

+                       para4: var pointer, para5: HANDLE, para6: DWORD): HBITMAP{.

+    stdcall, dynlib: "gdi32", importc: "CreateDIBSection".}

+proc GetDIBColorTable*(para1: HDC, para2: UINT, para3: UINT, para4: var RGBQUAD): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetDIBColorTable".}

+proc SetDIBColorTable*(para1: HDC, para2: UINT, para3: UINT, para4: var RGBQUAD): UINT{.

+    stdcall, dynlib: "gdi32", importc: "SetDIBColorTable".}

+proc SetColorAdjustment*(para1: HDC, para2: var COLORADJUSTMENT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetColorAdjustment".}

+proc GetColorAdjustment*(para1: HDC, para2: LPCOLORADJUSTMENT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetColorAdjustment".}

+proc CreateHalftonePalette*(para1: HDC): HPALETTE{.stdcall, dynlib: "gdi32",

+    importc: "CreateHalftonePalette".}

+proc EndDoc*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "EndDoc".}

+proc StartPage*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+                                    importc: "StartPage".}

+proc EndPage*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "EndPage".}

+proc AbortDoc*(para1: HDC): int32{.stdcall, dynlib: "gdi32", importc: "AbortDoc".}

+proc SetAbortProc*(para1: HDC, para2: TABORTPROC): int32{.stdcall,

+    dynlib: "gdi32", importc: "SetAbortProc".}

+proc ArcTo*(para1: HDC, para2: int32, para3: int32, para4: int32, para5: int32,

+            para6: int32, para7: int32, para8: int32, para9: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "ArcTo".}

+proc BeginPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                      importc: "BeginPath".}

+proc CloseFigure*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                        importc: "CloseFigure".}

+proc EndPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32", importc: "EndPath".}

+proc FillPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                     importc: "FillPath".}

+proc FlattenPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                        importc: "FlattenPath".}

+proc GetPath*(para1: HDC, para2: LPPOINT, para3: LPBYTE, para4: int32): int32{.

+    stdcall, dynlib: "gdi32", importc: "GetPath".}

+proc PathToRegion*(para1: HDC): HRGN{.stdcall, dynlib: "gdi32",

+                                      importc: "PathToRegion".}

+proc PolyDraw*(para1: HDC, para2: var POINT, para3: var int8, para4: int32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyDraw".}

+proc SelectClipPath*(para1: HDC, para2: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SelectClipPath".}

+proc SetArcDirection*(para1: HDC, para2: int32): int32{.stdcall,

+    dynlib: "gdi32", importc: "SetArcDirection".}

+proc SetMiterLimit*(para1: HDC, para2: float32, para3: ptr float32): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetMiterLimit".}

+proc StrokeAndFillPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "StrokeAndFillPath".}

+proc StrokePath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                       importc: "StrokePath".}

+proc WidenPath*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                      importc: "WidenPath".}

+proc ExtCreatePen*(para1: DWORD, para2: DWORD, para3: var LOGBRUSH,

+                   para4: DWORD, para5: var DWORD): HPEN{.stdcall,

+    dynlib: "gdi32", importc: "ExtCreatePen".}

+proc GetMiterLimit*(para1: HDC, para2: ptr float32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetMiterLimit".}

+proc GetArcDirection*(para1: HDC): int32{.stdcall, dynlib: "gdi32",

+    importc: "GetArcDirection".}

+proc MoveToEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "MoveToEx".}

+proc CreatePolygonRgn*(para1: var POINT, para2: int32, para3: int32): HRGN{.

+    stdcall, dynlib: "gdi32", importc: "CreatePolygonRgn".}

+proc DPtoLP*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "DPtoLP".}

+proc LPtoDP*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "LPtoDP".}

+proc Polygon*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "Polygon".}

+proc Polyline*(para1: HDC, para2: LPPOINT, para3: int32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "Polyline".}

+proc PolyBezier*(para1: HDC, para2: LPPOINT, para3: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolyBezier".}

+proc PolyBezierTo*(para1: HDC, para2: POINT, para3: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolyBezierTo".}

+proc PolylineTo*(para1: HDC, para2: LPPOINT, para3: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolylineTo".}

+proc SetViewportExtEx*(para1: HDC, para2: int32, para3: int32, para4: LPSIZE): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetViewportExtEx".}

+proc SetViewportOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetViewportOrgEx".}

+proc SetWindowExtEx*(para1: HDC, para2: int32, para3: int32, para4: LPSIZE): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetWindowExtEx".}

+proc SetWindowOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetWindowOrgEx".}

+proc OffsetViewportOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "OffsetViewportOrgEx".}

+proc OffsetWindowOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "OffsetWindowOrgEx".}

+proc ScaleViewportExtEx*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                         para5: int32, para6: LPSIZE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "ScaleViewportExtEx".}

+proc ScaleWindowExtEx*(para1: HDC, para2: int32, para3: int32, para4: int32,

+                       para5: int32, para6: LPSIZE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "ScaleWindowExtEx".}

+proc SetBitmapDimensionEx*(para1: HBITMAP, para2: int32, para3: int32,

+                           para4: LPSIZE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "SetBitmapDimensionEx".}

+proc SetBrushOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetBrushOrgEx".}

+proc GetDCOrgEx*(para1: HDC, para2: LPPOINT): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetDCOrgEx".}

+proc FixBrushOrgEx*(para1: HDC, para2: int32, para3: int32, para4: LPPOINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "FixBrushOrgEx".}

+proc UnrealizeObject*(para1: HGDIOBJ): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "UnrealizeObject".}

+proc GdiFlush*(): WINBOOL{.stdcall, dynlib: "gdi32", importc: "GdiFlush".}

+proc GdiSetBatchLimit*(para1: DWORD): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GdiSetBatchLimit".}

+proc GdiGetBatchLimit*(): DWORD{.stdcall, dynlib: "gdi32",

+                                 importc: "GdiGetBatchLimit".}

+proc SetICMMode*(para1: HDC, para2: int32): int32{.stdcall, dynlib: "gdi32",

+    importc: "SetICMMode".}

+proc CheckColorsInGamut*(para1: HDC, para2: LPVOID, para3: LPVOID, para4: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "CheckColorsInGamut".}

+proc GetColorSpace*(para1: HDC): HANDLE{.stdcall, dynlib: "gdi32",

+    importc: "GetColorSpace".}

+proc SetColorSpace*(para1: HDC, para2: HCOLORSPACE): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SetColorSpace".}

+proc DeleteColorSpace*(para1: HCOLORSPACE): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "DeleteColorSpace".}

+proc GetDeviceGammaRamp*(para1: HDC, para2: LPVOID): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetDeviceGammaRamp".}

+proc SetDeviceGammaRamp*(para1: HDC, para2: LPVOID): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SetDeviceGammaRamp".}

+proc ColorMatchToTarget*(para1: HDC, para2: HDC, para3: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "ColorMatchToTarget".}

+proc CreatePropertySheetPageA*(lppsp: LPCPROPSHEETPAGE): HPROPSHEETPAGE{.

+    stdcall, dynlib: "comctl32", importc: "CreatePropertySheetPageA".}

+proc DestroyPropertySheetPage*(hPSPage: HPROPSHEETPAGE): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "DestroyPropertySheetPage".}

+proc InitCommonControls*(){.stdcall, dynlib: "comctl32",

+                            importc: "InitCommonControls".}

+proc ImageList_AddIcon*(himl: HIMAGELIST, hicon: HICON): int32

+proc ImageList_Create*(cx: int32, cy: int32, flags: UINT, cInitial: int32,

+                       cGrow: int32): HIMAGELIST{.stdcall, dynlib: "comctl32",

+    importc: "ImageList_Create".}

+proc ImageList_Destroy*(himl: HIMAGELIST): WINBOOL{.stdcall, dynlib: "comctl32",

+    importc: "ImageList_Destroy".}

+proc ImageList_GetImageCount*(himl: HIMAGELIST): int32{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_GetImageCount".}

+proc ImageList_Add*(himl: HIMAGELIST, hbmImage: HBITMAP, hbmMask: HBITMAP): int32{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_Add".}

+proc ImageList_ReplaceIcon*(himl: HIMAGELIST, i: int32, hicon: HICON): int32{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_ReplaceIcon".}

+proc ImageList_SetBkColor*(himl: HIMAGELIST, clrBk: COLORREF): COLORREF{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_SetBkColor".}

+proc ImageList_GetBkColor*(himl: HIMAGELIST): COLORREF{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_GetBkColor".}

+proc ImageList_SetOverlayImage*(himl: HIMAGELIST, iImage: int32, iOverlay: int32): WINBOOL{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_SetOverlayImage".}

+proc ImageList_Draw*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32,

+                     y: int32, fStyle: UINT): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_Draw".}

+proc ImageList_Replace*(himl: HIMAGELIST, i: int32, hbmImage: HBITMAP,

+                        hbmMask: HBITMAP): WINBOOL{.stdcall, dynlib: "comctl32",

+    importc: "ImageList_Replace".}

+proc ImageList_AddMasked*(himl: HIMAGELIST, hbmImage: HBITMAP, crMask: COLORREF): int32{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_AddMasked".}

+proc ImageList_DrawEx*(himl: HIMAGELIST, i: int32, hdcDst: HDC, x: int32,

+                       y: int32, dx: int32, dy: int32, rgbBk: COLORREF,

+                       rgbFg: COLORREF, fStyle: UINT): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_DrawEx".}

+proc ImageList_Remove*(himl: HIMAGELIST, i: int32): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_Remove".}

+proc ImageList_GetIcon*(himl: HIMAGELIST, i: int32, flags: UINT): HICON{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_GetIcon".}

+proc ImageList_BeginDrag*(himlTrack: HIMAGELIST, iTrack: int32,

+                          dxHotspot: int32, dyHotspot: int32): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_BeginDrag".}

+proc ImageList_EndDrag*(){.stdcall, dynlib: "comctl32",

+                           importc: "ImageList_EndDrag".}

+proc ImageList_DragEnter*(hwndLock: HWND, x: int32, y: int32): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_DragEnter".}

+proc ImageList_DragLeave*(hwndLock: HWND): WINBOOL{.stdcall, dynlib: "comctl32",

+    importc: "ImageList_DragLeave".}

+proc ImageList_DragMove*(x: int32, y: int32): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_DragMove".}

+proc ImageList_SetDragCursorImage*(himlDrag: HIMAGELIST, iDrag: int32,

+                                   dxHotspot: int32, dyHotspot: int32): WINBOOL{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_SetDragCursorImage".}

+proc ImageList_DragShowNolock*(fShow: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_DragShowNolock".}

+proc ImageList_GetDragImage*(ppt: LPPOINT, pptHotspot: LPPOINT): HIMAGELIST{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_GetDragImage".}

+proc ImageList_GetIconSize*(himl: HIMAGELIST, cx: var int32, cy: var int32): WINBOOL{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_GetIconSize".}

+proc ImageList_SetIconSize*(himl: HIMAGELIST, cx: int32, cy: int32): WINBOOL{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_SetIconSize".}

+proc ImageList_GetImageInfo*(himl: HIMAGELIST, i: int32,

+                             pImageInfo: var IMAGEINFO): WINBOOL{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_GetImageInfo".}

+proc ImageList_Merge*(himl1: HIMAGELIST, i1: int32, himl2: HIMAGELIST,

+                      i2: int32, dx: int32, dy: int32): HIMAGELIST{.stdcall,

+    dynlib: "comctl32", importc: "ImageList_Merge".}

+proc ImageList_SetImageCount*(himl: HIMAGELIST, uNewCount: UINT): int{.stdcall,

+    dynlib: "comctl32.dll", importc: "ImageList_SetImageCount".}

+proc CreateToolbarEx*(hwnd: HWND, ws: DWORD, wID: UINT, nBitmaps: int32,

+                      hBMInst: HINST, wBMID: UINT, lpButtons: LPCTBBUTTON,

+                      iNumButtons: int32, dxButton: int32, dyButton: int32,

+                      dxBitmap: int32, dyBitmap: int32, uStructSize: UINT): HWND{.

+    stdcall, dynlib: "comctl32", importc: "CreateToolbarEx".}

+proc CreateMappedBitmap*(hInstance: HINST, idBitmap: int32, wFlags: UINT,

+                         lpColorMap: LPCOLORMAP, iNumMaps: int32): HBITMAP{.

+    stdcall, dynlib: "comctl32", importc: "CreateMappedBitmap".}

+proc MenuHelp*(uMsg: UINT, wParam: WPARAM, lParam: LPARAM, hMainMenu: HMENU,

+               hInst: HINST, hwndStatus: HWND, lpwIDs: var UINT){.stdcall,

+    dynlib: "comctl32", importc: "MenuHelp".}

+proc ShowHideMenuCtl*(hWnd: HWND, uFlags: UINT, lpInfo: LPINT): WINBOOL{.

+    stdcall, dynlib: "comctl32", importc: "ShowHideMenuCtl".}

+proc GetEffectiveClientRect*(hWnd: HWND, lprc: LPRECT, lpInfo: LPINT){.stdcall,

+    dynlib: "comctl32", importc: "GetEffectiveClientRect".}

+proc MakeDragList*(hLB: HWND): WINBOOL{.stdcall, dynlib: "comctl32",

+                                        importc: "MakeDragList".}

+proc DrawInsert*(handParent: HWND, hLB: HWND, nItem: int32){.stdcall,

+    dynlib: "comctl32", importc: "DrawInsert".}

+proc LBItemFromPt*(hLB: HWND, pt: POINT, bAutoScroll: WINBOOL): int32{.stdcall,

+    dynlib: "comctl32", importc: "LBItemFromPt".}

+proc CreateUpDownControl*(dwStyle: DWORD, x: int32, y: int32, cx: int32,

+                          cy: int32, hParent: HWND, nID: int32, hInst: HINST,

+                          hBuddy: HWND, nUpper: int32, nLower: int32,

+                          nPos: int32): HWND{.stdcall, dynlib: "comctl32",

+    importc: "CreateUpDownControl".}

+proc RegCloseKey*(hKey: HKEY): LONG{.stdcall, dynlib: "advapi32",

+                                     importc: "RegCloseKey".}

+proc RegSetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSECURITY_DESCRIPTOR): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegSetKeySecurity".}

+proc RegFlushKey*(hKey: HKEY): LONG{.stdcall, dynlib: "advapi32",

+                                     importc: "RegFlushKey".}

+proc RegGetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                        lpcbSecurityDescriptor: LPDWORD): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegGetKeySecurity".}

+proc RegNotifyChangeKeyValue*(hKey: HKEY, bWatchSubtree: WINBOOL,

+                              dwNotifyFilter: DWORD, hEvent: HANDLE,

+                              fAsynchronus: WINBOOL): LONG{.stdcall,

+    dynlib: "advapi32", importc: "RegNotifyChangeKeyValue".}

+proc IsValidCodePage*(CodePage: UINT): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "IsValidCodePage".}

+proc GetACP*(): UINT{.stdcall, dynlib: "kernel32", importc: "GetACP".}

+proc GetOEMCP*(): UINT{.stdcall, dynlib: "kernel32", importc: "GetOEMCP".}

+proc GetCPInfo*(para1: UINT, para2: LPCPINFO): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetCPInfo".}

+proc IsDBCSLeadByte*(TestChar: int8): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "IsDBCSLeadByte".}

+proc IsDBCSLeadByteEx*(CodePage: UINT, TestChar: int8): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsDBCSLeadByteEx".}

+proc MultiByteToWideChar*(CodePage: UINT, dwFlags: DWORD,

+                          lpMultiByteStr: LPCSTR, cchMultiByte: int32,

+                          lpWideCharStr: LPWSTR, cchWideChar: int32): int32{.

+    stdcall, dynlib: "kernel32", importc: "MultiByteToWideChar".}

+proc WideCharToMultiByte*(CodePage: UINT, dwFlags: DWORD,

+                          lpWideCharStr: LPCWSTR, cchWideChar: int32,

+                          lpMultiByteStr: LPSTR, cchMultiByte: int32,

+                          lpDefaultChar: LPCSTR, lpUsedDefaultChar: LPBOOL): int32{.

+    stdcall, dynlib: "kernel32", importc: "WideCharToMultiByte".}

+proc IsValidLocale*(Locale: LCID, dwFlags: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "IsValidLocale".}

+proc ConvertDefaultLocale*(Locale: LCID): LCID{.stdcall, dynlib: "kernel32",

+    importc: "ConvertDefaultLocale".}

+proc GetThreadLocale*(): LCID{.stdcall, dynlib: "kernel32",

+                               importc: "GetThreadLocale".}

+proc SetThreadLocale*(Locale: LCID): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "SetThreadLocale".}

+proc GetSystemDefaultLangID*(): LANGID{.stdcall, dynlib: "kernel32",

+                                        importc: "GetSystemDefaultLangID".}

+proc GetUserDefaultLangID*(): LANGID{.stdcall, dynlib: "kernel32",

+                                      importc: "GetUserDefaultLangID".}

+proc GetSystemDefaultLCID*(): LCID{.stdcall, dynlib: "kernel32",

+                                    importc: "GetSystemDefaultLCID".}

+proc GetUserDefaultLCID*(): LCID{.stdcall, dynlib: "kernel32",

+                                  importc: "GetUserDefaultLCID".}

+proc ReadConsoleOutputAttribute*(hConsoleOutput: HANDLE, lpAttribute: LPWORD,

+                                 nLength: DWORD, dwReadCoord: COORD,

+                                 lpNumberOfAttrsRead: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputAttribute".}

+proc WriteConsoleOutputAttribute*(hConsoleOutput: HANDLE,

+                                  lpAttribute: var int16, nLength: DWORD,

+                                  dwWriteCoord: COORD,

+                                  lpNumberOfAttrsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputAttribute".}

+proc FillConsoleOutputAttribute*(hConsoleOutput: HANDLE, wAttribute: int16,

+                                 nLength: DWORD, dwWriteCoord: COORD,

+                                 lpNumberOfAttrsWritten: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputAttribute".}

+proc GetConsoleMode*(hConsoleHandle: HANDLE, lpMode: LPDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetConsoleMode".}

+proc GetNumberOfConsoleInputEvents*(hConsoleInput: HANDLE,

+                                    lpNumberOfEvents: PDWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetNumberOfConsoleInputEvents".}

+proc GetConsoleScreenBufferInfo*(hConsoleOutput: HANDLE,

+    lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".}

+proc GetLargestConsoleWindowSize*(hConsoleOutput: HANDLE): COORD

+proc GetConsoleCursorInfo*(hConsoleOutput: HANDLE,

+                           lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetConsoleCursorInfo".}

+proc GetNumberOfConsoleMouseButtons*(lpNumberOfMouseButtons: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetNumberOfConsoleMouseButtons".}

+proc SetConsoleMode*(hConsoleHandle: HANDLE, dwMode: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetConsoleMode".}

+proc SetConsoleActiveScreenBuffer*(hConsoleOutput: HANDLE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetConsoleActiveScreenBuffer".}

+proc FlushConsoleInputBuffer*(hConsoleInput: HANDLE): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FlushConsoleInputBuffer".}

+proc SetConsoleScreenBufferSize*(hConsoleOutput: HANDLE, dwSize: COORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetConsoleScreenBufferSize".}

+proc SetConsoleCursorPosition*(hConsoleOutput: HANDLE, dwCursorPosition: COORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetConsoleCursorPosition".}

+proc SetConsoleCursorInfo*(hConsoleOutput: HANDLE,

+                           lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetConsoleCursorInfo".}

+proc SetConsoleWindowInfo*(hConsoleOutput: HANDLE, bAbsolute: WINBOOL,

+                           lpConsoleWindow: var SMALL_RECT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetConsoleWindowInfo".}

+proc SetConsoleTextAttribute*(hConsoleOutput: HANDLE, wAttributes: int16): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetConsoleTextAttribute".}

+proc SetConsoleCtrlHandler*(HandlerRoutine: PHANDLER_ROUTINE, Add: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetConsoleCtrlHandler".}

+proc GenerateConsoleCtrlEvent*(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GenerateConsoleCtrlEvent".}

+proc AllocConsole*(): WINBOOL{.stdcall, dynlib: "kernel32",

+                               importc: "AllocConsole".}

+proc FreeConsole*(): WINBOOL{.stdcall, dynlib: "kernel32",

+                              importc: "FreeConsole".}

+proc CreateConsoleScreenBuffer*(dwDesiredAccess: DWORD, dwShareMode: DWORD,

+                                lpSecurityAttributes: var SECURITY_ATTRIBUTES,

+                                dwFlags: DWORD, lpScreenBufferData: LPVOID): HANDLE{.

+    stdcall, dynlib: "kernel32", importc: "CreateConsoleScreenBuffer".}

+proc GetConsoleCP*(): UINT{.stdcall, dynlib: "kernel32", importc: "GetConsoleCP".}

+proc SetConsoleCP*(wCodePageID: UINT): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "SetConsoleCP".}

+proc GetConsoleOutputCP*(): UINT{.stdcall, dynlib: "kernel32",

+                                  importc: "GetConsoleOutputCP".}

+proc SetConsoleOutputCP*(wCodePageID: UINT): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetConsoleOutputCP".}

+proc WNetConnectionDialog*(hwnd: HWND, dwType: DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetConnectionDialog".}

+proc WNetDisconnectDialog*(hwnd: HWND, dwType: DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetDisconnectDialog".}

+proc WNetCloseEnum*(hEnum: HANDLE): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetCloseEnum".}

+proc CloseServiceHandle*(hSCObject: SC_HANDLE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "CloseServiceHandle".}

+proc ControlService*(hService: SC_HANDLE, dwControl: DWORD,

+                     lpServiceStatus: LPSERVICE_STATUS): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ControlService".}

+proc DeleteService*(hService: SC_HANDLE): WINBOOL{.stdcall, dynlib: "advapi32",

+    importc: "DeleteService".}

+proc LockServiceDatabase*(hSCManager: SC_HANDLE): SC_LOCK{.stdcall,

+    dynlib: "advapi32", importc: "LockServiceDatabase".}

+proc NotifyBootConfigStatus*(BootAcceptable: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "NotifyBootConfigStatus".}

+proc QueryServiceObjectSecurity*(hService: SC_HANDLE,

+                                 dwSecurityInformation: SECURITY_INFORMATION,

+                                 lpSecurityDescriptor: PSECURITY_DESCRIPTOR,

+                                 cbBufSize: DWORD, pcbBytesNeeded: LPDWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "QueryServiceObjectSecurity".}

+proc QueryServiceStatus*(hService: SC_HANDLE, lpServiceStatus: LPSERVICE_STATUS): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "QueryServiceStatus".}

+proc SetServiceObjectSecurity*(hService: SC_HANDLE,

+                               dwSecurityInformation: SECURITY_INFORMATION,

+                               lpSecurityDescriptor: PSECURITY_DESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "SetServiceObjectSecurity".}

+proc SetServiceStatus*(hServiceStatus: SERVICE_STATUS_HANDLE,

+                       lpServiceStatus: LPSERVICE_STATUS): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "SetServiceStatus".}

+proc UnlockServiceDatabase*(ScLock: SC_LOCK): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "UnlockServiceDatabase".}

+proc ChoosePixelFormat*(para1: HDC, para2: PPIXELFORMATDESCRIPTOR): int32{.

+    stdcall, dynlib: "gdi32", importc: "ChoosePixelFormat".}

+proc DescribePixelFormat*(para1: HDC, para2: int32, para3: UINT,

+                          para4: LPPIXELFORMATDESCRIPTOR): int32{.stdcall,

+    dynlib: "gdi32", importc: "DescribePixelFormat".}

+proc SetPixelFormat*(para1: HDC, para2: int32, para3: PPIXELFORMATDESCRIPTOR): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "SetPixelFormat".}

+proc SwapBuffers*(para1: HDC): WINBOOL{.stdcall, dynlib: "gdi32",

+                                        importc: "SwapBuffers".}

+proc DragQueryPoint*(para1: HDROP, para2: LPPOINT): WINBOOL{.stdcall,

+    dynlib: "shell32", importc: "DragQueryPoint".}

+proc DragFinish*(para1: HDROP){.stdcall, dynlib: "shell32",

+                                importc: "DragFinish".}

+proc DragAcceptFiles*(para1: HWND, para2: WINBOOL){.stdcall, dynlib: "shell32",

+    importc: "DragAcceptFiles".}

+proc DuplicateIcon*(para1: HINST, para2: HICON): HICON{.stdcall,

+    dynlib: "shell32", importc: "DuplicateIcon".}

+proc DdeAbandonTransaction*(para1: DWORD, para2: HCONV, para3: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DdeAbandonTransaction".}

+proc DdeAccessData*(para1: HDDEDATA, para2: PDWORD): PBYTE{.stdcall,

+    dynlib: "user32", importc: "DdeAccessData".}

+proc DdeAddData*(para1: HDDEDATA, para2: PBYTE, para3: DWORD, para4: DWORD): HDDEDATA{.

+    stdcall, dynlib: "user32", importc: "DdeAddData".}

+proc DdeClientTransaction*(para1: PBYTE, para2: DWORD, para3: HCONV, para4: HSZ,

+                           para5: UINT, para6: UINT, para7: DWORD, para8: PDWORD): HDDEDATA{.

+    stdcall, dynlib: "user32", importc: "DdeClientTransaction".}

+proc DdeCmpStringHandles*(para1: HSZ, para2: HSZ): int32{.stdcall,

+    dynlib: "user32", importc: "DdeCmpStringHandles".}

+proc DdeConnect*(para1: DWORD, para2: HSZ, para3: HSZ, para4: var CONVCONTEXT): HCONV{.

+    stdcall, dynlib: "user32", importc: "DdeConnect".}

+proc DdeConnectList*(para1: DWORD, para2: HSZ, para3: HSZ, para4: HCONVLIST,

+                     para5: PCONVCONTEXT): HCONVLIST{.stdcall, dynlib: "user32",

+    importc: "DdeConnectList".}

+proc DdeCreateDataHandle*(para1: DWORD, para2: LPBYTE, para3: DWORD,

+                          para4: DWORD, para5: HSZ, para6: UINT, para7: UINT): HDDEDATA{.

+    stdcall, dynlib: "user32", importc: "DdeCreateDataHandle".}

+proc DdeDisconnect*(para1: HCONV): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DdeDisconnect".}

+proc DdeDisconnectList*(para1: HCONVLIST): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DdeDisconnectList".}

+proc DdeEnableCallback*(para1: DWORD, para2: HCONV, para3: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DdeEnableCallback".}

+proc DdeFreeDataHandle*(para1: HDDEDATA): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DdeFreeDataHandle".}

+proc DdeFreeStringHandle*(para1: DWORD, para2: HSZ): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DdeFreeStringHandle".}

+proc DdeGetData*(para1: HDDEDATA, para2: LPBYTE, para3: DWORD, para4: DWORD): DWORD{.

+    stdcall, dynlib: "user32", importc: "DdeGetData".}

+proc DdeGetLastError*(para1: DWORD): UINT{.stdcall, dynlib: "user32",

+    importc: "DdeGetLastError".}

+proc DdeImpersonateClient*(para1: HCONV): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DdeImpersonateClient".}

+proc DdeKeepStringHandle*(para1: DWORD, para2: HSZ): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DdeKeepStringHandle".}

+proc DdeNameService*(para1: DWORD, para2: HSZ, para3: HSZ, para4: UINT): HDDEDATA{.

+    stdcall, dynlib: "user32", importc: "DdeNameService".}

+proc DdePostAdvise*(para1: DWORD, para2: HSZ, para3: HSZ): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "DdePostAdvise".}

+proc DdeQueryConvInfo*(para1: HCONV, para2: DWORD, para3: PCONVINFO): UINT{.

+    stdcall, dynlib: "user32", importc: "DdeQueryConvInfo".}

+proc DdeQueryNextServer*(para1: HCONVLIST, para2: HCONV): HCONV{.stdcall,

+    dynlib: "user32", importc: "DdeQueryNextServer".}

+proc DdeReconnect*(para1: HCONV): HCONV{.stdcall, dynlib: "user32",

+    importc: "DdeReconnect".}

+proc DdeSetUserHandle*(para1: HCONV, para2: DWORD, para3: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DdeSetUserHandle".}

+proc DdeUnaccessData*(para1: HDDEDATA): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DdeUnaccessData".}

+proc DdeUninitialize*(para1: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "DdeUninitialize".}

+proc SHAddToRecentDocs*(para1: UINT, para2: LPCVOID){.stdcall,

+    dynlib: "shell32", importc: "SHAddToRecentDocs".}

+proc SHBrowseForFolder*(para1: LPBROWSEINFO): LPITEMIDLIST{.stdcall,

+    dynlib: "shell32", importc: "SHBrowseForFolder".}

+proc SHChangeNotify*(para1: LONG, para2: UINT, para3: LPCVOID, para4: LPCVOID){.

+    stdcall, dynlib: "shell32", importc: "SHChangeNotify".}

+proc SHFileOperation*(para1: LPSHFILEOPSTRUCT): int32{.stdcall,

+    dynlib: "shell32", importc: "SHFileOperation".}

+proc SHFreeNameMappings*(para1: HANDLE){.stdcall, dynlib: "shell32",

+    importc: "SHFreeNameMappings".}

+proc SHGetFileInfo*(para1: LPCTSTR, para2: DWORD, para3: var SHFILEINFO,

+                    para4: UINT, para5: UINT): DWORD{.stdcall,

+    dynlib: "shell32", importc: "SHGetFileInfo".}

+proc SHGetPathFromIDList*(para1: LPCITEMIDLIST, para2: LPTSTR): WINBOOL{.

+    stdcall, dynlib: "shell32", importc: "SHGetPathFromIDList".}

+proc SHGetSpecialFolderLocation*(para1: HWND, para2: int32,

+                                 para3: var LPITEMIDLIST): HRESULT{.stdcall,

+    dynlib: "shell32", importc: "SHGetSpecialFolderLocation".}

+proc CommDlgExtendedError*(): DWORD{.stdcall, dynlib: "comdlg32",

+                                     importc: "CommDlgExtendedError".}

+  # wgl Windows OpenGL helper functions

+proc wglUseFontBitmaps*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD): WINBOOL{.

+    stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsA".}

+proc wglCreateContext*(para1: HDC): HGLRC{.stdcall, dynlib: "opengl32",

+    importc: "wglCreateContext".}

+proc wglCreateLayerContext*(para1: HDC, para2: int32): HGLRC{.stdcall,

+    dynlib: "opengl32", importc: "wglCreateLayerContext".}

+proc wglCopyContext*(para1: HGLRC, para2: HGLRC, para3: UINT): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglCopyContext".}

+proc wglDeleteContext*(para1: HGLRC): WINBOOL{.stdcall, dynlib: "opengl32",

+    importc: "wglDeleteContext".}

+proc wglGetCurrentContext*(): HGLRC{.stdcall, dynlib: "opengl32",

+                                     importc: "wglGetCurrentContext".}

+proc wglGetCurrentDC*(): HDC{.stdcall, dynlib: "opengl32",

+                              importc: "wglGetCurrentDC".}

+proc wglMakeCurrent*(para1: HDC, para2: HGLRC): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglMakeCurrent".}

+proc wglShareLists*(para1: HGLRC, para2: HGLRC): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglShareLists".}

+proc wglUseFontBitmapsW*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD): WINBOOL{.

+    stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsW".}

+proc wglUseFontOutlines*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD,

+                         para5: float32, para6: float32, para7: int32,

+                         para8: LPGLYPHMETRICSFLOAT): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglUseFontOutlinesA".}

+proc wglUseFontBitmapsA*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD): WINBOOL{.

+    stdcall, dynlib: "opengl32", importc: "wglUseFontBitmapsA".}

+proc wglUseFontOutlinesA*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD,

+                          para5: float32, para6: float32, para7: int32,

+                          para8: LPGLYPHMETRICSFLOAT): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglUseFontOutlinesA".}

+proc wglDescribeLayerPlane*(para1: HDC, para2: int32, para3: int32, para4: UINT,

+                            para5: LPLAYERPLANEDESCRIPTOR): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglDescribeLayerPlane".}

+proc wglGetLayerPaletteEntries*(para1: HDC, para2: int32, para3: int32,

+                                para4: int32, para5: var COLORREF): int32{.

+    stdcall, dynlib: "opengl32", importc: "wglGetLayerPaletteEntries".}

+proc wglGetProcAddress*(para1: LPCSTR): TProc{.stdcall, dynlib: "opengl32",

+    importc: "wglGetProcAddress".}

+proc wglRealizeLayerPalette*(para1: HDC, para2: int32, para3: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "opengl32", importc: "wglRealizeLayerPalette".}

+proc wglSetLayerPaletteEntries*(para1: HDC, para2: int32, para3: int32,

+                                para4: int32, para5: var COLORREF): int32{.

+    stdcall, dynlib: "opengl32", importc: "wglSetLayerPaletteEntries".}

+proc wglSwapLayerBuffers*(para1: HDC, para2: UINT): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglSwapLayerBuffers".}

+proc wglUseFontOutlinesW*(para1: HDC, para2: DWORD, para3: DWORD, para4: DWORD,

+                          para5: float32, para6: float32, para7: int32,

+                          para8: LPGLYPHMETRICSFLOAT): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglUseFontOutlinesW".}

+  # translated macros

+proc Animate_Create*(hWndP: HWND, id: HMENU, dwStyle: DWORD, hInstance: HINST): HWND

+proc Animate_Open*(hwnd: HWND, szName: LPTSTR): LRESULT

+proc Animate_Play*(hwnd: HWND, `from`, `to`: int32, rep: UINT): LRESULT

+

+proc Animate_Stop*(hwnd: HWND): LRESULT

+proc Animate_Close*(hwnd: HWND): LRESULT

+proc Animate_Seek*(hwnd: HWND, frame: int32): LRESULT

+proc PropSheet_AddPage*(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE): LRESULT

+proc PropSheet_Apply*(hPropSheetDlg: HWND): LRESULT

+proc PropSheet_CancelToClose*(hPropSheetDlg: HWND): LRESULT

+proc PropSheet_Changed*(hPropSheetDlg, hwndPage: HWND): LRESULT

+proc PropSheet_GetCurrentPageHwnd*(hDlg: HWND): LRESULT

+proc PropSheet_GetTabControl*(hPropSheetDlg: HWND): LRESULT

+proc PropSheet_IsDialogMessage*(hDlg: HWND, pMsg: int32): LRESULT

+proc PropSheet_PressButton*(hPropSheetDlg: HWND, iButton: int32): LRESULT

+proc PropSheet_QuerySiblings*(hPropSheetDlg: HWND, param1, param2: int32): LRESULT

+proc PropSheet_RebootSystem*(hPropSheetDlg: HWND): LRESULT

+proc PropSheet_RemovePage*(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,

+                           index: int32): LRESULT

+proc PropSheet_RestartWindows*(hPropSheetDlg: HWND): LRESULT

+proc PropSheet_SetCurSel*(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,

+                          index: int32): LRESULT

+proc PropSheet_SetCurSelByID*(hPropSheetDlg: HWND, id: int32): LRESULT

+proc PropSheet_SetFinishText*(hPropSheetDlg: HWND, lpszText: LPTSTR): LRESULT

+proc PropSheet_SetTitle*(hPropSheetDlg: HWND, dwStyle: DWORD, lpszText: LPCTSTR): LRESULT

+proc PropSheet_SetWizButtons*(hPropSheetDlg: HWND, dwFlags: DWORD): LRESULT

+proc PropSheet_UnChanged*(hPropSheetDlg: HWND, hwndPage: HWND): LRESULT

+proc Header_DeleteItem*(hwndHD: HWND, index: int32): WINBOOL

+proc Header_GetItem*(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL

+proc Header_GetItemCount*(hwndHD: HWND): int32

+proc Header_InsertItem*(hwndHD: HWND, index: int32, hdi: var HD_ITEM): int32

+proc Header_Layout*(hwndHD: HWND, layout: var HD_LAYOUT): WINBOOL

+proc Header_SetItem*(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL

+proc ListView_Arrange*(hwndLV: HWND, code: UINT): LRESULT

+proc ListView_CreateDragImage*(hwnd: HWND, i: int32, lpptUpLeft: LPPOINT): LRESULT

+proc ListView_DeleteAllItems*(hwnd: HWND): LRESULT

+proc ListView_DeleteColumn*(hwnd: HWND, iCol: int32): LRESULT

+proc ListView_DeleteItem*(hwnd: HWND, iItem: int32): LRESULT

+proc ListView_EditLabel*(hwndLV: HWND, i: int32): LRESULT

+proc ListView_EnsureVisible*(hwndLV: HWND, i, fPartialOK: int32): LRESULT

+proc ListView_FindItem*(hwnd: HWND, iStart: int32, lvfi: var LV_FINDINFO): int32

+proc ListView_GetBkColor*(hwnd: HWND): LRESULT

+proc ListView_GetCallbackMask*(hwnd: HWND): LRESULT

+proc ListView_GetColumn*(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT

+proc ListView_GetColumnWidth*(hwnd: HWND, iCol: int32): LRESULT

+proc ListView_GetCountPerPage*(hwndLV: HWND): LRESULT

+proc ListView_GetEditControl*(hwndLV: HWND): LRESULT

+proc ListView_GetImageList*(hwnd: HWND, iImageList: wINT): LRESULT

+proc ListView_GetISearchString*(hwndLV: HWND, lpsz: LPTSTR): LRESULT

+proc ListView_GetItem*(hwnd: HWND, item: var LV_ITEM): LRESULT

+proc ListView_GetItemCount*(hwnd: HWND): LRESULT

+proc ListView_GetItemPosition*(hwndLV: HWND, i: int32, pt: var POINT): int32

+proc ListView_GetItemSpacing*(hwndLV: HWND, fSmall: int32): LRESULT

+proc ListView_GetItemState*(hwndLV: HWND, i, mask: int32): LRESULT

+proc ListView_GetNextItem*(hwnd: HWND, iStart, flags: int32): LRESULT

+proc ListView_GetOrigin*(hwndLV: HWND, pt: var POINT): LRESULT

+proc ListView_GetSelectedCount*(hwndLV: HWND): LRESULT

+proc ListView_GetStringWidth*(hwndLV: HWND, psz: LPCTSTR): LRESULT

+proc ListView_GetTextBkColor*(hwnd: HWND): LRESULT

+proc ListView_GetTextColor*(hwnd: HWND): LRESULT

+proc ListView_GetTopIndex*(hwndLV: HWND): LRESULT

+proc ListView_GetViewRect*(hwnd: HWND, rc: var RECT): LRESULT

+proc ListView_HitTest*(hwndLV: HWND, info: var LV_HITTESTINFO): LRESULT

+proc ListView_InsertColumn*(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT

+proc ListView_InsertItem*(hwnd: HWND, item: var LV_ITEM): LRESULT

+proc ListView_RedrawItems*(hwndLV: HWND, iFirst, iLast: int32): LRESULT

+proc ListView_Scroll*(hwndLV: HWND, dx, dy: int32): LRESULT

+proc ListView_SetBkColor*(hwnd: HWND, clrBk: COLORREF): LRESULT

+proc ListView_SetCallbackMask*(hwnd: HWND, mask: UINT): LRESULT

+proc ListView_SetColumn*(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT

+proc ListView_SetColumnWidth*(hwnd: HWND, iCol, cx: int32): LRESULT

+proc ListView_SetImageList*(hwnd: HWND, himl: int32, iImageList: HIMAGELIST): LRESULT

+proc ListView_SetItem*(hwnd: HWND, item: var LV_ITEM): LRESULT

+proc ListView_SetItemCount*(hwndLV: HWND, cItems: int32): LRESULT

+proc ListView_SetItemPosition*(hwndLV: HWND, i, x, y: int32): LRESULT

+proc ListView_SetItemPosition32*(hwndLV: HWND, i, x, y: int32): LRESULT

+proc ListView_SetItemState*(hwndLV: HWND, i, data, mask: int32): LRESULT

+proc ListView_SetItemText*(hwndLV: HWND, i, iSubItem: int32, pszText: LPTSTR): LRESULT

+proc ListView_SetTextBkColor*(hwnd: HWND, clrTextBk: COLORREF): LRESULT

+proc ListView_SetTextColor*(hwnd: HWND, clrText: COLORREF): LRESULT

+proc ListView_SortItems*(hwndLV: HWND, pfnCompare: PFNLVCOMPARE, lPrm: LPARAM): LRESULT

+proc ListView_Update*(hwndLV: HWND, i: int32): LRESULT

+proc TreeView_InsertItem*(hwnd: HWND, lpis: LPTV_INSERTSTRUCT): LRESULT

+proc TreeView_DeleteItem*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_DeleteAllItems*(hwnd: HWND): LRESULT

+proc TreeView_Expand*(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT

+proc TreeView_GetCount*(hwnd: HWND): LRESULT

+proc TreeView_GetIndent*(hwnd: HWND): LRESULT

+proc TreeView_SetIndent*(hwnd: HWND, indent: int32): LRESULT

+proc TreeView_GetImageList*(hwnd: HWND, iImage: WPARAM): LRESULT

+proc TreeView_SetImageList*(hwnd: HWND, himl: HIMAGELIST, iImage: WPARAM): LRESULT

+proc TreeView_GetNextItem*(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT

+proc TreeView_GetChild*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetNextSibling*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetPrevSibling*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetParent*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetFirstVisible*(hwnd: HWND): LRESULT

+proc TreeView_GetNextVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetPrevVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetSelection*(hwnd: HWND): LRESULT

+proc TreeView_GetDropHilight*(hwnd: HWND): LRESULT

+proc TreeView_GetRoot*(hwnd: HWND): LRESULT

+proc TreeView_Select*(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT

+proc TreeView_SelectItem*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_SelectDropTarget*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_SelectSetFirstVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetItem*(hwnd: HWND, item: var TV_ITEM): LRESULT

+proc TreeView_SetItem*(hwnd: HWND, item: var TV_ITEM): LRESULT

+proc TreeView_EditLabel*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_GetEditControl*(hwnd: HWND): LRESULT

+proc TreeView_GetVisibleCount*(hwnd: HWND): LRESULT

+proc TreeView_HitTest*(hwnd: HWND, lpht: LPTV_HITTESTINFO): LRESULT

+proc TreeView_CreateDragImage*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_SortChildren*(hwnd: HWND, hitem: HTREEITEM, recurse: int32): LRESULT

+proc TreeView_EnsureVisible*(hwnd: HWND, hitem: HTREEITEM): LRESULT

+proc TreeView_SortChildrenCB*(hwnd: HWND, psort: LPTV_SORTCB, recurse: int32): LRESULT

+proc TreeView_EndEditLabelNow*(hwnd: HWND, fCancel: int32): LRESULT

+proc TreeView_GetISearchString*(hwndTV: HWND, lpsz: LPTSTR): LRESULT

+proc TabCtrl_GetImageList*(hwnd: HWND): LRESULT

+proc TabCtrl_SetImageList*(hwnd: HWND, himl: HIMAGELIST): LRESULT

+proc TabCtrl_GetItemCount*(hwnd: HWND): LRESULT

+proc TabCtrl_GetItem*(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT

+proc TabCtrl_SetItem*(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT

+proc TabCtrl_InsertItem*(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT

+proc TabCtrl_DeleteItem*(hwnd: HWND, i: int32): LRESULT

+proc TabCtrl_DeleteAllItems*(hwnd: HWND): LRESULT

+proc TabCtrl_GetItemRect*(hwnd: HWND, i: int32, rc: var RECT): LRESULT

+proc TabCtrl_GetCurSel*(hwnd: HWND): LRESULT

+proc TabCtrl_SetCurSel*(hwnd: HWND, i: int32): LRESULT

+proc TabCtrl_HitTest*(hwndTC: HWND, info: var TC_HITTESTINFO): LRESULT

+proc TabCtrl_SetItemExtra*(hwndTC: HWND, cb: int32): LRESULT

+proc TabCtrl_AdjustRect*(hwnd: HWND, bLarger: WINBOOL, rc: var RECT): LRESULT

+proc TabCtrl_SetItemSize*(hwnd: HWND, x, y: int32): LRESULT

+proc TabCtrl_RemoveImage*(hwnd: HWND, i: WPARAM): LRESULT

+proc TabCtrl_SetPadding*(hwnd: HWND, cx, cy: int32): LRESULT

+proc TabCtrl_GetRowCount*(hwnd: HWND): LRESULT

+proc TabCtrl_GetToolTips*(hwnd: HWND): LRESULT

+proc TabCtrl_SetToolTips*(hwnd: HWND, hwndTT: int32): LRESULT

+proc TabCtrl_GetCurFocus*(hwnd: HWND): LRESULT

+proc TabCtrl_SetCurFocus*(hwnd: HWND, i: int32): LRESULT

+proc SNDMSG*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT

+proc CommDlg_OpenSave_GetSpecA*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_GetSpecW*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT

+when defined(winUnicode):

+  proc CommDlg_OpenSave_GetSpec*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT

+else:

+  proc CommDlg_OpenSave_GetSpec*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_GetFilePathA*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_GetFilePathW*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT

+when defined(winUnicode):

+  proc CommDlg_OpenSave_GetFilePath*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT

+else:

+  proc CommDlg_OpenSave_GetFilePath*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_GetFolderPathA*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_GetFolderPathW*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT

+when defined(winUnicode):

+  proc CommDlg_OpenSave_GetFolderPath*(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT

+else:

+  proc CommDlg_OpenSave_GetFolderPath*(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_GetFolderIDList*(hdlg: HWND, pidl: LPVOID, cbmax: int32): LRESULT

+proc CommDlg_OpenSave_SetControlText*(hdlg: HWND, id: int32, text: LPSTR): LRESULT

+proc CommDlg_OpenSave_HideControl*(hdlg: HWND, id: int32): LRESULT

+proc CommDlg_OpenSave_SetDefExt*(hdlg: HWND, pszext: LPSTR): LRESULT

+proc GetNextWindow*(hWnd: HWND, uCmd: UINT): HWND{.stdcall, dynlib: "user32",

+    importc: "GetWindow".}

+proc GlobalAllocPtr*(flags, cb: DWord): Pointer

+proc GlobalFreePtr*(lp: Pointer): Pointer

+proc GlobalUnlockPtr*(lp: pointer): Pointer

+proc GlobalLockPtr*(lp: pointer): Pointer

+proc GlobalReAllocPtr*(lp: Pointer, cbNew, flags: DWord): Pointer

+proc GlobalPtrHandle*(lp: pointer): Pointer

+proc SetLayeredWindowAttributes*(HWND: hwnd, crKey: COLORREF, bAlpha: int8,

+                                 dwFlags: DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetLayeredWindowAttributes".}

+type

+  PIID* = PGUID

+  TIID* = TGUID

+  TFNDlgProc* = FARPROC

+  TFNThreadStartRoutine* = FARPROC

+  TFNTimerAPCRoutine* = FARPROC

+  TFNFiberStartRoutine* = FARPROC

+  TFNHookProc* = HOOKPROC

+  PObjectTypeList* = ptr TObjectTypeList

+  OBJECT_TYPE_LIST* {.final, pure.} = object

+    Level*: int16

+    Sbz*: int16

+    ObjectType*: PGUID

+

+  TObjectTypeList* = OBJECT_TYPE_LIST

+  AUDIT_EVENT_TYPE* = DWORD

+  PBlendFunction* = ptr TBlendFunction

+  BLENDFUNCTION* {.final, pure.} = object

+    BlendOp*: int8

+    BlendFlags*: int8

+    SourceConstantAlpha*: int8

+    AlphaFormat*: int8

+

+  TBlendFunction* = BLENDFUNCTION

+  WIN_CERTIFICATE* {.final, pure.} = object

+    dwLength*: DWord

+    wRevision*: int16

+    wCertificateType*: int16

+    bCertificate*: array[0..0, int8]

+

+  TWinCertificate* = WIN_CERTIFICATE

+  PWinCertificate* = ptr TWinCertificate

+  TMaxLogPalette* {.final, pure.} = object

+    palVersion*: int16

+    palNumEntries*: int16

+    palPalEntry*: array[int8, TPaletteEntry]

+

+  PMaxLogPalette* = ptr TMaxLogPalette

+  POSVersionInfoA* = POSVERSIONINFO

+  TBitmapFileHeader* = BITMAPFILEHEADER

+  PBitmapFileHeader* = ptr TBitmapFileHeader

+

+const

+  # dll names

+  advapi32* = "advapi32.dll"

+  kernel32* = "kernel32.dll"

+  mpr* = "mpr.dll"

+  version* = "version.dll"

+  comctl32* = "comctl32.dll"

+  gdi32* = "gdi32.dll"

+  opengl32* = "opengl32.dll"

+  user32* = "user32.dll"

+  wintrust* = "wintrust.dll"

+  # Openfile Share modes normally declared in sysutils

+  fmShareCompat* = 0x00000000

+  fmShareExclusive* = 0x00000010

+  fmShareDenyWrite* = 0x00000020

+  fmShareDenyRead* = 0x00000030

+  fmShareDenyNone* = 0x00000040

+  # HRESULT codes, delphilike

+  SIF_TRACKPOS* = 0x00000010

+  HTBORDER* = 18

+  CP_UTF7* = 65000

+  CP_UTF8* = 65001

+  CREATE_NO_WINDOW* = 0x08000000

+  VK_ATTN* = 246

+  VK_CRSEL* = 247

+  VK_EXSEL* = 248

+  VK_EREOF* = 249

+  VK_PLAY* = 250

+  VK_ZOOM* = 251

+  VK_NONAME* = 252

+  VK_PA1* = 253

+  VK_OEM_CLEAR* = 254

+

+const                         # Severity values

+  FACILITY_NT_BIT* = 0x10000000

+

+                            #  A language ID is a 16 bit value which is the combination of a

+                            #  primary language ID and a secondary language ID.  The bits are

+                            #  allocated as follows:

+                            #

+                            #       +-----------------------+-------------------------+

+                            #       |     Sublanguage ID    |   Primary Language ID   |

+                            #       +-----------------------+-------------------------+

+                            #        15                   10 9                       0   bit

+                            #

+                            #

+                            #  Language ID creation/extraction macros:

+                            #

+                            #    MAKELANGID    - construct language id from a primary language id and

+                            #                    a sublanguage id.

+                            #    PRIMARYLANGID - extract primary language id from a language id.

+                            #    SUBLANGID     - extract sublanguage id from a language id.

+                            #

+proc MAKELANGID*(PrimaryLang, SubLang: USHORT): int16

+proc PRIMARYLANGID*(LangId: int16): int16

+proc SUBLANGID*(LangId: int16): int16

+

+  #

+  #  A locale ID is a 32 bit value which is the combination of a

+  #  language ID, a sort ID, and a reserved area.  The bits are

+  #  allocated as follows:

+  #

+  #       +-------------+---------+-------------------------+

+  #       |   Reserved  | Sort ID |      Language ID        |

+  #       +-------------+---------+-------------------------+

+  #        31         20 19     16 15                      0   bit

+  #

+  #

+  #  Locale ID creation/extraction macros:

+  #

+  #    MAKELCID            - construct the locale id from a language id and a sort id.

+  #    MAKESORTLCID        - construct the locale id from a language id, sort id, and sort version.

+  #    LANGIDFROMLCID      - extract the language id from a locale id.

+  #    SORTIDFROMLCID      - extract the sort id from a locale id.

+  #    SORTVERSIONFROMLCID - extract the sort version from a locale id.

+  #

+const

+  NLS_VALID_LOCALE_MASK* = 0x000FFFFF

+

+proc MAKELCID*(LangId, SortId: int16): DWORD

+proc MAKESORTLCID*(LangId, SortId, SortVersion: int16): DWORD

+proc LANGIDFROMLCID*(LocaleId: LCID): int16

+proc SORTIDFROMLCID*(LocaleId: LCID): int16

+proc SORTVERSIONFROMLCID*(LocaleId: LCID): int16

+

+  #

+  #  Default System and User IDs for language and locale.

+  #

+proc LANG_SYSTEM_DEFAULT*(): int16

+proc LANG_USER_DEFAULT*(): int16

+proc LOCALE_NEUTRAL*(): DWORD

+proc LOCALE_INVARIANT*(): DWORD

+proc Succeeded*(Status: HRESULT): WINBOOL

+proc Failed*(Status: HRESULT): WINBOOL

+proc IsError*(Status: HRESULT): WINBOOL

+proc HResultCode*(hr: HRESULT): int32

+proc HResultFacility*(hr: HRESULT): int32

+proc HResultSeverity*(hr: HRESULT): int32

+proc MakeResult*(p1, p2, mask: int32): HRESULT

+proc HResultFromWin32*(x: int32): HRESULT

+proc HResultFromNT*(x: int32): HRESULT

+proc InitializeCriticalSection*(CriticalSection: var TRTLCriticalSection){.

+    stdcall, dynlib: "kernel32", importc: "InitializeCriticalSection".}

+proc EnterCriticalSection*(CriticalSection: var TRTLCriticalSection){.stdcall,

+    dynlib: "kernel32", importc: "EnterCriticalSection".}

+proc LeaveCriticalSection*(CriticalSection: var TRTLCriticalSection){.stdcall,

+    dynlib: "kernel32", importc: "LeaveCriticalSection".}

+proc DeleteCriticalSection*(CriticalSection: var TRTLCriticalSection){.stdcall,

+    dynlib: "kernel32", importc: "DeleteCriticalSection".}

+proc InitializeCriticalSectionAndSpinCount*(

+    CriticalSection: var TRTLCriticalSection, dwSpinCount: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32",

+    importc: "InitializeCriticalSectionAndSpinCount".}

+proc SetCriticalSectionSpinCount*(CriticalSection: var TRTLCriticalSection,

+                                  dwSpinCount: DWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "SetCriticalSectionSpinCount".}

+proc TryEnterCriticalSection*(CriticalSection: var TRTLCriticalSection): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "TryEnterCriticalSection".}

+proc ControlService*(hService: SC_HANDLE, dwControl: DWORD,

+                     ServiceStatus: var TSERVICESTATUS): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ControlService".}

+proc QueryServiceStatus*(hService: SC_HANDLE,

+                         lpServiceStatus: var TSERVICESTATUS): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "QueryServiceStatus".}

+proc SetServiceStatus*(hServiceStatus: SERVICE_STATUS_HANDLE,

+                       ServiceStatus: TSERVICESTATUS): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "SetServiceStatus".}

+proc AdjustTokenPrivileges*(TokenHandle: THandle, DisableAllPrivileges: WINBOOL,

+                            NewState: TTokenPrivileges, BufferLength: DWORD,

+                            PreviousState: var TTokenPrivileges,

+                            ReturnLength: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AdjustTokenPrivileges".}

+proc AdjustWindowRect*(lpRect: var TRect, dwStyle: DWORD, bMenu: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "AdjustWindowRect".}

+proc AdjustWindowRectEx*(lpRect: var TRect, dwStyle: DWORD, bMenu: WINBOOL,

+                         dwExStyle: DWORD): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "AdjustWindowRectEx".}

+proc AllocateAndInitializeSid*(pIdentifierAuthority: TSIDIdentifierAuthority,

+                               nSubAuthorityCount: int8,

+                               nSubAuthority0, nSubAuthority1: DWORD,

+    nSubAuthority2, nSubAuthority3, nSubAuthority4: DWORD, nSubAuthority5,

+    nSubAuthority6, nSubAuthority7: DWORD, pSid: var Pointer): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AllocateAndInitializeSid".}

+proc AllocateLocallyUniqueId*(Luid: var TLargeInteger): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "AllocateLocallyUniqueId".}

+proc BackupRead*(hFile: THandle, lpBuffer: PByte, nNumberOfBytesToRead: DWORD,

+                 lpNumberOfBytesRead: var DWORD, bAbort: WINBOOL,

+                 bProcessSecurity: WINBOOL, lpContext: var Pointer): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BackupRead".}

+proc BackupSeek*(hFile: THandle, dwLowBytesToSeek, dwHighBytesToSeek: DWORD,

+                 lpdwLowByteSeeked, lpdwHighByteSeeked: var DWORD,

+                 lpContext: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "BackupSeek".}

+proc BackupWrite*(hFile: THandle, lpBuffer: PByte, nNumberOfBytesToWrite: DWORD,

+                  lpNumberOfBytesWritten: var DWORD,

+                  bAbort, bProcessSecurity: WINBOOL, lpContext: var Pointer): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BackupWrite".}

+proc BeginPaint*(hWnd: HWND, lpPaint: var TPaintStruct): HDC{.stdcall,

+    dynlib: "user32", importc: "BeginPaint".}

+proc BuildCommDCB*(lpDef: cstring, lpDCB: var TDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "BuildCommDCBA".}

+proc BuildCommDCBA*(lpDef: LPCSTR, lpDCB: var TDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "BuildCommDCBA".}

+proc BuildCommDCBAndTimeouts*(lpDef: cstring, lpDCB: var TDCB,

+                              lpCommTimeouts: var TCommTimeouts): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}

+proc BuildCommDCBAndTimeoutsA*(lpDef: LPCSTR, lpDCB: var TDCB,

+                               lpCommTimeouts: var TCommTimeouts): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsA".}

+proc BuildCommDCBAndTimeoutsW*(lpDef: LPWSTR, lpDCB: var TDCB,

+                               lpCommTimeouts: var TCommTimeouts): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "BuildCommDCBAndTimeoutsW".}

+proc BuildCommDCBW*(lpDef: LPWSTR, lpDCB: var TDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "BuildCommDCBW".}

+proc CallMsgFilter*(lpMsg: var TMsg, nCode: int): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CallMsgFilterA".}

+proc CallMsgFilterA*(lpMsg: var TMsg, nCode: int): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CallMsgFilterA".}

+proc CallMsgFilterW*(lpMsg: var TMsg, nCode: int): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CallMsgFilterW".}

+proc CallNamedPipe*(lpNamedPipeName: cstring, lpInBuffer: Pointer,

+                    nInBufferSize: DWORD, lpOutBuffer: Pointer,

+                    nOutBufferSize: DWORD, lpBytesRead: var DWORD,

+                    nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CallNamedPipeA".}

+proc CallNamedPipeA*(lpNamedPipeName: LPCSTR, lpInBuffer: Pointer,

+                     nInBufferSize: DWORD, lpOutBuffer: Pointer,

+                     nOutBufferSize: DWORD, lpBytesRead: var DWORD,

+                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CallNamedPipeA".}

+proc CallNamedPipeW*(lpNamedPipeName: LPWSTR, lpInBuffer: Pointer,

+                     nInBufferSize: DWORD, lpOutBuffer: Pointer,

+                     nOutBufferSize: DWORD, lpBytesRead: var DWORD,

+                     nTimeOut: DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "CallNamedPipeW".}

+proc CoRegisterClassObject*(para1: TCLSID, para2: pointer, para3: DWORD,

+                            para4: DWORD, out_para5: DWORD): HRESULT{.stdcall,

+    dynlib: "ole32.dll", importc: "CoRegisterClassObject".}

+proc ChangeDisplaySettings*(lpDevMode: var TDeviceMode, dwFlags: DWORD): int32{.

+    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}

+proc ChangeDisplaySettingsA*(lpDevMode: var TDeviceModeA, dwFlags: DWORD): int32{.

+    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsA".}

+proc ChangeDisplaySettingsEx*(lpszDeviceName: cstring,

+                              lpDevMode: var TDeviceMode, wnd: HWND,

+                              dwFlags: DWORD, lParam: Pointer): int32{.stdcall,

+    dynlib: "user32", importc: "ChangeDisplaySettingsExA".}

+proc ChangeDisplaySettingsExA*(lpszDeviceName: LPCSTR,

+                               lpDevMode: var TDeviceModeA, wnd: HWND,

+                               dwFlags: DWORD, lParam: Pointer): int32{.stdcall,

+    dynlib: "user32", importc: "ChangeDisplaySettingsExA".}

+proc ChangeDisplaySettingsExW*(lpszDeviceName: LPWSTR,

+                               lpDevMode: var TDeviceModeW, wnd: HWND,

+                               dwFlags: DWORD, lParam: Pointer): int32{.stdcall,

+    dynlib: "user32", importc: "ChangeDisplaySettingsExW".}

+proc ChangeDisplaySettingsW*(lpDevMode: var TDeviceModeW, dwFlags: DWORD): int32{.

+    stdcall, dynlib: "user32", importc: "ChangeDisplaySettingsW".}

+  #function CheckColorsInGamut(DC: HDC; var RGBQuads, Results; Count: DWORD): WINBOOL; stdcall; external 'gdi32' name 'CheckColorsInGamut';

+proc ChoosePixelFormat*(para1: HDC, para2: var PIXELFORMATDESCRIPTOR): int32{.

+    stdcall, dynlib: "gdi32", importc: "ChoosePixelFormat".}

+proc ClearCommError*(hFile: THandle, lpErrors: var DWORD, lpStat: PComStat): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ClearCommError".}

+proc ClientToScreen*(hWnd: HWND, lpPoint: var TPoint): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ClientToScreen".}

+proc ClipCursor*(lpRect: var RECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ClipCursor".}

+  #function CombineTransform(var p1: TXForm; const p2, p3: TXForm): WINBOOL; stdcall; external 'gdi32' name 'CombineTransform';

+proc CommConfigDialog*(lpszName: cstring, hWnd: HWND, lpCC: var TCommConfig): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}

+proc CommConfigDialogA*(lpszName: LPCSTR, hWnd: HWND, lpCC: var TCommConfig): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CommConfigDialogA".}

+proc CommConfigDialogW*(lpszName: LPWSTR, hWnd: HWND, lpCC: var TCommConfig): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CommConfigDialogW".}

+  #function CompareFileTime(const lpFileTime1, lpFileTime2: TFileTime): Longint; stdcall; external 'kernel32' name 'CompareFileTime';

+  #function ConvertToAutoInheritPrivateObjectSecurity(ParentDescriptor, CurrentSecurityDescriptor: PSecurityDescriptor; var NewDescriptor: PSecurityDescriptor; ObjectType: PGUID; IsDirectoryObject: WINBOOL; const GenericMapping: TGenericMapping): WINBOOL;

+  #  stdcall; external 'advapi32' name 'ConvertToAutoInheritPrivateObjectSecurity';

+proc CopyAcceleratorTable*(hAccelSrc: HACCEL, lpAccelDst: pointer,

+                           cAccelEntries: int): int{.stdcall, dynlib: "user32",

+    importc: "CopyAcceleratorTableA".}

+proc CopyAcceleratorTableA*(hAccelSrc: HACCEL, lpAccelDst: pointer,

+                            cAccelEntries: int): int{.stdcall, dynlib: "user32",

+    importc: "CopyAcceleratorTableA".}

+proc CopyAcceleratorTableW*(hAccelSrc: HACCEL, lpAccelDst: pointer,

+                            cAccelEntries: int): int{.stdcall, dynlib: "user32",

+    importc: "CopyAcceleratorTableW".}

+proc CopyRect*(lprcDst: var TRect, lprcSrc: TRect): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CopyRect".}

+proc CreateAcceleratorTable*(Accel: pointer, Count: int): HACCEL{.stdcall,

+    dynlib: "user32", importc: "CreateAcceleratorTableA".}

+proc CreateAcceleratorTableA*(Accel: pointer, Count: int): HACCEL{.stdcall,

+    dynlib: "user32", importc: "CreateAcceleratorTableA".}

+proc CreateAcceleratorTableW*(Accel: pointer, Count: int): HACCEL{.stdcall,

+    dynlib: "user32", importc: "CreateAcceleratorTableW".}

+  #function CreateBitmapIndirect(const p1: TBitmap): HBITMAP; stdcall; external 'gdi32' name 'CreateBitmapIndirect';

+  #function CreateBrushIndirect(const p1: TLogBrush): HBRUSH; stdcall; external 'gdi32' name 'CreateBrushIndirect';

+proc CreateColorSpace*(ColorSpace: var TLogColorSpace): HCOLORSPACE{.stdcall,

+    dynlib: "gdi32", importc: "CreateColorSpaceA".}

+proc CreateColorSpaceA*(ColorSpace: var TLogColorSpaceA): HCOLORSPACE{.stdcall,

+    dynlib: "gdi32", importc: "CreateColorSpaceA".}

+  #function CreateColorSpaceW(var ColorSpace: TLogColorSpaceW): HCOLORSPACE; stdcall; external 'gdi32' name 'CreateColorSpaceW';

+proc CreateDialogIndirectParam*(hInstance: HINST, lpTemplate: TDlgTemplate,

+                                hWndParent: HWND, lpDialogFunc: TFNDlgProc,

+                                dwInitParam: LPARAM): HWND{.stdcall,

+    dynlib: "user32", importc: "CreateDialogIndirectParamA".}

+  #function CreateDialogIndirectParamA(hInstance: HINST; const lpTemplate: TDlgTemplate; hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND; stdcall; external 'user32' name 'CreateDialogIndirectParamA';

+  #function CreateDialogIndirectParamW(hInstance: HINST; const lpTemplate: TDlgTemplate; hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND; stdcall; external 'user32' name 'CreateDialogIndirectParamW';

+  #function CreateDIBitmap(DC: HDC; var InfoHeader: TBitmapInfoHeader; dwUsage: DWORD; InitBits: PChar; var InitInfo: TBitmapInfo; wUsage: UINT): HBITMAP; stdcall; external 'gdi32' name 'CreateDIBitmap';

+  #function CreateDIBPatternBrushPt(const p1: Pointer; p2: UINT): HBRUSH; stdcall; external 'gdi32' name 'CreateDIBPatternBrushPt';

+  #function CreateDIBSection(DC: HDC; const p2: TBitmapInfo; p3: UINT; var p4: Pointer; p5: THandle; p6: DWORD): HBITMAP; stdcall; external 'gdi32' name 'CreateDIBSection';

+  #function CreateEllipticRgnIndirect(const p1: TRect): HRGN; stdcall; external 'gdi32' name 'CreateEllipticRgnIndirect';

+  #function CreateFontIndirect(const p1: TLogFont): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectA';

+  #function CreateFontIndirectA(const p1: TLogFontA): HFONT; stdcall; external 'gdi32' name 'CreateFontIndirectA';

+  #function CreateFontIndirectEx(const p1: PEnumLogFontExDV): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectExA';

+  #function CreateFontIndirectExA(const p1: PEnumLogFontExDVA): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectExA';

+  #function CreateFontIndirectExW(const p1: PEnumLogFontExDVW): HFONT;stdcall; external 'gdi32' name 'CreateFontIndirectExW';

+  #function CreateFontIndirectW(const p1: TLogFontW): HFONT; stdcall; external 'gdi32' name 'CreateFontIndirectW';

+proc CreateIconIndirect*(piconinfo: var TIconInfo): HICON{.stdcall,

+    dynlib: "user32", importc: "CreateIconIndirect".}

+  #function CreatePalette(const LogPalette: TLogPalette): HPalette; stdcall; external 'gdi32' name 'CreatePalette';

+  #function CreatePenIndirect(const LogPen: TLogPen): HPEN; stdcall; external 'gdi32' name 'CreatePenIndirect';

+proc CreatePipe*(hReadPipe, hWritePipe: var THandle,

+                 lpPipeAttributes: PSecurityAttributes, nSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreatePipe".}

+proc CreatePolygonRgn*(Points: pointer, Count, FillMode: int): HRGN{.stdcall,

+    dynlib: "gdi32", importc: "CreatePolygonRgn".}

+proc CreatePolyPolygonRgn*(pPtStructs: pointer, pIntArray: pointer, p3, p4: int): HRGN{.

+    stdcall, dynlib: "gdi32", importc: "CreatePolyPolygonRgn".}

+  #function CreatePrivateObjectSecurity(ParentDescriptor, CreatorDescriptor: PSecurityDescriptor; var NewDescriptor: PSecurityDescriptor; IsDirectoryObject: WINBOOL; Token: THandle; const GenericMapping: TGenericMapping): WINBOOL;

+  #  stdcall; external 'advapi32' name 'CreatePrivateObjectSecurity';

+  #function CreatePrivateObjectSecurityEx(ParentDescriptor, CreatorDescriptor: PSecurityDescriptor; var NewDescriptor: PSecurityDescriptor; ObjectType: PGUID; IsContainerObject: WINBOOL; AutoInheritFlags: ULONG; Token: THandle;

+  #  const GenericMapping: TGenericMapping): WINBOOL;stdcall; external 'advapi32' name 'CreatePrivateObjectSecurityEx';

+proc CreateProcess*(lpApplicationName: cstring, lpCommandLine: cstring,

+    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes,

+                    bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                    lpEnvironment: Pointer, lpCurrentDirectory: cstring,

+                    lpStartupInfo: TStartupInfo,

+                    lpProcessInformation: var TProcessInformation): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateProcessA".}

+proc CreateProcessA*(lpApplicationName: LPCSTR, lpCommandLine: LPCSTR,

+    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes,

+                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                     lpEnvironment: Pointer, lpCurrentDirectory: LPCSTR,

+                     lpStartupInfo: TStartupInfo,

+                     lpProcessInformation: var TProcessInformation): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateProcessA".}

+  #function CreateProcessAsUser(hToken: THandle; lpApplicationName: PChar; lpCommandLine: PChar; lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes; bInheritHandles: WINBOOL; dwCreationFlags: DWORD;

+  # lpEnvironment: Pointer; lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): WINBOOL;stdcall; external 'advapi32' name 'CreateProcessAsUserA';

+  #function CreateProcessAsUserA(hToken: THandle; lpApplicationName: LPCSTR; lpCommandLine: LPCSTR; lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes; bInheritHandles: WINBOOL; dwCreationFlags: DWORD;

+  #  lpEnvironment: Pointer; lpCurrentDirectory: LPCSTR; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): WINBOOL; stdcall; external 'advapi32' name 'CreateProcessAsUserA';

+  #function CreateProcessAsUserW(hToken: THandle; lpApplicationName: LPWSTR; lpCommandLine: LPWSTR; lpProcessAttributes: PSecurityAttributes; lpThreadAttributes: PSecurityAttributes; bInheritHandles: WINBOOL; dwCreationFlags: DWORD;

+  #  lpEnvironment: Pointer; lpCurrentDirectory: LPWSTR; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): WINBOOL; stdcall; external 'advapi32' name 'CreateProcessAsUserW';

+proc CreateProcessW*(lpApplicationName: LPWSTR, lpCommandLine: LPWSTR,

+    lpProcessAttributes, lpThreadAttributes: PSecurityAttributes,

+                     bInheritHandles: WINBOOL, dwCreationFlags: DWORD,

+                     lpEnvironment: Pointer, lpCurrentDirectory: LPWSTR,

+                     lpStartupInfo: TStartupInfo,

+                     lpProcessInformation: var TProcessInformation): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "CreateProcessW".}

+  #function CreateRectRgnIndirect(const p1: TRect): HRGN; stdcall; external 'gdi32' name 'CreateRectRgnIndirect';

+proc CreateRemoteThread*(hProcess: THandle, lpThreadAttributes: Pointer,

+                         dwStackSize: DWORD,

+                         lpStartAddress: TFNThreadStartRoutine,

+                         lpParameter: Pointer, dwCreationFlags: DWORD,

+                         lpThreadId: var DWORD): THandle{.stdcall,

+    dynlib: "kernel32", importc: "CreateRemoteThread".}

+proc CreateThread*(lpThreadAttributes: Pointer, dwStackSize: DWORD,

+                   lpStartAddress: TFNThreadStartRoutine, lpParameter: Pointer,

+                   dwCreationFlags: DWORD, lpThreadId: var DWORD): THandle{.

+    stdcall, dynlib: "kernel32", importc: "CreateThread".}

+proc DdeSetQualityOfService*(hWndClient: HWnd,

+                             pqosNew: TSecurityQualityOfService,

+                             pqosPrev: PSecurityQualityOfService): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DdeSetQualityOfService".}

+  #function DeleteAce(var pAcl: TACL; dwAceIndex: DWORD): WINBOOL; stdcall; external 'advapi32' name 'DeleteAce';

+proc DescribePixelFormat*(DC: HDC, p2: int, p3: UINT,

+                          p4: var TPixelFormatDescriptor): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "DescribePixelFormat".}

+  #function DestroyPrivateObjectSecurity(var ObjectDescriptor: PSecurityDescriptor): WINBOOL; stdcall; external 'advapi32' name 'DestroyPrivateObjectSecurity';

+proc DeviceIoControl*(hDevice: THandle, dwIoControlCode: DWORD,

+                      lpInBuffer: Pointer, nInBufferSize: DWORD,

+                      lpOutBuffer: Pointer, nOutBufferSize: DWORD,

+                      lpBytesReturned: var DWORD, lpOverlapped: POverlapped): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "DeviceIoControl".}

+proc DialogBoxIndirectParam*(hInstance: HINST, lpDialogTemplate: TDlgTemplate,

+                             hWndParent: HWND, lpDialogFunc: TFNDlgProc,

+                             dwInitParam: LPARAM): int{.stdcall,

+    dynlib: "user32", importc: "DialogBoxIndirectParamA".}

+proc DialogBoxIndirectParamA*(hInstance: HINST, lpDialogTemplate: TDlgTemplate,

+                              hWndParent: HWND, lpDialogFunc: TFNDlgProc,

+                              dwInitParam: LPARAM): int{.stdcall,

+    dynlib: "user32", importc: "DialogBoxIndirectParamA".}

+proc DialogBoxIndirectParamW*(hInstance: HINST, lpDialogTemplate: TDlgTemplate,

+                              hWndParent: HWND, lpDialogFunc: TFNDlgProc,

+                              dwInitParam: LPARAM): int{.stdcall,

+    dynlib: "user32", importc: "DialogBoxIndirectParamW".}

+proc DispatchMessage*(lpMsg: TMsg): int32{.stdcall, dynlib: "user32",

+    importc: "DispatchMessageA".}

+proc DispatchMessageA*(lpMsg: TMsg): int32{.stdcall, dynlib: "user32",

+    importc: "DispatchMessageA".}

+proc DispatchMessageW*(lpMsg: TMsg): int32{.stdcall, dynlib: "user32",

+    importc: "DispatchMessageW".}

+proc DosDateTimeToFileTime*(wFatDate, wFatTime: int16, lpFileTime: var TFileTime): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "DosDateTimeToFileTime".}

+proc DPtoLP*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "DPtoLP".}

+  # function DrawAnimatedRects(hwnd: HWND; idAni: Integer; const lprcFrom, lprcTo: TRect): WINBOOL; stdcall; external 'user32' name 'DrawAnimatedRects';

+  #function DrawCaption(p1: HWND; p2: HDC; const p3: TRect; p4: UINT): WINBOOL; stdcall; external 'user32' name 'DrawCaption';

+proc DrawEdge*(hdc: HDC, qrc: var TRect, edge: UINT, grfFlags: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DrawEdge".}

+  #function DrawFocusRect(hDC: HDC; const lprc: TRect): WINBOOL; stdcall; external 'user32' name 'DrawFocusRect';

+proc DrawFrameControl*(DC: HDC, Rect: TRect, uType, uState: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "DrawFrameControl".}

+proc DrawText*(hDC: HDC, lpString: cstring, nCount: int, lpRect: var TRect,

+               uFormat: UINT): int{.stdcall, dynlib: "user32",

+                                    importc: "DrawTextA".}

+proc DrawTextA*(hDC: HDC, lpString: LPCSTR, nCount: int, lpRect: var TRect,

+                uFormat: UINT): int{.stdcall, dynlib: "user32",

+                                     importc: "DrawTextA".}

+proc DrawTextEx*(DC: HDC, lpchText: cstring, cchText: int, p4: var TRect,

+                 dwDTFormat: UINT, DTParams: PDrawTextParams): int{.stdcall,

+    dynlib: "user32", importc: "DrawTextExA".}

+proc DrawTextExA*(DC: HDC, lpchText: LPCSTR, cchText: int, p4: var TRect,

+                  dwDTFormat: UINT, DTParams: PDrawTextParams): int{.stdcall,

+    dynlib: "user32", importc: "DrawTextExA".}

+proc DrawTextExW*(DC: HDC, lpchText: LPWSTR, cchText: int, p4: var TRect,

+                  dwDTFormat: UINT, DTParams: PDrawTextParams): int{.stdcall,

+    dynlib: "user32", importc: "DrawTextExW".}

+proc DrawTextW*(hDC: HDC, lpString: LPWSTR, nCount: int, lpRect: var TRect,

+                uFormat: UINT): int{.stdcall, dynlib: "user32",

+                                     importc: "DrawTextW".}

+  #function DuplicateTokenEx(hExistingToken: THandle; dwDesiredAccess: DWORD; lpTokenAttributes: PSecurityAttributes; ImpersonationLevel: TSecurityImpersonationLevel; TokenType: TTokenType; var phNewToken: THandle): WINBOOL;

+  #  stdcall; external 'advapi32' name 'DuplicateTokenEx';

+proc EndPaint*(hWnd: HWND, lpPaint: TPaintStruct): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EndPaint".}

+  #function EnumDisplayDevices(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDevice; dwFlags: DWORD): WINBOOL;stdcall; external 'user32' name 'EnumDisplayDevicesA';

+  #function EnumDisplayDevicesA(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDeviceA; dwFlags: DWORD): WINBOOL;stdcall; external 'user32' name 'EnumDisplayDevicesA';

+  #function EnumDisplayDevicesW(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDeviceW; dwFlags: DWORD): WINBOOL;stdcall; external 'user32' name 'EnumDisplayDevicesW';

+proc EnumDisplaySettings*(lpszDeviceName: cstring, iModeNum: DWORD,

+                          lpDevMode: var TDeviceMode): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EnumDisplaySettingsA".}

+proc EnumDisplaySettingsA*(lpszDeviceName: LPCSTR, iModeNum: DWORD,

+                           lpDevMode: var TDeviceModeA): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EnumDisplaySettingsA".}

+proc EnumDisplaySettingsW*(lpszDeviceName: LPWSTR, iModeNum: DWORD,

+                           lpDevMode: var TDeviceModeW): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "EnumDisplaySettingsW".}

+  #function EnumEnhMetaFile(DC: HDC; p2: HENHMETAFILE; p3: TFNEnhMFEnumProc; p4: Pointer; const p5: TRect): WINBOOL; stdcall; external 'gdi32' name 'EnumEnhMetaFile';

+  #function EnumFontFamiliesEx(DC: HDC; var p2: TLogFont; p3: TFNFontEnumProc; p4: LPARAM; p5: DWORD): WINBOOL;stdcall; external 'gdi32' name 'EnumFontFamiliesExA';

+  #function EnumFontFamiliesExA(DC: HDC; var p2: TLogFontA; p3: TFNFontEnumProcA; p4: LPARAM; p5: DWORD): WINBOOL; stdcall; external 'gdi32' name 'EnumFontFamiliesExA';

+  #function EnumFontFamiliesExW(DC: HDC; var p2: TLogFontW; p3: TFNFontEnumProcW; p4: LPARAM; p5: DWORD): WINBOOL; stdcall; external 'gdi32' name 'EnumFontFamiliesExW';

+  #function EqualRect(const lprc1, lprc2: TRect): WINBOOL; stdcall; external 'user32' name 'EqualRect';

+proc ExtCreatePen*(PenStyle, Width: DWORD, Brush: TLogBrush, StyleCount: DWORD,

+                   Style: Pointer): HPEN{.stdcall, dynlib: "gdi32",

+    importc: "ExtCreatePen".}

+proc ExtCreateRegion*(p1: PXForm, p2: DWORD, p3: TRgnData): HRGN{.stdcall,

+    dynlib: "gdi32", importc: "ExtCreateRegion".}

+  # function ExtEscape(DC: HDC; p2, p3: Integer; const p4: LPCSTR; p5: Integer; p6: LPSTR): Integer; stdcall; external 'gdi32' name 'ExtEscape';

+proc FileTimeToDosDateTime*(lpFileTime: TFileTime,

+                            lpFatDate, lpFatTime: var int16): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FileTimeToDosDateTime".}

+proc FileTimeToLocalFileTime*(lpFileTime: TFileTime,

+                              lpLocalFileTime: var TFileTime): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "FileTimeToLocalFileTime".}

+proc FileTimeToSystemTime*(lpFileTime: TFileTime, lpSystemTime: var TSystemTime): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FileTimeToSystemTime".}

+proc FillConsoleOutputAttribute*(hConsoleOutput: THandle, wAttribute: int16,

+                                 nLength: DWORD, dwWriteCoord: TCoord,

+                                 lpNumberOfAttrsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputAttribute".}

+proc FillConsoleOutputCharacter*(hConsoleOutput: THandle, cCharacter: Char,

+                                 nLength: DWORD, dwWriteCoord: TCoord,

+                                 lpNumberOfCharsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}

+proc FillConsoleOutputCharacterA*(hConsoleOutput: THandle, cCharacter: char,

+                                  nLength: DWORD, dwWriteCoord: TCoord,

+                                  lpNumberOfCharsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterA".}

+proc FillConsoleOutputCharacterW*(hConsoleOutput: THandle, cCharacter: WideChar,

+                                  nLength: DWORD, dwWriteCoord: TCoord,

+                                  lpNumberOfCharsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FillConsoleOutputCharacterW".}

+  #function FillRect(hDC: HDC; const lprc: TRect; hbr: HBRUSH): Integer; stdcall; external 'user32' name 'FillRect';

+proc FindFirstFile*(lpFileName: cstring, lpFindFileData: var TWIN32FindData): THandle{.

+    stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}

+proc FindFirstFileA*(lpFileName: LPCSTR, lpFindFileData: var TWIN32FindDataA): THandle{.

+    stdcall, dynlib: "kernel32", importc: "FindFirstFileA".}

+proc FindFirstFileW*(lpFileName: LPWSTR, lpFindFileData: var TWIN32FindDataW): THandle{.

+    stdcall, dynlib: "kernel32", importc: "FindFirstFileW".}

+  #function FindFirstFreeAce(var pAcl: TACL; var pAce: Pointer): WINBOOL; stdcall; external 'advapi32' name 'FindFirstFreeAce';

+proc FindNextFile*(hFindFile: THandle, lpFindFileData: var TWIN32FindData): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FindNextFileA".}

+proc FindNextFileA*(hFindFile: THandle, lpFindFileData: var TWIN32FindDataA): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FindNextFileA".}

+proc FindNextFileW*(hFindFile: THandle, lpFindFileData: var TWIN32FindDataW): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "FindNextFileW".}

+  #function FlushInstructionCache(hProcess: THandle; const lpBaseAddress: Pointer; dwSize: DWORD): WINBOOL; stdcall; external 'kernel32' name 'FlushInstructionCache';

+  #function FlushViewOfFile(const lpBaseAddress: Pointer; dwNumberOfBytesToFlush: DWORD): WINBOOL; stdcall; external 'kernel32' name 'FlushViewOfFile';

+  #function FrameRect(hDC: HDC; const lprc: TRect; hbr: HBRUSH): Integer; stdcall; external 'user32' name 'FrameRect';

+  #function GetAce(const pAcl: TACL; dwAceIndex: DWORD; var pAce: Pointer): WINBOOL; stdcall; external 'advapi32' name 'GetAce';

+  #function GetAclInformation(const pAcl: TACL; pAclInformation: Pointer; nAclInformationLength: DWORD; dwAclInformationClass: TAclInformationClass): WINBOOL; stdcall; external 'advapi32' name 'GetAclInformation';

+  #function GetAltTabInfo(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo; pszItemText: PChar; cchItemText: UINT): WINBOOL;stdcall; external 'user32' name 'GetAltTabInfoA';

+  #function GetAltTabInfoA(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo; pszItemText: LPCSTR; cchItemText: UINT): WINBOOL;stdcall; external 'user32' name 'GetAltTabInfoA';

+  #function GetAltTabInfoW(hwnd: HWND; iItem: Integer; var pati: TAltTabInfo; pszItemText: LPWSTR; cchItemText: UINT): WINBOOL;stdcall; external 'user32' name 'GetAltTabInfoW';

+proc GetAspectRatioFilterEx*(DC: HDC, p2: var TSize): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetAspectRatioFilterEx".}

+proc GetBinaryType*(lpApplicationName: cstring, lpBinaryType: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}

+proc GetBinaryTypeA*(lpApplicationName: LPCSTR, lpBinaryType: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeA".}

+proc GetBinaryTypeW*(lpApplicationName: LPWSTR, lpBinaryType: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetBinaryTypeW".}

+proc GetBitmapDimensionEx*(p1: HBITMAP, p2: var TSize): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetBitmapDimensionEx".}

+proc GetBoundsRect*(DC: HDC, p2: var TRect, p3: UINT): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetBoundsRect".}

+proc GetBrushOrgEx*(DC: HDC, p2: var TPoint): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetBrushOrgEx".}

+proc GetCaretPos*(lpPoint: var TPoint): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetCaretPos".}

+proc GetCharABCWidths*(DC: HDC, p2, p3: UINT, ABCStructs: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}

+proc GetCharABCWidthsA*(DC: HDC, p2, p3: UINT, ABCStructs: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsA".}

+proc GetCharABCWidthsFloat*(DC: HDC, p2, p3: UINT, ABCFloatSturcts: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}

+proc GetCharABCWidthsFloatA*(DC: HDC, p2, p3: UINT, ABCFloatSturcts: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatA".}

+proc GetCharABCWidthsFloatW*(DC: HDC, p2, p3: UINT, ABCFloatSturcts: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsFloatW".}

+  #function GetCharABCWidthsI(DC: HDC; p2, p3: UINT; p4: PWORD; const Widths): WINBOOL;stdcall; external 'gdi32' name 'GetCharABCWidthsI';

+proc GetCharABCWidthsW*(DC: HDC, p2, p3: UINT, ABCStructs: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharABCWidthsW".}

+proc GetCharacterPlacement*(DC: HDC, p2: cstring, p3, p4: WINBOOL,

+                            p5: var TGCPResults, p6: DWORD): DWORD{.stdcall,

+    dynlib: "gdi32", importc: "GetCharacterPlacementA".}

+proc GetCharacterPlacementA*(DC: HDC, p2: LPCSTR, p3, p4: WINBOOL,

+                             p5: var TGCPResults, p6: DWORD): DWORD{.stdcall,

+    dynlib: "gdi32", importc: "GetCharacterPlacementA".}

+proc GetCharacterPlacementW*(DC: HDC, p2: LPWSTR, p3, p4: WINBOOL,

+                             p5: var TGCPResults, p6: DWORD): DWORD{.stdcall,

+    dynlib: "gdi32", importc: "GetCharacterPlacementW".}

+proc GetCharWidth*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharWidthA".}

+proc GetCharWidth32*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharWidth32A".}

+proc GetCharWidth32A*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharWidth32A".}

+proc GetCharWidth32W*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharWidth32W".}

+proc GetCharWidthA*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharWidthA".}

+proc GetCharWidthFloat*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}

+proc GetCharWidthFloatA*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatA".}

+proc GetCharWidthFloatW*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetCharWidthFloatW".}

+  #function GetCharWidthI(DC: HDC; p2, p3: UINT; p4: PWORD; const Widths:pointer): WINBOOL;stdcall; external 'gdi32' name 'GetCharWidthI';

+proc GetCharWidthW*(DC: HDC, p2, p3: UINT, Widths: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetCharWidthW".}

+proc GetClassInfo*(hInstance: HINST, lpClassName: cstring,

+                   lpWndClass: var TWndClass): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetClassInfoA".}

+proc GetClassInfoA*(hInstance: HINST, lpClassName: LPCSTR,

+                    lpWndClass: var TWndClassA): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetClassInfoA".}

+proc GetClassInfoEx*(Instance: HINST, Classname: cstring,

+                     WndClass: var TWndClassEx): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetClassInfoExA".}

+  #function GetClassInfoExA(Instance: HINST; Classname: LPCSTR; var WndClass: TWndClassExA): WINBOOL; stdcall; external 'user32' name 'GetClassInfoExA';

+  #function GetClassInfoExW(Instance: HINST; Classname: LPWSTR; var WndClass: TWndClassExW): WINBOOL; stdcall; external 'user32' name 'GetClassInfoExW';

+  #function GetClassInfoW(hInstance: HINST; lpClassName: LPWSTR; var lpWndClass: TWndClassW): WINBOOL; stdcall; external 'user32' name 'GetClassInfoW';

+proc GetClientRect*(hWnd: HWND, lpRect: var TRect): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetClientRect".}

+proc GetClipBox*(DC: HDC, Rect: var TRect): int{.stdcall, dynlib: "gdi32",

+    importc: "GetClipBox".}

+proc GetClipCursor*(lpRect: var TRect): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetClipCursor".}

+proc GetColorAdjustment*(DC: HDC, p2: var TColorAdjustment): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetColorAdjustment".}

+proc GetCommConfig*(hCommDev: THandle, lpCC: var TCommConfig,

+                    lpdwSize: var DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "GetCommConfig".}

+proc GetCommMask*(hFile: THandle, lpEvtMask: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetCommMask".}

+proc GetCommModemStatus*(hFile: THandle, lpModemStat: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetCommModemStatus".}

+proc GetCommProperties*(hFile: THandle, lpCommProp: var TCommProp): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetCommProperties".}

+proc GetCommState*(hFile: THandle, lpDCB: var TDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetCommState".}

+proc GetCommTimeouts*(hFile: THandle, lpCommTimeouts: var TCommTimeouts): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetCommTimeouts".}

+proc GetComputerName*(lpBuffer: cstring, nSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetComputerNameA".}

+proc GetComputerNameA*(lpBuffer: LPCSTR, nSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetComputerNameA".}

+proc GetComputerNameW*(lpBuffer: LPWSTR, nSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetComputerNameW".}

+proc GetConsoleCursorInfo*(hConsoleOutput: THandle,

+                           lpConsoleCursorInfo: var TConsoleCursorInfo): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetConsoleCursorInfo".}

+proc GetConsoleMode*(hConsoleHandle: THandle, lpMode: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetConsoleMode".}

+proc GetConsoleScreenBufferInfo*(hConsoleOutput: THandle,

+    lpConsoleScreenBufferInfo: var TConsoleScreenBufferInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".}

+proc GetCPInfo*(CodePage: UINT, lpCPInfo: var TCPInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetCPInfo".}

+  #function GetCurrentHwProfile(var lpHwProfileInfo: THWProfileInfo): WINBOOL;stdcall; external 'advapi32' name 'GetCurrentHwProfileA';

+  #function GetCurrentHwProfileA(var lpHwProfileInfo: THWProfileInfoA): WINBOOL;stdcall; external 'advapi32' name 'GetCurrentHwProfileA';

+  #function GetCurrentHwProfileW(var lpHwProfileInfo: THWProfileInfoW): WINBOOL;stdcall; external 'advapi32' name 'GetCurrentHwProfileW';

+proc GetCursorInfo*(pci: var TCursorInfo): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetCursorInfo".}

+proc GetCursorPos*(lpPoint: var TPoint): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "GetCursorPos".}

+proc GetDCOrgEx*(DC: HDC, Origin: var TPoint): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetDCOrgEx".}

+proc GetDefaultCommConfig*(lpszName: cstring, lpCC: var TCommConfig,

+                           lpdwSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDefaultCommConfigA".}

+proc GetDefaultCommConfigA*(lpszName: LPCSTR, lpCC: var TCommConfig,

+                            lpdwSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDefaultCommConfigA".}

+proc GetDefaultCommConfigW*(lpszName: LPWSTR, lpCC: var TCommConfig,

+                            lpdwSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetDefaultCommConfigW".}

+proc GetDIBColorTable*(DC: HDC, p2, p3: UINT, RGBQuadStructs: pointer): UINT{.

+    stdcall, dynlib: "gdi32", importc: "GetDIBColorTable".}

+proc GetDIBits*(DC: HDC, Bitmap: HBitmap, StartScan, NumScans: UINT,

+                Bits: Pointer, BitInfo: var TBitmapInfo, Usage: UINT): int{.

+    stdcall, dynlib: "gdi32", importc: "GetDIBits".}

+proc GetDiskFreeSpace*(lpRootPathName: cstring, lpSectorsPerCluster,

+    lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}

+proc GetDiskFreeSpaceA*(lpRootPathName: LPCSTR, lpSectorsPerCluster,

+    lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceA".}

+proc GetDiskFreeSpaceEx*(lpDirectoryName: cstring, lpFreeBytesAvailableToCaller,

+    lpTotalNumberOfBytes: var TLargeInteger,

+                         lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}

+proc GetDiskFreeSpaceExA*(lpDirectoryName: LPCSTR, lpFreeBytesAvailableToCaller,

+    lpTotalNumberOfBytes: var TLargeInteger,

+                          lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}

+proc GetDiskFreeSpaceExW*(lpDirectoryName: LPWSTR, lpFreeBytesAvailableToCaller,

+    lpTotalNumberOfBytes: var TLargeInteger,

+                          lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExW".}

+proc GetDiskFreeSpaceW*(lpRootPathName: LPWSTR, lpSectorsPerCluster,

+    lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceW".}

+proc GetDiskFreeSpaceEx*(lpDirectoryName: cstring, lpFreeBytesAvailableToCaller,

+    lpTotalNumberOfBytes: pLargeInteger, lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}

+proc GetDiskFreeSpaceExA*(lpDirectoryName: LPCSTR, lpFreeBytesAvailableToCaller,

+    lpTotalNumberOfBytes: pLargeInteger, lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExA".}

+proc GetDiskFreeSpaceExW*(lpDirectoryName: LPWSTR, lpFreeBytesAvailableToCaller,

+    lpTotalNumberOfBytes: pLargeInteger, lpTotalNumberOfFreeBytes: PLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetDiskFreeSpaceExW".}

+  #function GetEnhMetaFilePixelFormat(p1: HENHMETAFILE; p2: Cardinal; var p3: TPixelFormatDescriptor): UINT;stdcall; external 'gdi32' name 'GetEnhMetaFilePixelFormat';

+proc GetExitCodeProcess*(hProcess: THandle, lpExitCode: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetExitCodeProcess".}

+proc GetExitCodeThread*(hThread: THandle, lpExitCode: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetExitCodeThread".}

+proc GetFileInformationByHandle*(hFile: THandle, lpFileInformation: var TByHandleFileInformation): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetFileInformationByHandle".}

+  #function GetFileSecurity(lpFileName: PChar; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL;stdcall; external 'advapi32' name 'GetFileSecurityA';

+  #function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetFileSecurityA';

+  #function GetFileSecurityW(lpFileName: LPWSTR; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetFileSecurityW';

+proc GetFileVersionInfoSize*(lptstrFilename: cstring, lpdwHandle: var DWORD): DWORD{.

+    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}

+proc GetFileVersionInfoSizeA*(lptstrFilename: LPCSTR, lpdwHandle: var DWORD): DWORD{.

+    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeA".}

+proc GetFileVersionInfoSizeW*(lptstrFilename: LPWSTR, lpdwHandle: var DWORD): DWORD{.

+    stdcall, dynlib: "version", importc: "GetFileVersionInfoSizeW".}

+  # removed because old definition was wrong !

+  # function GetFullPathName(lpFileName: PChar; nBufferLength: DWORD; lpBuffer: PChar; var lpFilePart: PChar): DWORD;stdcall; external 'kernel32' name 'GetFullPathNameA';

+  # function GetFullPathNameA(lpFileName: LPCSTR; nBufferLength: DWORD; lpBuffer: LPCSTR; var lpFilePart: LPCSTR): DWORD; stdcall; external 'kernel32' name 'GetFullPathNameA';

+  # function GetFullPathNameW(lpFileName: LPWSTR; nBufferLength: DWORD; lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall; external 'kernel32' name 'GetFullPathNameW';

+proc GetGlyphOutline*(DC: HDC, p2, p3: UINT, p4: TGlyphMetrics, p5: DWORD,

+                      p6: Pointer, p7: TMat2): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GetGlyphOutlineA".}

+proc GetGlyphOutlineA*(DC: HDC, p2, p3: UINT, p4: TGlyphMetrics, p5: DWORD,

+                       p6: Pointer, p7: TMat2): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GetGlyphOutlineA".}

+proc GetGlyphOutlineW*(DC: HDC, p2, p3: UINT, p4: TGlyphMetrics, p5: DWORD,

+                       p6: Pointer, p7: TMat2): DWORD{.stdcall, dynlib: "gdi32",

+    importc: "GetGlyphOutlineW".}

+  #function GetGUIThreadInfo(idThread: DWORD; var pgui: TGUIThreadinfo): WINBOOL;stdcall; external 'user32' name 'GetGUIThreadInfo';

+proc GetHandleInformation*(hObject: THandle, lpdwFlags: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetHandleInformation".}

+  #function GetICMProfile(DC: HDC; var Size: DWORD; Name: PChar): WINBOOL;stdcall; external 'gdi32' name 'GetICMProfileA';

+  #function GetICMProfileA(DC: HDC; var Size: DWORD; Name: LPCSTR): WINBOOL; stdcall; external 'gdi32' name 'GetICMProfileA';

+  #function GetICMProfileW(DC: HDC; var Size: DWORD; Name: LPWSTR): WINBOOL; stdcall; external 'gdi32' name 'GetICMProfileW';

+proc GetIconInfo*(hIcon: HICON, piconinfo: var TIconInfo): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetIconInfo".}

+  #function GetKernelObjectSecurity(Handle: THandle; RequestedInformation: SECURITY_INFORMATION; pSecurityDescriptor: PSecurityDescriptor; nLength: DWORD; var lpnLengthNeeded: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetKernelObjectSecurity';

+proc GetKerningPairs*(DC: HDC, Count: DWORD, KerningPairs: pointer): DWORD{.

+    stdcall, dynlib: "gdi32", importc: "GetKerningPairs".}

+proc GetKeyboardLayoutList*(nBuff: int, List: pointer): UINT{.stdcall,

+    dynlib: "user32", importc: "GetKeyboardLayoutList".}

+  #function GetKeyboardState(var KeyState: TKeyboardState): WINBOOL; stdcall; external 'user32' name 'GetKeyboardState';

+  #function GetLastInputInfo(var plii: TLastInputInfo): WINBOOL;stdcall; external 'user32' name 'GetLastInputInfo';

+proc GetSystemTime*(lpSystemTime: var SYSTEMTIME){.stdcall, dynlib: "kernel32",

+    importc: "GetSystemTime".}

+proc GetLocalTime*(SystemTime: var SYSTEMTIME){.stdcall, dynlib: "kernel32",

+    importc: "GetLocalTime".}

+proc GetSystemInfo*(SystemInfo: var SYSTEM_INFO){.stdcall, dynlib: "kernel32",

+    importc: "GetSystemInfo".}

+proc SetSystemTime*(lpSystemTime: var SYSTEMTIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetSystemTime".}

+proc SetLocalTime*(lpSystemTime: var SYSTEMTIME): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetLocalTime".}

+proc GetLogColorSpace*(p1: HCOLORSPACE, ColorSpace: var TLogColorSpace,

+                       Size: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetLogColorSpaceA".}

+proc GetLogColorSpaceA*(p1: HCOLORSPACE, ColorSpace: var TLogColorSpaceA,

+                        Size: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetLogColorSpaceA".}

+  #function GetLogColorSpaceW(p1: HCOLORSPACE; var ColorSpace: TLogColorSpaceW; Size: DWORD): WINBOOL; stdcall; external 'gdi32' name 'GetLogColorSpaceW';

+proc GetMailslotInfo*(hMailslot: THandle, lpMaxMessageSize: Pointer,

+                      lpNextSize: var DWORD,

+                      lpMessageCount, lpReadTimeout: Pointer): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetMailslotInfo".}

+  #function GetMenuBarInfo(hend: HWND; idObject, idItem: Longint; var pmbi: TMenuBarInfo): WINBOOL;stdcall; external 'user32' name 'GetMenuBarInfo';

+  #function GetMenuInfo(hMenu: HMENU; var lpmi: TMenuInfo): WINBOOL;stdcall; external 'user32' name 'GetMenuInfo';

+proc GetMenuItemInfo*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: var TMenuItemInfo): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}

+proc GetMenuItemInfoA*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: var TMenuItemInfoA): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetMenuItemInfoA".}

+  #function GetMenuItemInfoW(p1: HMENU; p2: UINT; p3: WINBOOL; var p4: TMenuItemInfoW): WINBOOL; stdcall; external 'user32' name 'GetMenuItemInfoW';

+proc GetMenuItemRect*(hWnd: HWND, hMenu: HMENU, uItem: UINT, lprcItem: var TRect): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetMenuItemRect".}

+proc GetMessage*(lpMsg: var TMsg, hWnd: HWND, wMsgFilterMin, wMsgFilterMax: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetMessageA".}

+proc GetMessageA*(lpMsg: var TMsg, hWnd: HWND,

+                  wMsgFilterMin, wMsgFilterMax: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetMessageA".}

+proc GetMessageW*(lpMsg: var TMsg, hWnd: HWND,

+                  wMsgFilterMin, wMsgFilterMax: UINT): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetMessageW".}

+proc GetMiterLimit*(DC: HDC, Limit: var float32): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetMiterLimit".}

+  #function GetMouseMovePoints(cbSize: UINT; var lppt, lpptBuf: TMouseMovePoint; nBufPoints: Integer; resolution: DWORD): Integer;stdcall; external 'user32' name 'GetMouseMovePoints';

+proc GetNamedPipeInfo*(hNamedPipe: THandle, lpFlags: var DWORD,

+                       lpOutBufferSize, lpInBufferSize, lpMaxInstances: Pointer): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetNamedPipeInfo".}

+proc GetNumberOfConsoleInputEvents*(hConsoleInput: THandle,

+                                    lpNumberOfEvents: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetNumberOfConsoleInputEvents".}

+proc GetNumberOfConsoleMouseButtons*(lpNumberOfMouseButtons: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetNumberOfConsoleMouseButtons".}

+  #function GetNumberOfEventLogRecords(hEventLog: THandle; var NumberOfRecords: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetNumberOfEventLogRecords';

+  #function GetOldestEventLogRecord(hEventLog: THandle; var OldestRecord: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetOldestEventLogRecord';

+proc GetOverlappedResult*(hFile: THandle, lpOverlapped: TOverlapped,

+                          lpNumberOfBytesTransferred: var DWORD, bWait: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetOverlappedResult".}

+proc GetPaletteEntries*(Palette: HPALETTE, StartIndex, NumEntries: UINT,

+                        PaletteEntries: pointer): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetPaletteEntries".}

+proc GetPath*(DC: HDC, Points, Types: pointer, nSize: int): int{.stdcall,

+    dynlib: "gdi32", importc: "GetPath".}

+proc GetPriorityClipboardFormat*(paFormatPriorityList: pointer, cFormats: int): int{.

+    stdcall, dynlib: "user32", importc: "GetPriorityClipboardFormat".}

+  #function GetPrivateObjectSecurity(ObjectDescriptor: PSecurityDescriptor; SecurityInformation: SECURITY_INFORMATION; ResultantDescriptor: PSecurityDescriptor; DescriptorLength: DWORD; var ReturnLength: DWORD): WINBOOL;

+  #  stdcall; external 'advapi32' name 'GetPrivateObjectSecurity';

+proc GetPrivateProfileSectionNamesA*(lpszReturnBuffer: LPSTR, nSize: DWORD,

+                                     lpFileName: LPCSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesA".}

+proc GetPrivateProfileSectionNamesW*(lpszReturnBuffer: LPWSTR, nSize: DWORD,

+                                     lpFileName: LPCWSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesW".}

+proc GetPrivateProfileSectionNames*(lpszReturnBuffer: LPTSTR, nSize: DWORD,

+                                    lpFileName: LPCTSTR): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetPrivateProfileSectionNamesA".}

+proc GetPrivateProfileStructA*(lpszSection, lpszKey: LPCSTR, lpStruct: LPVOID,

+                               uSizeStruct: UINT, szFile: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructA".}

+proc GetPrivateProfileStructW*(lpszSection, lpszKey: LPCWSTR, lpStruct: LPVOID,

+                               uSizeStruct: UINT, szFile: LPCWSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructW".}

+proc GetPrivateProfileStruct*(lpszSection, lpszKey: LPCTSTR, lpStruct: LPVOID,

+                              uSizeStruct: UINT, szFile: LPCTSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetPrivateProfileStructA".}

+proc GetProcessAffinityMask*(hProcess: THandle, lpProcessAffinityMask,

+    lpSystemAffinityMask: var DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "GetProcessAffinityMask".}

+proc GetProcessHeaps*(NumberOfHeaps: DWORD, ProcessHeaps: var THandle): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetProcessHeaps".}

+proc GetProcessPriorityBoost*(hThread: THandle,

+                              DisablePriorityBoost: var WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetProcessPriorityBoost".}

+proc GetProcessShutdownParameters*(lpdwLevel, lpdwFlags: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetProcessShutdownParameters".}

+proc GetProcessTimes*(hProcess: THandle, lpCreationTime, lpExitTime,

+    lpKernelTime, lpUserTime: var TFileTime): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetProcessTimes".}

+proc GetProcessWorkingSetSize*(hProcess: THandle, lpMinimumWorkingSetSize,

+    lpMaximumWorkingSetSize: var DWORD): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "GetProcessWorkingSetSize".}

+proc GetQueuedCompletionStatus*(CompletionPort: THandle,

+    lpNumberOfBytesTransferred, lpCompletionKey: var DWORD,

+                                lpOverlapped: var POverlapped,

+                                dwMilliseconds: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetQueuedCompletionStatus".}

+proc GetRasterizerCaps*(p1: var TRasterizerStatus, p2: UINT): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetRasterizerCaps".}

+proc GetRgnBox*(RGN: HRGN, p2: var TRect): int{.stdcall, dynlib: "gdi32",

+    importc: "GetRgnBox".}

+proc GetScrollInfo*(hWnd: HWND, BarFlag: int, ScrollInfo: var TScrollInfo): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetScrollInfo".}

+proc GetScrollRange*(hWnd: HWND, nBar: int, lpMinPos, lpMaxPos: var int): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetScrollRange".}

+  #function GetSecurityDescriptorControl(pSecurityDescriptor: PSecurityDescriptor; var pControl: SECURITY_DESCRIPTOR_CONTROL; var lpdwRevision: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorControl';

+  #function GetSecurityDescriptorDacl(pSecurityDescriptor: PSecurityDescriptor; var lpbDaclPresent: WINBOOL; var pDacl: PACL; var lpbDaclDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorDacl';

+  #function GetSecurityDescriptorGroup(pSecurityDescriptor: PSecurityDescriptor; var pGroup: PSID; var lpbGroupDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorGroup';

+  #function GetSecurityDescriptorOwner(pSecurityDescriptor: PSecurityDescriptor; var pOwner: PSID; var lpbOwnerDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorOwner';

+  #function GetSecurityDescriptorSacl(pSecurityDescriptor: PSecurityDescriptor; var lpbSaclPresent: WINBOOL; var pSacl: PACL; var lpbSaclDefaulted: WINBOOL): WINBOOL; stdcall; external 'advapi32' name 'GetSecurityDescriptorSacl';

+proc GetStartupInfo*(lpStartupInfo: var TSTARTUPINFO){.stdcall,

+    dynlib: "kernel32", importc: "GetStartupInfoA".}

+proc GetStringTypeA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,

+                     cchSrc: WINBOOL, lpCharType: var int16): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeA".}

+proc GetStringTypeEx*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: cstring,

+                      cchSrc: int, lpCharType: var int16): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeExA".}

+proc GetStringTypeExA*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR,

+                       cchSrc: int, lpCharType: var int16): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeExA".}

+proc GetStringTypeExW*(Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPWSTR,

+                       cchSrc: int, lpCharType: var int16): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeExW".}

+proc GetStringTypeW*(dwInfoType: DWORD, lpSrcStr: WCHAR, cchSrc: WINBOOL,

+                     lpCharType: var int16): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetStringTypeW".}

+proc GetSystemPaletteEntries*(DC: HDC, StartIndex, NumEntries: UINT,

+                              PaletteEntries: pointer): UINT{.stdcall,

+    dynlib: "gdi32", importc: "GetSystemPaletteEntries".}

+proc GetSystemPowerStatus*(lpSystemPowerStatus: var TSystemPowerStatus): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetSystemPowerStatus".}

+proc GetSystemTimeAdjustment*(lpTimeAdjustment, lpTimeIncrement: var DWORD,

+                              lpTimeAdjustmentDisabled: var WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetSystemTimeAdjustment".}

+proc GetSystemTimeAsFileTime*(lpSystemTimeAsFileTime: var TFILETIME){.stdcall,

+    dynlib: "kernel32", importc: "GetSystemTimeAsFileTime".}

+proc GetTabbedTextExtent*(hDC: HDC, lpString: cstring,

+                          nCount, nTabPositions: int,

+                          lpnTabStopPositions: pointer): DWORD{.stdcall,

+    dynlib: "user32", importc: "GetTabbedTextExtentA".}

+proc GetTabbedTextExtentA*(hDC: HDC, lpString: LPCSTR,

+                           nCount, nTabPositions: int,

+                           lpnTabStopPositions: pointer): DWORD{.stdcall,

+    dynlib: "user32", importc: "GetTabbedTextExtentA".}

+proc GetTabbedTextExtentW*(hDC: HDC, lpString: LPWSTR,

+                           nCount, nTabPositions: int,

+                           lpnTabStopPositions: pointer): DWORD{.stdcall,

+    dynlib: "user32", importc: "GetTabbedTextExtentW".}

+proc GetTapeParameters*(hDevice: THandle, dwOperation: DWORD,

+                        lpdwSize: var DWORD, lpTapeInformation: Pointer): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetTapeParameters".}

+proc GetTapePosition*(hDevice: THandle, dwPositionType: DWORD,

+                      lpdwPartition, lpdwOffsetLow: var DWORD,

+                      lpdwOffsetHigh: Pointer): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "GetTapePosition".}

+proc GetTextExtentExPoint*(DC: HDC, p2: cstring, p3, p4: int, p5, p6: PInteger,

+                           p7: var TSize): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentExPointA".}

+proc GetTextExtentExPointA*(DC: HDC, p2: LPCSTR, p3, p4: int, p5, p6: PInteger,

+                            p7: var TSize): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentExPointA".}

+  #function GetTextExtentExPointI(DC: HDC; p2: PWORD; p3, p4: Integer; p5, p6: PINT; var p7: TSize): WINBOOL;stdcall; external 'gdi32' name 'GetTextExtentExPointI';

+proc GetTextExtentExPointW*(DC: HDC, p2: LPWSTR, p3, p4: int, p5, p6: PInteger,

+                            p7: var TSize): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "GetTextExtentExPointW".}

+proc GetTextExtentPoint*(DC: HDC, Str: cstring, Count: int, Size: var TSize): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}

+proc GetTextExtentPoint32*(DC: HDC, Str: cstring, Count: int, Size: var TSize): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}

+proc GetTextExtentPoint32A*(DC: HDC, Str: LPCSTR, Count: int, Size: var TSize): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32A".}

+proc GetTextExtentPoint32W*(DC: HDC, Str: LPWSTR, Count: int, Size: var TSize): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPoint32W".}

+proc GetTextExtentPointA*(DC: HDC, Str: LPCSTR, Count: int, Size: var TSize): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointA".}

+  #function GetTextExtentPointI(DC: HDC; p2: PWORD; p3: Integer; var p4: TSize): WINBOOL;stdcall; external 'gdi32' name 'GetTextExtentPointI';

+proc GetTextExtentPointW*(DC: HDC, Str: LPWSTR, Count: int, Size: var TSize): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "GetTextExtentPointW".}

+proc GetTextMetrics*(DC: HDC, TM: var TTextMetric): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetTextMetricsA".}

+  #function GetTextMetricsA(DC: HDC; var TM: TTextMetricA): WINBOOL; stdcall; external 'gdi32' name 'GetTextMetricsA';

+  #function GetTextMetricsW(DC: HDC; var TM: TTextMetricW): WINBOOL; stdcall; external 'gdi32' name 'GetTextMetricsW';

+proc GetThreadContext*(hThread: THandle, lpContext: var TContext): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetThreadContext".}

+proc GetThreadPriorityBoost*(hThread: THandle, DisablePriorityBoost: var WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetThreadPriorityBoost".}

+proc GetThreadSelectorEntry*(hThread: THandle, dwSelector: DWORD,

+                             lpSelectorEntry: var TLDTEntry): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetThreadSelectorEntry".}

+proc GetThreadTimes*(hThread: THandle, lpCreationTime, lpExitTime, lpKernelTime,

+                                       lpUserTime: var TFileTime): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetThreadTimes".}

+proc GetTimeZoneInformation*(lpTimeZoneInformation: var TTimeZoneInformation): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "GetTimeZoneInformation".}

+  #function GetTitleBarInfo(hwnd: HWND; var pti: TTitleBarInfo): WINBOOL;stdcall; external 'user32' name 'GetTitleBarInfo';

+  #function GetTokenInformation(TokenHandle: THandle; TokenInformationClass: TTokenInformationClass; TokenInformation: Pointer; TokenInformationLength: DWORD; var ReturnLength: DWORD): WINBOOL; stdcall; external 'advapi32' name 'GetTokenInformation';

+proc GetUpdateRect*(hWnd: HWND, lpRect: var TRect, bErase: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUpdateRect".}

+proc GetUserName*(lpBuffer: cstring, nSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetUserNameA".}

+proc GetUserNameA*(lpBuffer: LPCSTR, nSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetUserNameA".}

+proc GetUserNameW*(lpBuffer: LPWSTR, nSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "GetUserNameW".}

+proc GetUserObjectInformation*(hObj: THandle, nIndex: int, pvInfo: Pointer,

+                               nLength: DWORD, lpnLengthNeeded: var DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}

+proc GetUserObjectInformationA*(hObj: THandle, nIndex: int, pvInfo: Pointer,

+                                nLength: DWORD, lpnLengthNeeded: var DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUserObjectInformationA".}

+proc GetUserObjectInformationW*(hObj: THandle, nIndex: int, pvInfo: Pointer,

+                                nLength: DWORD, lpnLengthNeeded: var DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "GetUserObjectInformationW".}

+proc GetUserObjectSecurity*(hObj: THandle, pSIRequested: var DWORD,

+                            pSID: PSecurityDescriptor, nLength: DWORD,

+                            lpnLengthNeeded: var DWORD): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetUserObjectSecurity".}

+proc GetVersionEx*(lpVersionInformation: var TOSVersionInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVersionExA".}

+proc GetVersionExA*(lpVersionInformation: var TOSVersionInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVersionExA".}

+proc GetVersionExW*(lpVersionInformation: var TOSVersionInfoW): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "GetVersionExW".}

+proc GetViewportExtEx*(DC: HDC, Size: var TSize): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetViewportExtEx".}

+proc GetViewportOrgEx*(DC: HDC, Point: var TPoint): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetViewportOrgEx".}

+proc GetVolumeInformation*(lpRootPathName: cstring, lpVolumeNameBuffer: cstring,

+                           nVolumeNameSize: DWORD, lpVolumeSerialNumber: PDWORD,

+    lpMaximumComponentLength, lpFileSystemFlags: var DWORD,

+                           lpFileSystemNameBuffer: cstring,

+                           nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVolumeInformationA".}

+proc GetVolumeInformationA*(lpRootPathName: LPCSTR, lpVolumeNameBuffer: LPCSTR,

+                            nVolumeNameSize: DWORD,

+                            lpVolumeSerialNumber: PDWORD,

+    lpMaximumComponentLength, lpFileSystemFlags: var DWORD,

+                            lpFileSystemNameBuffer: LPCSTR,

+                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVolumeInformationA".}

+proc GetVolumeInformationW*(lpRootPathName: LPWSTR, lpVolumeNameBuffer: LPWSTR,

+                            nVolumeNameSize: DWORD,

+                            lpVolumeSerialNumber: PDWORD,

+    lpMaximumComponentLength, lpFileSystemFlags: var DWORD,

+                            lpFileSystemNameBuffer: LPWSTR,

+                            nFileSystemNameSize: DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "GetVolumeInformationW".}

+proc GetWindowExtEx*(DC: HDC, Size: var TSize): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetWindowExtEx".}

+  #function GetWindowInfo(hwnd: HWND; var pwi: TWindowInfo): WINBOOL;stdcall; external 'user32' name 'GetWindowInfo';

+proc GetWindowOrgEx*(DC: HDC, Point: var TPoint): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetWindowOrgEx".}

+proc GetWindowRect*(hWnd: HWND, lpRect: var TRect): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "GetWindowRect".}

+proc GetWorldTransform*(DC: HDC, p2: var TXForm): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "GetWorldTransform".}

+  #function GradientFill(DC: HDC; var p2: TTriVertex; p3: ULONG; p4: Pointer; p5, p6: ULONG): WINBOOL;stdcall; external 'gdi32' name 'GradientFill';

+proc GlobalMemoryStatus*(Buffer: var MEMORYSTATUS){.stdcall, dynlib: "kernel32",

+    importc: "GlobalMemoryStatus".}

+proc HeapWalk*(hHeap: THandle, lpEntry: var TProcessHeapEntry): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "HeapWalk".}

+proc ImageList_GetDragImage*(ppt: var POINT, pptHotspot: var POINT): HIMAGELIST{.

+    stdcall, dynlib: "comctl32", importc: "ImageList_GetDragImage".}

+proc InflateRect*(lprc: var TRect, dx, dy: int): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "InflateRect".}

+proc InitializeAcl*(pAcl: var TACL, nAclLength, dwAclRevision: DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "InitializeAcl".}

+proc InitializeCriticalSectionAndSpinCount*(

+    lpCriticalSection: var TRTLCriticalSection, dwSpinCount: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32",

+    importc: "InitializeCriticalSectionAndSpinCount".}

+proc InitializeSid*(Sid: Pointer, pIdentifierAuthority: TSIDIdentifierAuthority,

+                    nSubAuthorityCount: int8): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "InitializeSid".}

+proc InsertMenuItem*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfo): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "InsertMenuItemA".}

+proc InsertMenuItemA*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfoA): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "InsertMenuItemA".}

+  #function InsertMenuItemW(p1: HMENU; p2: UINT; p3: WINBOOL; const p4: TMenuItemInfoW): WINBOOL; stdcall; external 'user32' name 'InsertMenuItemW';

+proc IntersectRect*(lprcDst: var TRect, lprcSrc1, lprcSrc2: TRect): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "IntersectRect".}

+  #function InvertRect(hDC: HDC; const lprc: TRect): WINBOOL; stdcall; external 'user32' name 'InvertRect';

+proc IsDialogMessage*(hDlg: HWND, lpMsg: var TMsg): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "IsDialogMessageA".}

+proc IsDialogMessageA*(hDlg: HWND, lpMsg: var TMsg): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "IsDialogMessageA".}

+proc IsDialogMessageW*(hDlg: HWND, lpMsg: var TMsg): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "IsDialogMessageW".}

+  #function IsRectEmpty(const lprc: TRect): WINBOOL; stdcall; external 'user32' name 'IsRectEmpty';

+proc IsValidAcl*(pAcl: TACL): WINBOOL{.stdcall, dynlib: "advapi32",

+                                       importc: "IsValidAcl".}

+proc LocalFileTimeToFileTime*(lpLocalFileTime: TFileTime,

+                              lpFileTime: var TFileTime): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "LocalFileTimeToFileTime".}

+proc LockFileEx*(hFile: THandle, dwFlags, dwReserved: DWORD,

+                 nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD,

+                 lpOverlapped: TOverlapped): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "LockFileEx".}

+proc LogonUser*(lpszUsername, lpszDomain, lpszPassword: cstring,

+                dwLogonType, dwLogonProvider: DWORD, phToken: var THandle): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LogonUserA".}

+proc LogonUserA*(lpszUsername, lpszDomain, lpszPassword: LPCSTR,

+                 dwLogonType, dwLogonProvider: DWORD, phToken: var THandle): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LogonUserA".}

+proc LogonUserW*(lpszUsername, lpszDomain, lpszPassword: LPWSTR,

+                 dwLogonType, dwLogonProvider: DWORD, phToken: var THandle): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LogonUserW".}

+proc LookupAccountName*(lpSystemName, lpAccountName: cstring, Sid: PSID,

+                        cbSid: var DWORD, ReferencedDomainName: cstring,

+                        cbReferencedDomainName: var DWORD,

+                        peUse: var SID_NAME_USE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupAccountNameA".}

+proc LookupAccountNameA*(lpSystemName, lpAccountName: LPCSTR, Sid: PSID,

+                         cbSid: var DWORD, ReferencedDomainName: LPCSTR,

+                         cbReferencedDomainName: var DWORD,

+                         peUse: var SID_NAME_USE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupAccountNameA".}

+proc LookupAccountNameW*(lpSystemName, lpAccountName: LPWSTR, Sid: PSID,

+                         cbSid: var DWORD, ReferencedDomainName: LPWSTR,

+                         cbReferencedDomainName: var DWORD,

+                         peUse: var SID_NAME_USE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupAccountNameW".}

+proc LookupAccountSid*(lpSystemName: cstring, Sid: PSID, Name: cstring,

+                       cbName: var DWORD, ReferencedDomainName: cstring,

+                       cbReferencedDomainName: var DWORD,

+                       peUse: var SID_NAME_USE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupAccountSidA".}

+proc LookupAccountSidA*(lpSystemName: LPCSTR, Sid: PSID, Name: LPCSTR,

+                        cbName: var DWORD, ReferencedDomainName: LPCSTR,

+                        cbReferencedDomainName: var DWORD,

+                        peUse: var SID_NAME_USE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupAccountSidA".}

+proc LookupAccountSidW*(lpSystemName: LPWSTR, Sid: PSID, Name: LPWSTR,

+                        cbName: var DWORD, ReferencedDomainName: LPWSTR,

+                        cbReferencedDomainName: var DWORD,

+                        peUse: var SID_NAME_USE): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupAccountSidW".}

+proc LookupPrivilegeDisplayName*(lpSystemName, lpName: LPCSTR,

+                                 lpDisplayName: cstring,

+                                 cbDisplayName, lpLanguageId: var DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}

+proc LookupPrivilegeDisplayNameA*(lpSystemName, lpName: LPCSTR,

+                                  lpDisplayName: LPCSTR,

+                                  cbDisplayName, lpLanguageId: var DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameA".}

+proc LookupPrivilegeDisplayNameW*(lpSystemName, lpName: LPCSTR,

+                                  lpDisplayName: LPWSTR,

+                                  cbDisplayName, lpLanguageId: var DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "LookupPrivilegeDisplayNameW".}

+proc LookupPrivilegeName*(lpSystemName: cstring, lpLuid: var TLargeInteger,

+                          lpName: cstring, cbName: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeNameA".}

+proc LookupPrivilegeNameA*(lpSystemName: LPCSTR, lpLuid: var TLargeInteger,

+                           lpName: LPCSTR, cbName: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeNameA".}

+proc LookupPrivilegeNameW*(lpSystemName: LPWSTR, lpLuid: var TLargeInteger,

+                           lpName: LPWSTR, cbName: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeNameW".}

+proc LookupPrivilegeValue*(lpSystemName, lpName: cstring,

+                           lpLuid: var TLargeInteger): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeValueA".}

+proc LookupPrivilegeValueA*(lpSystemName, lpName: LPCSTR,

+                            lpLuid: var TLargeInteger): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeValueA".}

+proc LookupPrivilegeValueW*(lpSystemName, lpName: LPWSTR,

+                            lpLuid: var TLargeInteger): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "LookupPrivilegeValueW".}

+proc LPtoDP*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "LPtoDP".}

+proc MakeAbsoluteSD*(pSelfRelativeSecurityDescriptor: PSecurityDescriptor,

+                     pAbsoluteSecurityDescriptor: PSecurityDescriptor,

+                     lpdwAbsoluteSecurityDescriptorSi: var DWORD,

+                     pDacl: var TACL, lpdwDaclSize: var DWORD, pSacl: var TACL,

+                     lpdwSaclSize: var DWORD, pOwner: PSID,

+                     lpdwOwnerSize: var DWORD, pPrimaryGroup: Pointer,

+                     lpdwPrimaryGroupSize: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "MakeAbsoluteSD".}

+proc MakeSelfRelativeSD*(pAbsoluteSecurityDescriptor: PSecurityDescriptor,

+                         pSelfRelativeSecurityDescriptor: PSecurityDescriptor,

+                         lpdwBufferLength: var DWORD): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "MakeSelfRelativeSD".}

+proc MapDialogRect*(hDlg: HWND, lpRect: var TRect): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "MapDialogRect".}

+proc MapWindowPoints*(hWndFrom, hWndTo: HWND, lpPoints: pointer, cPoints: UINT): int{.

+    stdcall, dynlib: "user32", importc: "MapWindowPoints".}

+proc MessageBoxIndirect*(MsgBoxParams: TMsgBoxParams): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "MessageBoxIndirectA".}

+proc MessageBoxIndirectA*(MsgBoxParams: TMsgBoxParamsA): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "MessageBoxIndirectA".}

+  #function MessageBoxIndirectW(const MsgBoxParams: TMsgBoxParamsW): WINBOOL; stdcall; external 'user32' name 'MessageBoxIndirectW';

+  #function ModifyWorldTransform(DC: HDC; const p2: TXForm; p3: DWORD): WINBOOL; stdcall; external 'gdi32' name 'ModifyWorldTransform';

+proc MsgWaitForMultipleObjects*(nCount: DWORD, pHandles: pointer,

+                                fWaitAll: WINBOOL,

+                                dwMilliseconds, dwWakeMask: DWORD): DWORD{.

+    stdcall, dynlib: "user32", importc: "MsgWaitForMultipleObjects".}

+proc MsgWaitForMultipleObjectsEx*(nCount: DWORD, pHandles: pointer,

+                                  dwMilliseconds, dwWakeMask, dwFlags: DWORD): DWORD{.

+    stdcall, dynlib: "user32", importc: "MsgWaitForMultipleObjectsEx".}

+  # function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; const lpMultiByteStr: LPCSTR; cchMultiByte: Integer; lLPWSTRStr: LPWSTR; cchWideChar: Integer): Integer; stdcall; external 'kernel32' name 'MultiByteToWideChar';

+proc ObjectOpenAuditAlarm*(SubsystemName: cstring, HandleId: Pointer,

+                           ObjectTypeName: cstring, ObjectName: cstring,

+                           pSecurityDescriptor: PSecurityDescriptor,

+                           ClientToken: THandle,

+                           DesiredAccess, GrantedAccess: DWORD,

+                           Privileges: var TPrivilegeSet,

+                           ObjectCreation, AccessGranted: WINBOOL,

+                           GenerateOnClose: var WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}

+proc ObjectOpenAuditAlarmA*(SubsystemName: LPCSTR, HandleId: Pointer,

+                            ObjectTypeName: LPCSTR, ObjectName: LPCSTR,

+                            pSecurityDescriptor: PSecurityDescriptor,

+                            ClientToken: THandle,

+                            DesiredAccess, GrantedAccess: DWORD,

+                            Privileges: var TPrivilegeSet,

+                            ObjectCreation, AccessGranted: WINBOOL,

+                            GenerateOnClose: var WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmA".}

+proc ObjectOpenAuditAlarmW*(SubsystemName: LPWSTR, HandleId: Pointer,

+                            ObjectTypeName: LPWSTR, ObjectName: LPWSTR,

+                            pSecurityDescriptor: PSecurityDescriptor,

+                            ClientToken: THandle,

+                            DesiredAccess, GrantedAccess: DWORD,

+                            Privileges: var TPrivilegeSet,

+                            ObjectCreation, AccessGranted: WINBOOL,

+                            GenerateOnClose: var WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectOpenAuditAlarmW".}

+proc ObjectPrivilegeAuditAlarm*(SubsystemName: cstring, HandleId: Pointer,

+                                ClientToken: THandle, DesiredAccess: DWORD,

+                                Privileges: var TPrivilegeSet,

+                                AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}

+proc ObjectPrivilegeAuditAlarmA*(SubsystemName: LPCSTR, HandleId: Pointer,

+                                 ClientToken: THandle, DesiredAccess: DWORD,

+                                 Privileges: var TPrivilegeSet,

+                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmA".}

+proc ObjectPrivilegeAuditAlarmW*(SubsystemName: LPWSTR, HandleId: Pointer,

+                                 ClientToken: THandle, DesiredAccess: DWORD,

+                                 Privileges: var TPrivilegeSet,

+                                 AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "ObjectPrivilegeAuditAlarmW".}

+proc OffsetRect*(lprc: var TRect, dx, dy: int): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "OffsetRect".}

+proc OffsetViewportOrgEx*(DC: HDC, X, Y: int, Points: pointer): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "OffsetViewportOrgEx".}

+proc OffsetWindowOrgEx*(DC: HDC, X, Y: int, Points: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "OffsetWindowOrgEx".}

+proc OpenFile*(lpFileName: LPCSTR, lpReOpenBuff: var TOFStruct, uStyle: UINT): HFILE{.

+    stdcall, dynlib: "kernel32", importc: "OpenFile".}

+proc OpenProcessToken*(ProcessHandle: THandle, DesiredAccess: DWORD,

+                       TokenHandle: var THandle): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "OpenProcessToken".}

+proc OpenThreadToken*(ThreadHandle: THandle, DesiredAccess: DWORD,

+                      OpenAsSelf: WINBOOL, TokenHandle: var THandle): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "OpenThreadToken".}

+proc PeekConsoleInput*(hConsoleInput: THandle, lpBuffer: var TInputRecord,

+                       nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}

+proc PeekConsoleInputA*(hConsoleInput: THandle, lpBuffer: var TInputRecord,

+                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputA".}

+proc PeekConsoleInputW*(hConsoleInput: THandle, lpBuffer: var TInputRecord,

+                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "PeekConsoleInputW".}

+proc PeekMessage*(lpMsg: var TMsg, hWnd: HWND,

+                  wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "PeekMessageA".}

+proc PeekMessageA*(lpMsg: var TMsg, hWnd: HWND,

+                   wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "PeekMessageA".}

+proc PeekMessageW*(lpMsg: var TMsg, hWnd: HWND,

+                   wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "PeekMessageW".}

+  #function PlayEnhMetaFile(DC: HDC; p2: HENHMETAFILE; const p3: TRect): WINBOOL; stdcall; external 'gdi32' name 'PlayEnhMetaFile';

+proc PlayEnhMetaFileRecord*(DC: HDC, p2: var THandleTable, p3: TEnhMetaRecord,

+                            p4: UINT): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "PlayEnhMetaFileRecord".}

+proc PlayMetaFileRecord*(DC: HDC, p2: THandleTable, p3: TMetaRecord, p4: UINT): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PlayMetaFileRecord".}

+proc PlgBlt*(DC: HDC, PointsArray: pointer, p3: HDC, p4, p5, p6, p7: int,

+             p8: HBITMAP, p9, p10: int): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "PlgBlt".}

+proc PolyBezier*(DC: HDC, Points: pointer, Count: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolyBezier".}

+proc PolyBezierTo*(DC: HDC, Points: pointer, Count: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolyBezierTo".}

+proc PolyDraw*(DC: HDC, Points, Types: pointer, cCount: int): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolyDraw".}

+proc Polygon*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "Polygon".}

+proc Polyline*(DC: HDC, Points: pointer, Count: int): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "Polyline".}

+proc PolyLineTo*(DC: HDC, Points: pointer, Count: DWORD): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "PolylineTo".}

+proc PolyPolygon*(DC: HDC, Points: pointer, nPoints: pointer, p4: int): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyPolygon".}

+proc PolyPolyline*(DC: HDC, PointStructs: pointer, Points: pointer, p4: DWORD): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyPolyline".}

+proc PolyTextOut*(DC: HDC, PolyTextArray: pointer, Strings: int): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}

+proc PolyTextOutA*(DC: HDC, PolyTextArray: pointer, Strings: int): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyTextOutA".}

+proc PolyTextOutW*(DC: HDC, PolyTextArray: pointer, Strings: int): WINBOOL{.

+    stdcall, dynlib: "gdi32", importc: "PolyTextOutW".}

+proc PrivilegeCheck*(ClientToken: THandle, RequiredPrivileges: TPrivilegeSet,

+                     pfResult: var WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "PrivilegeCheck".}

+proc PrivilegedServiceAuditAlarm*(SubsystemName, ServiceName: cstring,

+                                  ClientToken: THandle,

+                                  Privileges: var TPrivilegeSet,

+                                  AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}

+proc PrivilegedServiceAuditAlarmA*(SubsystemName, ServiceName: LPCSTR,

+                                   ClientToken: THandle,

+                                   Privileges: var TPrivilegeSet,

+                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmA".}

+proc PrivilegedServiceAuditAlarmW*(SubsystemName, ServiceName: LPWSTR,

+                                   ClientToken: THandle,

+                                   Privileges: var TPrivilegeSet,

+                                   AccessGranted: WINBOOL): WINBOOL{.stdcall,

+    dynlib: "advapi32", importc: "PrivilegedServiceAuditAlarmW".}

+  #function PtInRect(const lprc: TRect; pt: TPoint): WINBOOL; stdcall; external 'user32' name 'PtInRect';

+proc QueryPerformanceCounter*(lpPerformanceCount: var TLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "QueryPerformanceCounter".}

+proc QueryPerformanceFrequency*(lpFrequency: var TLargeInteger): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "QueryPerformanceFrequency".}

+  #function QueryRecoveryAgents(p1: PChar; var p2: Pointer; var p3: TRecoveryAgentInformation): DWORD;stdcall; external 'kernel32' name 'QueryRecoveryAgentsA';

+  #function QueryRecoveryAgentsA(p1: LPCSTR; var p2: Pointer; var p3: TRecoveryAgentInformationA): DWORD;stdcall; external 'kernel32' name 'QueryRecoveryAgentsA';

+  #function QueryRecoveryAgentsW(p1: LPWSTR; var p2: Pointer; var p3: TRecoveryAgentInformationW): DWORD;stdcall; external 'kernel32' name 'QueryRecoveryAgentsW';

+proc RaiseException*(dwExceptionCode: DWORD, dwExceptionFlags: DWORD,

+                     nNumberOfArguments: DWORD, lpArguments: var DWORD){.

+    stdcall, dynlib: "kernel32", importc: "RaiseException".}

+proc UnhandledExceptionFilter*(ExceptionInfo: var emptyrecord): LONG{.stdcall,

+    dynlib: "kernel32", importc: "UnhandledExceptionFilter".}

+proc ReadConsole*(hConsoleInput: THandle, lpBuffer: Pointer,

+                  nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: var DWORD,

+                  lpReserved: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ReadConsoleA".}

+proc ReadConsoleA*(hConsoleInput: THandle, lpBuffer: Pointer,

+                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: var DWORD,

+                   lpReserved: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ReadConsoleA".}

+proc ReadConsoleInput*(hConsoleInput: THandle, lpBuffer: var TInputRecord,

+                       nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}

+proc ReadConsoleInputA*(hConsoleInput: THandle, lpBuffer: var TInputRecord,

+                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputA".}

+proc ReadConsoleInputW*(hConsoleInput: THandle, lpBuffer: var TInputRecord,

+                        nLength: DWORD, lpNumberOfEventsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleInputW".}

+proc ReadConsoleOutput*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                        dwBufferSize, dwBufferCoord: TCoord,

+                        lpReadRegion: var TSmallRect): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadConsoleOutputA".}

+proc ReadConsoleOutputA*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                         dwBufferSize, dwBufferCoord: TCoord,

+                         lpReadRegion: var TSmallRect): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadConsoleOutputA".}

+proc ReadConsoleOutputAttribute*(hConsoleOutput: THandle, lpAttribute: Pointer,

+                                 nLength: DWORD, dwReadCoord: TCoord,

+                                 lpNumberOfAttrsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputAttribute".}

+proc ReadConsoleOutputCharacter*(hConsoleOutput: THandle, lpCharacter: LPCSTR,

+                                 nLength: DWORD, dwReadCoord: TCoord,

+                                 lpNumberOfCharsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}

+proc ReadConsoleOutputCharacterA*(hConsoleOutput: THandle, lpCharacter: LPCSTR,

+                                  nLength: DWORD, dwReadCoord: TCoord,

+                                  lpNumberOfCharsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterA".}

+proc ReadConsoleOutputCharacterW*(hConsoleOutput: THandle, lpCharacter: LPCSTR,

+                                  nLength: DWORD, dwReadCoord: TCoord,

+                                  lpNumberOfCharsRead: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadConsoleOutputCharacterW".}

+proc ReadConsoleOutputW*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                         dwBufferSize, dwBufferCoord: TCoord,

+                         lpReadRegion: var TSmallRect): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadConsoleOutputW".}

+proc ReadConsoleW*(hConsoleInput: THandle, lpBuffer: Pointer,

+                   nNumberOfCharsToRead: DWORD, lpNumberOfCharsRead: var DWORD,

+                   lpReserved: Pointer): WINBOOL{.stdcall, dynlib: "kernel32",

+    importc: "ReadConsoleW".}

+proc ReadEventLog*(hEventLog: THandle, dwReadFlags, dwRecordOffset: DWORD,

+                   lpBuffer: Pointer, nNumberOfBytesToRead: DWORD,

+                   pnBytesRead, pnMinNumberOfBytesNeeded: var DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ReadEventLogA".}

+proc ReadEventLogA*(hEventLog: THandle, dwReadFlags, dwRecordOffset: DWORD,

+                    lpBuffer: Pointer, nNumberOfBytesToRead: DWORD,

+                    pnBytesRead, pnMinNumberOfBytesNeeded: var DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ReadEventLogA".}

+proc ReadEventLogW*(hEventLog: THandle, dwReadFlags, dwRecordOffset: DWORD,

+                    lpBuffer: Pointer, nNumberOfBytesToRead: DWORD,

+                    pnBytesRead, pnMinNumberOfBytesNeeded: var DWORD): WINBOOL{.

+    stdcall, dynlib: "advapi32", importc: "ReadEventLogW".}

+proc ReadFile*(hFile: THandle, Buffer: pointer, nNumberOfBytesToRead: DWORD,

+               lpNumberOfBytesRead: var DWORD, lpOverlapped: POverlapped): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "ReadFile".}

+proc ReadProcessMemory*(hProcess: THandle, lpBaseAddress: Pointer,

+                        lpBuffer: Pointer, nSize: DWORD,

+                        lpNumberOfBytesRead: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ReadProcessMemory".}

+  #function RectInRegion(RGN: HRGN; const p2: TRect): WINBOOL; stdcall; external 'gdi32' name 'RectInRegion';

+  #function RectVisible(DC: HDC; const Rect: TRect): WINBOOL; stdcall; external 'gdi32' name 'RectVisible';

+proc RegConnectRegistry*(lpMachineName: cstring, hKey: HKEY, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}

+proc RegConnectRegistryA*(lpMachineName: LPCSTR, hKey: HKEY, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryA".}

+proc RegConnectRegistryW*(lpMachineName: LPWSTR, hKey: HKEY, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegConnectRegistryW".}

+proc RegCreateKey*(hKey: HKEY, lpSubKey: cstring, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}

+proc RegCreateKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyA".}

+proc RegCreateKeyEx*(hKey: HKEY, lpSubKey: cstring, Reserved: DWORD,

+                     lpClass: cstring, dwOptions: DWORD, samDesired: REGSAM,

+                     lpSecurityAttributes: PSecurityAttributes,

+                     phkResult: var HKEY, lpdwDisposition: PDWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}

+proc RegCreateKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, Reserved: DWORD,

+                      lpClass: LPCSTR, dwOptions: DWORD, samDesired: REGSAM,

+                      lpSecurityAttributes: PSecurityAttributes,

+                      phkResult: var HKEY, lpdwDisposition: PDWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExA".}

+proc RegCreateKeyExW*(hKey: HKEY, lpSubKey: LPWSTR, Reserved: DWORD,

+                      lpClass: LPWSTR, dwOptions: DWORD, samDesired: REGSAM,

+                      lpSecurityAttributes: PSecurityAttributes,

+                      phkResult: var HKEY, lpdwDisposition: PDWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyExW".}

+proc RegCreateKeyW*(hKey: HKEY, lpSubKey: LPWSTR, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegCreateKeyW".}

+proc RegEnumKeyEx*(hKey: HKEY, dwIndex: DWORD, lpName: cstring,

+                   lpcbName: var DWORD, lpReserved: Pointer, lpClass: cstring,

+                   lpcbClass: PDWORD, lpftLastWriteTime: PFileTime): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}

+proc RegEnumKeyExA*(hKey: HKEY, dwIndex: DWORD, lpName: LPCSTR,

+                    lpcbName: var DWORD, lpReserved: Pointer, lpClass: LPCSTR,

+                    lpcbClass: PDWORD, lpftLastWriteTime: PFileTime): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExA".}

+proc RegEnumKeyExW*(hKey: HKEY, dwIndex: DWORD, lpName: LPWSTR,

+                    lpcbName: var DWORD, lpReserved: Pointer, lpClass: LPWSTR,

+                    lpcbClass: PDWORD, lpftLastWriteTime: PFileTime): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumKeyExW".}

+proc RegEnumValue*(hKey: HKEY, dwIndex: DWORD, lpValueName: cstring,

+                   lpcbValueName: var DWORD, lpReserved: Pointer,

+                   lpType: PDWORD, lpData: PByte, lpcbData: PDWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}

+proc RegEnumValueA*(hKey: HKEY, dwIndex: DWORD, lpValueName: cstring,

+                    lpcbValueName: var DWORD, lpReserved: Pointer,

+                    lpType: PDWORD, lpData: PByte, lpcbData: PDWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumValueA".}

+proc RegEnumValueW*(hKey: HKEY, dwIndex: DWORD, lpValueName: cstring,

+                    lpcbValueName: var DWORD, lpReserved: Pointer,

+                    lpType: PDWORD, lpData: PByte, lpcbData: PDWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegEnumValueW".}

+proc RegGetKeySecurity*(hKey: HKEY, SecurityInformation: SECURITY_INFORMATION,

+                        pSecurityDescriptor: PSecurityDescriptor,

+                        lpcbSecurityDescriptor: var DWORD): int32{.stdcall,

+    dynlib: "advapi32", importc: "RegGetKeySecurity".}

+proc RegSetValueEx*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,

+                    dwType: DWORD, lpData: pointer, cbData: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}

+proc RegSetValueExA*(hKey: HKEY, lpValueName: LPCSTR, Reserved: DWORD,

+                     dwType: DWORD, lpData: pointer, cbData: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegSetValueExA".}

+proc RegSetValueExW*(hKey: HKEY, lpValueName: LPCWSTR, Reserved: DWORD,

+                     dwType: DWORD, lpData: pointer, cbData: DWORD): LONG{.

+    stdcall, dynlib: "advapi32", importc: "RegSetValueExW".}

+proc RegisterClass*(lpWndClass: TWndClass): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassA".}

+proc RegisterClassA*(lpWndClass: TWndClassA): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassA".}

+proc RegisterClassEx*(WndClass: TWndClassEx): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassExA".}

+proc RegisterClassExA*(WndClass: TWndClassExA): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassExA".}

+proc RegisterClassExW*(WndClass: TWndClassExW): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassExW".}

+proc RegisterClassW*(lpWndClass: TWndClassW): ATOM{.stdcall, dynlib: "user32",

+    importc: "RegisterClassW".}

+proc RegOpenKey*(hKey: HKEY, lpSubKey: cstring, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}

+proc RegOpenKeyA*(hKey: HKEY, lpSubKey: LPCSTR, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegOpenKeyA".}

+proc RegOpenKeyEx*(hKey: HKEY, lpSubKey: cstring, ulOptions: DWORD,

+                   samDesired: REGSAM, phkResult: var HKEY): int32{.stdcall,

+    dynlib: "advapi32", importc: "RegOpenKeyExA".}

+proc RegOpenKeyExA*(hKey: HKEY, lpSubKey: LPCSTR, ulOptions: DWORD,

+                    samDesired: REGSAM, phkResult: var HKEY): int32{.stdcall,

+    dynlib: "advapi32", importc: "RegOpenKeyExA".}

+proc RegOpenKeyExW*(hKey: HKEY, lpSubKey: LPWSTR, ulOptions: DWORD,

+                    samDesired: REGSAM, phkResult: var HKEY): int32{.stdcall,

+    dynlib: "advapi32", importc: "RegOpenKeyExW".}

+proc RegOpenKeyW*(hKey: HKEY, lpSubKey: LPWSTR, phkResult: var HKEY): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegOpenKeyW".}

+proc RegQueryMultipleValues*(hKey: HKEY, ValList: pointer, NumVals: DWORD,

+                             lpValueBuf: cstring, ldwTotsize: var DWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}

+proc RegQueryMultipleValuesA*(hKey: HKEY, ValList: pointer, NumVals: DWORD,

+                              lpValueBuf: LPCSTR, ldwTotsize: var DWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesA".}

+proc RegQueryMultipleValuesW*(hKey: HKEY, ValList: pointer, NumVals: DWORD,

+                              lpValueBuf: LPWSTR, ldwTotsize: var DWORD): int32{.

+    stdcall, dynlib: "advapi32", importc: "RegQueryMultipleValuesW".}

+proc RegQueryValue*(hKey: HKEY, lpSubKey: cstring, lpValue: cstring,

+                    lpcbValue: var int32): int32{.stdcall, dynlib: "advapi32",

+    importc: "RegQueryValueA".}

+proc RegQueryValueA*(hKey: HKEY, lpSubKey: LPCSTR, lpValue: LPCSTR,

+                     lpcbValue: var int32): int32{.stdcall, dynlib: "advapi32",

+    importc: "RegQueryValueA".}

+proc RegQueryValueW*(hKey: HKEY, lpSubKey: LPWSTR, lpValue: LPWSTR,

+                     lpcbValue: var int32): int32{.stdcall, dynlib: "advapi32",

+    importc: "RegQueryValueW".}

+proc ResetDC*(DC: HDC, p2: TDeviceMode): HDC{.stdcall, dynlib: "gdi32",

+    importc: "ResetDCA".}

+proc ResetDCA*(DC: HDC, p2: TDeviceModeA): HDC{.stdcall, dynlib: "gdi32",

+    importc: "ResetDCA".}

+  #function ResetDCW(DC: HDC; const p2: TDeviceModeW): HDC; stdcall; external 'gdi32' name 'ResetDCW';

+proc ScreenToClient*(hWnd: HWND, lpPoint: var TPoint): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "ScreenToClient".}

+proc ScrollConsoleScreenBuffer*(hConsoleOutput: THandle,

+                                lpScrollRectangle: TSmallRect,

+                                lpClipRectangle: TSmallRect,

+                                dwDestinationOrigin: TCoord,

+                                lpFill: var TCharInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}

+proc ScrollConsoleScreenBufferA*(hConsoleOutput: THandle,

+                                 lpScrollRectangle: TSmallRect,

+                                 lpClipRectangle: TSmallRect,

+                                 dwDestinationOrigin: TCoord,

+                                 lpFill: var TCharInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ScrollConsoleScreenBufferA".}

+proc ScrollConsoleScreenBufferW*(hConsoleOutput: THandle,

+                                 lpScrollRectangle: TSmallRect,

+                                 lpClipRectangle: TSmallRect,

+                                 dwDestinationOrigin: TCoord,

+                                 lpFill: var TCharInfo): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "ScrollConsoleScreenBufferW".}

+proc ScrollWindow*(hWnd: HWND, XAmount: int32, YAmount: int32, lpRect: lpRECT,

+                   lpClipRect: lpRECT): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "ScrollWindow".}

+proc ScrollWindowEx*(hWnd: HWND, dx: int32, dy: int32, prcScroll: lpRECT,

+                     prcClip: lpRECT, hrgnUpdate: HRGN, prcUpdate: LPRECT,

+                     flags: UINT): int32{.stdcall, dynlib: "user32",

+    importc: "ScrollWindowEx".}

+  #function ScrollDC(DC: HDC; DX, DY: Integer; var Scroll, Clip: TRect; Rgn: HRGN; Update: PRect): WINBOOL; stdcall; external 'user32' name 'ScrollDC';

+  #function SearchPath(lpPath, lpFileName, lpExtension: PChar; nBufferLength: DWORD; lpBuffer: PChar; var lpFilePart: PChar): DWORD;stdcall; external 'kernel32' name 'SearchPathA';

+  #function SearchPathA(lpPath, lpFileName, lpExtension: LPCSTR; nBufferLength: DWORD; lpBuffer: LPCSTR; var lpFilePart: LPCSTR): DWORD; stdcall; external 'kernel32' name 'SearchPathA';

+  #function SearchPathW(lpPath, lpFileName, lpExtension: LPWSTR; nBufferLength: DWORD; lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall; external 'kernel32' name 'SearchPathW';

+  #function SendInput(cInputs: UINT; var pInputs: TInput; cbSize: Integer): UINT;stdcall; external 'user32' name 'SendInput';

+proc SendMessageTimeout*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,

+                         fuFlags, uTimeout: UINT, lpdwResult: var DWORD): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}

+proc SendMessageTimeoutA*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,

+                          fuFlags, uTimeout: UINT, lpdwResult: var DWORD): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageTimeoutA".}

+proc SendMessageTimeoutW*(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM,

+                          fuFlags, uTimeout: UINT, lpdwResult: var DWORD): LRESULT{.

+    stdcall, dynlib: "user32", importc: "SendMessageTimeoutW".}

+  #function SetAclInformation(var pAcl: TACL; pAclInformation: Pointer; nAclInformationLength: DWORD; dwAclInformationClass: TAclInformationClass): WINBOOL; stdcall; external 'advapi32' name 'SetAclInformation';

+  #function SetColorAdjustment(DC: HDC; const p2: TColorAdjustment): WINBOOL; stdcall; external 'gdi32' name 'SetColorAdjustment';

+proc SetCommConfig*(hCommDev: THandle, lpCC: TCommConfig, dwSize: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetCommConfig".}

+proc SetCommState*(hFile: THandle, lpDCB: TDCB): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetCommState".}

+proc SetCommTimeouts*(hFile: THandle, lpCommTimeouts: TCommTimeouts): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetCommTimeouts".}

+proc SetConsoleCursorInfo*(hConsoleOutput: THandle,

+                           lpConsoleCursorInfo: TConsoleCursorInfo): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetConsoleCursorInfo".}

+  #function SetConsoleWindowInfo(hConsoleOutput: THandle; bAbsolute: WINBOOL; const lpConsoleWindow: TSmallRect): WINBOOL; stdcall; external 'kernel32' name 'SetConsoleWindowInfo';

+proc SetCriticalSectionSpinCount*(lpCriticalSection: var TRTLCriticalSection,

+                                  dwSpinCount: DWORD): DWORD{.stdcall,

+    dynlib: "kernel32", importc: "SetCriticalSectionSpinCount".}

+proc SetDeviceGammaRamp*(DC: HDC, Ramp: pointer): WINBOOL{.stdcall,

+    dynlib: "gdi32", importc: "SetDeviceGammaRamp".}

+proc SetDIBColorTable*(DC: HDC, p2, p3: UINT, RGBQuadSTructs: pointer): UINT{.

+    stdcall, dynlib: "gdi32", importc: "SetDIBColorTable".}

+proc SetDIBits*(DC: HDC, Bitmap: HBITMAP, StartScan, NumScans: UINT,

+                Bits: Pointer, BitsInfo: var TBitmapInfo, Usage: UINT): int{.

+    stdcall, dynlib: "gdi32", importc: "SetDIBits".}

+  #function SetDIBitsToDevice(DC: HDC; DestX, DestY: Integer; Width, Height: DWORD; SrcX, SrcY: Integer; nStartScan, NumScans: UINT; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT): Integer; stdcall; external 'gdi32' name 'SetDIBitsToDevice';

+proc SetEnhMetaFileBits*(para1: UINT, para2: pointer): HENHMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "SetEnhMetaFileBits".}

+proc SetFileTime*(hFile: HANDLE, lpCreationTime: var FILETIME,

+                  lpLastAccessTime: var FILETIME, lpLastWriteTime: var FILETIME): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetFileTime".}

+  #function SetKeyboardState(var KeyState: TKeyboardState): WINBOOL; stdcall; external 'user32' name 'SetKeyboardState';

+  #function SetLocalTime(const lpSystemTime: TSystemTime): WINBOOL; stdcall; external 'kernel32' name 'SetLocalTime';

+  #function SetMenuInfo(hMenu: HMENU; const lpcmi: TMenuInfo): WINBOOL;stdcall; external 'user32' name 'SetMenuInfo';

+proc SetMenuItemInfo*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfo): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}

+proc SetMenuItemInfoA*(p1: HMENU, p2: UINT, p3: WINBOOL, p4: TMenuItemInfoA): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetMenuItemInfoA".}

+  #function SetMenuItemInfoW(p1: HMENU; p2: UINT; p3: WINBOOL; const p4: TMenuItemInfoW): WINBOOL; stdcall; external 'user32' name 'SetMenuItemInfoW';

+proc SetMetaFileBitsEx*(p1: UINT, p2: cstring): HMETAFILE{.stdcall,

+    dynlib: "gdi32", importc: "SetMetaFileBitsEx".}

+proc SetNamedPipeHandleState*(hNamedPipe: THandle, lpMode: var DWORD,

+    lpMaxCollectionCount, lpCollectDataTimeout: Pointer): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetNamedPipeHandleState".}

+proc SetPaletteEntries*(Palette: HPALETTE, StartIndex, NumEntries: UINT,

+                        PaletteEntries: pointer): UINT{.stdcall,

+    dynlib: "gdi32", importc: "SetPaletteEntries".}

+  #function SetPrivateObjectSecurity(SecurityInformation: SECURITY_INFORMATION; ModificationDescriptor: PSecurityDescriptor; var ObjectsSecurityDescriptor: PSecurityDescriptor; const GenericMapping: TGenericMapping; Token: THandle): WINBOOL;

+  #  stdcall; external 'advapi32' name 'SetPrivateObjectSecurity';

+  #function SetPrivateObjectSecurityEx(SecurityInformation: SECURITY_INFORMATION; ModificationDescriptor: PSecurityDescriptor; var ObjectsSecurityDescriptor: PSecurityDescriptor; AutoInheritFlags: ULONG;

+  #  const GenericMapping: TGenericMapping; Token: THandle): WINBOOL;stdcall; external 'advapi32' name 'SetPrivateObjectSecurityEx';

+proc SetRect*(lprc: var TRect, xLeft, yTop, xRight, yBottom: int): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetRect".}

+proc SetRectEmpty*(lprc: var TRect): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "SetRectEmpty".}

+proc SetScrollInfo*(hWnd: HWND, BarFlag: int, ScrollInfo: TScrollInfo,

+                    Redraw: WINBOOL): int{.stdcall, dynlib: "user32",

+    importc: "SetScrollInfo".}

+proc SetSysColors*(cElements: int, lpaElements: pointer, lpaRgbValues: pointer): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SetSysColors".}

+  #function SetSystemTime(const lpSystemTime: TSystemTime): WINBOOL; stdcall; external 'kernel32' name 'SetSystemTime';

+proc SetThreadContext*(hThread: THandle, lpContext: TContext): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SetThreadContext".}

+  #function SetTimeZoneInformation(const lpTimeZoneInformation: TTimeZoneInformation): WINBOOL; stdcall; external 'kernel32' name 'SetTimeZoneInformation';

+proc SetUserObjectSecurity*(hObj: THandle, pSIRequested: var DWORD,

+                            pSID: PSecurityDescriptor): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "SetUserObjectSecurity".}

+proc SetWaitableTimer*(hTimer: THandle, lpDueTime: var TLargeInteger,

+                       lPeriod: int32, pfnCompletionRoutine: TFNTimerAPCRoutine,

+                       lpArgToCompletionRoutine: Pointer, fResume: WINBOOL): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SetWaitableTimer".}

+proc SetWinMetaFileBits*(p1: UINT, p2: cstring, p3: HDC, p4: TMetaFilePict): HENHMETAFILE{.

+    stdcall, dynlib: "gdi32", importc: "SetWinMetaFileBits".}

+  #function SetWorldTransform(DC: HDC; const p2: TXForm): WINBOOL; stdcall; external 'gdi32' name 'SetWorldTransform';

+proc StartDoc*(DC: HDC, p2: TDocInfo): int{.stdcall, dynlib: "gdi32",

+    importc: "StartDocA".}

+proc StartDocA*(DC: HDC, p2: TDocInfoA): int{.stdcall, dynlib: "gdi32",

+    importc: "StartDocA".}

+  #function StartDocW(DC: HDC; const p2: TDocInfoW): Integer; stdcall; external 'gdi32' name 'StartDocW';

+  #function StretchDIBits(DC: HDC; DestX, DestY, DestWidth, DestHegiht, SrcX, SrcY, SrcWidth, SrcHeight: Integer; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT; Rop: DWORD): Integer; stdcall; external 'gdi32' name 'StretchDIBits';

+proc SubtractRect*(lprcDst: var TRect, lprcSrc1, lprcSrc2: TRect): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "SubtractRect".}

+proc SystemTimeToFileTime*(lpSystemTime: TSystemTime, lpFileTime: var TFileTime): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "SystemTimeToFileTime".}

+proc SystemTimeToTzSpecificLocalTime*(lpTimeZoneInformation: PTimeZoneInformation,

+    lpUniversalTime, lpLocalTime: var TSystemTime): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "SystemTimeToTzSpecificLocalTime".}

+proc TabbedTextOut*(hDC: HDC, X, Y: int, lpString: cstring,

+                    nCount, nTabPositions: int, lpnTabStopPositions: pointer,

+                    nTabOrigin: int): int32{.stdcall, dynlib: "user32",

+    importc: "TabbedTextOutA".}

+proc TabbedTextOutA*(hDC: HDC, X, Y: int, lpString: LPCSTR,

+                     nCount, nTabPositions: int, lpnTabStopPositions: pointer,

+                     nTabOrigin: int): int32{.stdcall, dynlib: "user32",

+    importc: "TabbedTextOutA".}

+proc TabbedTextOutW*(hDC: HDC, X, Y: int, lpString: LPWSTR,

+                     nCount, nTabPositions: int, lpnTabStopPositions: pointer,

+                     nTabOrigin: int): int32{.stdcall, dynlib: "user32",

+    importc: "TabbedTextOutW".}

+  #function ToAscii(uVirtKey, uScanCode: UINT; const KeyState: TKeyboardState; lpChar: PChar; uFlags: UINT): Integer; stdcall; external 'user32' name 'ToAscii';

+  #function ToAsciiEx(uVirtKey: UINT; uScanCode: UINT; const KeyState: TKeyboardState; lpChar: PChar; uFlags: UINT; dwhkl: HKL): Integer; stdcall; external 'user32' name 'ToAsciiEx';

+  #function ToUnicode(wVirtKey, wScanCode: UINT; const KeyState: TKeyboardState; var pwszBuff; cchBuff: Integer; wFlags: UINT): Integer; stdcall; external 'user32' name 'ToUnicode';

+  # Careful, NT and higher only.

+proc TrackMouseEvent*(EventTrack: var TTrackMouseEvent): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "TrackMouseEvent".}

+proc TrackMouseEvent*(lpEventTrack: PTrackMouseEvent): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "TrackMouseEvent".}

+proc TrackPopupMenu*(hMenu: HMENU, uFlags: UINT, x: int32, y: int32,

+                     nReserved: int32, hWnd: HWND, prcRect: PRect): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "TrackPopupMenu".}

+proc TransactNamedPipe*(hNamedPipe: THandle, lpInBuffer: Pointer,

+                        nInBufferSize: DWORD, lpOutBuffer: Pointer,

+                        nOutBufferSize: DWORD, lpBytesRead: var DWORD,

+                        lpOverlapped: POverlapped): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "TransactNamedPipe".}

+proc TranslateAccelerator*(hWnd: HWND, hAccTable: HACCEL, lpMsg: var TMsg): int{.

+    stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}

+proc TranslateAcceleratorA*(hWnd: HWND, hAccTable: HACCEL, lpMsg: var TMsg): int{.

+    stdcall, dynlib: "user32", importc: "TranslateAcceleratorA".}

+proc TranslateAcceleratorW*(hWnd: HWND, hAccTable: HACCEL, lpMsg: var TMsg): int{.

+    stdcall, dynlib: "user32", importc: "TranslateAcceleratorW".}

+proc TranslateCharsetInfo*(lpSrc: var DWORD, lpCs: var TCharsetInfo,

+                           dwFlags: DWORD): WINBOOL{.stdcall, dynlib: "gdi32",

+    importc: "TranslateCharsetInfo".}

+proc TranslateMDISysAccel*(hWndClient: HWND, lpMsg: TMsg): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "TranslateMDISysAccel".}

+proc TranslateMessage*(lpMsg: TMsg): WINBOOL{.stdcall, dynlib: "user32",

+    importc: "TranslateMessage".}

+  #function TransparentDIBits(DC: HDC; p2, p3, p4, p5: Integer; const p6: Pointer; const p7: PBitmapInfo; p8: UINT; p9, p10, p11, p12: Integer; p13: UINT): WINBOOL;stdcall; external 'gdi32' name 'TransparentDIBits';

+proc TryEnterCriticalSection*(lpCriticalSection: var TRTLCriticalSection): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "TryEnterCriticalSection".}

+proc UnhandledExceptionFilter*(ExceptionInfo: TExceptionPointers): int32{.

+    stdcall, dynlib: "kernel32", importc: "UnhandledExceptionFilter".}

+proc UnionRect*(lprcDst: var TRect, lprcSrc1, lprcSrc2: TRect): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "UnionRect".}

+proc UnlockFileEx*(hFile: THandle, dwReserved, nNumberOfBytesToUnlockLow: DWORD,

+                   nNumberOfBytesToUnlockHigh: DWORD, lpOverlapped: TOverlapped): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "UnlockFileEx".}

+proc VerFindFile*(uFlags: DWORD,

+                  szFileName, szWinDir, szAppDir, szCurDir: cstring,

+                  lpuCurDirLen: var UINT, szDestDir: cstring,

+                  lpuDestDirLen: var UINT): DWORD{.stdcall, dynlib: "version",

+    importc: "VerFindFileA".}

+proc VerFindFileA*(uFlags: DWORD,

+                   szFileName, szWinDir, szAppDir, szCurDir: LPCSTR,

+                   lpuCurDirLen: var UINT, szDestDir: LPCSTR,

+                   lpuDestDirLen: var UINT): DWORD{.stdcall, dynlib: "version",

+    importc: "VerFindFileA".}

+proc VerFindFileW*(uFlags: DWORD,

+                   szFileName, szWinDir, szAppDir, szCurDir: LPWSTR,

+                   lpuCurDirLen: var UINT, szDestDir: LPWSTR,

+                   lpuDestDirLen: var UINT): DWORD{.stdcall, dynlib: "version",

+    importc: "VerFindFileW".}

+proc VerInstallFile*(uFlags: DWORD, szSrcFileName, szDestFileName, szSrcDir,

+                                    szDestDir, szCurDir, szTmpFile: cstring,

+                     lpuTmpFileLen: var UINT): DWORD{.stdcall,

+    dynlib: "version", importc: "VerInstallFileA".}

+proc VerInstallFileA*(uFlags: DWORD, szSrcFileName, szDestFileName, szSrcDir,

+                                     szDestDir, szCurDir, szTmpFile: LPCSTR,

+                      lpuTmpFileLen: var UINT): DWORD{.stdcall,

+    dynlib: "version", importc: "VerInstallFileA".}

+proc VerInstallFileW*(uFlags: DWORD, szSrcFileName, szDestFileName, szSrcDir,

+                                     szDestDir, szCurDir, szTmpFile: LPWSTR,

+                      lpuTmpFileLen: var UINT): DWORD{.stdcall,

+    dynlib: "version", importc: "VerInstallFileW".}

+proc VerQueryValue*(pBlock: Pointer, lpSubBlock: cstring,

+                    lplpBuffer: var Pointer, puLen: var UINT): WINBOOL{.stdcall,

+    dynlib: "version", importc: "VerQueryValueA".}

+proc VerQueryValueA*(pBlock: Pointer, lpSubBlock: LPCSTR,

+                     lplpBuffer: var Pointer, puLen: var UINT): WINBOOL{.

+    stdcall, dynlib: "version", importc: "VerQueryValueA".}

+proc VerQueryValueW*(pBlock: Pointer, lpSubBlock: LPWSTR,

+                     lplpBuffer: var Pointer, puLen: var UINT): WINBOOL{.

+    stdcall, dynlib: "version", importc: "VerQueryValueW".}

+proc VirtualQuery*(lpAddress: Pointer, lpBuffer: var TMemoryBasicInformation,

+                   dwLength: DWORD): DWORD{.stdcall, dynlib: "kernel32",

+    importc: "VirtualQuery".}

+proc VirtualQueryEx*(hProcess: THandle, lpAddress: Pointer,

+                     lpBuffer: var TMemoryBasicInformation, dwLength: DWORD): DWORD{.

+    stdcall, dynlib: "kernel32", importc: "VirtualQueryEx".}

+proc WaitCommEvent*(hFile: THandle, lpEvtMask: var DWORD,

+                    lpOverlapped: POverlapped): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WaitCommEvent".}

+proc WaitForDebugEvent*(lpDebugEvent: var TDebugEvent, dwMilliseconds: DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WaitForDebugEvent".}

+proc wglDescribeLayerPlane*(p1: HDC, p2, p3: int, p4: int,

+                            p5: var TLayerPlaneDescriptor): WINBOOL{.stdcall,

+    dynlib: "opengl32", importc: "wglDescribeLayerPlane".}

+proc wglGetLayerPaletteEntries*(p1: HDC, p2, p3, p4: int, pcr: pointer): int{.

+    stdcall, dynlib: "opengl32", importc: "wglGetLayerPaletteEntries".}

+proc wglSetLayerPaletteEntries*(p1: HDC, p2, p3, p4: int, pcr: pointer): int{.

+    stdcall, dynlib: "opengl32", importc: "wglSetLayerPaletteEntries".}

+  #function wglSwapMultipleBuffers(p1: UINT; const p2: PWGLSwap): DWORD;stdcall; external 'opengl32' name 'wglSwapMultipleBuffers';

+  #function WinSubmitCertificate(var lpCertificate: TWinCertificate): WINBOOL;stdcall; external 'imaghlp' name 'WinSubmitCertificate';

+  #function WinVerifyTrust(hwnd: HWND; const ActionID: TGUID; ActionData: Pointer): Longint;stdcall; external 'imaghlp' name 'WinVerifyTrust';

+proc WNetAddConnection2*(lpNetResource: var TNetResource,

+                         lpPassword, lpUserName: cstring, dwFlags: DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetAddConnection2A".}

+proc WNetAddConnection2A*(lpNetResource: var TNetResourceA,

+                          lpPassword, lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetAddConnection2A".}

+  #function WNetAddConnection2W(var lpNetResource: TNetResourceW; lpPassword, lpUserName: LPWSTR; dwFlags: DWORD): DWORD; stdcall; external 'mpr' name 'WNetAddConnection2W';

+proc WNetAddConnection3*(hwndOwner: HWND, lpNetResource: var TNetResource,

+                         lpPassword, lpUserName: cstring, dwFlags: DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}

+proc WNetAddConnection3A*(hwndOwner: HWND, lpNetResource: var TNetResourceA,

+                          lpPassword, lpUserName: LPCSTR, dwFlags: DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetAddConnection3A".}

+  #function WNetAddConnection3W(hwndOwner: HWND; var lpNetResource: TNetResourceW; lpPassword, lpUserName: LPWSTR; dwFlags: DWORD): DWORD; stdcall; external 'mpr' name 'WNetAddConnection3W';

+proc WNetConnectionDialog1*(lpConnDlgStruct: var TConnectDlgStruct): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}

+proc WNetConnectionDialog1A*(lpConnDlgStruct: var TConnectDlgStruct): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetConnectionDialog1A".}

+  #function WNetConnectionDialog1W(var lpConnDlgStruct: TConnectDlgStruct): DWORD; stdcall; external 'mpr' name 'WNetConnectionDialog1W';

+proc WNetDisconnectDialog1*(lpConnDlgStruct: var TDiscDlgStruct): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1A".}

+proc WNetDisconnectDialog1A*(lpConnDlgStruct: var TDiscDlgStructA): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetDisconnectDialog1A".}

+  #function WNetDisconnectDialog1W(var lpConnDlgStruct: TDiscDlgStructW): DWORD; stdcall; external 'mpr' name 'WNetDisconnectDialog1W';

+proc WNetEnumResource*(hEnum: THandle, lpcCount: var DWORD, lpBuffer: Pointer,

+                       lpBufferSize: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetEnumResourceA".}

+proc WNetEnumResourceA*(hEnum: THandle, lpcCount: var DWORD, lpBuffer: Pointer,

+                        lpBufferSize: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetEnumResourceA".}

+proc WNetEnumResourceW*(hEnum: THandle, lpcCount: var DWORD, lpBuffer: Pointer,

+                        lpBufferSize: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetEnumResourceW".}

+proc WNetGetConnection*(lpLocalName: cstring, lpRemoteName: cstring,

+                        lpnLength: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetConnectionA".}

+proc WNetGetConnectionA*(lpLocalName: LPCSTR, lpRemoteName: LPCSTR,

+                         lpnLength: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetConnectionA".}

+proc WNetGetConnectionW*(lpLocalName: LPWSTR, lpRemoteName: LPWSTR,

+                         lpnLength: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetConnectionW".}

+proc WNetGetLastError*(lpError: var DWORD, lpErrorBuf: cstring,

+                       nErrorBufSize: DWORD, lpNameBuf: cstring,

+                       nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetLastErrorA".}

+proc WNetGetLastErrorA*(lpError: var DWORD, lpErrorBuf: LPCSTR,

+                        nErrorBufSize: DWORD, lpNameBuf: LPCSTR,

+                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetLastErrorA".}

+proc WNetGetLastErrorW*(lpError: var DWORD, lpErrorBuf: LPWSTR,

+                        nErrorBufSize: DWORD, lpNameBuf: LPWSTR,

+                        nNameBufSize: DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetLastErrorW".}

+proc WNetGetNetworkInformation*(lpProvider: cstring,

+                                lpNetInfoStruct: var TNetInfoStruct): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}

+proc WNetGetNetworkInformationA*(lpProvider: LPCSTR,

+                                 lpNetInfoStruct: var TNetInfoStruct): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationA".}

+proc WNetGetNetworkInformationW*(lpProvider: LPWSTR,

+                                 lpNetInfoStruct: var TNetInfoStruct): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetNetworkInformationW".}

+proc WNetGetProviderName*(dwNetType: DWORD, lpProviderName: cstring,

+                          lpBufferSize: var DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetGetProviderNameA".}

+proc WNetGetProviderNameA*(dwNetType: DWORD, lpProviderName: LPCSTR,

+                           lpBufferSize: var DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetGetProviderNameA".}

+proc WNetGetProviderNameW*(dwNetType: DWORD, lpProviderName: LPWSTR,

+                           lpBufferSize: var DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetGetProviderNameW".}

+proc WNetGetResourceParent*(lpNetResource: PNetResource, lpBuffer: Pointer,

+                            cbBuffer: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetGetResourceParentA".}

+proc WNetGetResourceParentA*(lpNetResource: PNetResourceA, lpBuffer: Pointer,

+                             cbBuffer: var DWORD): DWORD{.stdcall,

+    dynlib: "mpr", importc: "WNetGetResourceParentA".}

+  #function WNetGetResourceParentW(lpNetResource: PNetResourceW; lpBuffer: Pointer; var cbBuffer: DWORD): DWORD;stdcall; external 'mpr' name 'WNetGetResourceParentW';

+proc WNetGetUniversalName*(lpLocalPath: cstring, dwInfoLevel: DWORD,

+                           lpBuffer: Pointer, lpBufferSize: var DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}

+proc WNetGetUniversalNameA*(lpLocalPath: LPCSTR, dwInfoLevel: DWORD,

+                            lpBuffer: Pointer, lpBufferSize: var DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameA".}

+proc WNetGetUniversalNameW*(lpLocalPath: LPWSTR, dwInfoLevel: DWORD,

+                            lpBuffer: Pointer, lpBufferSize: var DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUniversalNameW".}

+proc WNetGetUser*(lpName: cstring, lpUserName: cstring, lpnLength: var DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUserA".}

+proc WNetGetUserA*(lpName: LPCSTR, lpUserName: LPCSTR, lpnLength: var DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUserA".}

+proc WNetGetUserW*(lpName: LPWSTR, lpUserName: LPWSTR, lpnLength: var DWORD): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetGetUserW".}

+proc WNetOpenEnum*(dwScope, dwType, dwUsage: DWORD, lpNetResource: PNetResource,

+                   lphEnum: var THandle): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetOpenEnumA".}

+proc WNetOpenEnumA*(dwScope, dwType, dwUsage: DWORD,

+                    lpNetResource: PNetResourceA, lphEnum: var THandle): DWORD{.

+    stdcall, dynlib: "mpr", importc: "WNetOpenEnumA".}

+  #function WNetOpenEnumW(dwScope, dwType, dwUsage: DWORD; lpNetResource: PNetResourceW; var lphEnum: THandle): DWORD; stdcall; external 'mpr' name 'WNetOpenEnumW';

+proc WNetUseConnection*(hwndOwner: HWND, lpNetResource: var TNetResource,

+                        lpUserID: cstring, lpPassword: cstring, dwFlags: DWORD,

+                        lpAccessName: cstring, lpBufferSize: var DWORD,

+                        lpResult: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetUseConnectionA".}

+proc WNetUseConnectionA*(hwndOwner: HWND, lpNetResource: var TNetResourceA,

+                         lpUserID: LPCSTR, lpPassword: LPCSTR, dwFlags: DWORD,

+                         lpAccessName: LPCSTR, lpBufferSize: var DWORD,

+                         lpResult: var DWORD): DWORD{.stdcall, dynlib: "mpr",

+    importc: "WNetUseConnectionA".}

+  #function WNetUseConnectionW(hwndOwner: HWND; var lpNetResource: TNetResourceW; lpUserID: LPWSTR; lpPassword: LPWSTR; dwFlags: DWORD; lpAccessName: LPWSTR; var lpBufferSize: DWORD; var lpResult: DWORD): DWORD; stdcall; external 'mpr' name 'WNetUseConnectionW';

+proc WriteConsole*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                   nNumberOfCharsToWrite: DWORD,

+                   lpNumberOfCharsWritten: var DWORD, lpReserved: Pointer): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}

+proc WriteConsoleA*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                    nNumberOfCharsToWrite: DWORD,

+                    lpNumberOfCharsWritten: var DWORD, lpReserved: Pointer): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleA".}

+proc WriteConsoleInput*(hConsoleInput: THandle, lpBuffer: TInputRecord,

+                        nLength: DWORD, lpNumberOfEventsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}

+proc WriteConsoleInputA*(hConsoleInput: THandle, lpBuffer: TInputRecord,

+                         nLength: DWORD, lpNumberOfEventsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputA".}

+proc WriteConsoleInputW*(hConsoleInput: THandle, lpBuffer: TInputRecord,

+                         nLength: DWORD, lpNumberOfEventsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleInputW".}

+proc WriteConsoleOutput*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                         dwBufferSize, dwBufferCoord: TCoord,

+                         lpWriteRegion: var TSmallRect): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteConsoleOutputA".}

+proc WriteConsoleOutputA*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                          dwBufferSize, dwBufferCoord: TCoord,

+                          lpWriteRegion: var TSmallRect): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteConsoleOutputA".}

+proc WriteConsoleOutputAttribute*(hConsoleOutput: THandle, lpAttribute: Pointer,

+                                  nLength: DWORD, dwWriteCoord: TCoord,

+                                  lpNumberOfAttrsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputAttribute".}

+proc WriteConsoleOutputCharacter*(hConsoleOutput: THandle, lpCharacter: cstring,

+                                  nLength: DWORD, dwWriteCoord: TCoord,

+                                  lpNumberOfCharsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}

+proc WriteConsoleOutputCharacterA*(hConsoleOutput: THandle, lpCharacter: LPCSTR,

+                                   nLength: DWORD, dwWriteCoord: TCoord,

+                                   lpNumberOfCharsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterA".}

+proc WriteConsoleOutputCharacterW*(hConsoleOutput: THandle, lpCharacter: LPWSTR,

+                                   nLength: DWORD, dwWriteCoord: TCoord,

+                                   lpNumberOfCharsWritten: var DWORD): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleOutputCharacterW".}

+proc WriteConsoleOutputW*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                          dwBufferSize, dwBufferCoord: TCoord,

+                          lpWriteRegion: var TSmallRect): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteConsoleOutputW".}

+proc WriteConsoleW*(hConsoleOutput: THandle, lpBuffer: Pointer,

+                    nNumberOfCharsToWrite: DWORD,

+                    lpNumberOfCharsWritten: var DWORD, lpReserved: Pointer): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteConsoleW".}

+proc WriteFile*(hFile: THandle, Buffer: pointer, nNumberOfBytesToWrite: DWORD,

+                lpNumberOfBytesWritten: var DWORD, lpOverlapped: POverlapped): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WriteFile".}

+proc WriteFileEx*(hFile: THandle, lpBuffer: Pointer,

+                  nNumberOfBytesToWrite: DWORD, lpOverlapped: TOverlapped,

+                  lpCompletionRoutine: FARPROC): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteFileEx".}

+proc WritePrivateProfileStructA*(lpszSection, lpszKey: LPCSTR, lpStruct: LPVOID,

+                                 uSizeStruct: UINT, szFile: LPCSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructA".}

+proc WritePrivateProfileStructW*(lpszSection, lpszKey: LPCWSTR,

+                                 lpStruct: LPVOID, uSizeStruct: UINT,

+                                 szFile: LPCWSTR): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WritePrivateProfileStructW".}

+proc WritePrivateProfileStruct*(lpszSection, lpszKey: LPCTSTR, lpStruct: LPVOID,

+                                uSizeStruct: UINT, szFile: LPCTSTR): WINBOOL{.

+    stdcall, dynlib: "kernel32", importc: "WritePrivateProfileStructA".}

+proc WriteProcessMemory*(hProcess: THandle, lpBaseAddress: Pointer,

+                         lpBuffer: Pointer, nSize: DWORD,

+                         lpNumberOfBytesWritten: var DWORD): WINBOOL{.stdcall,

+    dynlib: "kernel32", importc: "WriteProcessMemory".}

+proc SHFileOperation*(para1: var SHFILEOPSTRUCT): int32{.stdcall,

+    dynlib: "shell32", importc: "SHFileOperation".}

+

+  # these are old Win16 funcs that under win32 are aliases for several char* funcs.

+# exist under Win32 (even in SDK's from 2002), but are officially "deprecated"

+proc AnsiNext*(lpsz: LPCSTR): LPSTR{.stdcall, dynlib: "user32",

+                                     importc: "CharNextA".}

+proc AnsiPrev*(lpszStart: LPCSTR, lpszCurrent: LPCSTR): LPSTR{.stdcall,

+    dynlib: "user32", importc: "CharPrevA".}

+proc AnsiToOem*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "CharToOemA".}

+proc OemToAnsi*(lpszSrc: LPCSTR, lpszDst: LPSTR): WINBOOL{.stdcall,

+    dynlib: "user32", importc: "OemToCharA".}

+proc AnsiToOemBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "CharToOemBuffA".}

+proc OemToAnsiBuff*(lpszSrc: LPCSTR, lpszDst: LPSTR, cchDstLength: DWORD): WINBOOL{.

+    stdcall, dynlib: "user32", importc: "OemToCharBuffA".}

+proc AnsiUpper*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",

+                                     importc: "CharUpperA".}

+proc AnsiUpperBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "CharUpperBuffA".}

+proc AnsiLower*(lpsz: LPSTR): LPSTR{.stdcall, dynlib: "user32",

+                                     importc: "CharLowerA".}

+proc AnsiLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,

+    dynlib: "user32", importc: "CharLowerBuffA".}

+

+#== Implementation of macros

+

+# WinBase.h

+

+proc FreeModule(h: HINST): WINBOOL =

+  result = FreeLibrary(h)

+

+proc MakeProcInstance(p, i: pointer): pointer =

+  result = p

+

+proc FreeProcInstance(p: pointer): pointer =

+  result = p

+

+proc GlobalDiscard(hglbMem: HGLOBAL): HGLOBAL =

+  result = GlobalReAlloc(hglbMem, 0, GMEM_MOVEABLE)

+

+proc LocalDiscard(hlocMem: HLOCAL): HLOCAL =

+  result = LocalReAlloc(hlocMem, 0, LMEM_MOVEABLE)

+

+# WinGDI.h

+

+proc GetGValue(rgb: int32): int8 =

+  result = toU8(rgb shr 8'i32)

+proc RGB(r, g, b: int): COLORREF =

+  result = toU32(r) or (toU32(g) shl 8) or (toU32(b) shl 16)

+proc RGB(r, g, b: range[0 .. 255]): COLORREF =

+  result = r or g shl 8 or b shl 16

+

+proc PALETTERGB(r, g, b: range[0..255]): COLORREF =

+  result = 0x02000000 or RGB(r, g, b)

+

+proc PALETTEINDEX(i: DWORD): COLORREF =

+  result = COLORREF(0x01000000'i32 or i and 0xffff'i32)

+

+

+proc GetRValue(rgb: COLORREF): int8 =

+  result = toU8(rgb)

+

+proc GetGValue(rgb: COLORREF): int8 =

+  result = toU8(rgb shr 8)

+

+proc GetBValue(rgb: COLORREF): int8 =

+  result = toU8(rgb shr 16)

+

+#

+

+proc HIBYTE(w: int32): int8 =

+  result = toU8(w shr 8'i32 and 0x000000FF'i32)

+

+proc HIWORD(L: int32): int16 =

+  result = toU16(L shr 16'i32 and 0x0000FFFF'i32)

+

+proc LOBYTE(w: int32): int8 =

+  result = toU8(w)

+

+proc LOWORD(L: int32): int16 =

+  result = toU16(L)

+

+proc MAKELONG(a, b: int32): LONG =

+  result = a and 0x0000ffff'i32 or b shl 16'i32

+

+proc MAKEWORD(a, b: int32): int16 =

+  result = toU16(a and 0xff'i32) or toU16(b shl 8'i32)

+

+proc SEXT_HIWORD(L: int32): int32 =

+  # return type might be wrong

+  result = HIWORD(L)

+

+proc ZEXT_HIWORD(L: int32): int32 =

+  # return type might be wrong

+  result = ze(HIWORD(L))

+

+proc SEXT_LOWORD(L: int32): int32 =

+  result = LOWORD(L)

+

+proc INDEXTOOVERLAYMASK(i: int32): int32 =

+  # return type might be wrong

+  result = i shl 8'i32

+

+proc INDEXTOSTATEIMAGEMASK(i: int32): int32 =

+  # return type might be wrong

+  result = i shl 12'i32

+

+proc MAKEINTATOM(i: int32): LPTSTR =

+  result = cast[LPTSTR](cast[ULONG_PTR](ToU16(i)))

+

+proc MAKELANGID(p, s: int32): int32 =

+  # return type might be wrong

+  result = toU16(s) shl 10'i16 or toU16(p)

+

+proc PRIMARYLANGID(lgid: int32): int16 =

+  result = toU16(lgid) and 0x000003FF'i16

+

+proc SUBLANGID(lgid: int32): int32 =

+  # return type might be wrong

+  result = toU16(lgid) shr 10'i16

+

+proc LANGIDFROMLCID(lcid: int32): int16 =

+  result = toU16(lcid)

+

+proc SORTIDFROMLCID(lcid: int32): int16 =

+  result = toU16((lcid and 0x000FFFFF'i32) shr 16'i32)

+

+proc MAKELCID(lgid, srtid: int32): DWORD =

+  result = toU32(srtid shl 16'i32 or lgid and 0xffff'i32)

+

+proc MAKELPARAM(L, h: int32): LPARAM =

+  result = LPARAM(MAKELONG(L, h))

+

+proc MAKELRESULT(L, h: int32): LRESULT =

+  result = LRESULT(MAKELONG(L, h))

+

+proc MAKEROP4(fore, back: int32): DWORD =

+  result = back shl 8'i32 and 0xFF000000'i32 or fore

+

+proc MAKEWPARAM(L, h: int32): WPARAM =

+  result = WPARAM(MAKELONG(L, h))

+

+proc GET_X_LPARAM(lp: Windows.LParam): int32 =

+  result = int16(LOWORD(lp))

+

+proc GET_Y_LPARAM(lp: Windows.LParam): int32 =

+  result = int16(HIWORD(lp))

+

+proc UNICODE_NULL(): WCHAR =

+  result = 0'i16

+

+

+

+proc GetFirstChild(h: HWND): HWND =

+  result = GetTopWindow(h)

+

+proc GetNextSibling(h: HWND): HWND =

+  result = GetWindow(h, GW_HWNDNEXT)

+

+proc GetWindowID(h: HWND): int32 =

+  result = GetDlgCtrlID(h)

+

+proc SubclassWindow(h: HWND, p: LONG): LONG =

+  result = SetWindowLong(h, GWL_WNDPROC, p)

+

+proc GET_WM_COMMAND_CMD(w, L: int32): int32 =

+  # return type might be wrong

+  result = HIWORD(w)

+

+proc GET_WM_COMMAND_ID(w, L: int32): int32 =

+  # return type might be wrong

+  result = LOWORD(w)

+

+proc GET_WM_CTLCOLOR_HDC(w, L, msg: int32): HDC =

+  result = HDC(w)

+

+proc GET_WM_CTLCOLOR_HWND(w, L, msg: int32): HWND =

+  result = HWND(L)

+

+proc GET_WM_HSCROLL_CODE(w, L: int32): int32 =

+  # return type might be wrong

+  result = LOWORD(w)

+

+proc GET_WM_HSCROLL_HWND(w, L: int32): HWND =

+  result = HWND(L)

+

+proc GET_WM_HSCROLL_POS(w, L: int32): int32 =

+  # return type might be wrong

+  result = HIWORD(w)

+

+proc GET_WM_MDIACTIVATE_FACTIVATE(h, a, b: int32): int32 =

+  # return type might be wrong

+  result = ord(b == h)

+

+proc GET_WM_MDIACTIVATE_HWNDACTIVATE(a, b: int32): HWND =

+  result = HWND(b)

+

+proc GET_WM_MDIACTIVATE_HWNDDEACT(a, b: int32): HWND =

+  result = HWND(a)

+

+proc GET_WM_VSCROLL_CODE(w, L: int32): int32 =

+  # return type might be wrong

+  result = LOWORD(w)

+

+proc GET_WM_VSCROLL_HWND(w, L: int32): HWND =

+  result = HWND(L)

+

+proc GET_WM_VSCROLL_POS(w, L: int32): int32 =

+  # return type might be wrong

+  result = HIWORD(w)

+

+proc fBinary(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fBinary) shr bp_DCB_fBinary

+

+proc set_fBinary(a: var DCB, fBinary: DWORD) =

+  a.flags = a.flags or ((fBinary shl bp_DCB_fBinary) and bm_DCB_fBinary)

+

+proc fParity(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fParity) shr bp_DCB_fParity

+

+proc set_fParity(a: var DCB, fParity: DWORD) =

+  a.flags = a.flags or ((fParity shl bp_DCB_fParity) and bm_DCB_fParity)

+

+proc fOutxCtsFlow(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fOutxCtsFlow) shr bp_DCB_fOutxCtsFlow

+

+proc set_fOutxCtsFlow(a: var DCB, fOutxCtsFlow: DWORD) =

+  a.flags = a.flags or

+      ((fOutxCtsFlow shl bp_DCB_fOutxCtsFlow) and bm_DCB_fOutxCtsFlow)

+

+proc fOutxDsrFlow(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fOutxDsrFlow) shr bp_DCB_fOutxDsrFlow

+

+proc set_fOutxDsrFlow(a: var DCB, fOutxDsrFlow: DWORD) =

+  a.flags = a.flags or

+      ((fOutxDsrFlow shl bp_DCB_fOutxDsrFlow) and bm_DCB_fOutxDsrFlow)

+

+proc fDtrControl(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fDtrControl) shr bp_DCB_fDtrControl

+

+proc set_fDtrControl(a: var DCB, fDtrControl: DWORD) =

+  a.flags = a.flags or

+      ((fDtrControl shl bp_DCB_fDtrControl) and bm_DCB_fDtrControl)

+

+proc fDsrSensitivity(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fDsrSensitivity) shr bp_DCB_fDsrSensitivity

+

+proc set_fDsrSensitivity(a: var DCB, fDsrSensitivity: DWORD) =

+  a.flags = a.flags or

+      ((fDsrSensitivity shl bp_DCB_fDsrSensitivity) and

+      bm_DCB_fDsrSensitivity)

+

+proc fTXContinueOnXoff(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fTXContinueOnXoff) shr

+      bp_DCB_fTXContinueOnXoff

+

+proc set_fTXContinueOnXoff(a: var DCB, fTXContinueOnXoff: DWORD) =

+  a.flags = a.flags or

+      ((fTXContinueOnXoff shl bp_DCB_fTXContinueOnXoff) and

+      bm_DCB_fTXContinueOnXoff)

+

+proc fOutX(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fOutX) shr bp_DCB_fOutX

+

+proc set_fOutX(a: var DCB, fOutX: DWORD) =

+  a.flags = a.flags or ((fOutX shl bp_DCB_fOutX) and bm_DCB_fOutX)

+

+proc fInX(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fInX) shr bp_DCB_fInX

+

+proc set_fInX(a: var DCB, fInX: DWORD) =

+  a.flags = a.flags or ((fInX shl bp_DCB_fInX) and bm_DCB_fInX)

+

+proc fErrorChar(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fErrorChar) shr bp_DCB_fErrorChar

+

+proc set_fErrorChar(a: var DCB, fErrorChar: DWORD) =

+  a.flags = a.flags or

+      ((fErrorChar shl bp_DCB_fErrorChar) and bm_DCB_fErrorChar)

+

+proc fNull(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fNull) shr bp_DCB_fNull

+

+proc set_fNull(a: var DCB, fNull: DWORD) =

+  a.flags = a.flags or ((fNull shl bp_DCB_fNull) and bm_DCB_fNull)

+

+proc fRtsControl(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fRtsControl) shr bp_DCB_fRtsControl

+

+proc set_fRtsControl(a: var DCB, fRtsControl: DWORD) =

+  a.flags = a.flags or

+      ((fRtsControl shl bp_DCB_fRtsControl) and bm_DCB_fRtsControl)

+

+proc fAbortOnError(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fAbortOnError) shr bp_DCB_fAbortOnError

+

+proc set_fAbortOnError(a: var DCB, fAbortOnError: DWORD) =

+  a.flags = a.flags or

+      ((fAbortOnError shl bp_DCB_fAbortOnError) and bm_DCB_fAbortOnError)

+

+proc fDummy2(a: var DCB): DWORD =

+  result = (a.flags and bm_DCB_fDummy2) shr bp_DCB_fDummy2

+

+proc set_fDummy2(a: var DCB, fDummy2: DWORD) =

+  a.flags = a.flags or ((fDummy2 shl bp_DCB_fDummy2) and bm_DCB_fDummy2)

+

+proc fCtsHold(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fCtsHold) shr bp_COMSTAT_fCtsHold

+

+proc set_fCtsHold(a: var COMSTAT, fCtsHold: DWORD) =

+  a.flag0 = a.flag0 or

+      ((fCtsHold shl bp_COMSTAT_fCtsHold) and bm_COMSTAT_fCtsHold)

+

+proc fDsrHold(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fDsrHold) shr bp_COMSTAT_fDsrHold

+

+proc set_fDsrHold(a: var COMSTAT, fDsrHold: DWORD) =

+  a.flag0 = a.flag0 or

+      ((fDsrHold shl bp_COMSTAT_fDsrHold) and bm_COMSTAT_fDsrHold)

+

+proc fRlsdHold(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fRlsdHold) shr bp_COMSTAT_fRlsdHold

+

+proc set_fRlsdHold(a: var COMSTAT, fRlsdHold: DWORD) =

+  a.flag0 = a.flag0 or

+      ((fRlsdHold shl bp_COMSTAT_fRlsdHold) and bm_COMSTAT_fRlsdHold)

+

+proc fXoffHold(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fXoffHold) shr bp_COMSTAT_fXoffHold

+

+proc set_fXoffHold(a: var COMSTAT, fXoffHold: DWORD) =

+  a.flag0 = a.flag0 or

+      ((fXoffHold shl bp_COMSTAT_fXoffHold) and bm_COMSTAT_fXoffHold)

+

+proc fXoffSent(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fXoffSent) shr bp_COMSTAT_fXoffSent

+

+proc set_fXoffSent(a: var COMSTAT, fXoffSent: DWORD) =

+  a.flag0 = a.flag0 or

+      ((fXoffSent shl bp_COMSTAT_fXoffSent) and bm_COMSTAT_fXoffSent)

+

+proc fEof(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fEof) shr bp_COMSTAT_fEof

+

+proc set_fEof(a: var COMSTAT, fEof: DWORD) =

+  a.flag0 = a.flag0 or ((fEof shl bp_COMSTAT_fEof) and bm_COMSTAT_fEof)

+

+proc fTxim(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fTxim) shr bp_COMSTAT_fTxim

+

+proc set_fTxim(a: var COMSTAT, fTxim: DWORD) =

+  a.flag0 = a.flag0 or ((fTxim shl bp_COMSTAT_fTxim) and bm_COMSTAT_fTxim)

+

+proc fReserved(a: var COMSTAT): DWORD =

+  result = (a.flag0 and bm_COMSTAT_fReserved) shr bp_COMSTAT_fReserved

+

+proc set_fReserved(a: var COMSTAT, fReserved: DWORD) =

+  a.flag0 = a.flag0 or

+      ((fReserved shl bp_COMSTAT_fReserved) and bm_COMSTAT_fReserved)

+

+proc bAppReturnCode(a: var DDEACK): int16 =

+  result = (a.flag0 and bm_DDEACK_bAppReturnCode) shr

+      bp_DDEACK_bAppReturnCode

+

+proc set_bAppReturnCode(a: var DDEACK, bAppReturnCode: int16) =

+  a.flag0 = a.flag0 or

+      ((bAppReturnCode shl bp_DDEACK_bAppReturnCode) and

+      bm_DDEACK_bAppReturnCode)

+

+proc reserved(a: var DDEACK): int16 =

+  result = (a.flag0 and bm_DDEACK_reserved) shr bp_DDEACK_reserved

+

+proc set_reserved(a: var DDEACK, reserved: int16) =

+  a.flag0 = a.flag0 or

+      ((reserved shl bp_DDEACK_reserved) and bm_DDEACK_reserved)

+

+proc fBusy(a: var DDEACK): int16 =

+  result = (a.flag0 and bm_DDEACK_fBusy) shr bp_DDEACK_fBusy

+

+proc set_fBusy(a: var DDEACK, fBusy: int16) =

+  a.flag0 = a.flag0 or ((fBusy shl bp_DDEACK_fBusy) and bm_DDEACK_fBusy)

+

+proc fAck(a: var DDEACK): int16 =

+  result = (a.flag0 and bm_DDEACK_fAck) shr bp_DDEACK_fAck

+

+proc set_fAck(a: var DDEACK, fAck: int16) =

+  a.flag0 = a.flag0 or ((fAck shl bp_DDEACK_fAck) and bm_DDEACK_fAck)

+

+proc reserved(a: var DDEADVISE): int16 =

+  result = (a.flag0 and bm_DDEADVISE_reserved) shr bp_DDEADVISE_reserved

+

+proc set_reserved(a: var DDEADVISE, reserved: int16) =

+  a.flag0 = a.flag0 or

+      ((reserved shl bp_DDEADVISE_reserved) and bm_DDEADVISE_reserved)

+

+proc fDeferUpd(a: var DDEADVISE): int16 =

+  result = (a.flag0 and bm_DDEADVISE_fDeferUpd) shr bp_DDEADVISE_fDeferUpd

+

+proc set_fDeferUpd(a: var DDEADVISE, fDeferUpd: int16) =

+  a.flag0 = a.flag0 or

+      ((fDeferUpd shl bp_DDEADVISE_fDeferUpd) and bm_DDEADVISE_fDeferUpd)

+

+proc fAckReq(a: var DDEADVISE): int16 =

+  result = (a.flag0 and bm_DDEADVISE_fAckReq) shr bp_DDEADVISE_fAckReq

+

+proc set_fAckReq(a: var DDEADVISE, fAckReq: int16) =

+  a.flag0 = a.flag0 or

+      ((fAckReq shl bp_DDEADVISE_fAckReq) and bm_DDEADVISE_fAckReq)

+

+proc unused(a: var DDEDATA): int16 =

+  result = (a.flag0 and bm_DDEDATA_unused) shr bp_DDEDATA_unused

+

+proc set_unused(a: var DDEDATA, unused: int16) =

+  a.flag0 = a.flag0 or ((unused shl bp_DDEDATA_unused) and bm_DDEDATA_unused)

+

+proc fResponse(a: var DDEDATA): int16 =

+  result = (a.flag0 and bm_DDEDATA_fResponse) shr bp_DDEDATA_fResponse

+

+proc set_fResponse(a: var DDEDATA, fResponse: int16) =

+  a.flag0 = a.flag0 or

+      ((fResponse shl bp_DDEDATA_fResponse) and bm_DDEDATA_fResponse)

+

+proc fRelease(a: var DDEDATA): int16 =

+  result = (a.flag0 and bm_DDEDATA_fRelease) shr bp_DDEDATA_fRelease

+

+proc set_fRelease(a: var DDEDATA, fRelease: int16) =

+  a.flag0 = a.flag0 or

+      ((fRelease shl bp_DDEDATA_fRelease) and bm_DDEDATA_fRelease)

+

+proc reserved(a: var DDEDATA): int16 =

+  result = (a.flag0 and bm_DDEDATA_reserved) shr bp_DDEDATA_reserved

+

+proc set_reserved(a: var DDEDATA, reserved: int16) =

+  a.flag0 = a.flag0 or

+      ((reserved shl bp_DDEDATA_reserved) and bm_DDEDATA_reserved)

+

+proc fAckReq(a: var DDEDATA): int16 =

+  result = (a.flag0 and bm_DDEDATA_fAckReq) shr bp_DDEDATA_fAckReq

+

+proc set_fAckReq(a: var DDEDATA, fAckReq: int16) =

+  a.flag0 = a.flag0 or

+      ((fAckReq shl bp_DDEDATA_fAckReq) and bm_DDEDATA_fAckReq)

+

+proc unused(a: var DDELN): int16 =

+  result = (a.flag0 and bm_DDELN_unused) shr bp_DDELN_unused

+

+proc set_unused(a: var DDELN, unused: int16) =

+  a.flag0 = a.flag0 or ((unused shl bp_DDELN_unused) and bm_DDELN_unused)

+

+proc fRelease(a: var DDELN): int16 =

+  result = (a.flag0 and bm_DDELN_fRelease) shr bp_DDELN_fRelease

+

+proc set_fRelease(a: var DDELN, fRelease: int16) =

+  a.flag0 = a.flag0 or

+      ((fRelease shl bp_DDELN_fRelease) and bm_DDELN_fRelease)

+

+proc fDeferUpd(a: var DDELN): int16 =

+  result = (a.flag0 and bm_DDELN_fDeferUpd) shr bp_DDELN_fDeferUpd

+

+proc set_fDeferUpd(a: var DDELN, fDeferUpd: int16) =

+  a.flag0 = a.flag0 or

+      ((fDeferUpd shl bp_DDELN_fDeferUpd) and bm_DDELN_fDeferUpd)

+

+proc fAckReq(a: var DDELN): int16 =

+  result = (a.flag0 and bm_DDELN_fAckReq) shr bp_DDELN_fAckReq

+

+proc set_fAckReq(a: var DDELN, fAckReq: int16) =

+  a.flag0 = a.flag0 or ((fAckReq shl bp_DDELN_fAckReq) and bm_DDELN_fAckReq)

+

+proc unused(a: var DDEPOKE): int16 =

+  result = (a.flag0 and bm_DDEPOKE_unused) shr bp_DDEPOKE_unused

+

+proc set_unused(a: var DDEPOKE, unused: int16) =

+  a.flag0 = a.flag0 or ((unused shl bp_DDEPOKE_unused) and bm_DDEPOKE_unused)

+

+proc fRelease(a: var DDEPOKE): int16 =

+  result = (a.flag0 and bm_DDEPOKE_fRelease) shr bp_DDEPOKE_fRelease

+

+proc set_fRelease(a: var DDEPOKE, fRelease: int16) =

+  a.flag0 = a.flag0 or

+      ((fRelease shl bp_DDEPOKE_fRelease) and bm_DDEPOKE_fRelease)

+

+proc fReserved(a: var DDEPOKE): int16 =

+  result = (a.flag0 and bm_DDEPOKE_fReserved) shr bp_DDEPOKE_fReserved

+

+proc set_fReserved(a: var DDEPOKE, fReserved: int16) =

+  a.flag0 = a.flag0 or

+      ((fReserved shl bp_DDEPOKE_fReserved) and bm_DDEPOKE_fReserved)

+

+proc unused(a: var DDEUP): int16 =

+  result = (a.flag0 and bm_DDEUP_unused) shr bp_DDEUP_unused

+

+proc set_unused(a: var DDEUP, unused: int16) =

+  a.flag0 = a.flag0 or ((unused shl bp_DDEUP_unused) and bm_DDEUP_unused)

+

+proc fAck(a: var DDEUP): int16 =

+  result = (a.flag0 and bm_DDEUP_fAck) shr bp_DDEUP_fAck

+

+proc set_fAck(a: var DDEUP, fAck: int16) =

+  a.flag0 = a.flag0 or ((fAck shl bp_DDEUP_fAck) and bm_DDEUP_fAck)

+

+proc fRelease(a: var DDEUP): int16 =

+  result = (a.flag0 and bm_DDEUP_fRelease) shr bp_DDEUP_fRelease

+

+proc set_fRelease(a: var DDEUP, fRelease: int16) =

+  a.flag0 = a.flag0 or

+      ((fRelease shl bp_DDEUP_fRelease) and bm_DDEUP_fRelease)

+

+proc fReserved(a: var DDEUP): int16 =

+  result = (a.flag0 and bm_DDEUP_fReserved) shr bp_DDEUP_fReserved

+

+proc set_fReserved(a: var DDEUP, fReserved: int16) =

+  a.flag0 = a.flag0 or

+      ((fReserved shl bp_DDEUP_fReserved) and bm_DDEUP_fReserved)

+

+proc fAckReq(a: var DDEUP): int16 =

+  result = (a.flag0 and bm_DDEUP_fAckReq) shr bp_DDEUP_fAckReq

+

+proc set_fAckReq(a: var DDEUP, fAckReq: int16) =

+  a.flag0 = a.flag0 or ((fAckReq shl bp_DDEUP_fAckReq) and bm_DDEUP_fAckReq)

+

+proc CreateWindowA(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,

+                   X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                   hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                   lpParam: LPVOID): HWND =

+  result = CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,

+                           nHeight, hWndParent, hMenu, hInstance, lpParam)

+

+proc CreateDialogA(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                   lpDialogFunc: DLGPROC): HWND =

+  result = CreateDialogParamA(hInstance, lpTemplateName, hWndParent,

+                              lpDialogFunc, 0)

+

+proc CreateDialogIndirectA(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                           hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =

+  result = CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent,

+                                      lpDialogFunc, 0)

+

+proc DialogBoxA(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                lpDialogFunc: DLGPROC): int32 =

+  result = DialogBoxParamA(hInstance, lpTemplateName, hWndParent, lpDialogFunc,

+                           0)

+

+proc DialogBoxIndirectA(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,

+                        hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =

+  result = DialogBoxIndirectParamA(hInstance, hDialogTemplate, hWndParent,

+                                   lpDialogFunc, 0)

+

+proc CreateWindowW(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD,

+                   X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                   hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                   lpParam: LPVOID): HWND =

+  result = CreateWindowExW(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,

+                           nHeight, hWndParent, hMenu, hInstance, lpParam)

+

+proc CreateDialogW(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,

+                   lpDialogFunc: DLGPROC): HWND =

+  result = CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0)

+

+proc CreateDialogIndirectW(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                           hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =

+  result = CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent,

+                                      lpDialogFunc, 0)

+

+proc DialogBoxW(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,

+                lpDialogFunc: DLGPROC): int32 =

+  result = DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)

+

+proc DialogBoxIndirectW(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                        hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =

+  result = DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent,

+                                   lpDialogFunc, 0)

+

+when defined(winUnicode):

+  proc CreateWindow(lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD,

+                    X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                    lpParam: LPVOID): HWND =

+    result = CreateWindowEx(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,

+                            nHeight, hWndParent, hMenu, hInstance, lpParam)

+

+  proc CreateDialog(hInstance: HINST, lpName: LPCWSTR, hWndParent: HWND,

+                    lpDialogFunc: DLGPROC): HWND =

+    result = CreateDialogParam(hInstance, lpName, hWndParent, lpDialogFunc, 0)

+

+  proc CreateDialogIndirect(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =

+    result = CreateDialogIndirectParam(hInstance, lpTemplate, hWndParent,

+                                       lpDialogFunc, 0)

+

+  proc DialogBox(hInstance: HINST, lpTemplate: LPCWSTR, hWndParent: HWND,

+                 lpDialogFunc: DLGPROC): int32 =

+    result = DialogBoxParam(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0)

+

+  proc DialogBoxIndirect(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =

+    result = DialogBoxIndirectParam(hInstance, lpTemplate, hWndParent,

+                                    lpDialogFunc, 0)

+

+else:

+  proc CreateWindow(lpClassName: LPCSTR, lpWindowName: LPCSTR, dwStyle: DWORD,

+                    X: int32, Y: int32, nWidth: int32, nHeight: int32,

+                    hWndParent: HWND, hMenu: HMENU, hInstance: HINST,

+                    lpParam: LPVOID): HWND =

+    result = CreateWindowEx(0, lpClassName, lpWindowName, dwStyle, x, y, nWidth,

+                            nHeight, hWndParent, hMenu, hInstance, lpParam)

+

+  proc CreateDialog(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                    lpDialogFunc: DLGPROC): HWND =

+    result = CreateDialogParam(hInstance, lpTemplateName, hWndParent,

+                               lpDialogFunc, 0)

+

+  proc CreateDialogIndirect(hInstance: HINST, lpTemplate: LPCDLGTEMPLATE,

+                            hWndParent: HWND, lpDialogFunc: DLGPROC): HWND =

+    result = CreateDialogIndirectParam(hInstance, lpTemplate, hWndParent,

+                                       lpDialogFunc, 0)

+

+  proc DialogBox(hInstance: HINST, lpTemplateName: LPCSTR, hWndParent: HWND,

+                 lpDialogFunc: DLGPROC): int32 =

+    result = DialogBoxParam(hInstance, lpTemplateName, hWndParent, lpDialogFunc,

+                            0)

+

+  proc DialogBoxIndirect(hInstance: HINST, hDialogTemplate: LPCDLGTEMPLATE,

+                         hWndParent: HWND, lpDialogFunc: DLGPROC): int32 =

+    result = DialogBoxIndirectParam(hInstance, hDialogTemplate, hWndParent,

+                                    lpDialogFunc, 0)

+

+proc GlobalAllocPtr(flags, cb: DWord): Pointer =

+  result = GlobalLock(GlobalAlloc(flags, cb))

+

+proc GlobalFreePtr(lp: Pointer): Pointer =

+  result = cast[Pointer](GlobalFree(cast[HWND](GlobalUnlockPtr(lp))))

+

+proc GlobalUnlockPtr(lp: pointer): Pointer =

+  discard GlobalUnlock(GlobalHandle(lp))

+  result = lp

+

+proc GlobalLockPtr(lp: pointer): Pointer =

+  result = GlobalLock(GlobalHandle(lp))

+

+proc GlobalReAllocPtr(lp: Pointer, cbNew, flags: DWord): Pointer =

+  result = GlobalLock(GlobalReAlloc(cast[HWND](GlobalUnlockPtr(lp)), cbNew, flags))

+

+proc GlobalPtrHandle(lp: pointer): Pointer =

+  result = cast[Pointer](GlobalHandle(lp))

+

+proc ImageList_AddIcon(himl: HIMAGELIST, hicon: HICON): int32 =

+  result = ImageList_ReplaceIcon(himl, -1, hicon)

+

+proc Animate_Create(hWndP: HWND, id: HMENU, dwStyle: DWORD, hInstance: HINST): HWND =

+  result = CreateWindow(cast[LPCSTR](ANIMATE_CLASS), nil, dwStyle, 0, 0, 0, 0, hwndP,

+                        id, hInstance, nil)

+

+proc Animate_Open(hwnd: HWND, szName: LPTSTR): LRESULT =

+  result = SendMessage(hwnd, ACM_OPEN, 0, cast[LPARAM](szName))

+

+proc Animate_Play(hwnd: HWND, `from`, `to`: int32, rep: UINT): LRESULT =

+  result = SendMessage(hwnd, ACM_PLAY, WPARAM(rep),

+                       LPARAM(MAKELONG(`from`, `to`)))

+

+proc Animate_Stop(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, ACM_STOP, 0, 0)

+

+proc Animate_Close(hwnd: HWND): LRESULT =

+  result = Animate_Open(hwnd, nil)

+

+proc Animate_Seek(hwnd: HWND, frame: int32): LRESULT =

+  result = Animate_Play(hwnd, frame, frame, 1)

+

+proc PropSheet_AddPage(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_ADDPAGE, 0, cast[LPARAM](hpage))

+

+proc PropSheet_Apply(hPropSheetDlg: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0)

+

+proc PropSheet_CancelToClose(hPropSheetDlg: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0)

+

+proc PropSheet_Changed(hPropSheetDlg, hwndPage: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_CHANGED, WPARAM(hwndPage), 0)

+

+proc PropSheet_GetCurrentPageHwnd(hDlg: HWND): LRESULT =

+  result = SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0)

+

+proc PropSheet_GetTabControl(hPropSheetDlg: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0)

+

+proc PropSheet_IsDialogMessage(hDlg: HWND, pMsg: int32): LRESULT =

+  result = SendMessage(hDlg, PSM_ISDIALOGMESSAGE, 0, LPARAM(pMsg))

+

+proc PropSheet_PressButton(hPropSheetDlg: HWND, iButton: int32): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, WPARAM(int32(iButton)), 0)

+

+proc PropSheet_QuerySiblings(hPropSheetDlg: HWND, param1, param2: int32): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, WPARAM(param1),

+                       LPARAM(param2))

+

+proc PropSheet_RebootSystem(hPropSheetDlg: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0)

+

+proc PropSheet_RemovePage(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,

+                          index: int32): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, WPARAM(index),

+                       cast[LPARAM](hpage))

+

+proc PropSheet_RestartWindows(hPropSheetDlg: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0)

+

+proc PropSheet_SetCurSel(hPropSheetDlg: HWND, hpage: HPROPSHEETPAGE,

+                         index: int32): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_SETCURSEL, WPARAM(index),

+                       cast[LPARAM](hpage))

+

+proc PropSheet_SetCurSelByID(hPropSheetDlg: HWND, id: int32): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, LPARAM(id))

+

+proc PropSheet_SetFinishText(hPropSheetDlg: HWND, lpszText: LPTSTR): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast[LPARAM](lpszText))

+

+proc PropSheet_SetTitle(hPropSheetDlg: HWND, dwStyle: DWORD, lpszText: LPCTSTR): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_SETTITLE, WPARAM(dwStyle),

+                       cast[LPARAM](lpszText))

+

+proc PropSheet_SetWizButtons(hPropSheetDlg: HWND, dwFlags: DWORD): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, LPARAM(dwFlags))

+

+proc PropSheet_UnChanged(hPropSheetDlg: HWND, hwndPage: HWND): LRESULT =

+  result = SendMessage(hPropSheetDlg, PSM_UNCHANGED, WPARAM(hwndPage), 0)

+

+proc Header_DeleteItem(hwndHD: HWND, index: int32): WINBOOL =

+  result = WINBOOL(SendMessage(hwndHD, HDM_DELETEITEM, WPARAM(index), 0))

+

+proc Header_GetItem(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL =

+  result = WINBOOL(SendMessage(hwndHD, HDM_GETITEM, WPARAM(index),

+                               cast[LPARAM](addr(hdi))))

+

+proc Header_GetItemCount(hwndHD: HWND): int32 =

+  result = int32(SendMessage(hwndHD, HDM_GETITEMCOUNT, 0, 0))

+

+proc Header_InsertItem(hwndHD: HWND, index: int32, hdi: var HD_ITEM): int32 =

+  result = int32(SendMessage(hwndHD, HDM_INSERTITEM, WPARAM(index),

+                             cast[LPARAM](addr(hdi))))

+

+proc Header_Layout(hwndHD: HWND, layout: var HD_LAYOUT): WINBOOL =

+  result = WINBOOL(SendMessage(hwndHD, HDM_LAYOUT, 0,

+                   cast[LPARAM](addr(layout))))

+

+proc Header_SetItem(hwndHD: HWND, index: int32, hdi: var HD_ITEM): WINBOOL =

+  result = WINBOOL(SendMessage(hwndHD, HDM_SETITEM, WPARAM(index),

+                               cast[LPARAM](addr(hdi))))

+

+proc ListView_Arrange(hwndLV: HWND, code: UINT): LRESULT =

+  result = SendMessage(hwndLV, LVM_ARRANGE, WPARAM(code), 0)

+

+proc ListView_CreateDragImage(hwnd: HWND, i: int32, lpptUpLeft: LPPOINT): LRESULT =

+  result = SendMessage(hwnd, LVM_CREATEDRAGIMAGE, WPARAM(i), cast[LPARAM](lpptUpLeft))

+

+proc ListView_DeleteAllItems(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, LVM_DELETEALLITEMS, 0, 0)

+

+proc ListView_DeleteColumn(hwnd: HWND, iCol: int32): LRESULT =

+  result = SendMessage(hwnd, LVM_DELETECOLUMN, WPARAM(iCol), 0)

+

+proc ListView_DeleteItem(hwnd: HWND, iItem: int32): LRESULT =

+  result = SendMessage(hwnd, LVM_DELETEITEM, WPARAM(iItem), 0)

+

+proc ListView_EditLabel(hwndLV: HWND, i: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_EDITLABEL, WPARAM(int32(i)), 0)

+

+proc ListView_EnsureVisible(hwndLV: HWND, i, fPartialOK: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_ENSUREVISIBLE, WPARAM(i),

+                       MAKELPARAM(fPartialOK, 0))

+

+proc ListView_FindItem(hwnd: HWND, iStart: int32, lvfi: var LV_FINDINFO): int32 =

+  result = SendMessage(hwnd, LVM_FINDITEM, WPARAM(iStart), cast[LPARAM](addr(lvfi)))

+

+proc ListView_GetBkColor(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, LVM_GETBKCOLOR, 0, 0)

+

+proc ListView_GetCallbackMask(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, LVM_GETCALLBACKMASK, 0, 0)

+

+proc ListView_GetColumn(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT =

+  result = SendMessage(hwnd, LVM_GETCOLUMN, WPARAM(iCol), cast[LPARAM](addr(col)))

+

+proc ListView_GetColumnWidth(hwnd: HWND, iCol: int32): LRESULT =

+  result = SendMessage(hwnd, LVM_GETCOLUMNWIDTH, WPARAM(iCol), 0)

+

+proc ListView_GetCountPerPage(hwndLV: HWND): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETCOUNTPERPAGE, 0, 0)

+

+proc ListView_GetEditControl(hwndLV: HWND): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETEDITCONTROL, 0, 0)

+

+proc ListView_GetImageList(hwnd: HWND, iImageList: wINT): LRESULT =

+  result = SendMessage(hwnd, LVM_GETIMAGELIST, WPARAM(iImageList), 0)

+

+proc ListView_GetISearchString(hwndLV: HWND, lpsz: LPTSTR): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))

+

+proc ListView_GetItem(hwnd: HWND, item: var LV_ITEM): LRESULT =

+  result = SendMessage(hwnd, LVM_GETITEM, 0, cast[LPARAM](addr(item)))

+

+proc ListView_GetItemCount(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0)

+

+proc ListView_GetItemPosition(hwndLV: HWND, i: int32, pt: var POINT): int32 =

+  result = SendMessage(hwndLV, LVM_GETITEMPOSITION, WPARAM(int32(i)),

+                       cast[LPARAM](addr(pt)))

+

+proc ListView_GetItemSpacing(hwndLV: HWND, fSmall: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETITEMSPACING, fSmall, 0)

+

+proc ListView_GetItemState(hwndLV: HWND, i, mask: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETITEMSTATE, WPARAM(i), LPARAM(mask))

+

+proc ListView_GetNextItem(hwnd: HWND, iStart, flags: int32): LRESULT =

+  result = SendMessage(hwnd, LVM_GETNEXTITEM, WPARAM(iStart), LPARAM(flags))

+

+proc ListView_GetOrigin(hwndLV: HWND, pt: var POINT): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETORIGIN, WPARAM(0), cast[LPARAM](addr(pt)))

+

+proc ListView_GetSelectedCount(hwndLV: HWND): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETSELECTEDCOUNT, 0, 0)

+

+proc ListView_GetStringWidth(hwndLV: HWND, psz: LPCTSTR): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, cast[LPARAM](psz))

+

+proc ListView_GetTextBkColor(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0)

+

+proc ListView_GetTextColor(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0)

+

+proc ListView_GetTopIndex(hwndLV: HWND): LRESULT =

+  result = SendMessage(hwndLV, LVM_GETTOPINDEX, 0, 0)

+

+proc ListView_GetViewRect(hwnd: HWND, rc: var RECT): LRESULT =

+  result = SendMessage(hwnd, LVM_GETVIEWRECT, 0, cast[LPARAM](addr(rc)))

+

+proc ListView_HitTest(hwndLV: HWND, info: var LV_HITTESTINFO): LRESULT =

+  result = SendMessage(hwndLV, LVM_HITTEST, 0, cast[LPARAM](addr(info)))

+

+proc ListView_InsertColumn(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT =

+  result = SendMessage(hwnd, LVM_INSERTCOLUMN, WPARAM(iCol), cast[LPARAM](addr(col)))

+

+proc ListView_InsertItem(hwnd: HWND, item: var LV_ITEM): LRESULT =

+  result = SendMessage(hwnd, LVM_INSERTITEM, 0, cast[LPARAM](addr(item)))

+

+proc ListView_RedrawItems(hwndLV: HWND, iFirst, iLast: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_REDRAWITEMS, WPARAM(iFirst), LPARAM(iLast))

+

+proc ListView_Scroll(hwndLV: HWND, dx, dy: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_SCROLL, WPARAM(dx), LPARAM(dy))

+

+proc ListView_SetBkColor(hwnd: HWND, clrBk: COLORREF): LRESULT =

+  result = SendMessage(hwnd, LVM_SETBKCOLOR, 0, LPARAM(clrBk))

+

+proc ListView_SetCallbackMask(hwnd: HWND, mask: UINT): LRESULT =

+  result = SendMessage(hwnd, LVM_SETCALLBACKMASK, WPARAM(mask), 0)

+

+proc ListView_SetColumn(hwnd: HWND, iCol: int32, col: var LV_COLUMN): LRESULT =

+  result = SendMessage(hwnd, LVM_SETCOLUMN, WPARAM(iCol), cast[LPARAM](addr(col)))

+

+proc ListView_SetColumnWidth(hwnd: HWND, iCol, cx: int32): LRESULT =

+  result = SendMessage(hwnd, LVM_SETCOLUMNWIDTH, WPARAM(iCol), MAKELPARAM(cx, 0))

+

+proc ListView_SetImageList(hwnd: HWND, himl: int32, iImageList: HIMAGELIST): LRESULT =

+  result = SendMessage(hwnd, LVM_SETIMAGELIST, WPARAM(iImageList),

+                       LPARAM(UINT(himl)))

+

+proc ListView_SetItem(hwnd: HWND, item: var LV_ITEM): LRESULT =

+  result = SendMessage(hwnd, LVM_SETITEM, 0, cast[LPARAM](addr(item)))

+

+proc ListView_SetItemCount(hwndLV: HWND, cItems: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_SETITEMCOUNT, WPARAM(cItems), 0)

+

+proc ListView_SetItemPosition(hwndLV: HWND, i, x, y: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_SETITEMPOSITION, WPARAM(i), MAKELPARAM(x, y))

+

+proc ListView_SetItemPosition32(hwndLV: HWND, i, x, y: int32): LRESULT =

+  var ptNewPos: POINT

+  ptNewPos.x = x

+  ptNewPos.y = y

+  result = SendMessage(hwndLV, LVM_SETITEMPOSITION32, WPARAM(i),

+                       cast[LPARAM](addr(ptNewPos)))

+

+proc ListView_SetItemState(hwndLV: HWND, i, data, mask: int32): LRESULT =

+  var gnu_lvi: LV_ITEM

+  gnu_lvi.stateMask = mask

+  gnu_lvi.state = data

+  result = SendMessage(hwndLV, LVM_SETITEMSTATE, WPARAM(i),

+                       cast[LPARAM](addr(gnu_lvi)))

+

+proc ListView_SetItemText(hwndLV: HWND, i, iSubItem_: int32, pszText_: LPTSTR): LRESULT =

+proc ListView_SetItemText(hwndLV: HWND, i, iSubItem: int32, 

+                          pszText: LPTSTR): LRESULT =

+proc ListView_SetItemText(hwndLV: HWND, i, iSubItem: int32, pszText: LPTSTR): LRESULT =

+  var gnu_lvi: LV_ITEM

+  gnu_lvi.iSubItem = iSubItem

+  gnu_lvi.pszText = pszText

+  result = SendMessage(hwndLV, LVM_SETITEMTEXT, WPARAM(i),

+                       cast[LPARAM](addr(gnu_lvi)))

+

+proc ListView_SetTextBkColor(hwnd: HWND, clrTextBk: COLORREF): LRESULT =

+  result = SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, LPARAM(clrTextBk))

+

+proc ListView_SetTextColor(hwnd: HWND, clrText: COLORREF): LRESULT =

+  result = SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, LPARAM(clrText))

+

+proc ListView_SortItems(hwndLV: HWND, pfnCompare: PFNLVCOMPARE, 

+                        lPrm: LPARAM): LRESULT =

+  result = SendMessage(hwndLV, LVM_SORTITEMS, WPARAM(lPrm), 

+                       cast[LPARAM](pfnCompare))

+

+proc ListView_Update(hwndLV: HWND, i: int32): LRESULT =

+  result = SendMessage(hwndLV, LVM_UPDATE, WPARAM(i), 0)

+

+proc TreeView_InsertItem(hwnd: HWND, lpis: LPTV_INSERTSTRUCT): LRESULT =

+  result = SendMessage(hwnd, TVM_INSERTITEM, 0, cast[LPARAM](lpis))

+

+proc TreeView_DeleteItem(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](hitem))

+

+proc TreeView_DeleteAllItems(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TVM_DELETEITEM, 0, cast[LPARAM](TVI_ROOT))

+

+proc TreeView_Expand(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_EXPAND, WPARAM(code), cast[LPARAM](hitem))

+

+proc TreeView_GetCount(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TVM_GETCOUNT, 0, 0)

+

+proc TreeView_GetIndent(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TVM_GETINDENT, 0, 0)

+

+proc TreeView_SetIndent(hwnd: HWND, indent: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_SETINDENT, WPARAM(indent), 0)

+

+proc TreeView_GetImageList(hwnd: HWND, iImage: WPARAM): LRESULT =

+  result = SendMessage(hwnd, TVM_GETIMAGELIST, iImage, 0)

+

+proc TreeView_SetImageList(hwnd: HWND, himl: HIMAGELIST, iImage: WPARAM): LRESULT =

+  result = SendMessage(hwnd, TVM_SETIMAGELIST, iImage, LPARAM(UINT(himl)))

+

+proc TreeView_GetNextItem(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_GETNEXTITEM, WPARAM(code), cast[LPARAM](hitem))

+

+proc TreeView_GetChild(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)

+

+proc TreeView_GetNextSibling(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)

+

+proc TreeView_GetPrevSibling(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)

+

+proc TreeView_GetParent(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)

+

+proc TreeView_GetFirstVisible(hwnd: HWND): LRESULT =

+  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_FIRSTVISIBLE)

+

+proc TreeView_GetNextVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)

+

+proc TreeView_GetPrevVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)

+

+proc TreeView_GetSelection(hwnd: HWND): LRESULT =

+  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_CARET)

+

+proc TreeView_GetDropHilight(hwnd: HWND): LRESULT =

+  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_DROPHILITE)

+

+proc TreeView_GetRoot(hwnd: HWND): LRESULT =

+  result = TreeView_GetNextItem(hwnd, HTREEITEM(nil), TVGN_ROOT)

+

+proc TreeView_Select(hwnd: HWND, hitem: HTREEITEM, code: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_SELECTITEM, WPARAM(code), cast[LPARAM](hitem))

+

+proc TreeView_SelectItem(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_Select(hwnd, hitem, TVGN_CARET)

+

+proc TreeView_SelectDropTarget(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)

+

+proc TreeView_SelectSetFirstVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)

+

+proc TreeView_GetItem(hwnd: HWND, item: var TV_ITEM): LRESULT =

+  result = SendMessage(hwnd, TVM_GETITEM, 0, cast[LPARAM](addr(item)))

+

+proc TreeView_SetItem(hwnd: HWND, item: var TV_ITEM): LRESULT =

+  result = SendMessage(hwnd, TVM_SETITEM, 0, cast[LPARAM](addr(item)))

+

+proc TreeView_EditLabel(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  Result = SendMessage(hwnd, TVM_EDITLABEL, 0, cast[LPARAM](hitem))

+

+proc TreeView_GetEditControl(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0)

+

+proc TreeView_GetVisibleCount(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0)

+

+proc TreeView_HitTest(hwnd: HWND, lpht: LPTV_HITTESTINFO): LRESULT =

+  result = SendMessage(hwnd, TVM_HITTEST, 0, cast[LPARAM](lpht))

+

+proc TreeView_CreateDragImage(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0, cast[LPARAM](hitem))

+

+proc TreeView_SortChildren(hwnd: HWND, hitem: HTREEITEM, recurse: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_SORTCHILDREN, WPARAM(recurse), cast[LPARAM](hitem))

+

+proc TreeView_EnsureVisible(hwnd: HWND, hitem: HTREEITEM): LRESULT =

+  result = SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, cast[LPARAM](hitem))

+

+proc TreeView_SortChildrenCB(hwnd: HWND, psort: LPTV_SORTCB, recurse: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_SORTCHILDRENCB, WPARAM(recurse), cast[LPARAM](psort))

+

+proc TreeView_EndEditLabelNow(hwnd: HWND, fCancel: int32): LRESULT =

+  result = SendMessage(hwnd, TVM_ENDEDITLABELNOW, WPARAM(fCancel), 0)

+

+proc TreeView_GetISearchString(hwndTV: HWND, lpsz: LPTSTR): LRESULT =

+  result = SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0, cast[LPARAM](lpsz))

+

+proc TabCtrl_GetImageList(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_GETIMAGELIST, 0, 0)

+

+proc TabCtrl_SetImageList(hwnd: HWND, himl: HIMAGELIST): LRESULT =

+  result = SendMessage(hwnd, TCM_SETIMAGELIST, 0, LPARAM(UINT(himl)))

+

+proc TabCtrl_GetItemCount(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_GETITEMCOUNT, 0, 0)

+

+proc TabCtrl_GetItem(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT =

+  result = SendMessage(hwnd, TCM_GETITEM, WPARAM(iItem), cast[LPARAM](addr(item)))

+

+proc TabCtrl_SetItem(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT =

+  result = SendMessage(hwnd, TCM_SETITEM, WPARAM(iItem), cast[LPARAM](addr(item)))

+

+proc TabCtrl_InsertItem(hwnd: HWND, iItem: int32, item: var TC_ITEM): LRESULT =

+  result = SendMessage(hwnd, TCM_INSERTITEM, WPARAM(iItem), cast[LPARAM](addr(item)))

+

+proc TabCtrl_DeleteItem(hwnd: HWND, i: int32): LRESULT =

+  result = SendMessage(hwnd, TCM_DELETEITEM, WPARAM(i), 0)

+

+proc TabCtrl_DeleteAllItems(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_DELETEALLITEMS, 0, 0)

+

+proc TabCtrl_GetItemRect(hwnd: HWND, i: int32, rc: var RECT): LRESULT =

+  result = SendMessage(hwnd, TCM_GETITEMRECT, WPARAM(int32(i)), cast[LPARAM](addr(rc)))

+

+proc TabCtrl_GetCurSel(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_GETCURSEL, 0, 0)

+

+proc TabCtrl_SetCurSel(hwnd: HWND, i: int32): LRESULT =

+  result = SendMessage(hwnd, TCM_SETCURSEL, WPARAM(i), 0)

+

+proc TabCtrl_HitTest(hwndTC: HWND, info: var TC_HITTESTINFO): LRESULT =

+  result = SendMessage(hwndTC, TCM_HITTEST, 0, cast[LPARAM](addr(info)))

+

+proc TabCtrl_SetItemExtra(hwndTC: HWND, cb: int32): LRESULT =

+  result = SendMessage(hwndTC, TCM_SETITEMEXTRA, WPARAM(cb), 0)

+

+proc TabCtrl_AdjustRect(hwnd: HWND, bLarger: WINBOOL, rc: var RECT): LRESULT =

+  result = SendMessage(hwnd, TCM_ADJUSTRECT, WPARAM(bLarger), cast[LPARAM](addr(rc)))

+

+proc TabCtrl_SetItemSize(hwnd: HWND, x, y: int32): LRESULT =

+  result = SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y))

+

+proc TabCtrl_RemoveImage(hwnd: HWND, i: WPARAM): LRESULT =

+  result = SendMessage(hwnd, TCM_REMOVEIMAGE, i, 0)

+

+proc TabCtrl_SetPadding(hwnd: HWND, cx, cy: int32): LRESULT =

+  result = SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx, cy))

+

+proc TabCtrl_GetRowCount(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0)

+

+proc TabCtrl_GetToolTips(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_GETTOOLTIPS, 0, 0)

+

+proc TabCtrl_SetToolTips(hwnd: HWND, hwndTT: int32): LRESULT =

+  result = SendMessage(hwnd, TCM_SETTOOLTIPS, WPARAM(hwndTT), 0)

+

+proc TabCtrl_GetCurFocus(hwnd: HWND): LRESULT =

+  result = SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0)

+

+proc TabCtrl_SetCurFocus(hwnd: HWND, i: int32): LRESULT =

+  result = SendMessage(hwnd, TCM_SETCURFOCUS, i, 0)

+

+proc SNDMSG(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT =

+  result = SendMessage(hWnd, Msg, wParam, lParam)

+

+proc CommDlg_OpenSave_GetSpecA(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))

+

+proc CommDlg_OpenSave_GetSpecW(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))

+

+when defined(winUnicode):

+  proc CommDlg_OpenSave_GetSpec(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =

+    result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))

+else:

+  proc CommDlg_OpenSave_GetSpec(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =

+    result = SNDMSG(hdlg, CDM_GETSPEC, WPARAM(cbmax), cast[LPARAM](psz))

+

+proc CommDlg_OpenSave_GetFilePathA(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))

+

+proc CommDlg_OpenSave_GetFilePathW(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))

+

+when defined(winUnicode):

+  proc CommDlg_OpenSave_GetFilePath(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =

+    result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))

+else:

+  proc CommDlg_OpenSave_GetFilePath(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =

+    result = SNDMSG(hdlg, CDM_GETFILEPATH, WPARAM(cbmax), cast[LPARAM](psz))

+

+proc CommDlg_OpenSave_GetFolderPathA(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM](psz))

+

+proc CommDlg_OpenSave_GetFolderPathW(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM](psz))

+

+when defined(winUnicode):

+  proc CommDlg_OpenSave_GetFolderPath(hdlg: HWND, psz: LPWSTR, cbmax: int32): LRESULT =

+    result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM]((psz)))

+else:

+  proc CommDlg_OpenSave_GetFolderPath(hdlg: HWND, psz: LPSTR, cbmax: int32): LRESULT =

+    result = SNDMSG(hdlg, CDM_GETFOLDERPATH, WPARAM(cbmax), cast[LPARAM](psz))

+

+proc CommDlg_OpenSave_GetFolderIDList(hdlg: HWND, pidl: LPVOID, cbmax: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_GETFOLDERIDLIST, WPARAM(cbmax), cast[LPARAM](pidl))

+

+proc CommDlg_OpenSave_SetControlText(hdlg: HWND, id: int32, text: LPSTR): LRESULT =

+  result = SNDMSG(hdlg, CDM_SETCONTROLTEXT, WPARAM(id), cast[LPARAM](text))

+

+proc CommDlg_OpenSave_HideControl(hdlg: HWND, id: int32): LRESULT =

+  result = SNDMSG(hdlg, CDM_HIDECONTROL, WPARAM(id), 0)

+

+proc CommDlg_OpenSave_SetDefExt(hdlg: HWND, pszext: LPSTR): LRESULT =

+  result = SNDMSG(hdlg, CDM_SETDEFEXT, 0, cast[LPARAM](pszext))

+

+proc InternalGetLargestConsoleWindowSize(hConsoleOutput: HANDLE): DWord{.

+    stdcall, dynlib: "kernel32", importc: "GetLargestConsoleWindowSize".}

+proc GetLargestConsoleWindowSize(hConsoleOutput: HANDLE): COORD =

+  var res: dword

+  res = InternalGetLargestConsoleWindowSize(hConsoleOutput)

+  result.y = toU16(res and 0x0000ffff) # XXX: correct?

+  result.x = toU16(res shr 16)

+

+proc Succeeded(Status: HRESULT): WINBOOL =

+  result = (Status and 0x80000000'i32)

+

+proc Failed(Status: HRESULT): WINBOOL =

+  result = (Status and 0x80000000'i32)

+

+proc IsError(Status: HRESULT): WINBOOL =

+  result = ord((int(Status) shr 31) == SEVERITY_ERROR)

+

+proc HResultCode(hr: HRESULT): int32 =

+  result = hr and 0x0000FFFF'i32

+

+proc HResultFacility(hr: HRESULT): int32 =

+  result = (hr shr 16'i32) and 0x00001FFF'i32

+

+proc HResultSeverity(hr: HRESULT): int32 =

+  result = (hr shr 31'i32) and 0x00000001'i32

+

+proc MakeResult(p1, p2, mask: int32): HRESULT =

+  result = (p1 shl 31'i32) or (p2 shl 16'i32) or mask

+

+proc HResultFromWin32(x: int32): HRESULT =

+  result = x

+  if result != 0'i32:

+    result = ((result and 0x0000FFFF'i32) or (int32(FACILITY_WIN32) shl 16'i32) or

+        0x80000000'i32)

+

+proc HResultFromNT(x: int32): HRESULT =

+  result = x or int32(FACILITY_NT_BIT)

+

+proc MAKELANGID(PrimaryLang, SubLang: USHORT): int16 =

+  result = (SubLang shl 10'i16) or PrimaryLang

+

+proc PRIMARYLANGID(LangId: int16): int16 =

+  result = LangId and 0x000003FF'i16

+

+proc SUBLANGID(LangId: int16): int16 =

+  result = LangId shr 10'i16

+

+proc MAKELCID(LangId, SortId: int16): DWORD =

+  result = toU32((ze(SortId) shl 16) or ze(LangId))

+

+proc MAKESORTLCID(LangId, SortId, SortVersion: int16): DWORD =

+  result = MAKELCID(LangId, SortId) or int(SortVersion shl 20'i32)

+

+proc LANGIDFROMLCID(LocaleId: LCID): int16 =

+  result = toU16(LocaleId)

+

+proc SORTIDFROMLCID(LocaleId: LCID): int16 =

+  result = toU16((DWORD(LocaleId) shr 16) and 0x0000000F)

+

+proc SORTVERSIONFROMLCID(LocaleId: LCID): int16 =

+  result = toU16((DWORD(LocaleId) shr 20) and 0x0000000F)

+

+proc LANG_SYSTEM_DEFAULT(): int16 =

+  result = toU16(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_SYS_DEFAULT))

+

+proc LANG_USER_DEFAULT(): int16 =

+  result = toU16(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_DEFAULT))

+

+proc LOCALE_NEUTRAL(): DWORD =

+  result = MAKELCID(MAKELANGID(toU16(LANG_NEUTRAL), SUBLANG_NEUTRAL), SORT_DEFAULT)

+

+proc LOCALE_INVARIANT(): DWORD =

+  result = MAKELCID(MAKELANGID(toU16(LANG_INVARIANT), SUBLANG_NEUTRAL), SORT_DEFAULT)

diff --git a/nimlib/pure/variants.nim b/nimlib/pure/variants.nim
index f661f81a6..40679c779 100755
--- a/nimlib/pure/variants.nim
+++ b/nimlib/pure/variants.nim
@@ -9,12 +9,12 @@
 
 ## This module implements Nimrod's support for the ``variant`` datatype.
 ## `TVariant` shows how the flexibility of dynamic typing is achieved
-## within a static type system. 
+## within a static type system.
 
 type
   TVarType* = enum
     vtNone,
-    vtBool, 
+    vtBool,
     vtChar,
     vtEnum,
     vtInt,
@@ -31,7 +31,7 @@ type
     of vtString: vstring: string
     of vtSet, vtSeq: q: seq[TVariant]
     of vtDict: d: seq[tuple[key, val: TVariant]]
-    
+
 iterator objectFields*[T](x: T, skipInherited: bool): tuple[
   key: string, val: TVariant] {.magic: "ObjectFields"}
 
@@ -74,10 +74,10 @@ proc `<>`* [T: object](x: T): TVariant {.magic: "ToVariant".}
 
 proc `><`*[T](v: TVariant, typ: T): T {.magic: "FromVariant".}
 
-[<>5, <>67, <>"hallo"]
+[<>5, <>67, <>"hello"]
 myVar><int
 
-  
+
 proc `==`* (x, y: TVariant): bool =
   if x.vtype == y.vtype:
     case x.vtype
@@ -139,7 +139,7 @@ proc `[]=`* (a, b, c: TVariant) =
       a.d[b.vint].val = c
     variantError()
   else: variantError()
-  
+
 proc `[]`* (a: TVariant, b: int): TVariant {.inline} = return a[<>b]
 proc `[]`* (a: TVariant, b: string): TVariant {.inline} = return a[<>b]
 proc `[]=`* (a: TVariant, b: int, c: TVariant) {.inline} = a[<>b] = c
@@ -154,9 +154,9 @@ proc `+`* (x, y: TVariant): TVariant =
     else:
       case y.vtype
       of vtBool, vtChar, vtEnum, vtInt:
-        
-    
-    
+
+
+
     vint: int64
   of vtFloat: vfloat: float64
   of vtString: vstring: string
@@ -171,11 +171,11 @@ proc `mod`* (x, y: TVariant): TVariant
 proc `&`* (x, y: TVariant): TVariant
 proc `$`* (x: TVariant): string =
   # uses JS notation
-  
+
 proc parseVariant*(s: string): TVariant
 proc `<`* (x, y: TVariant): bool
 proc `<=`* (x, y: TVariant): bool
 
 proc hash*(x: TVariant): int =
-  
+
 
diff --git a/nimlib/system/sysstr.nim b/nimlib/system/sysstr.nim
index 808941c06..20a49093b 100755
--- a/nimlib/system/sysstr.nim
+++ b/nimlib/system/sysstr.nim
@@ -104,7 +104,7 @@ proc addChar(s: NimString, c: char): NimString {.compilerProc.} =
 
 # These routines should be used like following:
 #   <Nimrod code>
-#   s &= "hallo " & name & " how do you feel?"
+#   s &= "Hello " & name & ", how do you feel?"
 #
 #   <generated C code>
 #   {
@@ -115,7 +115,7 @@ proc addChar(s: NimString, c: char): NimString {.compilerProc.} =
 #   }
 #
 #   <Nimrod code>
-#   s = "hallo " & name & " how do you feel?"
+#   s = "Hello " & name & ", how do you feel?"
 #
 #   <generated C code>
 #   {
@@ -180,8 +180,8 @@ proc incrSeq(seq: PGenericSeq, elemSize: int): PGenericSeq {.compilerProc.} =
       result = cast[PGenericSeq](newSeq(extGetCellType(seq), s))
       genericSeqAssign(result, seq, XXX)
       #copyMem(result, seq, seq.len * elemSize + GenericSeqSize)
-    inc(result.len)  
-  else:  
+    inc(result.len)
+  else:
     result = seq
     if result.len >= result.space:
       result.space = resize(result.space)
@@ -214,7 +214,7 @@ proc setLengthSeq(seq: PGenericSeq, elemSize, newLen: int): PGenericSeq {.
       # we need to decref here, otherwise the GC leaks!
       when not defined(boehmGC) and not defined(nogc):
         for i in newLen..result.len-1:
-          forAllChildrenAux(cast[pointer](cast[TAddress](result) +% 
+          forAllChildrenAux(cast[pointer](cast[TAddress](result) +%
                             GenericSeqSize +% (i*%elemSize)),
                             extGetCellType(result).base, waZctDecRef)
       # and set the memory to nil:
diff --git a/rod/ccgexprs.nim b/rod/ccgexprs.nim
index 2fbaf2d4a..1e39508d9 100755
--- a/rod/ccgexprs.nim
+++ b/rod/ccgexprs.nim
@@ -9,177 +9,177 @@
 
 # -------------------------- constant expressions ------------------------
 
-proc intLiteral(i: biggestInt): PRope = 
-  if (i > low(int32)) and (i <= high(int32)): 
+proc intLiteral(i: biggestInt): PRope =
+  if (i > low(int32)) and (i <= high(int32)):
     result = toRope(i)
   elif i == low(int32):       # Nimrod has the same bug for the same reasons :-)
     result = toRope("(-2147483647 -1)")
-  elif i > low(int64): 
+  elif i > low(int64):
     result = ropef("IL64($1)", [toRope(i)])
-  else: 
+  else:
     result = toRope("(IL64(-9223372036854775807) - IL64(1))")
-  
-proc int32Literal(i: Int): PRope = 
-  if i == int(low(int32)): 
+
+proc int32Literal(i: Int): PRope =
+  if i == int(low(int32)):
     result = toRope("(-2147483647 -1)")
-  else: 
+  else:
     result = toRope(i)
-  
-proc genHexLiteral(v: PNode): PRope = 
+
+proc genHexLiteral(v: PNode): PRope =
   # hex literals are unsigned in C
   # so we don't generate hex literals any longer.
-  if not (v.kind in {nkIntLit..nkInt64Lit}): 
+  if not (v.kind in {nkIntLit..nkInt64Lit}):
     internalError(v.info, "genHexLiteral")
   result = intLiteral(v.intVal)
 
-proc getStrLit(m: BModule, s: string): PRope = 
+proc getStrLit(m: BModule, s: string): PRope =
   useMagic(m, "TGenericSeq")
   result = con("TMP", toRope(getID()))
-  appf(m.s[cfsData], "STRING_LITERAL($1, $2, $3);$n", 
+  appf(m.s[cfsData], "STRING_LITERAL($1, $2, $3);$n",
        [result, makeCString(s), ToRope(len(s))])
 
-proc genLiteral(p: BProc, v: PNode, ty: PType): PRope = 
+proc genLiteral(p: BProc, v: PNode, ty: PType): PRope =
   if ty == nil: internalError(v.info, "genLiteral: ty is nil")
   case v.kind
-  of nkCharLit..nkInt64Lit: 
+  of nkCharLit..nkInt64Lit:
     case skipTypes(ty, abstractVarRange).kind
-    of tyChar, tyInt64, tyNil: 
+    of tyChar, tyInt64, tyNil:
       result = intLiteral(v.intVal)
-    of tyInt8: 
+    of tyInt8:
       result = ropef("((NI8) $1)", [intLiteral(biggestInt(int8(v.intVal)))])
-    of tyInt16: 
+    of tyInt16:
       result = ropef("((NI16) $1)", [intLiteral(biggestInt(int16(v.intVal)))])
-    of tyInt32: 
+    of tyInt32:
       result = ropef("((NI32) $1)", [intLiteral(biggestInt(int32(v.intVal)))])
-    of tyInt: 
-      if (v.intVal >= low(int32)) and (v.intVal <= high(int32)): 
+    of tyInt:
+      if (v.intVal >= low(int32)) and (v.intVal <= high(int32)):
         result = int32Literal(int32(v.intVal))
-      else: 
+      else:
         result = intLiteral(v.intVal)
-    of tyBool: 
+    of tyBool:
       if v.intVal != 0: result = toRope("NIM_TRUE")
       else: result = toRope("NIM_FALSE")
-    else: 
-      result = ropef("(($1) $2)", [getTypeDesc(p.module, 
+    else:
+      result = ropef("(($1) $2)", [getTypeDesc(p.module,
           skipTypes(ty, abstractVarRange)), intLiteral(v.intVal)])
-  of nkNilLit: 
+  of nkNilLit:
     result = toRope("NIM_NIL")
-  of nkStrLit..nkTripleStrLit: 
-    if skipTypes(ty, abstractVarRange).kind == tyString: 
+  of nkStrLit..nkTripleStrLit:
+    if skipTypes(ty, abstractVarRange).kind == tyString:
       var id = NodeTableTestOrSet(p.module.dataCache, v, gid)
-      if id == gid: 
+      if id == gid:
         # string literal not found in the cache:
         useMagic(p.module, "NimStringDesc")
         result = ropef("((NimStringDesc*) &$1)", [getStrLit(p.module, v.strVal)])
-      else: 
+      else:
         result = ropef("((NimStringDesc*) &TMP$1)", [toRope(id)])
-    else: 
+    else:
       result = makeCString(v.strVal)
-  of nkFloatLit..nkFloat64Lit: 
+  of nkFloatLit..nkFloat64Lit:
     var f = v.floatVal
-    if f != f: 
+    if f != f:
       result = toRope("NAN")
-    elif f == 0.0: 
+    elif f == 0.0:
       result = toRopeF(f)
-    elif f == 0.5 * f: 
+    elif f == 0.5 * f:
       if f > 0.0: result = toRope("INF")
       else: result = toRope("-INF")
-    else: 
+    else:
       result = toRopeF(f)
-  else: 
+  else:
     InternalError(v.info, "genLiteral(" & $v.kind & ')')
     result = nil
 
-proc genLiteral(p: BProc, v: PNode): PRope = 
+proc genLiteral(p: BProc, v: PNode): PRope =
   result = genLiteral(p, v, v.typ)
 
-proc bitSetToWord(s: TBitSet, size: int): BiggestInt = 
+proc bitSetToWord(s: TBitSet, size: int): BiggestInt =
   result = 0
-  if CPU[platform.hostCPU].endian == CPU[targetCPU].endian: 
-    for j in countup(0, size - 1): 
+  if CPU[platform.hostCPU].endian == CPU[targetCPU].endian:
+    for j in countup(0, size - 1):
       if j < len(s): result = result or `shl`(Ze64(s[j]), j * 8)
-  else: 
-    for j in countup(0, size - 1): 
+  else:
+    for j in countup(0, size - 1):
       if j < len(s): result = result or `shl`(Ze64(s[j]), (Size - 1 - j) * 8)
-  
-proc genRawSetData(cs: TBitSet, size: int): PRope = 
+
+proc genRawSetData(cs: TBitSet, size: int): PRope =
   var frmt: TFormatStr
-  if size > 8: 
+  if size > 8:
     result = toRope('{' & tnl)
-    for i in countup(0, size - 1): 
-      if i < size - 1: 
+    for i in countup(0, size - 1):
+      if i < size - 1:
         # not last iteration?
         if (i + 1) mod 8 == 0: frmt = "0x$1,$n"
         else: frmt = "0x$1, "
-      else: 
+      else:
         frmt = "0x$1}$n"
       appf(result, frmt, [toRope(toHex(Ze64(cs[i]), 2))])
-  else: 
+  else:
     result = intLiteral(bitSetToWord(cs, size))
     #  result := toRope('0x' + ToHex(bitSetToWord(cs, size), size * 2))
-  
-proc genSetNode(p: BProc, n: PNode): PRope = 
-  var 
+
+proc genSetNode(p: BProc, n: PNode): PRope =
+  var
     cs: TBitSet
     size, id: int
   size = int(getSize(n.typ))
   toBitSet(n, cs)
-  if size > 8: 
+  if size > 8:
     id = NodeTableTestOrSet(p.module.dataCache, n, gid)
     result = con("TMP", toRope(id))
-    if id == gid: 
+    if id == gid:
       # not found in cache:
       inc(gid)
-      appf(p.module.s[cfsData], "static NIM_CONST $1 $2 = $3;", 
+      appf(p.module.s[cfsData], "static NIM_CONST $1 $2 = $3;",
            [getTypeDesc(p.module, n.typ), result, genRawSetData(cs, size)])
-  else: 
+  else:
     result = genRawSetData(cs, size)
-  
-proc getStorageLoc(n: PNode): TStorageLoc = 
+
+proc getStorageLoc(n: PNode): TStorageLoc =
   case n.kind
-  of nkSym: 
+  of nkSym:
     case n.sym.kind
-    of skParam, skForVar, skTemp: 
+    of skParam, skForVar, skTemp:
       result = OnStack
-    of skVar: 
+    of skVar:
       if sfGlobal in n.sym.flags: result = OnHeap
       else: result = OnStack
     else: result = OnUnknown
-  of nkDerefExpr, nkHiddenDeref: 
+  of nkDerefExpr, nkHiddenDeref:
     case n.sons[0].typ.kind
     of tyVar: result = OnUnknown
     of tyPtr: result = OnStack
     of tyRef: result = OnHeap
     else: InternalError(n.info, "getStorageLoc")
-  of nkBracketExpr, nkDotExpr, nkObjDownConv, nkObjUpConv: 
+  of nkBracketExpr, nkDotExpr, nkObjDownConv, nkObjUpConv:
     result = getStorageLoc(n.sons[0])
   else: result = OnUnknown
-  
-proc rdLoc(a: TLoc): PRope = 
+
+proc rdLoc(a: TLoc): PRope =
   # 'read' location (deref if indirect)
   result = a.r
   if lfIndirect in a.flags: result = ropef("(*$1)", [result])
-  
-proc addrLoc(a: TLoc): PRope = 
+
+proc addrLoc(a: TLoc): PRope =
   result = a.r
   if not (lfIndirect in a.flags): result = con("&", result)
-  
-proc rdCharLoc(a: TLoc): PRope = 
+
+proc rdCharLoc(a: TLoc): PRope =
   # read a location that may need a char-cast:
   result = rdLoc(a)
-  if skipTypes(a.t, abstractRange).kind == tyChar: 
+  if skipTypes(a.t, abstractRange).kind == tyChar:
     result = ropef("((NU8)($1))", [result])
-  
-type 
-  TAssignmentFlag = enum 
-    needToCopy, needForSubtypeCheck, afDestIsNil, afDestIsNotNil, afSrcIsNil, 
+
+type
+  TAssignmentFlag = enum
+    needToCopy, needForSubtypeCheck, afDestIsNil, afDestIsNotNil, afSrcIsNil,
     afSrcIsNotNil
   TAssignmentFlags = set[TAssignmentFlag]
 
-proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = 
-  if (dest.s == OnStack) or not (optRefcGC in gGlobalOptions): 
+proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
+  if (dest.s == OnStack) or not (optRefcGC in gGlobalOptions):
     appf(p.s[cpsStmts], "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
-  elif dest.s == OnHeap: 
+  elif dest.s == OnHeap:
     # location is on heap
     # now the writer barrier is inlined for performance:
     #
@@ -199,121 +199,121 @@ proc genRefAssign(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
     #      UseMagic(p.module, 'nimGCunref');
     #      appf(p.s[cpsStmts], 'if ($1) nimGCunref($1);$n', [rdLoc(dest)]);
     #    end;
-    #    appf(p.s[cpsStmts], '$1 = $2;$n', [rdLoc(dest), rdLoc(src)]); 
-    if canFormAcycle(dest.t): 
+    #    appf(p.s[cpsStmts], '$1 = $2;$n', [rdLoc(dest), rdLoc(src)]);
+    if canFormAcycle(dest.t):
       UseMagic(p.module, "asgnRef")
-      appf(p.s[cpsStmts], "asgnRef((void**) $1, $2);$n", 
+      appf(p.s[cpsStmts], "asgnRef((void**) $1, $2);$n",
            [addrLoc(dest), rdLoc(src)])
-    else: 
+    else:
       UseMagic(p.module, "asgnRefNoCycle")
-      appf(p.s[cpsStmts], "asgnRefNoCycle((void**) $1, $2);$n", 
+      appf(p.s[cpsStmts], "asgnRefNoCycle((void**) $1, $2);$n",
            [addrLoc(dest), rdLoc(src)])
-  else: 
+  else:
     UseMagic(p.module, "unsureAsgnRef")
-    appf(p.s[cpsStmts], "unsureAsgnRef((void**) $1, $2);$n", 
+    appf(p.s[cpsStmts], "unsureAsgnRef((void**) $1, $2);$n",
          [addrLoc(dest), rdLoc(src)])
 
-proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) = 
+proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
   # This function replaces all other methods for generating
   # the assignment operation in C.
   var ty = skipTypes(dest.t, abstractVarRange)
   case ty.kind
-  of tyRef: 
+  of tyRef:
     genRefAssign(p, dest, src, flags)
-  of tySequence: 
-    if not (needToCopy in flags): 
+  of tySequence:
+    if not (needToCopy in flags):
       genRefAssign(p, dest, src, flags)
-    else: 
+    else:
       useMagic(p.module, "genericSeqAssign") # BUGFIX
-      appf(p.s[cpsStmts], "genericSeqAssign($1, $2, $3);$n", 
+      appf(p.s[cpsStmts], "genericSeqAssign($1, $2, $3);$n",
            [addrLoc(dest), rdLoc(src), genTypeInfo(p.module, dest.t)])
-  of tyString: 
-    if not (needToCopy in flags): 
+  of tyString:
+    if not (needToCopy in flags):
       genRefAssign(p, dest, src, flags)
-    else: 
+    else:
       useMagic(p.module, "copyString")
-      if (dest.s == OnStack) or not (optRefcGC in gGlobalOptions): 
+      if (dest.s == OnStack) or not (optRefcGC in gGlobalOptions):
         appf(p.s[cpsStmts], "$1 = copyString($2);$n", [rdLoc(dest), rdLoc(src)])
-      elif dest.s == OnHeap: 
+      elif dest.s == OnHeap:
         useMagic(p.module, "asgnRefNoCycle")
         useMagic(p.module, "copyString") # BUGFIX
-        appf(p.s[cpsStmts], "asgnRefNoCycle((void**) $1, copyString($2));$n", 
+        appf(p.s[cpsStmts], "asgnRefNoCycle((void**) $1, copyString($2));$n",
              [addrLoc(dest), rdLoc(src)])
-      else: 
+      else:
         useMagic(p.module, "unsureAsgnRef")
         useMagic(p.module, "copyString") # BUGFIX
-        appf(p.s[cpsStmts], "unsureAsgnRef((void**) $1, copyString($2));$n", 
+        appf(p.s[cpsStmts], "unsureAsgnRef((void**) $1, copyString($2));$n",
              [addrLoc(dest), rdLoc(src)])
-  of tyTuple: 
-    if needsComplexAssignment(dest.t): 
+  of tyTuple:
+    if needsComplexAssignment(dest.t):
       useMagic(p.module, "genericAssign")
-      appf(p.s[cpsStmts], "genericAssign((void*)$1, (void*)$2, $3);$n", 
+      appf(p.s[cpsStmts], "genericAssign((void*)$1, (void*)$2, $3);$n",
            [addrLoc(dest), addrLoc(src), genTypeInfo(p.module, dest.t)])
-    else: 
+    else:
       appf(p.s[cpsStmts], "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
-  of tyArray, tyArrayConstr: 
-    if needsComplexAssignment(dest.t): 
+  of tyArray, tyArrayConstr:
+    if needsComplexAssignment(dest.t):
       useMagic(p.module, "genericAssign")
-      appf(p.s[cpsStmts], "genericAssign((void*)$1, (void*)$2, $3);$n", 
+      appf(p.s[cpsStmts], "genericAssign((void*)$1, (void*)$2, $3);$n",
            [addrLoc(dest), addrLoc(src), genTypeInfo(p.module, dest.t)])
-    else: 
-      appf(p.s[cpsStmts], 
-           "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1));$n", 
+    else:
+      appf(p.s[cpsStmts],
+           "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1));$n",
            [rdLoc(dest), rdLoc(src)])
   of tyObject:                # XXX: check for subtyping?
-    if needsComplexAssignment(dest.t): 
+    if needsComplexAssignment(dest.t):
       useMagic(p.module, "genericAssign")
-      appf(p.s[cpsStmts], "genericAssign((void*)$1, (void*)$2, $3);$n", 
+      appf(p.s[cpsStmts], "genericAssign((void*)$1, (void*)$2, $3);$n",
            [addrLoc(dest), addrLoc(src), genTypeInfo(p.module, dest.t)])
-    else: 
+    else:
       appf(p.s[cpsStmts], "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
-  of tyOpenArray: 
+  of tyOpenArray:
     # open arrays are always on the stack - really? What if a sequence is
     # passed to an open array?
-    if needsComplexAssignment(dest.t): 
+    if needsComplexAssignment(dest.t):
       useMagic(p.module, "genericAssignOpenArray")
       appf(p.s[cpsStmts],     # XXX: is this correct for arrays?
-           "genericAssignOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n", 
+           "genericAssignOpenArray((void*)$1, (void*)$2, $1Len0, $3);$n",
            [addrLoc(dest), addrLoc(src), genTypeInfo(p.module, dest.t)])
-    else: 
-      appf(p.s[cpsStmts], 
-           "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1[0])*$1Len0);$n", 
+    else:
+      appf(p.s[cpsStmts],
+           "memcpy((void*)$1, (NIM_CONST void*)$2, sizeof($1[0])*$1Len0);$n",
            [rdLoc(dest), rdLoc(src)])
-  of tySet: 
-    if mapType(ty) == ctArray: 
-      appf(p.s[cpsStmts], "memcpy((void*)$1, (NIM_CONST void*)$2, $3);$n", 
+  of tySet:
+    if mapType(ty) == ctArray:
+      appf(p.s[cpsStmts], "memcpy((void*)$1, (NIM_CONST void*)$2, $3);$n",
            [rdLoc(dest), rdLoc(src), toRope(getSize(dest.t))])
-    else: 
+    else:
       appf(p.s[cpsStmts], "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
-  of tyPtr, tyPointer, tyChar, tyBool, tyProc, tyEnum, tyCString, 
-     tyInt..tyFloat128, tyRange: 
+  of tyPtr, tyPointer, tyChar, tyBool, tyProc, tyEnum, tyCString,
+     tyInt..tyFloat128, tyRange:
     appf(p.s[cpsStmts], "$1 = $2;$n", [rdLoc(dest), rdLoc(src)])
   else: InternalError("genAssignment(" & $ty.kind & ')')
-  
+
 proc expr(p: BProc, e: PNode, d: var TLoc)
-proc initLocExpr(p: BProc, e: PNode, result: var TLoc) = 
+proc initLocExpr(p: BProc, e: PNode, result: var TLoc) =
   initLoc(result, locNone, getUniqueType(e.typ), OnUnknown)
   expr(p, e, result)
 
-proc getDestLoc(p: BProc, d: var TLoc, typ: PType) = 
+proc getDestLoc(p: BProc, d: var TLoc, typ: PType) =
   if d.k == locNone: getTemp(p, typ, d)
-  
-proc putLocIntoDest(p: BProc, d: var TLoc, s: TLoc) = 
-  if d.k != locNone: 
+
+proc putLocIntoDest(p: BProc, d: var TLoc, s: TLoc) =
+  if d.k != locNone:
     if lfNoDeepCopy in d.flags: genAssignment(p, d, s, {})
     else: genAssignment(p, d, s, {needToCopy})
-  else: 
+  else:
     d = s                     # ``d`` is free, so fill it with ``s``
-  
-proc putIntoDest(p: BProc, d: var TLoc, t: PType, r: PRope) = 
+
+proc putIntoDest(p: BProc, d: var TLoc, t: PType, r: PRope) =
   var a: TLoc
-  if d.k != locNone: 
+  if d.k != locNone:
     # need to generate an assignment here
     initLoc(a, locExpr, getUniqueType(t), OnUnknown)
     a.r = r
     if lfNoDeepCopy in d.flags: genAssignment(p, d, a, {})
     else: genAssignment(p, d, a, {needToCopy})
-  else: 
+  else:
     # we cannot call initLoc() here as that would overwrite
     # the flags field!
     d.k = locExpr
@@ -321,7 +321,7 @@ proc putIntoDest(p: BProc, d: var TLoc, t: PType, r: PRope) =
     d.r = r
     d.a = - 1
 
-proc binaryStmt(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc binaryStmt(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a, b: TLoc
   if (d.k != locNone): InternalError(e.info, "binaryStmt")
   if magic != "": useMagic(p.module, magic)
@@ -329,14 +329,14 @@ proc binaryStmt(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   InitLocExpr(p, e.sons[2], b)
   appf(p.s[cpsStmts], frmt, [rdLoc(a), rdLoc(b)])
 
-proc unaryStmt(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc unaryStmt(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a: TLoc
   if (d.k != locNone): InternalError(e.info, "unaryStmt")
   if magic != "": useMagic(p.module, magic)
   InitLocExpr(p, e.sons[1], a)
   appf(p.s[cpsStmts], frmt, [rdLoc(a)])
 
-proc binaryStmtChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc binaryStmtChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a, b: TLoc
   if (d.k != locNone): InternalError(e.info, "binaryStmtChar")
   if magic != "": useMagic(p.module, magic)
@@ -344,7 +344,7 @@ proc binaryStmtChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   InitLocExpr(p, e.sons[2], b)
   appf(p.s[cpsStmts], frmt, [rdCharLoc(a), rdCharLoc(b)])
 
-proc binaryExpr(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc binaryExpr(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a, b: TLoc
   if magic != "": useMagic(p.module, magic)
   assert(e.sons[1].typ != nil)
@@ -353,7 +353,7 @@ proc binaryExpr(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   InitLocExpr(p, e.sons[2], b)
   putIntoDest(p, d, e.typ, ropef(frmt, [rdLoc(a), rdLoc(b)]))
 
-proc binaryExprChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc binaryExprChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a, b: TLoc
   if magic != "": useMagic(p.module, magic)
   assert(e.sons[1].typ != nil)
@@ -362,24 +362,24 @@ proc binaryExprChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   InitLocExpr(p, e.sons[2], b)
   putIntoDest(p, d, e.typ, ropef(frmt, [rdCharLoc(a), rdCharLoc(b)]))
 
-proc unaryExpr(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc unaryExpr(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a: TLoc
   if magic != "": useMagic(p.module, magic)
   InitLocExpr(p, e.sons[1], a)
   putIntoDest(p, d, e.typ, ropef(frmt, [rdLoc(a)]))
 
-proc unaryExprChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) = 
+proc unaryExprChar(p: BProc, e: PNode, d: var TLoc, magic, frmt: string) =
   var a: TLoc
   if magic != "": useMagic(p.module, magic)
   InitLocExpr(p, e.sons[1], a)
   putIntoDest(p, d, e.typ, ropef(frmt, [rdCharLoc(a)]))
 
-proc binaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) = 
-  const 
-    prc: array[mAddi..mModi64, string] = ["addInt", "subInt", "mulInt", 
-      "divInt", "modInt", "addInt64", "subInt64", "mulInt64", "divInt64", 
+proc binaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
+  const
+    prc: array[mAddi..mModi64, string] = ["addInt", "subInt", "mulInt",
+      "divInt", "modInt", "addInt64", "subInt64", "mulInt64", "divInt64",
       "modInt64"]
-    opr: array[mAddi..mModi64, string] = ["+", "-", "*", "/", "%", "+", "-", 
+    opr: array[mAddi..mModi64, string] = ["+", "-", "*", "/", "%", "+", "-",
       "*", "/", "%"]
   var a, b: TLoc
   assert(e.sons[1].typ != nil)
@@ -387,51 +387,51 @@ proc binaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
   InitLocExpr(p, e.sons[1], a)
   InitLocExpr(p, e.sons[2], b)
   var t = skipTypes(e.typ, abstractRange)
-  if getSize(t) >= platform.IntSize: 
-    if optOverflowCheck in p.options: 
+  if getSize(t) >= platform.IntSize:
+    if optOverflowCheck in p.options:
       useMagic(p.module, prc[m])
-      putIntoDest(p, d, e.typ, 
+      putIntoDest(p, d, e.typ,
                   ropef("$1($2, $3)", [toRope(prc[m]), rdLoc(a), rdLoc(b)]))
-    else: 
-      putIntoDest(p, d, e.typ, ropef("(NI$4)($2 $1 $3)", [toRope(opr[m]), 
+    else:
+      putIntoDest(p, d, e.typ, ropef("(NI$4)($2 $1 $3)", [toRope(opr[m]),
           rdLoc(a), rdLoc(b), toRope(getSize(t) * 8)]))
-  else: 
-    if optOverflowCheck in p.options: 
+  else:
+    if optOverflowCheck in p.options:
       useMagic(p.module, "raiseOverflow")
-      if (m == mModI) or (m == mDivI): 
+      if (m == mModI) or (m == mDivI):
         useMagic(p.module, "raiseDivByZero")
         appf(p.s[cpsStmts], "if (!$1) raiseDivByZero();$n", [rdLoc(b)])
       a.r = ropef("((NI)($2) $1 (NI)($3))", [toRope(opr[m]), rdLoc(a), rdLoc(b)])
       if d.k == locNone: getTemp(p, getSysType(tyInt), d)
       genAssignment(p, d, a, {})
-      appf(p.s[cpsStmts], "if ($1 < $2 || $1 > $3) raiseOverflow();$n", 
+      appf(p.s[cpsStmts], "if ($1 < $2 || $1 > $3) raiseOverflow();$n",
            [rdLoc(d), intLiteral(firstOrd(t)), intLiteral(lastOrd(t))])
       d.t = e.typ
       d.r = ropef("(NI$1)($2)", [toRope(getSize(t) * 8), rdLoc(d)])
-    else: 
-      putIntoDest(p, d, e.typ, ropef("(NI$4)($2 $1 $3)", [toRope(opr[m]), 
+    else:
+      putIntoDest(p, d, e.typ, ropef("(NI$4)($2 $1 $3)", [toRope(opr[m]),
           rdLoc(a), rdLoc(b), toRope(getSize(t) * 8)]))
-  
-proc unaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) = 
-  const 
+
+proc unaryArithOverflow(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
+  const
     opr: array[mUnaryMinusI..mAbsI64, string] = ["((NI$2)-($1))", # UnaryMinusI
       "-($1)",                # UnaryMinusI64
       "(NI$2)abs($1)",        # AbsI
       "($1 > 0? ($1) : -($1))"] # AbsI64
-  var 
+  var
     a: TLoc
     t: PType
   assert(e.sons[1].typ != nil)
   InitLocExpr(p, e.sons[1], a)
   t = skipTypes(e.typ, abstractRange)
-  if optOverflowCheck in p.options: 
+  if optOverflowCheck in p.options:
     useMagic(p.module, "raiseOverflow")
-    appf(p.s[cpsStmts], "if ($1 == $2) raiseOverflow();$n", 
+    appf(p.s[cpsStmts], "if ($1 == $2) raiseOverflow();$n",
          [rdLoc(a), intLiteral(firstOrd(t))])
   putIntoDest(p, d, e.typ, ropef(opr[m], [rdLoc(a), toRope(getSize(t) * 8)]))
 
-proc binaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) = 
-  const 
+proc binaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
+  const
     binArithTab: array[mAddF64..mXor, string] = [
       "($1 + $2)",            # AddF64
       "($1 - $2)",            # SubF64
@@ -492,7 +492,7 @@ proc binaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
       "($1 < $2)",            # LtPtr
       "($1 == $2)",           # EqCString
       "($1 != $2)"]           # Xor
-  var 
+  var
     a, b: TLoc
     s: biggestInt
   assert(e.sons[1].typ != nil)
@@ -501,11 +501,11 @@ proc binaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
   InitLocExpr(p, e.sons[2], b)
   # BUGFIX: cannot use result-type here, as it may be a boolean
   s = max(getSize(a.t), getSize(b.t)) * 8
-  putIntoDest(p, d, e.typ, 
+  putIntoDest(p, d, e.typ,
               ropef(binArithTab[op], [rdLoc(a), rdLoc(b), toRope(s)]))
 
-proc unaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) = 
-  const 
+proc unaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
+  const
     unArithTab: array[mNot..mToBiggestInt, string] = ["!($1)", # Not
       "$1",                   # UnaryPlusI
       "(NI$2)((NU$2) ~($1))", # BitnotI
@@ -513,7 +513,7 @@ proc unaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
       "~($1)",                # BitnotI64
       "$1",                   # UnaryPlusF64
       "-($1)",                # UnaryMinusF64
-      "($1 > 0? ($1) : -($1))", # AbsF64; BUGFIX: fabs() makes problems 
+      "($1 > 0? ($1) : -($1))", # AbsF64; BUGFIX: fabs() makes problems
                                 # for Tiny C, so we don't use it
       "((NI)(NU)(NU8)($1))",  # mZe8ToI
       "((NI64)(NU64)(NU8)($1))", # mZe8ToI64
@@ -528,63 +528,63 @@ proc unaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
       "((double) ($1))",      # ToBiggestFloat
       "float64ToInt32($1)",   # ToInt XXX: this is not correct!
       "float64ToInt64($1)"]   # ToBiggestInt
-  var 
+  var
     a: TLoc
     t: PType
   assert(e.sons[1].typ != nil)
   InitLocExpr(p, e.sons[1], a)
   t = skipTypes(e.typ, abstractRange)
-  putIntoDest(p, d, e.typ, 
+  putIntoDest(p, d, e.typ,
               ropef(unArithTab[op], [rdLoc(a), toRope(getSize(t) * 8)]))
 
-proc genDeref(p: BProc, e: PNode, d: var TLoc) = 
+proc genDeref(p: BProc, e: PNode, d: var TLoc) =
   var a: TLoc
-  if mapType(e.sons[0].typ) == ctArray: 
+  if mapType(e.sons[0].typ) == ctArray:
     expr(p, e.sons[0], d)
-  else: 
+  else:
     initLocExpr(p, e.sons[0], a)
     case skipTypes(a.t, abstractInst).kind
-    of tyRef: 
+    of tyRef:
       d.s = OnHeap
-    of tyVar: 
+    of tyVar:
       d.s = OnUnknown
-    of tyPtr: 
+    of tyPtr:
       d.s = OnUnknown         # BUGFIX!
     else: InternalError(e.info, "genDeref " & $a.t.kind)
     putIntoDest(p, d, a.t.sons[0], ropef("(*$1)", [rdLoc(a)]))
 
-proc genAddr(p: BProc, e: PNode, d: var TLoc) = 
+proc genAddr(p: BProc, e: PNode, d: var TLoc) =
   var a: TLoc
-  if mapType(e.sons[0].typ) == ctArray: 
+  if mapType(e.sons[0].typ) == ctArray:
     expr(p, e.sons[0], d)
-  else: 
+  else:
     InitLocExpr(p, e.sons[0], a)
     putIntoDest(p, d, e.typ, addrLoc(a))
 
-proc genRecordFieldAux(p: BProc, e: PNode, d, a: var TLoc): PType = 
+proc genRecordFieldAux(p: BProc, e: PNode, d, a: var TLoc): PType =
   initLocExpr(p, e.sons[0], a)
   if (e.sons[1].kind != nkSym): InternalError(e.info, "genRecordFieldAux")
   if d.k == locNone: d.s = a.s
   discard getTypeDesc(p.module, a.t) # fill the record's fields.loc
   result = getUniqueType(a.t)
 
-proc genRecordField(p: BProc, e: PNode, d: var TLoc) = 
+proc genRecordField(p: BProc, e: PNode, d: var TLoc) =
   var a: TLoc
-  var ty = genRecordFieldAux(p, e, d, a)  
+  var ty = genRecordFieldAux(p, e, d, a)
   var r = rdLoc(a)
   var f = e.sons[1].sym
-  if ty.n == nil:  
+  if ty.n == nil:
     # we found a unique tuple type which lacks field information
     # so we use Field$i
     appf(r, ".Field$1", [toRope(f.position)])
-    putIntoDest(p, d, f.typ, r)    
+    putIntoDest(p, d, f.typ, r)
   else:
     var field: PSym = nil
-    while ty != nil: 
-      if not (ty.kind in {tyTuple, tyObject}): 
+    while ty != nil:
+      if not (ty.kind in {tyTuple, tyObject}):
         InternalError(e.info, "genRecordField")
       field = lookupInRecord(ty.n, f.name)
-      if field != nil: break 
+      if field != nil: break
       if gCmd != cmdCompileToCpp: app(r, ".Sup")
       ty = GetUniqueType(ty.sons[0])
     if field == nil: InternalError(e.info, "genRecordField")
@@ -592,8 +592,8 @@ proc genRecordField(p: BProc, e: PNode, d: var TLoc) =
     appf(r, ".$1", [field.loc.r])
     putIntoDest(p, d, field.typ, r)
 
-proc genTupleElem(p: BProc, e: PNode, d: var TLoc) = 
-  var 
+proc genTupleElem(p: BProc, e: PNode, d: var TLoc) =
+  var
     a: TLoc
     i: int
   initLocExpr(p, e.sons[0], a)
@@ -604,41 +604,41 @@ proc genTupleElem(p: BProc, e: PNode, d: var TLoc) =
   case e.sons[1].kind
   of nkIntLit..nkInt64Lit: i = int(e.sons[1].intVal)
   else: internalError(e.info, "genTupleElem")
-  if ty.n != nil: 
+  if ty.n != nil:
     var field = ty.n.sons[i].sym
     if field == nil: InternalError(e.info, "genTupleElem")
     if field.loc.r == nil: InternalError(e.info, "genTupleElem")
     appf(r, ".$1", [field.loc.r])
-  else: 
+  else:
     appf(r, ".Field$1", [toRope(i)])
   putIntoDest(p, d, ty.sons[i], r)
 
 proc genInExprAux(p: BProc, e: PNode, a, b, d: var TLoc)
-proc genCheckedRecordField(p: BProc, e: PNode, d: var TLoc) = 
-  var 
+proc genCheckedRecordField(p: BProc, e: PNode, d: var TLoc) =
+  var
     a, u, v, test: TLoc
     f, field, op: PSym
     ty: PType
     r, strLit: PRope
     id: int
     it: PNode
-  if optFieldCheck in p.options: 
+  if optFieldCheck in p.options:
     useMagic(p.module, "raiseFieldError")
     useMagic(p.module, "NimStringDesc")
     ty = genRecordFieldAux(p, e.sons[0], d, a)
     r = rdLoc(a)
     f = e.sons[0].sons[1].sym
     field = nil
-    while ty != nil: 
+    while ty != nil:
       assert(ty.kind in {tyTuple, tyObject})
       field = lookupInRecord(ty.n, f.name)
-      if field != nil: break 
+      if field != nil: break
       if gCmd != cmdCompileToCpp: app(r, ".Sup")
       ty = getUniqueType(ty.sons[0])
     if field == nil: InternalError(e.info, "genCheckedRecordField")
-    if field.loc.r == nil: 
+    if field.loc.r == nil:
       InternalError(e.info, "genCheckedRecordField") # generate the checks:
-    for i in countup(1, sonsLen(e) - 1): 
+    for i in countup(1, sonsLen(e) - 1):
       it = e.sons[i]
       assert(it.kind == nkCall)
       assert(it.sons[0].kind == nkSym)
@@ -650,90 +650,90 @@ proc genCheckedRecordField(p: BProc, e: PNode, d: var TLoc) =
       initLoc(v, locExpr, it.sons[2].typ, OnUnknown)
       v.r = ropef("$1.$2", [r, it.sons[2].sym.loc.r])
       genInExprAux(p, it, u, v, test)
-      id = NodeTableTestOrSet(p.module.dataCache, 
+      id = NodeTableTestOrSet(p.module.dataCache,
                               newStrNode(nkStrLit, field.name.s), gid)
       if id == gid: strLit = getStrLit(p.module, field.name.s)
       else: strLit = con("TMP", toRope(id))
-      if op.magic == mNot: 
-        appf(p.s[cpsStmts], 
-             "if ($1) raiseFieldError(((NimStringDesc*) &$2));$n", 
+      if op.magic == mNot:
+        appf(p.s[cpsStmts],
+             "if ($1) raiseFieldError(((NimStringDesc*) &$2));$n",
              [rdLoc(test), strLit])
-      else: 
-        appf(p.s[cpsStmts], 
-             "if (!($1)) raiseFieldError(((NimStringDesc*) &$2));$n", 
+      else:
+        appf(p.s[cpsStmts],
+             "if (!($1)) raiseFieldError(((NimStringDesc*) &$2));$n",
              [rdLoc(test), strLit])
     appf(r, ".$1", [field.loc.r])
     putIntoDest(p, d, field.typ, r)
-  else: 
+  else:
     genRecordField(p, e.sons[0], d)
-  
-proc genArrayElem(p: BProc, e: PNode, d: var TLoc) = 
+
+proc genArrayElem(p: BProc, e: PNode, d: var TLoc) =
   var a, b: TLoc
   initLocExpr(p, e.sons[0], a)
   initLocExpr(p, e.sons[1], b)
   var ty = skipTypes(skipTypes(a.t, abstractVarRange), abstractPtrs)
   var first = intLiteral(firstOrd(ty))
   # emit range check:
-  if (optBoundsCheck in p.options): 
-    if not isConstExpr(e.sons[1]): 
+  if (optBoundsCheck in p.options):
+    if not isConstExpr(e.sons[1]):
       # semantic pass has already checked for const index expressions
       useMagic(p.module, "raiseIndexError")
-      if firstOrd(ty) == 0: 
-        if (firstOrd(b.t) < firstOrd(ty)) or (lastOrd(b.t) > lastOrd(ty)): 
-          appf(p.s[cpsStmts], "if ((NU)($1) > (NU)($2)) raiseIndexError();$n", 
+      if firstOrd(ty) == 0:
+        if (firstOrd(b.t) < firstOrd(ty)) or (lastOrd(b.t) > lastOrd(ty)):
+          appf(p.s[cpsStmts], "if ((NU)($1) > (NU)($2)) raiseIndexError();$n",
                [rdCharLoc(b), intLiteral(lastOrd(ty))])
-      else: 
-        appf(p.s[cpsStmts], "if ($1 < $2 || $1 > $3) raiseIndexError();$n", 
+      else:
+        appf(p.s[cpsStmts], "if ($1 < $2 || $1 > $3) raiseIndexError();$n",
              [rdCharLoc(b), first, intLiteral(lastOrd(ty))])
   if d.k == locNone: d.s = a.s
-  putIntoDest(p, d, elemType(skipTypes(ty, abstractVar)), 
+  putIntoDest(p, d, elemType(skipTypes(ty, abstractVar)),
               ropef("$1[($2)-$3]", [rdLoc(a), rdCharLoc(b), first]))
 
-proc genCStringElem(p: BProc, e: PNode, d: var TLoc) = 
+proc genCStringElem(p: BProc, e: PNode, d: var TLoc) =
   var a, b: TLoc
   initLocExpr(p, e.sons[0], a)
   initLocExpr(p, e.sons[1], b)
   var ty = skipTypes(a.t, abstractVarRange)
   if d.k == locNone: d.s = a.s
-  putIntoDest(p, d, elemType(skipTypes(ty, abstractVar)), 
+  putIntoDest(p, d, elemType(skipTypes(ty, abstractVar)),
               ropef("$1[$2]", [rdLoc(a), rdCharLoc(b)]))
 
-proc genOpenArrayElem(p: BProc, e: PNode, d: var TLoc) = 
+proc genOpenArrayElem(p: BProc, e: PNode, d: var TLoc) =
   var a, b: TLoc
   initLocExpr(p, e.sons[0], a)
   initLocExpr(p, e.sons[1], b) # emit range check:
-  if (optBoundsCheck in p.options): 
+  if (optBoundsCheck in p.options):
     useMagic(p.module, "raiseIndexError")
-    appf(p.s[cpsStmts], "if ((NU)($1) >= (NU)($2Len0)) raiseIndexError();$n", 
+    appf(p.s[cpsStmts], "if ((NU)($1) >= (NU)($2Len0)) raiseIndexError();$n",
          [rdLoc(b), rdLoc(a)]) # BUGFIX: ``>=`` and not ``>``!
   if d.k == locNone: d.s = a.s
-  putIntoDest(p, d, elemType(skipTypes(a.t, abstractVar)), 
+  putIntoDest(p, d, elemType(skipTypes(a.t, abstractVar)),
               ropef("$1[$2]", [rdLoc(a), rdCharLoc(b)]))
 
-proc genSeqElem(p: BPRoc, e: PNode, d: var TLoc) = 
+proc genSeqElem(p: BPRoc, e: PNode, d: var TLoc) =
   var a, b: TLoc
   initLocExpr(p, e.sons[0], a)
   initLocExpr(p, e.sons[1], b)
   var ty = skipTypes(a.t, abstractVarRange)
-  if ty.kind in {tyRef, tyPtr}: 
+  if ty.kind in {tyRef, tyPtr}:
     ty = skipTypes(ty.sons[0], abstractVarRange) # emit range check:
-  if (optBoundsCheck in p.options): 
+  if (optBoundsCheck in p.options):
     useMagic(p.module, "raiseIndexError")
-    if ty.kind == tyString: 
-      appf(p.s[cpsStmts], 
-           "if ((NU)($1) > (NU)($2->Sup.len)) raiseIndexError();$n", 
+    if ty.kind == tyString:
+      appf(p.s[cpsStmts],
+           "if ((NU)($1) > (NU)($2->Sup.len)) raiseIndexError();$n",
            [rdLoc(b), rdLoc(a)])
-    else: 
-      appf(p.s[cpsStmts], 
-           "if ((NU)($1) >= (NU)($2->Sup.len)) raiseIndexError();$n", 
+    else:
+      appf(p.s[cpsStmts],
+           "if ((NU)($1) >= (NU)($2->Sup.len)) raiseIndexError();$n",
            [rdLoc(b), rdLoc(a)])
   if d.k == locNone: d.s = OnHeap
-  if skipTypes(a.t, abstractVar).kind in {tyRef, tyPtr}: 
+  if skipTypes(a.t, abstractVar).kind in {tyRef, tyPtr}:
     a.r = ropef("(*$1)", [a.r])
-  putIntoDest(p, d, elemType(skipTypes(a.t, abstractVar)), 
+  putIntoDest(p, d, elemType(skipTypes(a.t, abstractVar)),
               ropef("$1->data[$2]", [rdLoc(a), rdCharLoc(b)]))
 
-proc genAndOr(p: BProc, e: PNode, d: var TLoc, m: TMagic) = 
+proc genAndOr(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
   # how to generate code?
   #  'expr1 and expr2' becomes:
   #     result = expr1
@@ -754,7 +754,7 @@ proc genAndOr(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
   # tmp = a
   # end:
   # a = tmp
-  var 
+  var
     L: TLabel
     tmp: TLoc
   getTemp(p, e.typ, tmp)      # force it into a temp!
@@ -762,16 +762,16 @@ proc genAndOr(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
   L = getLabel(p)
   if m == mOr:
     appf(p.s[cpsStmts], "if ($1) goto $2;$n", [rdLoc(tmp), L])
-  else: 
+  else:
     appf(p.s[cpsStmts], "if (!($1)) goto $2;$n", [rdLoc(tmp), L])
   expr(p, e.sons[2], tmp)
   fixLabel(p, L)
-  if d.k == locNone: 
+  if d.k == locNone:
     d = tmp
-  else: 
+  else:
     genAssignment(p, d, tmp, {}) # no need for deep copying
-  
-proc genIfExpr(p: BProc, n: PNode, d: var TLoc) = 
+
+proc genIfExpr(p: BProc, n: PNode, d: var TLoc) =
   #
   #  if (!expr1) goto L1;
   #  thenPart
@@ -784,42 +784,42 @@ proc genIfExpr(p: BProc, n: PNode, d: var TLoc) =
   #  elsePart
   #  Lend:
   #
-  var 
+  var
     it: PNode
     a, tmp: TLoc
     Lend, Lelse: TLabel
   getTemp(p, n.typ, tmp)      # force it into a temp!
   Lend = getLabel(p)
-  for i in countup(0, sonsLen(n) - 1): 
+  for i in countup(0, sonsLen(n) - 1):
     it = n.sons[i]
     case it.kind
-    of nkElifExpr: 
+    of nkElifExpr:
       initLocExpr(p, it.sons[0], a)
       Lelse = getLabel(p)
       appf(p.s[cpsStmts], "if (!$1) goto $2;$n", [rdLoc(a), Lelse])
       expr(p, it.sons[1], tmp)
       appf(p.s[cpsStmts], "goto $1;$n", [Lend])
       fixLabel(p, Lelse)
-    of nkElseExpr: 
+    of nkElseExpr:
       expr(p, it.sons[0], tmp)
     else: internalError(n.info, "genIfExpr()")
   fixLabel(p, Lend)
-  if d.k == locNone: 
+  if d.k == locNone:
     d = tmp
-  else: 
+  else:
     genAssignment(p, d, tmp, {}) # no need for deep copying
-  
-proc genEcho(p: BProc, n: PNode) = 
+
+proc genEcho(p: BProc, n: PNode) =
   var a: TLoc
   useMagic(p.module, "rawEcho")
   useMagic(p.module, "rawEchoNL")
-  for i in countup(1, sonsLen(n) - 1): 
+  for i in countup(1, sonsLen(n) - 1):
     initLocExpr(p, n.sons[i], a)
     appf(p.s[cpsStmts], "rawEcho($1);$n", [rdLoc(a)])
   app(p.s[cpsStmts], "rawEchoNL();" & tnl)
 
-proc genCall(p: BProc, t: PNode, d: var TLoc) = 
-  var 
+proc genCall(p: BProc, t: PNode, d: var TLoc) =
+  var
     param: PSym
     invalidRetType: bool
     typ: PType
@@ -833,37 +833,37 @@ proc genCall(p: BProc, t: PNode, d: var TLoc) =
   assert(typ.kind == tyProc)
   invalidRetType = isInvalidReturnType(typ.sons[0])
   length = sonsLen(t)
-  for i in countup(1, length - 1): 
+  for i in countup(1, length - 1):
     initLocExpr(p, t.sons[i], a) # generate expression for param
     assert(sonsLen(typ) == sonsLen(typ.n))
-    if (i < sonsLen(typ)): 
+    if (i < sonsLen(typ)):
       assert(typ.n.sons[i].kind == nkSym)
       param = typ.n.sons[i].sym
       if ccgIntroducedPtr(param): app(pl, addrLoc(a))
       else: app(pl, rdLoc(a))
-    else: 
+    else:
       app(pl, rdLoc(a))
-    if (i < length - 1) or (invalidRetType and (typ.sons[0] != nil)): 
+    if (i < length - 1) or (invalidRetType and (typ.sons[0] != nil)):
       app(pl, ", ")
-  if (typ.sons[0] != nil) and invalidRetType: 
+  if (typ.sons[0] != nil) and invalidRetType:
     # XXX (detected by pegs module 64bit): p(result, result) is not
     # correct here. Thus we always allocate a temporary:
     if d.k == locNone: getTemp(p, typ.sons[0], d)
     app(pl, addrLoc(d))
   app(pl, ")")
-  if (typ.sons[0] != nil) and not invalidRetType: 
+  if (typ.sons[0] != nil) and not invalidRetType:
     if d.k == locNone: getTemp(p, typ.sons[0], d)
     assert(d.t != nil)        # generate an assignment to d:
     initLoc(list, locCall, nil, OnUnknown)
     list.r = pl
     genAssignment(p, d, list, {}) # no need for deep copying
-  else: 
+  else:
     app(p.s[cpsStmts], pl)
     app(p.s[cpsStmts], ';' & tnl)
 
-proc genStrConcat(p: BProc, e: PNode, d: var TLoc) = 
+proc genStrConcat(p: BProc, e: PNode, d: var TLoc) =
   #   <Nimrod code>
-  #   s = 'hallo ' & name & ' how do you feel?' & 'z'
+  #   s = 'Hello ' & name & ', how do you feel?' & 'z'
   #
   #   <generated C code>
   #  {
@@ -884,30 +884,30 @@ proc genStrConcat(p: BProc, e: PNode, d: var TLoc) =
   var L = 0
   var appends: PRope = nil
   var lens: PRope = nil
-  for i in countup(0, sonsLen(e) - 2): 
+  for i in countup(0, sonsLen(e) - 2):
     # compute the length expression:
     initLocExpr(p, e.sons[i + 1], a)
-    if skipTypes(e.sons[i + 1].Typ, abstractVarRange).kind == tyChar: 
+    if skipTypes(e.sons[i + 1].Typ, abstractVarRange).kind == tyChar:
       Inc(L)
       useMagic(p.module, "appendChar")
       appf(appends, "appendChar($1, $2);$n", [tmp.r, rdLoc(a)])
-    else: 
-      if e.sons[i + 1].kind in {nkStrLit..nkTripleStrLit}: 
+    else:
+      if e.sons[i + 1].kind in {nkStrLit..nkTripleStrLit}:
         Inc(L, len(e.sons[i + 1].strVal))
-      else: 
+      else:
         appf(lens, "$1->Sup.len + ", [rdLoc(a)])
       useMagic(p.module, "appendString")
       appf(appends, "appendString($1, $2);$n", [tmp.r, rdLoc(a)])
   appf(p.s[cpsStmts], "$1 = rawNewString($2$3);$n", [tmp.r, lens, toRope(L)])
   app(p.s[cpsStmts], appends)
-  if d.k == locNone: 
+  if d.k == locNone:
     d = tmp
-  else: 
+  else:
     genAssignment(p, d, tmp, {}) # no need for deep copying
-  
-proc genStrAppend(p: BProc, e: PNode, d: var TLoc) = 
+
+proc genStrAppend(p: BProc, e: PNode, d: var TLoc) =
   #  <Nimrod code>
-  #  s &= 'hallo ' & name & ' how do you feel?' & 'z'
+  #  s &= 'Hello ' & name & ', how do you feel?' & 'z'
   #  // BUG: what if s is on the left side too?
   #  <generated C code>
   #  {
@@ -917,7 +917,7 @@ proc genStrAppend(p: BProc, e: PNode, d: var TLoc) =
   #    appendString(s, strlit_2);
   #    appendChar(s, 'z');
   #  }
-  var 
+  var
     a, dest: TLoc
     L: int
     appends, lens: PRope
@@ -927,25 +927,25 @@ proc genStrAppend(p: BProc, e: PNode, d: var TLoc) =
   appends = nil
   lens = nil
   initLocExpr(p, e.sons[1], dest)
-  for i in countup(0, sonsLen(e) - 3): 
+  for i in countup(0, sonsLen(e) - 3):
     # compute the length expression:
     initLocExpr(p, e.sons[i + 2], a)
-    if skipTypes(e.sons[i + 2].Typ, abstractVarRange).kind == tyChar: 
+    if skipTypes(e.sons[i + 2].Typ, abstractVarRange).kind == tyChar:
       Inc(L)
       useMagic(p.module, "appendChar")
       appf(appends, "appendChar($1, $2);$n", [rdLoc(dest), rdLoc(a)])
-    else: 
-      if e.sons[i + 2].kind in {nkStrLit..nkTripleStrLit}: 
+    else:
+      if e.sons[i + 2].kind in {nkStrLit..nkTripleStrLit}:
         Inc(L, len(e.sons[i + 2].strVal))
-      else: 
+      else:
         appf(lens, "$1->Sup.len + ", [rdLoc(a)])
       useMagic(p.module, "appendString")
       appf(appends, "appendString($1, $2);$n", [rdLoc(dest), rdLoc(a)])
-  appf(p.s[cpsStmts], "$1 = resizeString($1, $2$3);$n", 
+  appf(p.s[cpsStmts], "$1 = resizeString($1, $2$3);$n",
        [rdLoc(dest), lens, toRope(L)])
   app(p.s[cpsStmts], appends)
 
-proc genSeqElemAppend(p: BProc, e: PNode, d: var TLoc) = 
+proc genSeqElemAppend(p: BProc, e: PNode, d: var TLoc) =
   # seq &= x  -->
   #    seq = (typeof seq) incrSeq(&seq->Sup, sizeof(x));
   #    seq->data[seq->len-1] = x;
@@ -953,52 +953,52 @@ proc genSeqElemAppend(p: BProc, e: PNode, d: var TLoc) =
   useMagic(p.module, "incrSeq")
   InitLocExpr(p, e.sons[1], a)
   InitLocExpr(p, e.sons[2], b)
-  appf(p.s[cpsStmts], "$1 = ($2) incrSeq(&($1)->Sup, sizeof($3));$n", [rdLoc(a), 
-      getTypeDesc(p.module, skipTypes(e.sons[1].typ, abstractVar)), 
+  appf(p.s[cpsStmts], "$1 = ($2) incrSeq(&($1)->Sup, sizeof($3));$n", [rdLoc(a),
+      getTypeDesc(p.module, skipTypes(e.sons[1].typ, abstractVar)),
       getTypeDesc(p.module, skipTypes(e.sons[2].Typ, abstractVar))])
   initLoc(dest, locExpr, b.t, OnHeap)
   dest.r = ropef("$1->data[$1->Sup.len-1]", [rdLoc(a)])
   genAssignment(p, dest, b, {needToCopy, afDestIsNil})
 
-proc genObjectInit(p: BProc, t: PType, a: TLoc, takeAddr: bool) = 
-  var 
+proc genObjectInit(p: BProc, t: PType, a: TLoc, takeAddr: bool) =
+  var
     r: PRope
     s: PType
   case analyseObjectWithTypeField(t)
-  of frNone: 
+  of frNone:
     nil
-  of frHeader: 
+  of frHeader:
     r = rdLoc(a)
     if not takeAddr: r = ropef("(*$1)", [r])
     s = t
-    while (s.kind == tyObject) and (s.sons[0] != nil): 
+    while (s.kind == tyObject) and (s.sons[0] != nil):
       app(r, ".Sup")
       s = skipTypes(s.sons[0], abstractInst)
     appf(p.s[cpsStmts], "$1.m_type = $2;$n", [r, genTypeInfo(p.module, t)])
-  of frEmbedded: 
+  of frEmbedded:
     # worst case for performance:
     useMagic(p.module, "objectInit")
     if takeAddr: r = addrLoc(a)
     else: r = rdLoc(a)
     appf(p.s[cpsStmts], "objectInit($1, $2);$n", [r, genTypeInfo(p.module, t)])
 
-proc genNew(p: BProc, e: PNode) = 
-  var 
+proc genNew(p: BProc, e: PNode) =
+  var
     a, b: TLoc
     reftype, bt: PType
   useMagic(p.module, "newObj")
   refType = skipTypes(e.sons[1].typ, abstractVarRange)
   InitLocExpr(p, e.sons[1], a)
   initLoc(b, locExpr, a.t, OnHeap)
-  b.r = ropef("($1) newObj($2, sizeof($3))", [getTypeDesc(p.module, reftype), 
-      genTypeInfo(p.module, refType), 
+  b.r = ropef("($1) newObj($2, sizeof($3))", [getTypeDesc(p.module, reftype),
+      genTypeInfo(p.module, refType),
       getTypeDesc(p.module, skipTypes(reftype.sons[0], abstractRange))])
   genAssignment(p, a, b, {})  # set the object type:
   bt = skipTypes(refType.sons[0], abstractRange)
   genObjectInit(p, bt, a, false)
 
-proc genNewSeq(p: BProc, e: PNode) = 
-  var 
+proc genNewSeq(p: BProc, e: PNode) =
+  var
     a, b, c: TLoc
     seqtype: PType
   useMagic(p.module, "newSeq")
@@ -1006,12 +1006,12 @@ proc genNewSeq(p: BProc, e: PNode) =
   InitLocExpr(p, e.sons[1], a)
   InitLocExpr(p, e.sons[2], b)
   initLoc(c, locExpr, a.t, OnHeap)
-  c.r = ropef("($1) newSeq($2, $3)", [getTypeDesc(p.module, seqtype), 
+  c.r = ropef("($1) newSeq($2, $3)", [getTypeDesc(p.module, seqtype),
                                       genTypeInfo(p.module, seqType), rdLoc(b)])
   genAssignment(p, a, c, {})
 
-proc genIs(p: BProc, x: PNode, typ: PType, d: var TLoc) = 
-  var 
+proc genIs(p: BProc, x: PNode, typ: PType, d: var TLoc) =
+  var
     a: TLoc
     dest, t: PType
     r, nilcheck: PRope
@@ -1021,26 +1021,26 @@ proc genIs(p: BProc, x: PNode, typ: PType, d: var TLoc) =
   r = rdLoc(a)
   nilCheck = nil
   t = skipTypes(a.t, abstractInst)
-  while t.kind in {tyVar, tyPtr, tyRef}: 
+  while t.kind in {tyVar, tyPtr, tyRef}:
     if t.kind != tyVar: nilCheck = r
     r = ropef("(*$1)", [r])
     t = skipTypes(t.sons[0], abstractInst)
-  if gCmd != cmdCompileToCpp: 
-    while (t.kind == tyObject) and (t.sons[0] != nil): 
+  if gCmd != cmdCompileToCpp:
+    while (t.kind == tyObject) and (t.sons[0] != nil):
       app(r, ".Sup")
       t = skipTypes(t.sons[0], abstractInst)
-  if nilCheck != nil: 
-    r = ropef("(($1) && isObj($2.m_type, $3))", 
+  if nilCheck != nil:
+    r = ropef("(($1) && isObj($2.m_type, $3))",
               [nilCheck, r, genTypeInfo(p.module, dest)])
-  else: 
+  else:
     r = ropef("isObj($1.m_type, $2)", [r, genTypeInfo(p.module, dest)])
   putIntoDest(p, d, getSysType(tyBool), r)
 
-proc genIs(p: BProc, n: PNode, d: var TLoc) = 
+proc genIs(p: BProc, n: PNode, d: var TLoc) =
   genIs(p, n.sons[1], n.sons[2].typ, d)
 
-proc genNewFinalize(p: BProc, e: PNode) = 
-  var 
+proc genNewFinalize(p: BProc, e: PNode) =
+  var
     a, b, f: TLoc
     refType, bt: PType
     ti: PRope
@@ -1048,7 +1048,7 @@ proc genNewFinalize(p: BProc, e: PNode) =
   useMagic(p.module, "newObj")
   refType = skipTypes(e.sons[1].typ, abstractVarRange)
   InitLocExpr(p, e.sons[1], a)
-  # This is a little hack: 
+  # This is a little hack:
   # XXX this is also a bug, if the finalizer expression produces side-effects
   oldModule = p.module
   p.module = gNimDat
@@ -1057,64 +1057,64 @@ proc genNewFinalize(p: BProc, e: PNode) =
   initLoc(b, locExpr, a.t, OnHeap)
   ti = genTypeInfo(p.module, refType)
   appf(gNimDat.s[cfsTypeInit3], "$1->finalizer = (void*)$2;$n", [ti, rdLoc(f)])
-  b.r = ropef("($1) newObj($2, sizeof($3))", [getTypeDesc(p.module, refType), 
+  b.r = ropef("($1) newObj($2, sizeof($3))", [getTypeDesc(p.module, refType),
       ti, getTypeDesc(p.module, skipTypes(reftype.sons[0], abstractRange))])
   genAssignment(p, a, b, {})  # set the object type:
   bt = skipTypes(refType.sons[0], abstractRange)
   genObjectInit(p, bt, a, false)
 
-proc genRepr(p: BProc, e: PNode, d: var TLoc) = 
+proc genRepr(p: BProc, e: PNode, d: var TLoc) =
   var a: TLoc
   InitLocExpr(p, e.sons[1], a)
   var t = skipTypes(e.sons[1].typ, abstractVarRange)
   case t.kind
-  of tyInt..tyInt64: 
+  of tyInt..tyInt64:
     UseMagic(p.module, "reprInt")
     putIntoDest(p, d, e.typ, ropef("reprInt($1)", [rdLoc(a)]))
-  of tyFloat..tyFloat128: 
+  of tyFloat..tyFloat128:
     UseMagic(p.module, "reprFloat")
     putIntoDest(p, d, e.typ, ropef("reprFloat($1)", [rdLoc(a)]))
-  of tyBool: 
+  of tyBool:
     UseMagic(p.module, "reprBool")
     putIntoDest(p, d, e.typ, ropef("reprBool($1)", [rdLoc(a)]))
-  of tyChar: 
+  of tyChar:
     UseMagic(p.module, "reprChar")
     putIntoDest(p, d, e.typ, ropef("reprChar($1)", [rdLoc(a)]))
-  of tyEnum, tyOrdinal: 
+  of tyEnum, tyOrdinal:
     UseMagic(p.module, "reprEnum")
-    putIntoDest(p, d, e.typ, 
+    putIntoDest(p, d, e.typ,
                 ropef("reprEnum($1, $2)", [rdLoc(a), genTypeInfo(p.module, t)]))
-  of tyString: 
+  of tyString:
     UseMagic(p.module, "reprStr")
     putIntoDest(p, d, e.typ, ropef("reprStr($1)", [rdLoc(a)]))
-  of tySet: 
+  of tySet:
     useMagic(p.module, "reprSet")
-    putIntoDest(p, d, e.typ, 
+    putIntoDest(p, d, e.typ,
                 ropef("reprSet($1, $2)", [rdLoc(a), genTypeInfo(p.module, t)]))
-  of tyOpenArray: 
+  of tyOpenArray:
     useMagic(p.module, "reprOpenArray")
     var b: TLoc
     case a.t.kind
     of tyOpenArray: putIntoDest(p, b, e.typ, rdLoc(a))
-    of tyString, tySequence: 
+    of tyString, tySequence:
       putIntoDest(p, b, e.typ, ropef("$1->data, $1->Sup.len", [rdLoc(a)]))
-    of tyArray, tyArrayConstr: 
-      putIntoDest(p, b, e.typ, 
+    of tyArray, tyArrayConstr:
+      putIntoDest(p, b, e.typ,
                   ropef("$1, $2", [rdLoc(a), toRope(lengthOrd(a.t))]))
     else: InternalError(e.sons[0].info, "genRepr()")
-    putIntoDest(p, d, e.typ, ropef("reprOpenArray($1, $2)", [rdLoc(b), 
+    putIntoDest(p, d, e.typ, ropef("reprOpenArray($1, $2)", [rdLoc(b),
         genTypeInfo(p.module, elemType(t))]))
-  of tyCString, tyArray, tyArrayConstr, tyRef, tyPtr, tyPointer, tyNil, 
-     tySequence: 
+  of tyCString, tyArray, tyArrayConstr, tyRef, tyPtr, tyPointer, tyNil,
+     tySequence:
     useMagic(p.module, "reprAny")
-    putIntoDest(p, d, e.typ, 
+    putIntoDest(p, d, e.typ,
                 ropef("reprAny($1, $2)", [rdLoc(a), genTypeInfo(p.module, t)]))
-  else: 
+  else:
     useMagic(p.module, "reprAny")
-    putIntoDest(p, d, e.typ, ropef("reprAny($1, $2)", 
+    putIntoDest(p, d, e.typ, ropef("reprAny($1, $2)",
                                    [addrLoc(a), genTypeInfo(p.module, t)]))
 
-proc genDollar(p: BProc, n: PNode, d: var TLoc, magic, frmt: string) = 
+proc genDollar(p: BProc, n: PNode, d: var TLoc, magic, frmt: string) =
   var a: TLoc
   InitLocExpr(p, n.sons[1], a)
   UseMagic(p.module, magic)
@@ -1122,26 +1122,26 @@ proc genDollar(p: BProc, n: PNode, d: var TLoc, magic, frmt: string) =
   if d.k == locNone: getTemp(p, n.typ, d)
   genAssignment(p, d, a, {})
 
-proc genArrayLen(p: BProc, e: PNode, d: var TLoc, op: TMagic) = 
+proc genArrayLen(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
   var typ = skipTypes(e.sons[1].Typ, abstractPtrs)
   case typ.kind
-  of tyOpenArray: 
+  of tyOpenArray:
     while e.sons[1].kind == nkPassAsOpenArray: e.sons[1] = e.sons[1].sons[0]
     if op == mHigh: unaryExpr(p, e, d, "", "($1Len0-1)")
     else: unaryExpr(p, e, d, "", "$1Len0")
-  of tyCstring: 
+  of tyCstring:
     if op == mHigh: unaryExpr(p, e, d, "", "(strlen($1)-1)")
     else: unaryExpr(p, e, d, "", "strlen($1)")
-  of tyString, tySequence: 
+  of tyString, tySequence:
     if op == mHigh: unaryExpr(p, e, d, "", "($1->Sup.len-1)")
     else: unaryExpr(p, e, d, "", "$1->Sup.len")
-  of tyArray, tyArrayConstr: 
+  of tyArray, tyArrayConstr:
     # YYY: length(sideeffect) is optimized away incorrectly?
     if op == mHigh: putIntoDest(p, d, e.typ, toRope(lastOrd(Typ)))
     else: putIntoDest(p, d, e.typ, toRope(lengthOrd(typ)))
   else: InternalError(e.info, "genArrayLen()")
-  
-proc genSetLengthSeq(p: BProc, e: PNode, d: var TLoc) = 
+
+proc genSetLengthSeq(p: BProc, e: PNode, d: var TLoc) =
   var a, b: TLoc
   assert(d.k == locNone)
   useMagic(p.module, "setLengthSeq")
@@ -1149,13 +1149,13 @@ proc genSetLengthSeq(p: BProc, e: PNode, d: var TLoc) =
   InitLocExpr(p, e.sons[2], b)
   var t = skipTypes(e.sons[1].typ, abstractVar)
   appf(p.s[cpsStmts], "$1 = ($3) setLengthSeq(&($1)->Sup, sizeof($4), $2);$n", [
-      rdLoc(a), rdLoc(b), getTypeDesc(p.module, t), 
+      rdLoc(a), rdLoc(b), getTypeDesc(p.module, t),
       getTypeDesc(p.module, t.sons[0])])
 
-proc genSetLengthStr(p: BProc, e: PNode, d: var TLoc) = 
+proc genSetLengthStr(p: BProc, e: PNode, d: var TLoc) =
   binaryStmt(p, e, d, "setLengthStr", "$1 = setLengthStr($1, $2);$n")
 
-proc genSwap(p: BProc, e: PNode, d: var TLoc) = 
+proc genSwap(p: BProc, e: PNode, d: var TLoc) =
   # swap(a, b) -->
   # temp = a
   # a = b
@@ -1168,73 +1168,73 @@ proc genSwap(p: BProc, e: PNode, d: var TLoc) =
   genAssignment(p, a, b, {})
   genAssignment(p, b, tmp, {})
 
-proc rdSetElemLoc(a: TLoc, setType: PType): PRope = 
+proc rdSetElemLoc(a: TLoc, setType: PType): PRope =
   # read a location of an set element; it may need a substraction operation
   # before the set operation
   result = rdCharLoc(a)
   assert(setType.kind == tySet)
-  if (firstOrd(setType) != 0): 
+  if (firstOrd(setType) != 0):
     result = ropef("($1-$2)", [result, toRope(firstOrd(setType))])
-  
-proc fewCmps(s: PNode): bool = 
+
+proc fewCmps(s: PNode): bool =
   # this function estimates whether it is better to emit code
   # for constructing the set or generating a bunch of comparisons directly
   if s.kind != nkCurly: InternalError(s.info, "fewCmps")
-  if (getSize(s.typ) <= platform.intSize) and (nfAllConst in s.flags): 
+  if (getSize(s.typ) <= platform.intSize) and (nfAllConst in s.flags):
     result = false            # it is better to emit the set generation code
-  elif elemType(s.typ).Kind in {tyInt, tyInt16..tyInt64}: 
+  elif elemType(s.typ).Kind in {tyInt, tyInt16..tyInt64}:
     result = true             # better not emit the set if int is basetype!
-  else: 
+  else:
     result = sonsLen(s) <= 8  # 8 seems to be a good value
-  
-proc binaryExprIn(p: BProc, e: PNode, a, b, d: var TLoc, frmt: string) = 
+
+proc binaryExprIn(p: BProc, e: PNode, a, b, d: var TLoc, frmt: string) =
   putIntoDest(p, d, e.typ, ropef(frmt, [rdLoc(a), rdSetElemLoc(b, a.t)]))
 
-proc genInExprAux(p: BProc, e: PNode, a, b, d: var TLoc) = 
+proc genInExprAux(p: BProc, e: PNode, a, b, d: var TLoc) =
   case int(getSize(skipTypes(e.sons[1].typ, abstractVar)))
   of 1: binaryExprIn(p, e, a, b, d, "(($1 &(1<<(($2)&7)))!=0)")
   of 2: binaryExprIn(p, e, a, b, d, "(($1 &(1<<(($2)&15)))!=0)")
   of 4: binaryExprIn(p, e, a, b, d, "(($1 &(1<<(($2)&31)))!=0)")
   of 8: binaryExprIn(p, e, a, b, d, "(($1 &(IL64(1)<<(($2)&IL64(63))))!=0)")
   else: binaryExprIn(p, e, a, b, d, "(($1[$2/8] &(1<<($2%8)))!=0)")
-  
-proc binaryStmtInExcl(p: BProc, e: PNode, d: var TLoc, frmt: string) = 
+
+proc binaryStmtInExcl(p: BProc, e: PNode, d: var TLoc, frmt: string) =
   var a, b: TLoc
   assert(d.k == locNone)
   InitLocExpr(p, e.sons[1], a)
   InitLocExpr(p, e.sons[2], b)
   appf(p.s[cpsStmts], frmt, [rdLoc(a), rdSetElemLoc(b, a.t)])
 
-proc genInOp(p: BProc, e: PNode, d: var TLoc) = 
+proc genInOp(p: BProc, e: PNode, d: var TLoc) =
   var a, b, x, y: TLoc
-  if (e.sons[1].Kind == nkCurly) and fewCmps(e.sons[1]): 
+  if (e.sons[1].Kind == nkCurly) and fewCmps(e.sons[1]):
     # a set constructor but not a constant set:
     # do not emit the set, but generate a bunch of comparisons
     initLocExpr(p, e.sons[2], a)
     initLoc(b, locExpr, e.typ, OnUnknown)
     b.r = toRope("(")
     var length = sonsLen(e.sons[1])
-    for i in countup(0, length - 1): 
-      if e.sons[1].sons[i].Kind == nkRange: 
+    for i in countup(0, length - 1):
+      if e.sons[1].sons[i].Kind == nkRange:
         InitLocExpr(p, e.sons[1].sons[i].sons[0], x)
         InitLocExpr(p, e.sons[1].sons[i].sons[1], y)
-        appf(b.r, "$1 >= $2 && $1 <= $3", 
+        appf(b.r, "$1 >= $2 && $1 <= $3",
              [rdCharLoc(a), rdCharLoc(x), rdCharLoc(y)])
-      else: 
+      else:
         InitLocExpr(p, e.sons[1].sons[i], x)
         appf(b.r, "$1 == $2", [rdCharLoc(a), rdCharLoc(x)])
       if i < length - 1: app(b.r, " || ")
     app(b.r, ")")
     putIntoDest(p, d, e.typ, b.r)
-  else: 
+  else:
     assert(e.sons[1].typ != nil)
     assert(e.sons[2].typ != nil)
     InitLocExpr(p, e.sons[1], a)
     InitLocExpr(p, e.sons[2], b)
     genInExprAux(p, e, a, b, d)
 
-proc genSetOp(p: BProc, e: PNode, d: var TLoc, op: TMagic) = 
-  const 
+proc genSetOp(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
+  const
     lookupOpr: array[mLeSet..mSymDiffSet, string] = [
       "for ($1 = 0; $1 < $2; $1++) { $n" &
         "  $3 = (($4[$1] & ~ $5[$1]) == 0);$n" &
@@ -1246,17 +1246,17 @@ proc genSetOp(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
   var setType = skipTypes(e.sons[1].Typ, abstractVar)
   var size = int(getSize(setType))
   case size
-  of 1, 2, 4, 8: 
+  of 1, 2, 4, 8:
     case op
-    of mIncl: 
+    of mIncl:
       var ts = "NI" & $(size * 8)
-      binaryStmtInExcl(p, e, d, 
+      binaryStmtInExcl(p, e, d,
                        "$1 |=(1<<((" & ts & ")($2)%(sizeof(" & ts & ")*8)));$n")
-    of mExcl: 
+    of mExcl:
       var ts = "NI" & $(size * 8)
       binaryStmtInExcl(p, e, d, "$1 &= ~(1 << ((" & ts & ")($2) % (sizeof(" &
           ts & ")*8)));$n")
-    of mCard: 
+    of mCard:
       if size <= 4: unaryExprChar(p, e, d, "countBits32", "countBits32($1)")
       else: unaryExprChar(p, e, d, "countBits64", "countBits64($1)")
     of mLtSet: binaryExprChar(p, e, d, "", "(($1 & ~ $2 ==0)&&($1 != $2))")
@@ -1266,149 +1266,149 @@ proc genSetOp(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
     of mPlusSet: binaryExpr(p, e, d, "", "($1 | $2)")
     of mMinusSet: binaryExpr(p, e, d, "", "($1 & ~ $2)")
     of mSymDiffSet: binaryExpr(p, e, d, "", "($1 ^ $2)")
-    of mInSet: 
+    of mInSet:
       genInOp(p, e, d)
     else: internalError(e.info, "genSetOp()")
-  else: 
+  else:
     case op
     of mIncl: binaryStmtInExcl(p, e, d, "$1[$2/8] |=(1<<($2%8));$n")
     of mExcl: binaryStmtInExcl(p, e, d, "$1[$2/8] &= ~(1<<($2%8));$n")
     of mCard: unaryExprChar(p, e, d, "cardSet", "cardSet($1, " & $size & ')')
-    of mLtSet, mLeSet: 
+    of mLtSet, mLeSet:
       getTemp(p, getSysType(tyInt), i) # our counter
       initLocExpr(p, e.sons[1], a)
       initLocExpr(p, e.sons[2], b)
       if d.k == locNone: getTemp(p, a.t, d)
-      appf(p.s[cpsStmts], lookupOpr[op], 
+      appf(p.s[cpsStmts], lookupOpr[op],
            [rdLoc(i), toRope(size), rdLoc(d), rdLoc(a), rdLoc(b)])
-    of mEqSet: 
+    of mEqSet:
       binaryExprChar(p, e, d, "", "(memcmp($1, $2, " & $(size) & ")==0)")
-    of mMulSet, mPlusSet, mMinusSet, mSymDiffSet: 
+    of mMulSet, mPlusSet, mMinusSet, mSymDiffSet:
       # we inline the simple for loop for better code generation:
       getTemp(p, getSysType(tyInt), i) # our counter
       initLocExpr(p, e.sons[1], a)
       initLocExpr(p, e.sons[2], b)
       if d.k == locNone: getTemp(p, a.t, d)
-      appf(p.s[cpsStmts], 
+      appf(p.s[cpsStmts],
            "for ($1 = 0; $1 < $2; $1++) $n" & "  $3[$1] = $4[$1] $6 $5[$1];$n", [
-          rdLoc(i), toRope(size), rdLoc(d), rdLoc(a), rdLoc(b), 
+          rdLoc(i), toRope(size), rdLoc(d), rdLoc(a), rdLoc(b),
           toRope(lookupOpr[op])])
     of mInSet: genInOp(p, e, d)
     else: internalError(e.info, "genSetOp")
-  
-proc genOrd(p: BProc, e: PNode, d: var TLoc) = 
+
+proc genOrd(p: BProc, e: PNode, d: var TLoc) =
   unaryExprChar(p, e, d, "", "$1")
 
-proc genCast(p: BProc, e: PNode, d: var TLoc) = 
-  const 
-    ValueTypes = {tyTuple, tyObject, tyArray, tyOpenArray, tyArrayConstr} 
-  # we use whatever C gives us. Except if we have a value-type, we need to go 
+proc genCast(p: BProc, e: PNode, d: var TLoc) =
+  const
+    ValueTypes = {tyTuple, tyObject, tyArray, tyOpenArray, tyArrayConstr}
+  # we use whatever C gives us. Except if we have a value-type, we need to go
   # through its address:
   var a: TLoc
   InitLocExpr(p, e.sons[1], a)
   if (skipTypes(e.typ, abstractRange).kind in ValueTypes) and
-      not (lfIndirect in a.flags): 
-    putIntoDest(p, d, e.typ, ropef("(*($1*) ($2))", 
+      not (lfIndirect in a.flags):
+    putIntoDest(p, d, e.typ, ropef("(*($1*) ($2))",
                                    [getTypeDesc(p.module, e.typ), addrLoc(a)]))
-  else: 
-    putIntoDest(p, d, e.typ, ropef("(($1) ($2))", 
+  else:
+    putIntoDest(p, d, e.typ, ropef("(($1) ($2))",
                                    [getTypeDesc(p.module, e.typ), rdCharLoc(a)]))
-  
-proc genRangeChck(p: BProc, n: PNode, d: var TLoc, magic: string) = 
+
+proc genRangeChck(p: BProc, n: PNode, d: var TLoc, magic: string) =
   var a: TLoc
   var dest = skipTypes(n.typ, abstractVar)
-  if not (optRangeCheck in p.options): 
+  if not (optRangeCheck in p.options):
     InitLocExpr(p, n.sons[0], a)
-    putIntoDest(p, d, n.typ, ropef("(($1) ($2))", 
+    putIntoDest(p, d, n.typ, ropef("(($1) ($2))",
                                    [getTypeDesc(p.module, dest), rdCharLoc(a)]))
-  else: 
+  else:
     InitLocExpr(p, n.sons[0], a)
     useMagic(p.module, magic)
     putIntoDest(p, d, dest, ropef("(($1)$5($2, $3, $4))", [
-        getTypeDesc(p.module, dest), rdCharLoc(a), 
-        genLiteral(p, n.sons[1], dest), genLiteral(p, n.sons[2], dest), 
+        getTypeDesc(p.module, dest), rdCharLoc(a),
+        genLiteral(p, n.sons[1], dest), genLiteral(p, n.sons[2], dest),
         toRope(magic)]))
 
-proc genConv(p: BProc, e: PNode, d: var TLoc) = 
+proc genConv(p: BProc, e: PNode, d: var TLoc) =
   genCast(p, e, d)
 
-proc passToOpenArray(p: BProc, n: PNode, d: var TLoc) = 
+proc passToOpenArray(p: BProc, n: PNode, d: var TLoc) =
   var a: TLoc
-  while n.sons[0].kind == nkPassAsOpenArray: 
+  while n.sons[0].kind == nkPassAsOpenArray:
     n.sons[0] = n.sons[0].sons[0] # BUGFIX
   var dest = skipTypes(n.typ, abstractVar)
   case skipTypes(n.sons[0].typ, abstractVar).kind
-  of tyOpenArray: 
+  of tyOpenArray:
     initLocExpr(p, n.sons[0], a)
     putIntoDest(p, d, dest, ropef("$1, $1Len0", [rdLoc(a)]))
-  of tyString, tySequence: 
+  of tyString, tySequence:
     initLocExpr(p, n.sons[0], a)
     putIntoDest(p, d, dest, ropef("$1->data, $1->Sup.len", [rdLoc(a)]))
-  of tyArray, tyArrayConstr: 
+  of tyArray, tyArrayConstr:
     initLocExpr(p, n.sons[0], a)
     putIntoDest(p, d, dest, ropef("$1, $2", [rdLoc(a), toRope(lengthOrd(a.t))]))
   else: InternalError(n.sons[0].info, "passToOpenArray: " & typeToString(a.t))
-  
-proc convStrToCStr(p: BProc, n: PNode, d: var TLoc) = 
+
+proc convStrToCStr(p: BProc, n: PNode, d: var TLoc) =
   var a: TLoc
   initLocExpr(p, n.sons[0], a)
   putIntoDest(p, d, skipTypes(n.typ, abstractVar), ropef("$1->data", [rdLoc(a)]))
 
-proc convCStrToStr(p: BProc, n: PNode, d: var TLoc) = 
+proc convCStrToStr(p: BProc, n: PNode, d: var TLoc) =
   var a: TLoc
   useMagic(p.module, "cstrToNimstr")
   initLocExpr(p, n.sons[0], a)
-  putIntoDest(p, d, skipTypes(n.typ, abstractVar), 
+  putIntoDest(p, d, skipTypes(n.typ, abstractVar),
               ropef("cstrToNimstr($1)", [rdLoc(a)]))
 
-proc genStrEquals(p: BProc, e: PNode, d: var TLoc) = 
+proc genStrEquals(p: BProc, e: PNode, d: var TLoc) =
   var x: TLoc
   var a = e.sons[1]
   var b = e.sons[2]
-  if (a.kind == nkNilLit) or (b.kind == nkNilLit): 
+  if (a.kind == nkNilLit) or (b.kind == nkNilLit):
     binaryExpr(p, e, d, "", "($1 == $2)")
-  elif (a.kind in {nkStrLit..nkTripleStrLit}) and (a.strVal == ""): 
+  elif (a.kind in {nkStrLit..nkTripleStrLit}) and (a.strVal == ""):
     initLocExpr(p, e.sons[2], x)
     putIntoDest(p, d, e.typ, ropef("(($1) && ($1)->Sup.len == 0)", [rdLoc(x)]))
-  elif (b.kind in {nkStrLit..nkTripleStrLit}) and (b.strVal == ""): 
+  elif (b.kind in {nkStrLit..nkTripleStrLit}) and (b.strVal == ""):
     initLocExpr(p, e.sons[1], x)
     putIntoDest(p, d, e.typ, ropef("(($1) && ($1)->Sup.len == 0)", [rdLoc(x)]))
-  else: 
+  else:
     binaryExpr(p, e, d, "eqStrings", "eqStrings($1, $2)")
-  
-proc genSeqConstr(p: BProc, t: PNode, d: var TLoc) = 
+
+proc genSeqConstr(p: BProc, t: PNode, d: var TLoc) =
   var newSeq, arr: TLoc
   useMagic(p.module, "newSeq")
-  if d.k == locNone: 
-    getTemp(p, t.typ, d)      
+  if d.k == locNone:
+    getTemp(p, t.typ, d)
   # generate call to newSeq before adding the elements per hand:
   initLoc(newSeq, locExpr, t.typ, OnHeap)
-  newSeq.r = ropef("($1) newSeq($2, $3)", [getTypeDesc(p.module, t.typ), 
+  newSeq.r = ropef("($1) newSeq($2, $3)", [getTypeDesc(p.module, t.typ),
       genTypeInfo(p.module, t.typ), intLiteral(sonsLen(t))])
   genAssignment(p, d, newSeq, {afSrcIsNotNil})
-  for i in countup(0, sonsLen(t) - 1): 
+  for i in countup(0, sonsLen(t) - 1):
     initLoc(arr, locExpr, elemType(skipTypes(t.typ, abstractInst)), OnHeap)
     arr.r = ropef("$1->data[$2]", [rdLoc(d), intLiteral(i)])
     arr.s = OnHeap            # we know that sequences are on the heap
     expr(p, t.sons[i], arr)
 
-proc genArrToSeq(p: BProc, t: PNode, d: var TLoc) = 
+proc genArrToSeq(p: BProc, t: PNode, d: var TLoc) =
   var newSeq, elem, a, arr: TLoc
-  if t.kind == nkBracket: 
+  if t.kind == nkBracket:
     t.sons[1].typ = t.typ
     genSeqConstr(p, t.sons[1], d)
-    return 
+    return
   useMagic(p.module, "newSeq")
-  if d.k == locNone: 
-    getTemp(p, t.typ, d)      
+  if d.k == locNone:
+    getTemp(p, t.typ, d)
   # generate call to newSeq before adding the elements per hand:
   var L = int(lengthOrd(t.sons[1].typ))
   initLoc(newSeq, locExpr, t.typ, OnHeap)
-  newSeq.r = ropef("($1) newSeq($2, $3)", [getTypeDesc(p.module, t.typ), 
+  newSeq.r = ropef("($1) newSeq($2, $3)", [getTypeDesc(p.module, t.typ),
       genTypeInfo(p.module, t.typ), intLiteral(L)])
   genAssignment(p, d, newSeq, {afSrcIsNotNil})
   initLocExpr(p, t.sons[1], a)
-  for i in countup(0, L - 1): 
+  for i in countup(0, L - 1):
     initLoc(elem, locExpr, elemType(skipTypes(t.typ, abstractInst)), OnHeap)
     elem.r = ropef("$1->data[$2]", [rdLoc(d), intLiteral(i)])
     elem.s = OnHeap # we know that sequences are on the heap
@@ -1435,7 +1435,7 @@ proc binaryFloatArith(p: BProc, e: PNode, d: var TLoc, m: TMagic) =
   else:
     binaryArith(p, e, d, m)
 
-proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) = 
+proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
   var line, filen: PRope
   case op
   of mOr, mAnd: genAndOr(p, e, d, op)
@@ -1446,27 +1446,27 @@ proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
   of mAddi..mModi64: binaryArithOverflow(p, e, d, op)
   of mRepr: genRepr(p, e, d)
   of mSwap: genSwap(p, e, d)
-  of mPred: 
+  of mPred:
     # XXX: range checking?
     if not (optOverflowCheck in p.Options): binaryExpr(p, e, d, "", "$1 - $2")
     else: binaryExpr(p, e, d, "subInt", "subInt($1, $2)")
-  of mSucc: 
+  of mSucc:
     # XXX: range checking?
     if not (optOverflowCheck in p.Options): binaryExpr(p, e, d, "", "$1 + $2")
     else: binaryExpr(p, e, d, "addInt", "addInt($1, $2)")
-  of mInc: 
-    if not (optOverflowCheck in p.Options): 
+  of mInc:
+    if not (optOverflowCheck in p.Options):
       binaryStmt(p, e, d, "", "$1 += $2;$n")
-    elif skipTypes(e.sons[1].typ, abstractVar).kind == tyInt64: 
+    elif skipTypes(e.sons[1].typ, abstractVar).kind == tyInt64:
       binaryStmt(p, e, d, "addInt64", "$1 = addInt64($1, $2);$n")
-    else: 
+    else:
       binaryStmt(p, e, d, "addInt", "$1 = addInt($1, $2);$n")
-  of ast.mDec: 
-    if not (optOverflowCheck in p.Options): 
+  of ast.mDec:
+    if not (optOverflowCheck in p.Options):
       binaryStmt(p, e, d, "", "$1 -= $2;$n")
-    elif skipTypes(e.sons[1].typ, abstractVar).kind == tyInt64: 
+    elif skipTypes(e.sons[1].typ, abstractVar).kind == tyInt64:
       binaryStmt(p, e, d, "subInt64", "$1 = subInt64($1, $2);$n")
-    else: 
+    else:
       binaryStmt(p, e, d, "subInt", "$1 = subInt($1, $2);$n")
   of mConStrStr: genStrConcat(p, e, d)
   of mAppendStrCh: binaryStmt(p, e, d, "addChar", "$1 = addChar($1, $2);$n")
@@ -1484,256 +1484,256 @@ proc genMagicExpr(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
   of mCStrToStr: genDollar(p, e, d, "cstrToNimstr", "cstrToNimstr($1)")
   of mStrToStr: expr(p, e.sons[1], d)
   of mEnumToStr: genRepr(p, e, d)
-  of mAssert: 
-    if (optAssert in p.Options): 
+  of mAssert:
+    if (optAssert in p.Options):
       useMagic(p.module, "internalAssert")
       expr(p, e.sons[1], d)
       line = toRope(toLinenumber(e.info))
       filen = makeCString(ToFilename(e.info))
-      appf(p.s[cpsStmts], "internalAssert($1, $2, $3);$n", 
+      appf(p.s[cpsStmts], "internalAssert($1, $2, $3);$n",
            [filen, line, rdLoc(d)])
   of mIs: genIs(p, e, d)
   of mNew: genNew(p, e)
   of mNewFinalize: genNewFinalize(p, e)
   of mNewSeq: genNewSeq(p, e)
-  of mSizeOf: 
-    putIntoDest(p, d, e.typ, ropef("((NI)sizeof($1))", 
+  of mSizeOf:
+    putIntoDest(p, d, e.typ, ropef("((NI)sizeof($1))",
                                    [getTypeDesc(p.module, e.sons[1].typ)]))
   of mChr: genCast(p, e, d)
   of mOrd: genOrd(p, e, d)
-  of mLengthArray, mHigh, mLengthStr, mLengthSeq, mLengthOpenArray: 
+  of mLengthArray, mHigh, mLengthStr, mLengthSeq, mLengthOpenArray:
     genArrayLen(p, e, d, op)
   of mGCref: unaryStmt(p, e, d, "nimGCref", "nimGCref($1);$n")
   of mGCunref: unaryStmt(p, e, d, "nimGCunref", "nimGCunref($1);$n")
   of mSetLengthStr: genSetLengthStr(p, e, d)
   of mSetLengthSeq: genSetLengthSeq(p, e, d)
-  of mIncl, mExcl, mCard, mLtSet, mLeSet, mEqSet, mMulSet, mPlusSet, mMinusSet, 
-     mInSet: 
+  of mIncl, mExcl, mCard, mLtSet, mLeSet, mEqSet, mMulSet, mPlusSet, mMinusSet,
+     mInSet:
     genSetOp(p, e, d, op)
   of mNewString, mCopyStr, mCopyStrLast, mExit: genCall(p, e, d)
   of mEcho: genEcho(p, e)
   of mArrToSeq: genArrToSeq(p, e, d)
-  of mNLen..mNError: 
+  of mNLen..mNError:
     liMessage(e.info, errCannotGenerateCodeForX, e.sons[0].sym.name.s)
   else: internalError(e.info, "genMagicExpr: " & $op)
-  
+
 proc genConstExpr(p: BProc, n: PNode): PRope
-proc handleConstExpr(p: BProc, n: PNode, d: var TLoc): bool = 
-  if (nfAllConst in n.flags) and (d.k == locNone) and (sonsLen(n) > 0): 
+proc handleConstExpr(p: BProc, n: PNode, d: var TLoc): bool =
+  if (nfAllConst in n.flags) and (d.k == locNone) and (sonsLen(n) > 0):
     var t = getUniqueType(n.typ)
     discard getTypeDesc(p.module, t) # so that any fields are initialized
     var id = NodeTableTestOrSet(p.module.dataCache, n, gid)
     fillLoc(d, locData, t, con("TMP", toRope(id)), OnHeap)
-    if id == gid: 
+    if id == gid:
       # expression not found in the cache:
       inc(gid)
-      appf(p.module.s[cfsData], "NIM_CONST $1 $2 = $3;$n", 
+      appf(p.module.s[cfsData], "NIM_CONST $1 $2 = $3;$n",
            [getTypeDesc(p.module, t), d.r, genConstExpr(p, n)])
     result = true
-  else: 
+  else:
     result = false
-  
-proc genSetConstr(p: BProc, e: PNode, d: var TLoc) = 
+
+proc genSetConstr(p: BProc, e: PNode, d: var TLoc) =
   # example: { a..b, c, d, e, f..g }
   # we have to emit an expression of the form:
   # memset(tmp, 0, sizeof(tmp)); inclRange(tmp, a, b); incl(tmp, c);
   # incl(tmp, d); incl(tmp, e); inclRange(tmp, f, g);
-  var 
+  var
     a, b, idx: TLoc
     ts: string
-  if nfAllConst in e.flags: 
+  if nfAllConst in e.flags:
     putIntoDest(p, d, e.typ, genSetNode(p, e))
-  else: 
+  else:
     if d.k == locNone: getTemp(p, e.typ, d)
-    if getSize(e.typ) > 8: 
+    if getSize(e.typ) > 8:
       # big set:
       appf(p.s[cpsStmts], "memset($1, 0, sizeof($1));$n", [rdLoc(d)])
-      for i in countup(0, sonsLen(e) - 1): 
-        if e.sons[i].kind == nkRange: 
+      for i in countup(0, sonsLen(e) - 1):
+        if e.sons[i].kind == nkRange:
           getTemp(p, getSysType(tyInt), idx) # our counter
           initLocExpr(p, e.sons[i].sons[0], a)
           initLocExpr(p, e.sons[i].sons[1], b)
           appf(p.s[cpsStmts], "for ($1 = $3; $1 <= $4; $1++) $n" &
-              "$2[$1/8] |=(1<<($1%8));$n", [rdLoc(idx), rdLoc(d), 
+              "$2[$1/8] |=(1<<($1%8));$n", [rdLoc(idx), rdLoc(d),
               rdSetElemLoc(a, e.typ), rdSetElemLoc(b, e.typ)])
-        else: 
+        else:
           initLocExpr(p, e.sons[i], a)
-          appf(p.s[cpsStmts], "$1[$2/8] |=(1<<($2%8));$n", 
+          appf(p.s[cpsStmts], "$1[$2/8] |=(1<<($2%8));$n",
                [rdLoc(d), rdSetElemLoc(a, e.typ)])
-    else: 
+    else:
       # small set
       ts = "NI" & $(getSize(e.typ) * 8)
       appf(p.s[cpsStmts], "$1 = 0;$n", [rdLoc(d)])
-      for i in countup(0, sonsLen(e) - 1): 
-        if e.sons[i].kind == nkRange: 
+      for i in countup(0, sonsLen(e) - 1):
+        if e.sons[i].kind == nkRange:
           getTemp(p, getSysType(tyInt), idx) # our counter
           initLocExpr(p, e.sons[i].sons[0], a)
           initLocExpr(p, e.sons[i].sons[1], b)
           appf(p.s[cpsStmts], "for ($1 = $3; $1 <= $4; $1++) $n" &
               "$2 |=(1<<((" & ts & ")($1)%(sizeof(" & ts & ")*8)));$n", [
-              rdLoc(idx), rdLoc(d), rdSetElemLoc(a, e.typ), 
+              rdLoc(idx), rdLoc(d), rdSetElemLoc(a, e.typ),
               rdSetElemLoc(b, e.typ)])
-        else: 
+        else:
           initLocExpr(p, e.sons[i], a)
-          appf(p.s[cpsStmts], 
-               "$1 |=(1<<((" & ts & ")($2)%(sizeof(" & ts & ")*8)));$n", 
+          appf(p.s[cpsStmts],
+               "$1 |=(1<<((" & ts & ")($2)%(sizeof(" & ts & ")*8)));$n",
                [rdLoc(d), rdSetElemLoc(a, e.typ)])
 
-proc genTupleConstr(p: BProc, n: PNode, d: var TLoc) = 
+proc genTupleConstr(p: BProc, n: PNode, d: var TLoc) =
   var rec: TLoc
-  if not handleConstExpr(p, n, d): 
+  if not handleConstExpr(p, n, d):
     var t = getUniqueType(n.typ)
     discard getTypeDesc(p.module, t) # so that any fields are initialized
     if d.k == locNone: getTemp(p, t, d)
-    for i in countup(0, sonsLen(n) - 1): 
+    for i in countup(0, sonsLen(n) - 1):
       var it = n.sons[i]
-      if it.kind == nkExprColonExpr: 
+      if it.kind == nkExprColonExpr:
         initLoc(rec, locExpr, it.sons[1].typ, d.s)
         if (t.n.sons[i].kind != nkSym): InternalError(n.info, "genTupleConstr")
-        rec.r = ropef("$1.$2", 
+        rec.r = ropef("$1.$2",
                       [rdLoc(d), mangleRecFieldName(t.n.sons[i].sym, t)])
         expr(p, it.sons[1], rec)
-      elif t.n == nil: 
+      elif t.n == nil:
         initLoc(rec, locExpr, it.typ, d.s)
         rec.r = ropef("$1.Field$2", [rdLoc(d), toRope(i)])
         expr(p, it, rec)
-      else: 
+      else:
         initLoc(rec, locExpr, it.typ, d.s)
-        if (t.n.sons[i].kind != nkSym): 
+        if (t.n.sons[i].kind != nkSym):
           InternalError(n.info, "genTupleConstr: 2")
-        rec.r = ropef("$1.$2", 
+        rec.r = ropef("$1.$2",
                       [rdLoc(d), mangleRecFieldName(t.n.sons[i].sym, t)])
         expr(p, it, rec)
 
-proc genArrayConstr(p: BProc, n: PNode, d: var TLoc) = 
+proc genArrayConstr(p: BProc, n: PNode, d: var TLoc) =
   var arr: TLoc
-  if not handleConstExpr(p, n, d): 
+  if not handleConstExpr(p, n, d):
     if d.k == locNone: getTemp(p, n.typ, d)
-    for i in countup(0, sonsLen(n) - 1): 
+    for i in countup(0, sonsLen(n) - 1):
       initLoc(arr, locExpr, elemType(skipTypes(n.typ, abstractInst)), d.s)
       arr.r = ropef("$1[$2]", [rdLoc(d), intLiteral(i)])
       expr(p, n.sons[i], arr)
 
-proc genComplexConst(p: BProc, sym: PSym, d: var TLoc) = 
+proc genComplexConst(p: BProc, sym: PSym, d: var TLoc) =
   genConstPrototype(p.module, sym)
   assert((sym.loc.r != nil) and (sym.loc.t != nil))
   putLocIntoDest(p, d, sym.loc)
 
-proc genStmtListExpr(p: BProc, n: PNode, d: var TLoc) = 
+proc genStmtListExpr(p: BProc, n: PNode, d: var TLoc) =
   var length = sonsLen(n)
   for i in countup(0, length - 2): genStmts(p, n.sons[i])
   if length > 0: expr(p, n.sons[length - 1], d)
-  
-proc upConv(p: BProc, n: PNode, d: var TLoc) = 
-  var 
+
+proc upConv(p: BProc, n: PNode, d: var TLoc) =
+  var
     a: TLoc
     dest, t: PType
     r, nilCheck: PRope
   initLocExpr(p, n.sons[0], a)
   dest = skipTypes(n.typ, abstractPtrs)
-  if (optObjCheck in p.options) and not (isPureObject(dest)): 
+  if (optObjCheck in p.options) and not (isPureObject(dest)):
     useMagic(p.module, "chckObj")
     r = rdLoc(a)
     nilCheck = nil
     t = skipTypes(a.t, abstractInst)
-    while t.kind in {tyVar, tyPtr, tyRef}: 
+    while t.kind in {tyVar, tyPtr, tyRef}:
       if t.kind != tyVar: nilCheck = r
       r = ropef("(*$1)", [r])
       t = skipTypes(t.sons[0], abstractInst)
-    if gCmd != cmdCompileToCpp: 
-      while (t.kind == tyObject) and (t.sons[0] != nil): 
+    if gCmd != cmdCompileToCpp:
+      while (t.kind == tyObject) and (t.sons[0] != nil):
         app(r, ".Sup")
         t = skipTypes(t.sons[0], abstractInst)
-    if nilCheck != nil: 
-      appf(p.s[cpsStmts], "if ($1) chckObj($2.m_type, $3);$n", 
+    if nilCheck != nil:
+      appf(p.s[cpsStmts], "if ($1) chckObj($2.m_type, $3);$n",
            [nilCheck, r, genTypeInfo(p.module, dest)])
-    else: 
-      appf(p.s[cpsStmts], "chckObj($1.m_type, $2);$n", 
+    else:
+      appf(p.s[cpsStmts], "chckObj($1.m_type, $2);$n",
            [r, genTypeInfo(p.module, dest)])
-  if n.sons[0].typ.kind != tyObject: 
-    putIntoDest(p, d, n.typ, 
+  if n.sons[0].typ.kind != tyObject:
+    putIntoDest(p, d, n.typ,
                 ropef("(($1) ($2))", [getTypeDesc(p.module, n.typ), rdLoc(a)]))
-  else: 
-    putIntoDest(p, d, n.typ, ropef("(*($1*) ($2))", 
+  else:
+    putIntoDest(p, d, n.typ, ropef("(*($1*) ($2))",
                                    [getTypeDesc(p.module, dest), addrLoc(a)]))
-  
-proc downConv(p: BProc, n: PNode, d: var TLoc) = 
-  if gCmd == cmdCompileToCpp: 
+
+proc downConv(p: BProc, n: PNode, d: var TLoc) =
+  if gCmd == cmdCompileToCpp:
     expr(p, n.sons[0], d)     # downcast does C++ for us
-  else: 
+  else:
     var dest = skipTypes(n.typ, abstractPtrs)
     var src = skipTypes(n.sons[0].typ, abstractPtrs)
     var a: TLoc
     initLocExpr(p, n.sons[0], a)
     var r = rdLoc(a)
-    if skipTypes(n.sons[0].typ, abstractInst).kind in {tyRef, tyPtr, tyVar}: 
+    if skipTypes(n.sons[0].typ, abstractInst).kind in {tyRef, tyPtr, tyVar}:
       app(r, "->Sup")
       for i in countup(2, abs(inheritanceDiff(dest, src))): app(r, ".Sup")
       r = con("&", r)
-    else: 
+    else:
       for i in countup(1, abs(inheritanceDiff(dest, src))): app(r, ".Sup")
     putIntoDest(p, d, n.typ, r)
 
 proc genBlock(p: BProc, t: PNode, d: var TLoc)
-proc expr(p: BProc, e: PNode, d: var TLoc) = 
+proc expr(p: BProc, e: PNode, d: var TLoc) =
   case e.kind
-  of nkSym: 
+  of nkSym:
     var sym = e.sym
     case sym.Kind
-    of skMethod: 
-      if sym.ast.sons[codePos] == nil: 
+    of skMethod:
+      if sym.ast.sons[codePos] == nil:
         # we cannot produce code for the dispatcher yet:
         fillProcLoc(sym)
         genProcPrototype(p.module, sym)
-      else: 
+      else:
         genProc(p.module, sym)
       putLocIntoDest(p, d, sym.loc)
-    of skProc, skConverter: 
+    of skProc, skConverter:
       genProc(p.module, sym)
-      if ((sym.loc.r == nil) or (sym.loc.t == nil)): 
+      if ((sym.loc.r == nil) or (sym.loc.t == nil)):
         InternalError(e.info, "expr: proc not init " & sym.name.s)
       putLocIntoDest(p, d, sym.loc)
-    of skConst: 
-      if isSimpleConst(sym.typ): 
+    of skConst:
+      if isSimpleConst(sym.typ):
         putIntoDest(p, d, e.typ, genLiteral(p, sym.ast, sym.typ))
-      else: 
+      else:
         genComplexConst(p, sym, d)
-    of skEnumField: 
+    of skEnumField:
       putIntoDest(p, d, e.typ, toRope(sym.position))
-    of skVar: 
+    of skVar:
       if (sfGlobal in sym.flags): genVarPrototype(p.module, sym)
-      if ((sym.loc.r == nil) or (sym.loc.t == nil)): 
+      if ((sym.loc.r == nil) or (sym.loc.t == nil)):
         InternalError(e.info, "expr: var not init " & sym.name.s)
       putLocIntoDest(p, d, sym.loc)
-    of skForVar, skTemp: 
-      if ((sym.loc.r == nil) or (sym.loc.t == nil)): 
+    of skForVar, skTemp:
+      if ((sym.loc.r == nil) or (sym.loc.t == nil)):
         InternalError(e.info, "expr: temp not init " & sym.name.s)
       putLocIntoDest(p, d, sym.loc)
-    of skParam: 
-      if ((sym.loc.r == nil) or (sym.loc.t == nil)): 
+    of skParam:
+      if ((sym.loc.r == nil) or (sym.loc.t == nil)):
         InternalError(e.info, "expr: param not init " & sym.name.s)
       putLocIntoDest(p, d, sym.loc)
     else: InternalError(e.info, "expr(" & $sym.kind & "); unknown symbol")
-  of nkStrLit..nkTripleStrLit, nkIntLit..nkInt64Lit, nkFloatLit..nkFloat64Lit, 
-     nkNilLit, nkCharLit: 
+  of nkStrLit..nkTripleStrLit, nkIntLit..nkInt64Lit, nkFloatLit..nkFloat64Lit,
+     nkNilLit, nkCharLit:
     putIntoDest(p, d, e.typ, genLiteral(p, e))
-  of nkCall, nkHiddenCallConv, nkInfix, nkPrefix, nkPostfix, nkCommand, 
-     nkCallStrLit: 
-    if (e.sons[0].kind == nkSym) and (e.sons[0].sym.magic != mNone): 
+  of nkCall, nkHiddenCallConv, nkInfix, nkPrefix, nkPostfix, nkCommand,
+     nkCallStrLit:
+    if (e.sons[0].kind == nkSym) and (e.sons[0].sym.magic != mNone):
       genMagicExpr(p, e, d, e.sons[0].sym.magic)
-    else: 
+    else:
       genCall(p, e, d)
   of nkCurly: genSetConstr(p, e, d)
-  of nkBracket: 
-    if (skipTypes(e.typ, abstractVarRange).kind == tySequence): 
+  of nkBracket:
+    if (skipTypes(e.typ, abstractVarRange).kind == tySequence):
       genSeqConstr(p, e, d)
-    else: 
+    else:
       genArrayConstr(p, e, d)
   of nkPar: genTupleConstr(p, e, d)
   of nkCast: genCast(p, e, d)
   of nkHiddenStdConv, nkHiddenSubConv, nkConv: genConv(p, e, d)
   of nkHiddenAddr, nkAddr: genAddr(p, e, d)
-  of nkBracketExpr: 
+  of nkBracketExpr:
     var ty = skipTypes(e.sons[0].typ, abstractVarRange)
     if ty.kind in {tyRef, tyPtr}: ty = skipTypes(ty.sons[0], abstractVarRange)
     case ty.kind
@@ -1758,31 +1758,31 @@ proc expr(p: BProc, e: PNode, d: var TLoc) =
   of nkCStringToString: convCStrToStr(p, e, d)
   of nkPassAsOpenArray: passToOpenArray(p, e, d)
   else: InternalError(e.info, "expr(" & $e.kind & "); unknown node kind")
-  
-proc genNamedConstExpr(p: BProc, n: PNode): PRope = 
+
+proc genNamedConstExpr(p: BProc, n: PNode): PRope =
   if n.kind == nkExprColonExpr: result = genConstExpr(p, n.sons[1])
   else: result = genConstExpr(p, n)
-  
-proc genConstSimpleList(p: BProc, n: PNode): PRope = 
+
+proc genConstSimpleList(p: BProc, n: PNode): PRope =
   var length = sonsLen(n)
   result = toRope("{")
-  for i in countup(0, length - 2): 
+  for i in countup(0, length - 2):
     appf(result, "$1,$n", [genNamedConstExpr(p, n.sons[i])])
   if length > 0: app(result, genNamedConstExpr(p, n.sons[length - 1]))
   app(result, '}' & tnl)
 
-proc genConstExpr(p: BProc, n: PNode): PRope = 
+proc genConstExpr(p: BProc, n: PNode): PRope =
   case n.Kind
-  of nkHiddenStdConv, nkHiddenSubConv: 
+  of nkHiddenStdConv, nkHiddenSubConv:
     result = genConstExpr(p, n.sons[1])
-  of nkCurly: 
+  of nkCurly:
     var cs: TBitSet
     toBitSet(n, cs)
     result = genRawSetData(cs, int(getSize(n.typ)))
-  of nkBracket, nkPar: 
+  of nkBracket, nkPar:
     # XXX: tySequence!
     result = genConstSimpleList(p, n)
-  else: 
+  else:
     #  result := genLiteral(p, n)
     var d: TLoc
     initLocExpr(p, n, d)
diff --git a/tests/accept/compile/techo.nim b/tests/accept/compile/techo.nim
index beb21fa16..0fa4b5fe0 100755
--- a/tests/accept/compile/techo.nim
+++ b/tests/accept/compile/techo.nim
@@ -1,3 +1,3 @@
 # Simplest Nimrod program
 
-echo "Hallo, World!"
+echo "Hello, World!"
diff --git a/tests/accept/compile/thallo.nim b/tests/accept/compile/thallo.nim
index f1cae5897..8cbe10bd5 100755
--- a/tests/accept/compile/thallo.nim
+++ b/tests/accept/compile/thallo.nim
@@ -36,7 +36,7 @@ macrotest(stdout)
 #GC_disable()
 
 echo("This was compiled by Nimrod version " & system.nimrodVersion)
-writeln(stdout, "Hallo", " World", "!")
+writeln(stdout, "Hello", " World", "!")
 
 echo(["a", "b", "c", "d"].len)
 for x in items(["What's", "your", "name", "?", ]):
@@ -51,7 +51,7 @@ var testseq: seq[string] = @[
 ]
 echo(repr(testseq))
 
-var dummy = "hallo"
+var dummy = "hello"
 echo(copy(dummy, 2, 3))
 
 echo($meC)
@@ -60,11 +60,11 @@ echo($meC)
 for x, y in items([(1, 2), (3, 4), (6, 1), (5, 2)]):
   echo x
   echo y
-  
+
 proc simpleConst(): int = return 34
-  
-# test constant evaluation: 
-const  
+
+# test constant evaluation:
+const
   constEval3 = simpleConst()
   constEval = "abc".contains('b')
   constEval2 = fac(7)
diff --git a/tests/accept/compile/tio.nim b/tests/accept/compile/tio.nim
index 014c32d9f..5ae119f77 100755
--- a/tests/accept/compile/tio.nim
+++ b/tests/accept/compile/tio.nim
@@ -1,7 +1,7 @@
 # test the file-IO

 

 proc main() =

-  for line in lines("thallo.nim"):

+  for line in lines("thello.nim"):

     writeln(stdout, line)

 

 main()

diff --git a/tests/accept/compile/tloops.nim b/tests/accept/compile/tloops.nim
index 3d03256ad..74a3992c9 100755
--- a/tests/accept/compile/tloops.nim
+++ b/tests/accept/compile/tloops.nim
@@ -57,7 +57,7 @@ proc Foo(n: int): int =
     while b:

         a = a + 3

     a = a + 5

-    write(stdout, "Hallo!")

+    write(stdout, "Hello!")

 

 

 # We should come till here :-)

diff --git a/tests/accept/compile/tstreams.nim b/tests/accept/compile/tstreams.nim
index 68ca8eeeb..640565a27 100755
--- a/tests/accept/compile/tstreams.nim
+++ b/tests/accept/compile/tstreams.nim
@@ -2,6 +2,6 @@ import streams
 
 var outp = newFileStream(stdout)
 var inp = newFileStream(stdin)
-write(outp, "Hallo! What is your name?")
+write(outp, "Hello! What is your name?")
 var line = readLine(inp)
-write(outp, "nice name: " & line)
+write(outp, "Nice name: " & line)
diff --git a/tests/accept/run/minit.nim b/tests/accept/run/minit.nim
index d3b4b0be1..75fcebb77 100755
--- a/tests/accept/run/minit.nim
+++ b/tests/accept/run/minit.nim
@@ -1,2 +1,2 @@
 # Test the new initialization for modules

-write(stdout, "Hallo from module! ")

+write(stdout, "Hello from module! ")

diff --git a/tests/accept/run/tbintre2.nim b/tests/accept/run/tbintre2.nim
index dedc87705..e85837dfa 100755
--- a/tests/accept/run/tbintre2.nim
+++ b/tests/accept/run/tbintre2.nim
@@ -4,7 +4,7 @@ import tbintree
 
 var
   root: PBinaryTree[string]
-  x = newNode("hallo")
+  x = newNode("hello")
 add(root, x)
 add(root, "world")
 if find(root, "world"):
@@ -21,5 +21,5 @@ add(r2, 99)
 for y in items(r2):
   stdout.write(y)
 
-#OUT halloworld99110223
+#OUT helloworld99110223
 
diff --git a/tests/accept/run/tbintree.nim b/tests/accept/run/tbintree.nim
index 89126eaa5..0561e004a 100755
--- a/tests/accept/run/tbintree.nim
+++ b/tests/accept/run/tbintree.nim
@@ -35,12 +35,12 @@ proc add*[Ty](root: var PBinaryTree[Ty], data: Ty) =
   # convenience proc:
   add(root, newNode(data))
 
-proc find*[Ty2](b: PBinaryTree[Ty2], data: Ty2): bool = 
+proc find*[Ty2](b: PBinaryTree[Ty2], data: Ty2): bool =
   # for testing this needs to be recursive, so that the
   # instantiated type is checked for proper tyGenericInst envelopes
-  if b == nil: 
+  if b == nil:
     result = false
-  else: 
+  else:
     var c = cmp(data, b.data)
     if c < 0: result = find(b.le, data)
     elif c > 0: result = find(b.ri, data)
@@ -66,7 +66,7 @@ iterator items*[T](root: PBinaryTree[T]): T =
     while n != nil:
       add(stack, n)
       n = n.le
-    if stack.len > 0: 
+    if stack.len > 0:
       n = stack.pop()
       yield n.data
       n = n.ri
@@ -81,7 +81,7 @@ proc debug[T](a: PBinaryTree[T]) =
 when isMainModule:
   var
     root: PBinaryTree[string]
-    x = newNode("hallo")
+    x = newNode("hello")
   add(root, x)
   add(root, "world")
   if find(root, "world"):
@@ -89,7 +89,7 @@ when isMainModule:
       stdout.write(str)
   else:
     stdout.writeln("BUG")
-  
+
   var
     r2: PBinaryTree[int]
   add(r2, newNode(110))
@@ -98,4 +98,4 @@ when isMainModule:
   for y in items(r2):
     stdout.write(y)
 
-#OUT halloworld99110223
+#OUT helloworld99110223
diff --git a/tests/accept/run/tinit.nim b/tests/accept/run/tinit.nim
index 85475ce94..386bfec37 100755
--- a/tests/accept/run/tinit.nim
+++ b/tests/accept/run/tinit.nim
@@ -2,5 +2,5 @@
 

 import minit

 

-write(stdout, "Hallo from main module!\n")

-#OUT Hallo from module! Hallo from main module!

+write(stdout, "Hello from main module!\n")

+#OUT Hello from module! Hello from main module!

diff --git a/tests/accept/run/toverwr.nim b/tests/accept/run/toverwr.nim
index f2b42df15..6705c6b3f 100755
--- a/tests/accept/run/toverwr.nim
+++ b/tests/accept/run/toverwr.nim
@@ -3,5 +3,5 @@
 proc write(t: TFile, s: string) =

   nil # a nop

 

-system.write(stdout, "hallo")

-#OUT hallo

+system.write(stdout, "hello")

+#OUT hello

diff --git a/tests/accept/run/tpos.nim b/tests/accept/run/tpos.nim
index 114d39c05..df701d3c5 100755
--- a/tests/accept/run/tpos.nim
+++ b/tests/accept/run/tpos.nim
@@ -23,7 +23,7 @@ proc mypos(sub, s: string, start: int = 0): int =
     else:

       result = -1

 

-var sub = "hallo"

-var s = "world hallo"

+var sub = "hello"

+var s = "world hello"

 write(stdout, mypos(sub, s))

 #OUT 6

diff --git a/tests/accept/run/tsimmeth.nim b/tests/accept/run/tsimmeth.nim
index 3f5f810e6..c6dbf69bb 100755
--- a/tests/accept/run/tsimmeth.nim
+++ b/tests/accept/run/tsimmeth.nim
@@ -2,7 +2,7 @@
 
 import strutils
 
-var x = "hallo world!".toLower.toUpper
+var x = "hello world!".toLower.toUpper
 x.echo()
-#OUT HALLO WORLD!
+#OUT HELLO WORLD!
 
diff --git a/tests/tenuminh.nim b/tests/tenuminh.nim
new file mode 100644
index 000000000..02c71613b
--- /dev/null
+++ b/tests/tenuminh.nim
@@ -0,0 +1,10 @@
+type
+  TCardPts = enum
+    North, West, South, East
+
+  TCardPts2 = enum of TCardPts
+    N, W, S, E
+
+# If I do:
+var y = W
+echo($y & "=" & $ord(y)) #OUT W=5