Declare Definition
Syntax:
[ | Private | Public
] _
Declare Sub name
Lib "dll name" _
[Alias "module name"] [([param[, ...]])]
-or-
[ | Private | Public
] _
Declare Function name[type] Lib "dll name" _
[Alias "module name"] [([param[, ...]])]
[As type]
Group:
Declaration
Description:
Interface to a DLL defined subroutine or function. The values of the calling
arglist are assigned to the params.
Declare defaults to Public if neither Private
or Public is specified.
WARNING! Be very careful when declaring DLL subroutines or functions.
If you make a mistake and declare the parementers or result incorrectly
then Windows might halt. Save any open documents before testing new DLL
declarations.
Err.LastDLLError returns the error code for that last DLL call (Windows
32 bit versions only).
Parameter
Description
name This
is the name of the subroutine or function being defined. If Alias "module
name" is omitted then this is the module name, too.
"dll name" This is the DLL
file where the module's code is.
"module name" This is the
name of the module in the DLL file. If this is #number then it is the
ordinal number of the module. If it is omitted then name
is the module name.
The DLL is searched for the specified module name. For Win16, this is the
only module name checked. For Win32, if this module exists, it is used.
All As String parameters are converted from Unicode to ASCII prior to
calling the DLL and from ASCII to Unicode afterwards. (Use "Unicode:module
name" to prevent ASCII to Unicode conversion.)
If the module does not exist, one or two other module names are tried:
1) For Windows NT only: The module name with a "W" appended is
tried. All As String parameters are passed as Unicode to calling the DLL.
2) For Windows NT and Windows 95: The module name with an "A"
appended is tried. All As String parameters are converted from Unicode
to ASCII prior to calling the DLL and from ASCII to Unicode afterwards.
If none of these module names is found a run-time error occurs.
params
A list of zero or more params that are used
by the DLL subroutine or function. (Note: A ByVal string's value may be
modified by the DLL.)
See
Also: Function, Sub,
Call.
Example:
'Win16
example
Declare Function GetActiveWindow% Lib "user"
()
Declare Function GetWindowTextLength% Lib "user"
_
(ByVal hwnd%)
Declare Sub GetWindowText Lib "user"
_
(ByVal hwnd%, ByVal lpsz$, ByVal cbMax%)
Function ActiveWindowTitle$()
ActiveWindow = GetActiveWindow()
TitleLen = GetWindowTextLength(ActiveWindow)
Title$ = Space$(TitleLen)
GetWindowText ActiveWindow,Title$,TitleLen+1
ActiveWindowTitle$ = Title$
End Function
Sub Main
Debug.Print ActiveWindowTitle$()
End Sub
'Win32 example
Declare Function GetActiveWindow& Lib "user32"
()
Declare Function GetWindowTextLengthA& Lib
"user32" _
(ByVal hwnd&)
Declare Sub GetWindowTextA Lib "user32"
_
(ByVal hwnd&, ByVal lpsz$, ByVal cbMax&)
Function ActiveWindowTitle$()
ActiveWindow = GetActiveWindow()
TitleLen = GetWindowTextLengthA(ActiveWindow)
Title$ = Space$(TitleLen)
GetWindowTextA ActiveWindow,Title$,TitleLen+1
ActiveWindowTitle$ = Title$
End Function
Sub Main
Debug.Print ActiveWindowTitle$()
End Sub