Affiche une feuille de propriétés d'impression qui permet à l'utilisateur de spécifier les propriétés d'un travail d'impression particulier
#include <WinAPIDlg.au3>
_WinAPI_PrintDlgEx ( ByRef $tPRINTDLGEX )
$tPRINTDLGEX | La structure $tagPRINTDLGEX qui contient des informations utilisées pour initialiser la feuille de propriétés. Lorsque la fonction retourne, la structure contient des informations sur les sélections de l'utilisateur. Cette structure doit être initialisée avant l'appel de fonction. (Voir MSDN pour plus d'informations) |
Succès: | Retourne 1, @extended contient l'une des valeurs suivantes: $PD_RESULT_APPLY $PD_RESULT_CANCEL $PD_RESULT_PRINT |
Échec: | Retourne 0 et définit @error <> 0, @extended contient le code d'erreur HRESULT. |
Notez que les valeurs des membres "hDevMode" et "hDevNames" dans $tagPRINTDLG peuvent changer quand elles sont passés à _WinAPI_PrintDlg(). C'est parce que ces membres sont remplis à la fois en entrée et en sortie.
Consultez PrintDlgEx dans la librairie MSDN.
#include <APIDlgConstants.au3> #include <Memory.au3> #include <WinAPIDlg.au3> #include <WinAPIMisc.au3> Opt('WinTitleMatchMode', 3) ; Creé la structure PrintDlgEx et définit les valeurs initiales du nombre de copies, et pages de début et de fin Local $tPRINTPAGERANGE = DllStructCreate($tagPRINTPAGERANGE) DllStructSetData($tPRINTPAGERANGE, 'FromPage', 2) DllStructSetData($tPRINTPAGERANGE, 'ToPage', 3) Local $tPRINTDLGEX = DllStructCreate($tagPRINTDLGEX) DllStructSetData($tPRINTDLGEX, 'Size', DllStructGetSize($tPRINTDLGEX)) DllStructSetData($tPRINTDLGEX, 'hOwner', WinGetHandle(AutoItWinGetTitle())) DllStructSetData($tPRINTDLGEX, 'Flags', BitOR($PD_PAGENUMS, $PD_NOCURRENTPAGE, $PD_NOSELECTION)) DllStructSetData($tPRINTDLGEX, 'NumPageRanges', 1) DllStructSetData($tPRINTDLGEX, 'MaxPageRanges', 1) DllStructSetData($tPRINTDLGEX, 'PageRanges', DllStructGetPtr($tPRINTPAGERANGE)) DllStructSetData($tPRINTDLGEX, 'MinPage', 1) DllStructSetData($tPRINTDLGEX, 'MaxPage', 9) DllStructSetData($tPRINTDLGEX, 'Copies', 4) DllStructSetData($tPRINTDLGEX, 'StartPage', -1) ; Afficher la la feuille de propriété Print If Not _WinAPI_PrintDlgEx($tPRINTDLGEX) Then Exit EndIf Switch @extended Case $PD_RESULT_PRINT ; L'utilisateur a cliqué sur le bouton "Print" Case $PD_RESULT_APPLY ; L'utilisateur a cliqué sur le bouton "Apply" puis cliqué sur le bouton "Cancel" Case $PD_RESULT_CANCEL Exit EndSwitch ; Affiche les résultats Local $hDevNames = DllStructGetData($tPRINTDLGEX, 'hDevNames') Local $pDevNames = _MemGlobalLock($hDevNames) Local $tDEVNAMES = DllStructCreate($tagDEVNAMES, $pDevNames) ConsoleWrite('Imprimante: '& _WinAPI_GetString($pDevNames + 2 * DllStructGetData($tDEVNAMES, 'DeviceOffset'))) If DllStructGetData($tDEVNAMES, 'Default') Then ConsoleWrite('(Par défaut)'& @CRLF) Else ConsoleWrite(@CRLF) EndIf Local $aPage[2] If BitAND(DllStructGetData($tPRINTDLGEX, 'Flags'), $PD_PAGENUMS) Then $aPage[0] = DllStructGetData($tPRINTPAGERANGE, 'FromPage') $aPage[1] = DllStructGetData($tPRINTPAGERANGE, 'ToPage') Else $aPage[0] = DllStructGetData($tPRINTDLGEX, 'MinPage') $aPage[1] = DllStructGetData($tPRINTDLGEX, 'MaxPage') EndIf ConsoleWrite('Première page: '& $aPage[0] & @CRLF) ConsoleWrite('Dernière page: '& $aPage[1] & @CRLF) ConsoleWrite('Nombre de copies: '& DllStructGetData($tPRINTDLGEX, 'Copies') & @CRLF) ; Libère les objets qui contient une structure DEVMODE et DEVNAMES _MemGlobalFree(DllStructGetData($tPRINTDLGEX, 'hDevMode')) _MemGlobalFree($hDevNames)