1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public void PrintAdvancedSettings(IntPtr oWdwHdle)
{
try
{
PrinterSettings _psSettings = new PrinterSettings();
_psSettings.PrinterName = CurrentPrinter.FullName;
IntPtr ipDevMode = _psSettings.GetHdevmode(_psSettings.DefaultPageSettings);
IntPtr pDevMode = Kernel32Methods.GlobalLock(ipDevMode);
int nSize = DocumentProperties(oWdwHdle, IntPtr.Zero, _psSettings.PrinterName, IntPtr.Zero, ref pDevMode, 0); //pour que ca marche pour seven
if (nSize == -1) DocumentProperties(oWdwHdle, IntPtr.Zero, _psSettings.PrinterName, pDevMode, ref pDevMode, 0);
if (nSize > 0)
{
IntPtr ipDevModeData = Marshal.AllocHGlobal(nSize);
int iRes = DocumentProperties(oWdwHdle, IntPtr.Zero, _psSettings.PrinterName, ipDevModeData, ref pDevMode, 14);
Kernel32Methods.GlobalUnlock(ipDevMode);
if (iRes == 1)
{
_psSettings.SetHdevmode(ipDevModeData);
_psSettings.DefaultPageSettings.SetHdevmode(ipDevModeData);
//récupérer les setting pour mettre dans CurrentPrintTicket
//TODO
}
Kernel32Methods.GlobalFree(ipDevMode);
Marshal.FreeHGlobal(ipDevModeData);
}
else
{
Kernel32Methods.GlobalUnlock(ipDevMode);
Kernel32Methods.GlobalFree(ipDevMode);
}
}
catch { }
} |
Partager