diff options
author | Andreas Rumpf <andreas@andreas-laptop> | 2010-05-29 00:39:33 +0200 |
---|---|---|
committer | Andreas Rumpf <andreas@andreas-laptop> | 2010-05-29 00:39:33 +0200 |
commit | 9a22ae02173d5c026a24a0c145e72531978c9268 (patch) | |
tree | ed0dfe1160b873b75e19f4357c4e1649ef9017bf | |
parent | b34b1dbc6c7290a893149aa9f5ea5d54a37c8522 (diff) | |
parent | 286e5958d662038fdc852861ecd07c89256495ab (diff) | |
download | Nim-9a22ae02173d5c026a24a0c145e72531978c9268.tar.gz |
resolved system.nim conflicts
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 |