Function Reference


Displays a Print dialog box

#include <WinAPIDlg.au3>
_WinAPI_PrintDlg ( ByRef $tPRINTDLG )


$tPRINTDLG $tagPRINTDLG structure that contains information used to initialize the dialog box. When the function
returns, it contains information about the user's selections. This structure must be initialized
before function call.
(See MSDN for more information)

Return Value

Success: True.
Failure: False and sets the @error flag to non-zero, @extended flag may contain the dialog box error code.


Note that the values of "hDevMode" and "hDevNames" member in $tagPRINTDLG may change when they are passed into
_WinAPI_PrintDlg(). This is because these members are filled on both input and output.

See Also

Search PrintDlg in MSDN Library.


#include <APIDlgConstants.au3>
#include <Memory.au3>
#include <WinAPIDlg.au3>
#include <WinAPIFiles.au3>

; Create PRINTDLG structure and set initial values for the number of copies, starting, and ending page
Local $tPRINTDLG = DllStructCreate($tagPRINTDLG)
DllStructSetData($tPRINTDLG, 'Size', DllStructGetSize($tPRINTDLG))
DllStructSetData($tPRINTDLG, 'Flags', $PD_PAGENUMS)
DllStructSetData($tPRINTDLG, 'FromPage', 2)
DllStructSetData($tPRINTDLG, 'ToPage', 3)
DllStructSetData($tPRINTDLG, 'MinPage', 1)
DllStructSetData($tPRINTDLG, 'MaxPage', 9)
DllStructSetData($tPRINTDLG, 'Copies', 4)

; Create Print dialog box

If Not _WinAPI_PrintDlg($tPRINTDLG) Then

; Show results
Local $hDevNames = DllStructGetData($tPRINTDLG, 'hDevNames')
Local $pDevNames = _MemGlobalLock($hDevNames)
Local $tDEVNAMES = DllStructCreate($tagDEVNAMES, $pDevNames)
ConsoleWrite('Printer: ' & _WinAPI_GetString($pDevNames + 2 * DllStructGetData($tDEVNAMES, 'DeviceOffset')))
If DllStructGetData($tDEVNAMES, 'Default') Then
    ConsoleWrite(' (Default)' & @CRLF)
ConsoleWrite('First page: ' & DllStructGetData($tPRINTDLG, 'FromPage') & @CRLF)
ConsoleWrite('Last page: ' & DllStructGetData($tPRINTDLG, 'ToPage') & @CRLF)
ConsoleWrite('Copies: ' & DllStructGetData($tPRINTDLG, 'Copies') & @CRLF)

; Free global memory objects that contains a DEVMODE and DEVNAMES structures
_MemGlobalFree(DllStructGetData($tPRINTDLG, 'hDevMode'))