home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 1999 #5 / 1999 CD 5 (black).iso / Delphi3 / install / data.z / WINSPOOL.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-04  |  53.3 KB  |  1,200 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Run-time Library                         }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1996,97 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit WinSpool;
  12.  
  13. {$WEAKPACKAGEUNIT}
  14.  
  15. interface
  16.  
  17. uses Windows;
  18.  
  19. type
  20.   PPrinterInfo1A = ^TPrinterInfo1A;
  21.   PPrinterInfo1W = ^TPrinterInfo1W;
  22.   PPrinterInfo1 = PPrinterInfo1A;
  23.   TPrinterInfo1A = record
  24.     Flags: DWORD;
  25.     pDescription: PAnsiChar;
  26.     pName: PAnsiChar;
  27.     pComment: PAnsiChar;
  28.   end;
  29.   TPrinterInfo1W = record
  30.     Flags: DWORD;
  31.     pDescription: PWideChar;
  32.     pName: PWideChar;
  33.     pComment: PWideChar;
  34.   end;
  35.   TPrinterInfo1 = TPrinterInfo1A;
  36.  
  37.   PPrinterInfo2A = ^TPrinterInfo2A;
  38.   PPrinterInfo2W = ^TPrinterInfo2W;
  39.   PPrinterInfo2 = PPrinterInfo2A;
  40.   TPrinterInfo2A = record
  41.     pServerName: PAnsiChar;
  42.     pPrinterName: PAnsiChar;
  43.     pShareName: PAnsiChar;
  44.     pPortName: PAnsiChar;
  45.     pDriverName: PAnsiChar;
  46.     pComment: PAnsiChar;
  47.     pLocation: PAnsiChar;
  48.     pDevMode: PDeviceModeA;
  49.     pSepFile: PAnsiChar;
  50.     pPrintProcessor: PAnsiChar;
  51.     pDatatype: PAnsiChar;
  52.     pParameters: PAnsiChar;
  53.     pSecurityDescriptor: PSecurityDescriptor;
  54.     Attributes: DWORD;
  55.     Priority: DWORD;
  56.     DefaultPriority: DWORD;
  57.     StartTime: DWORD;
  58.     UntilTime: DWORD;
  59.     Status: DWORD;
  60.     cJobs: DWORD;
  61.     AveragePPM: DWORD;
  62.   end;
  63.   TPrinterInfo2W = record
  64.     pServerName: PWideChar;
  65.     pPrinterName: PWideChar;
  66.     pShareName: PWideChar;
  67.     pPortName: PWideChar;
  68.     pDriverName: PWideChar;
  69.     pComment: PWideChar;
  70.     pLocation: PWideChar;
  71.     pDevMode: PDeviceModeW;
  72.     pSepFile: PWideChar;
  73.     pPrintProcessor: PWideChar;
  74.     pDatatype: PWideChar;
  75.     pParameters: PWideChar;
  76.     pSecurityDescriptor: PSecurityDescriptor;
  77.     Attributes: DWORD;
  78.     Priority: DWORD;
  79.     DefaultPriority: DWORD;
  80.     StartTime: DWORD;
  81.     UntilTime: DWORD;
  82.     Status: DWORD;
  83.     cJobs: DWORD;
  84.     AveragePPM: DWORD;
  85.   end;
  86.   TPrinterInfo2 = TPrinterInfo2A;
  87.  
  88.   PPrinterInfo3A = ^TPrinterInfo3A;
  89.   PPrinterInfo3W = ^TPrinterInfo3W;
  90.   PPrinterInfo3 = PPrinterInfo3A;
  91.   TPrinterInfo3A = record
  92.     pSecurityDescriptor: PSecurityDescriptor;
  93.   end;
  94.   TPrinterInfo3W = record
  95.     pSecurityDescriptor: PSecurityDescriptor;
  96.   end;
  97.   TPrinterInfo3 = TPrinterInfo3A;
  98.  
  99.   PPrinterInfo4A = ^TPrinterInfo4A;
  100.   PPrinterInfo4W = ^TPrinterInfo4W;
  101.   PPrinterInfo4 = PPrinterInfo4A;
  102.   TPrinterInfo4A = record
  103.     pPrinterName: PAnsiChar;
  104.     pServerName: PAnsiChar;
  105.     Attributes: DWORD;
  106.   end;
  107.   TPrinterInfo4W = record
  108.     pPrinterName: PWideChar;
  109.     pServerName: PWideChar;
  110.     Attributes: DWORD;
  111.   end;
  112.   TPrinterInfo4 = TPrinterInfo4A;
  113.  
  114.   PPrinterInfo5A = ^TPrinterInfo5A;
  115.   PPrinterInfo5W = ^TPrinterInfo5W;
  116.   PPrinterInfo5 = PPrinterInfo5A;
  117.   TPrinterInfo5A = record
  118.     pPrinterName: PAnsiChar;
  119.     pPortName: PAnsiChar;
  120.     Attributes: DWORD;
  121.     DeviceNotSelectedTimeout: DWORD;
  122.     TransmissionRetryTimeout: DWORD;
  123.   end;
  124.   TPrinterInfo5W = record
  125.     pPrinterName: PWideChar;
  126.     pPortName: PWideChar;
  127.     Attributes: DWORD;
  128.     DeviceNotSelectedTimeout: DWORD;
  129.     TransmissionRetryTimeout: DWORD;
  130.   end;
  131.   TPrinterInfo5 = TPrinterInfo5A;
  132.  
  133.   PPrinterInfo6 = ^TPrinterInfo6;
  134.   TPrinterInfo6 = record
  135.     dwStatus: DWORD;
  136.   end;
  137.  
  138. const
  139.   PRINTER_CONTROL_PAUSE            = 1;
  140.   PRINTER_CONTROL_RESUME           = 2;
  141.   PRINTER_CONTROL_PURGE            = 3;
  142.   PRINTER_CONTROL_SET_STATUS       = 4;
  143.  
  144.   PRINTER_STATUS_PAUSED            = $00000001;
  145.   PRINTER_STATUS_ERROR             = $00000002;
  146.   PRINTER_STATUS_PENDING_DELETION  = $00000004;
  147.   PRINTER_STATUS_PAPER_JAM         = $00000008;
  148.   PRINTER_STATUS_PAPER_OUT         = $00000010;
  149.   PRINTER_STATUS_MANUAL_FEED       = $00000020;
  150.   PRINTER_STATUS_PAPER_PROBLEM     = $00000040;
  151.   PRINTER_STATUS_OFFLINE           = $00000080;
  152.   PRINTER_STATUS_IO_ACTIVE         = $00000100;
  153.   PRINTER_STATUS_BUSY              = $00000200;
  154.   PRINTER_STATUS_PRINTING          = $00000400;
  155.   PRINTER_STATUS_OUTPUT_BIN_FULL   = $00000800;
  156.   PRINTER_STATUS_NOT_AVAILABLE     = $00001000;
  157.   PRINTER_STATUS_WAITING           = $00002000;
  158.   PRINTER_STATUS_PROCESSING        = $00004000;
  159.   PRINTER_STATUS_INITIALIZING      = $00008000;
  160.   PRINTER_STATUS_WARMING_UP        = $00010000;
  161.   PRINTER_STATUS_TONER_LOW         = $00020000;
  162.   PRINTER_STATUS_NO_TONER          = $00040000;
  163.   PRINTER_STATUS_PAGE_PUNT         = $00080000;
  164.   PRINTER_STATUS_USER_INTERVENTION = $00100000;
  165.   PRINTER_STATUS_OUT_OF_MEMORY     = $00200000;
  166.   PRINTER_STATUS_DOOR_OPEN         = $00400000;
  167.   PRINTER_STATUS_SERVER_UNKNOWN    = $00800000;
  168.   PRINTER_STATUS_POWER_SAVE        = $01000000;
  169.  
  170.   PRINTER_ATTRIBUTE_QUEUED         = $00000001;
  171.   PRINTER_ATTRIBUTE_DIRECT         = $00000002;
  172.   PRINTER_ATTRIBUTE_DEFAULT        = $00000004;
  173.   PRINTER_ATTRIBUTE_SHARED         = $00000008;
  174.   PRINTER_ATTRIBUTE_NETWORK        = $00000010;
  175.   PRINTER_ATTRIBUTE_HIDDEN         = $00000020;
  176.   PRINTER_ATTRIBUTE_LOCAL          = $00000040;
  177.  
  178.   PRINTER_ATTRIBUTE_ENABLE_DEVQ       = $00000080;
  179.   PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   = $00000100;
  180.   PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = $00000200;
  181.  
  182.   PRINTER_ATTRIBUTE_WORK_OFFLINE   = $00000400;
  183.   PRINTER_ATTRIBUTE_ENABLE_BIDI    = $00000800;
  184.   PRINTER_ATTRIBUTE_RAW_ONLY       = $00001000; 
  185.  
  186.  
  187.   NO_PRIORITY   = 0;
  188.   MAX_PRIORITY = 99;
  189.   MIN_PRIORITY  = 1;
  190.   DEF_PRIORITY  = 1;
  191.  
  192. type
  193.   PJobInfo1A = ^TJobInfo1A;
  194.   PJobInfo1W = ^TJobInfo1W;
  195.   PJobInfo1 = PJobInfo1A;
  196.   TJobInfo1A = record
  197.    JobId: DWORD;
  198.    pPrinterName: PAnsiChar;
  199.    pMachineName: PAnsiChar;
  200.    pUserName: PAnsiChar;
  201.    pDocument: PAnsiChar;
  202.    pDatatype: PAnsiChar;
  203.    pStatus: PAnsiChar;
  204.    Status: DWORD;
  205.    Priority: DWORD;
  206.    Position: DWORD;
  207.    TotalPages: DWORD;
  208.    PagesPrinted: DWORD;
  209.    Submitted: TSystemTime;
  210.   end;
  211.   TJobInfo1W = record
  212.    JobId: DWORD;
  213.    pPrinterName: PWideChar;
  214.    pMachineName: PWideChar;
  215.    pUserName: PWideChar;
  216.    pDocument: PWideChar;
  217.    pDatatype: PWideChar;
  218.    pStatus: PWideChar;
  219.    Status: DWORD;
  220.    Priority: DWORD;
  221.    Position: DWORD;
  222.    TotalPages: DWORD;
  223.    PagesPrinted: DWORD;
  224.    Submitted: TSystemTime;
  225.   end;
  226.   TJobInfo1 = TJobInfo1A;
  227.  
  228.   PJobInfo2A = ^TJobInfo2A;
  229.   PJobInfo2W = ^TJobInfo2W;
  230.   PJobInfo2 = PJobInfo2A;
  231.   TJobInfo2A = record
  232.    JobId: DWORD;
  233.    pPrinterName: PAnsiChar;
  234.    pMachineName: PAnsiChar;
  235.    pUserName: PAnsiChar;
  236.    pDocument: PAnsiChar;
  237.    pNotifyName: PAnsiChar;
  238.    pDatatype: PAnsiChar;
  239.    pPrintProcessor: PAnsiChar;
  240.    pParameters: PAnsiChar;
  241.    pDriverName: PAnsiChar;
  242.    pDevMode: PDeviceModeA;
  243.    pStatus: PAnsiChar;
  244.    pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  245.    Status: DWORD;
  246.    Priority: DWORD;
  247.    Position: DWORD;
  248.    StartTime: DWORD;
  249.    UntilTime: DWORD;
  250.    TotalPages: DWORD;
  251.    Size: DWORD;
  252.    Submitted: TSystemTime;   { Time the job was spooled }
  253.    Time: DWORD;              { How many seconds the job has been printing }
  254.    PagesPrinted: DWORD;
  255.   end;
  256.   TJobInfo2W = record
  257.    JobId: DWORD;
  258.    pPrinterName: PWideChar;
  259.    pMachineName: PWideChar;
  260.    pUserName: PWideChar;
  261.    pDocument: PWideChar;
  262.    pNotifyName: PWideChar;
  263.    pDatatype: PWideChar;
  264.    pPrintProcessor: PWideChar;
  265.    pParameters: PWideChar;
  266.    pDriverName: PWideChar;
  267.    pDevMode: PDeviceModeW;
  268.    pStatus: PWideChar;
  269.    pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  270.    Status: DWORD;
  271.    Priority: DWORD;
  272.    Position: DWORD;
  273.    StartTime: DWORD;
  274.    UntilTime: DWORD;
  275.    TotalPages: DWORD;
  276.    Size: DWORD;
  277.    Submitted: TSystemTime;   { Time the job was spooled }
  278.    Time: DWORD;              { How many seconds the job has been printing }
  279.    PagesPrinted: DWORD;
  280.   end;
  281.   TJobInfo2 = TJobInfo2A;
  282.  
  283.   PJobInfo3 = ^TJobInfo3;
  284.   TJobInfo3 = record 
  285.     JobId: DWORD;
  286.     NextJobId: DWORD;
  287.     Reserved: DWORD;
  288.   end;
  289.  
  290. const
  291.   JOB_CONTROL_PAUSE              = 1;
  292.   JOB_CONTROL_RESUME             = 2;
  293.   JOB_CONTROL_CANCEL             = 3;
  294.   JOB_CONTROL_RESTART            = 4;
  295.   JOB_CONTROL_DELETE             = 5;
  296.   JOB_CONTROL_SENT_TO_PRINTER    = 6; 
  297.   JOB_CONTROL_LAST_PAGE_EJECTED  = 7;
  298.  
  299.   JOB_STATUS_PAUSED                   = $00000001; 
  300.   JOB_STATUS_ERROR                    = $00000002; 
  301.   JOB_STATUS_DELETING                 = $00000004; 
  302.   JOB_STATUS_SPOOLING                 = $00000008; 
  303.   JOB_STATUS_PRINTING                 = $00000010; 
  304.   JOB_STATUS_OFFLINE                  = $00000020; 
  305.   JOB_STATUS_PAPEROUT                 = $00000040; 
  306.   JOB_STATUS_PRINTED                  = $00000080; 
  307.   JOB_STATUS_DELETED                  = $00000100; 
  308.   JOB_STATUS_BLOCKED_DEVQ             = $00000200; 
  309.   JOB_STATUS_USER_INTERVENTION        = $00000400; 
  310.   JOB_STATUS_RESTART                  = $00000800; 
  311.  
  312.   JOB_POSITION_UNSPECIFIED       = 0;
  313.  
  314. type
  315.   PAddJobInfo1A = ^TAddJobInfo1A;
  316.   PAddJobInfo1W = ^TAddJobInfo1W;
  317.   PAddJobInfo1 = PAddJobInfo1A;
  318.   TAddJobInfo1A = record
  319.     Path: PAnsiChar;
  320.     JobId: DWORD;
  321.   end;
  322.   TAddJobInfo1W = record
  323.     Path: PWideChar;
  324.     JobId: DWORD;
  325.   end;
  326.   TAddJobInfo1 = TAddJobInfo1A;
  327.  
  328.   PDriverInfo1A = ^TDriverInfo1A;
  329.   PDriverInfo1W = ^TDriverInfo1W;
  330.   PDriverInfo1 = PDriverInfo1A;
  331.   TDriverInfo1A = record
  332.     pName: PAnsiChar;              { QMS 810 }
  333.   end;
  334.   TDriverInfo1W = record
  335.     pName: PWideChar;              { QMS 810 }
  336.   end;
  337.   TDriverInfo1 = TDriverInfo1A;
  338.  
  339.   PDriverInfo2A = ^TDriverInfo2A;
  340.   PDriverInfo2W = ^TDriverInfo2W;
  341.   PDriverInfo2 = PDriverInfo2A;
  342.   TDriverInfo2A = record
  343.     cVersion: DWORD;
  344.     pName: PAnsiChar;              { QMS 810 }
  345.     pEnvironment: PAnsiChar;       { Win32 x86 }
  346.     pDriverPath: PAnsiChar;        { c:\drivers\pscript.dll }
  347.     pDataFile: PAnsiChar;          { c:\drivers\QMS810.PPD }
  348.     pConfigFile: PAnsiChar;        { c:\drivers\PSCRPTUI.DLL }
  349.   end;
  350.   TDriverInfo2W = record
  351.     cVersion: DWORD;
  352.     pName: PWideChar;              { QMS 810 }
  353.     pEnvironment: PWideChar;       { Win32 x86 }
  354.     pDriverPath: PWideChar;        { c:\drivers\pscript.dll }
  355.     pDataFile: PWideChar;          { c:\drivers\QMS810.PPD }
  356.     pConfigFile: PWideChar;        { c:\drivers\PSCRPTUI.DLL }
  357.   end;
  358.   TDriverInfo2 = TDriverInfo2A;
  359.  
  360.   PDriverInfo3A = ^TDriverInfo3A;
  361.   PDriverInfo3W = ^TDriverInfo3W;
  362.   PDriverInfo3 = PDriverInfo3A;
  363.   TDriverInfo3A = record
  364.     cVersion: DWORD;
  365.     pName: PAnsiChar;                    { QMS 810 }
  366.     pEnvironment: PAnsiChar;             { Win32 x86 }
  367.     pDriverPath: PAnsiChar;              { c:\drivers\pscript.dll }
  368.     pDataFile: PAnsiChar;                { c:\drivers\QMS810.PPD }
  369.     pConfigFile: PAnsiChar;              { c:\drivers\PSCRPTUI.DLL }
  370.     pHelpFile: PAnsiChar;                { c:\drivers\PSCRPTUI.HLP }
  371.     pDependentFiles: PAnsiChar;          { PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0 }
  372.     pMonitorName: PAnsiChar;             { "PJL monitor" }
  373.     pDefaultDataType: PAnsiChar;         { "EMF" }
  374.   end;
  375.   TDriverInfo3W = record
  376.     cVersion: DWORD;
  377.     pName: PWideChar;                    { QMS 810 }
  378.     pEnvironment: PWideChar;             { Win32 x86 }
  379.     pDriverPath: PWideChar;              { c:\drivers\pscript.dll }
  380.     pDataFile: PWideChar;                { c:\drivers\QMS810.PPD }
  381.     pConfigFile: PWideChar;              { c:\drivers\PSCRPTUI.DLL }
  382.     pHelpFile: PWideChar;                { c:\drivers\PSCRPTUI.HLP }
  383.     pDependentFiles: PWideChar;          { PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0 }
  384.     pMonitorName: PWideChar;             { "PJL monitor" }
  385.     pDefaultDataType: PWideChar;         { "EMF" }
  386.   end;
  387.   TDriverInfo3 = TDriverInfo3A;
  388.  
  389.   PDocInfo1A = ^TDocInfo1A;
  390.   PDocInfo1W = ^TDocInfo1W;
  391.   PDocInfo1 = PDocInfo1A;
  392.   TDocInfo1A = record
  393.     pDocName: PAnsiChar;
  394.     pOutputFile: PAnsiChar;
  395.     pDatatype: PAnsiChar;
  396.   end;
  397.   TDocInfo1W = record
  398.     pDocName: PWideChar;
  399.     pOutputFile: PWideChar;
  400.     pDatatype: PWideChar;
  401.   end;
  402.   TDocInfo1 = TDocInfo1A;
  403.  
  404.   PFormInfo1A = ^TFormInfo1A;
  405.   PFormInfo1W = ^TFormInfo1W;
  406.   PFormInfo1 = PFormInfo1A;
  407.   TFormInfo1A = record
  408.     Flags: DWORD;
  409.     pName: PAnsiChar;
  410.     Size: TSize;
  411.     ImageableArea: TRect;
  412.   end;
  413.   TFormInfo1W = record
  414.     Flags: DWORD;
  415.     pName: PWideChar;
  416.     Size: TSize;
  417.     ImageableArea: TRect;
  418.   end;
  419.   TFormInfo1 = TFormInfo1A;
  420.  
  421.   PDocInfo2A = ^TDocInfo2A;
  422.   PDocInfo2W = ^TDocInfo2W;
  423.   PDocInfo2 = PDocInfo2A;
  424.   TDocInfo2A = record
  425.     pDocName: PAnsiChar;
  426.     pOutputFile: PAnsiChar;
  427.     pDatatype: PAnsiChar;
  428.     dwMode: DWORD;
  429.     JobId: DWORD;
  430.   end;
  431.   TDocInfo2W = record
  432.     pDocName: PWideChar;
  433.     pOutputFile: PWideChar;
  434.     pDatatype: PWideChar;
  435.     dwMode: DWORD;
  436.     JobId: DWORD;
  437.   end;
  438.   TDocInfo2 = TDocInfo2A;
  439.  
  440. const
  441.   DI_CHANNEL              = 1;    { start direct read/write channel, }
  442.   DI_READ_SPOOL_JOB       = 3;
  443.  
  444.   FORM_USER           = $00000000; 
  445.   FORM_BUILTIN        = $00000001; 
  446.   FORM_PRINTER        = $00000002; 
  447.  
  448. type
  449.   PPrintProcessorInfo1A = ^TPrintProcessorInfo1A;
  450.   PPrintProcessorInfo1W = ^TPrintProcessorInfo1W;
  451.   PPrintProcessorInfo1 = PPrintProcessorInfo1A;
  452.   TPrintProcessorInfo1A = record
  453.     pName: PAnsiChar;
  454.   end;
  455.   TPrintProcessorInfo1W = record
  456.     pName: PWideChar;
  457.   end;
  458.   TPrintProcessorInfo1 = TPrintProcessorInfo1A;
  459.  
  460.   PPortInfo1A = ^TPortInfo1A;
  461.   PPortInfo1W = ^TPortInfo1W;
  462.   PPortInfo1 = PPortInfo1A;
  463.   TPortInfo1A = record
  464.     pName: PAnsiChar;
  465.   end;
  466.   TPortInfo1W = record
  467.     pName: PWideChar;
  468.   end;
  469.   TPortInfo1 = TPortInfo1A;
  470.  
  471.   PPortInfo2A = ^TPortInfo2A;
  472.   PPortInfo2W = ^TPortInfo2W;
  473.   PPortInfo2 = PPortInfo2A;
  474.   TPortInfo2A = record
  475.     pPortName: PAnsiChar;
  476.     pMonitorName: PAnsiChar;
  477.     pDescription: PAnsiChar;
  478.     fPortType: DWORD;
  479.     Reserved: DWORD;
  480.   end;
  481.   TPortInfo2W = record
  482.     pPortName: PWideChar;
  483.     pMonitorName: PWideChar;
  484.     pDescription: PWideChar;
  485.     fPortType: DWORD;
  486.     Reserved: DWORD;
  487.   end;
  488.   TPortInfo2 = TPortInfo2A;
  489.  
  490. const
  491.   PORT_TYPE_WRITE         = $0001;
  492.   PORT_TYPE_READ          = $0002;
  493.   PORT_TYPE_REDIRECTED    = $0004;
  494.   PORT_TYPE_NET_ATTACHED  = $0008;
  495.  
  496. type
  497.   PPortInfo3A = ^PortInfo3A;
  498.   PPortInfo3W = ^PortInfo3W;
  499.   PPortInfo3 = PPortInfo3A;
  500.   PortInfo3A = record 
  501.     dwStatus: DWORD;
  502.     pszStatus: PAnsiChar;
  503.     dwSeverity: DWORD;
  504.   end;
  505.   PortInfo3W = record 
  506.     dwStatus: DWORD;
  507.     pszStatus: PWideChar;
  508.     dwSeverity: DWORD;
  509.   end;
  510.   PortInfo3 = PortInfo3A;
  511.  
  512. const
  513.   PORT_STATUS_TYPE_ERROR          = 1; 
  514.   PORT_STATUS_TYPE_WARNING        = 2; 
  515.   PORT_STATUS_TYPE_INFO           = 3; 
  516.  
  517.   PORT_STATUS_OFFLINE             = 1; 
  518.   PORT_STATUS_PAPER_JAM           = 2; 
  519.   PORT_STATUS_PAPER_OUT           = 3; 
  520.   PORT_STATUS_OUTPUT_BIN_FULL     = 4; 
  521.   PORT_STATUS_PAPER_PROBLEM       = 5; 
  522.   PORT_STATUS_NO_TONER            = 6; 
  523.   PORT_STATUS_DOOR_OPEN           = 7; 
  524.   PORT_STATUS_USER_INTERVENTION   = 8; 
  525.   PORT_STATUS_OUT_OF_MEMORY       = 9; 
  526.  
  527.   PORT_STATUS_TONER_LOW           = 10; 
  528.  
  529.   PORT_STATUS_WARMING_UP          = 11; 
  530.   PORT_STATUS_POWER_SAVE          = 12; 
  531.  
  532. type
  533.   PMonitorInfo1A = ^TMonitorInfo1A;
  534.   PMonitorInfo1W = ^TMonitorInfo1W;
  535.   PMonitorInfo1 = PMonitorInfo1A;
  536.   TMonitorInfo1A = record
  537.     pName: PAnsiChar;
  538.   end;
  539.   TMonitorInfo1W = record
  540.     pName: PWideChar;
  541.   end;
  542.   TMonitorInfo1 = TMonitorInfo1A;
  543.  
  544.   PMonitorInfo2A = ^TMonitorInfo2A;
  545.   PMonitorInfo2W = ^TMonitorInfo2W;
  546.   PMonitorInfo2 = PMonitorInfo2A;
  547.   TMonitorInfo2A = record
  548.     pName: PAnsiChar;
  549.     pEnvironment: PAnsiChar;
  550.     pDLLName: PAnsiChar;
  551.   end;
  552.   TMonitorInfo2W = record
  553.     pName: PWideChar;
  554.     pEnvironment: PWideChar;
  555.     pDLLName: PWideChar;
  556.   end;
  557.   TMonitorInfo2 = TMonitorInfo2A;
  558.  
  559.   PDatatypesInfo1A = ^TDatatypesInfo1A;
  560.   PDatatypesInfo1W = ^TDatatypesInfo1W;
  561.   PDatatypesInfo1 = PDatatypesInfo1A;
  562.   TDatatypesInfo1A = record
  563.     pName: PAnsiChar;
  564.   end;
  565.   TDatatypesInfo1W = record
  566.     pName: PWideChar;
  567.   end;
  568.   TDatatypesInfo1 = TDatatypesInfo1A;
  569.  
  570.   PPrinterDefaultsA = ^TPrinterDefaultsA;
  571.   PPrinterDefaultsW = ^TPrinterDefaultsW;
  572.   PPrinterDefaults = PPrinterDefaultsA;
  573.   TPrinterDefaultsA = record
  574.     pDatatype: PAnsiChar;
  575.     pDevMode: PDeviceModeA;
  576.     DesiredAccess: ACCESS_MASK;
  577.   end;
  578.   TPrinterDefaultsW = record
  579.     pDatatype: PWideChar;
  580.     pDevMode: PDeviceModeW;
  581.     DesiredAccess: ACCESS_MASK;
  582.   end;
  583.   TPrinterDefaults = TPrinterDefaultsA;
  584.  
  585. function EnumPrintersA(Flags: DWORD; Name: PAnsiChar; Level: DWORD;
  586.   pPrinterEnum: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  587. function EnumPrintersW(Flags: DWORD; Name: PWideChar; Level: DWORD;
  588.   pPrinterEnum: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  589. function EnumPrinters(Flags: DWORD; Name: PChar; Level: DWORD;
  590.   pPrinterEnum: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  591.  
  592. const
  593.   PRINTER_ENUM_DEFAULT     = $00000001;
  594.   PRINTER_ENUM_LOCAL       = $00000002;
  595.   PRINTER_ENUM_CONNECTIONS = $00000004;
  596.   PRINTER_ENUM_FAVORITE    = $00000004;
  597.   PRINTER_ENUM_NAME        = $00000008;
  598.   PRINTER_ENUM_REMOTE      = $00000010;
  599.   PRINTER_ENUM_SHARED      = $00000020;
  600.   PRINTER_ENUM_NETWORK     = $00000040;
  601.  
  602.   PRINTER_ENUM_EXPAND      = $00004000;
  603.   PRINTER_ENUM_CONTAINER   = $00008000;
  604.  
  605.   PRINTER_ENUM_ICONMASK    = $00ff0000;
  606.   PRINTER_ENUM_ICON1       = $00010000;
  607.   PRINTER_ENUM_ICON2       = $00020000;
  608.   PRINTER_ENUM_ICON3       = $00040000;
  609.   PRINTER_ENUM_ICON4       = $00080000;
  610.   PRINTER_ENUM_ICON5       = $00100000;
  611.   PRINTER_ENUM_ICON6       = $00200000;
  612.   PRINTER_ENUM_ICON7       = $00400000;
  613.   PRINTER_ENUM_ICON8       = $00800000;
  614.  
  615. function OpenPrinterA(pPrinterName: PAnsiChar; var phPrinter: THandle; pDefault: PPrinterDefaultsA): BOOL; stdcall;
  616. function OpenPrinterW(pPrinterName: PWideChar; var phPrinter: THandle; pDefault: PPrinterDefaultsW): BOOL; stdcall;
  617. function OpenPrinter(pPrinterName: PChar; var phPrinter: THandle; pDefault: PPrinterDefaults): BOOL; stdcall;
  618. function ResetPrinterA(hPrinter: THandle; pDefault: PPrinterDefaultsA): BOOL; stdcall;
  619. function ResetPrinterW(hPrinter: THandle; pDefault: PPrinterDefaultsW): BOOL; stdcall;
  620. function ResetPrinter(hPrinter: THandle; pDefault: PPrinterDefaults): BOOL; stdcall;
  621. function SetJobA(hPrinter: THandle; JobId: DWORD; Level: DWORD; pJob: Pointer; Command: DWORD): BOOL; stdcall;
  622. function SetJobW(hPrinter: THandle; JobId: DWORD; Level: DWORD; pJob: Pointer; Command: DWORD): BOOL; stdcall;
  623. function SetJob(hPrinter: THandle; JobId: DWORD; Level: DWORD; pJob: Pointer; Command: DWORD): BOOL; stdcall;
  624. function GetJobA(hPrinter: THandle; JobId: DWORD; Level: DWORD; pJob: Pointer; cbBuf: DWORD; pcbNeeded: PDWORD): BOOL; stdcall;
  625. function GetJobW(hPrinter: THandle; JobId: DWORD; Level: DWORD; pJob: Pointer; cbBuf: DWORD; pcbNeeded: PDWORD): BOOL; stdcall;
  626. function GetJob(hPrinter: THandle; JobId: DWORD; Level: DWORD; pJob: Pointer; cbBuf: DWORD; pcbNeeded: PDWORD): BOOL; stdcall;
  627. function EnumJobsA(hPrinter: THandle; FirstJob, NoJobs, Level: DWORD; pJob: Pointer; cbBuf: DWORD;
  628.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  629. function EnumJobsW(hPrinter: THandle; FirstJob, NoJobs, Level: DWORD; pJob: Pointer; cbBuf: DWORD;
  630.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  631. function EnumJobs(hPrinter: THandle; FirstJob, NoJobs, Level: DWORD; pJob: Pointer; cbBuf: DWORD;
  632.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  633. function AddPrinterA(pName: PAnsiChar; Level: DWORD; pPrinter: Pointer): THandle; stdcall;
  634. function AddPrinterW(pName: PWideChar; Level: DWORD; pPrinter: Pointer): THandle; stdcall;
  635. function AddPrinter(pName: PChar; Level: DWORD; pPrinter: Pointer): THandle; stdcall;
  636. function DeletePrinter(hPrinter: THandle): BOOL; stdcall;
  637. function SetPrinterA(hPrinter: THandle; Level: DWORD; pPrinter: Pointer; Command: DWORD): BOOL; stdcall;
  638. function SetPrinterW(hPrinter: THandle; Level: DWORD; pPrinter: Pointer; Command: DWORD): BOOL; stdcall;
  639. function SetPrinter(hPrinter: THandle; Level: DWORD; pPrinter: Pointer; Command: DWORD): BOOL; stdcall;
  640. function GetPrinterA(hPrinter: THandle; Level: DWORD; pPrinter: Pointer; cbBuf: DWORD; pcbNeeded: PDWORD): BOOL; stdcall;
  641. function GetPrinterW(hPrinter: THandle; Level: DWORD; pPrinter: Pointer; cbBuf: DWORD; pcbNeeded: PDWORD): BOOL; stdcall;
  642. function GetPrinter(hPrinter: THandle; Level: DWORD; pPrinter: Pointer; cbBuf: DWORD; pcbNeeded: PDWORD): BOOL; stdcall;
  643. function AddPrinterDriverA(pName: PAnsiChar; Level: DWORD; pDriverInfo: Pointer): BOOL; stdcall;
  644. function AddPrinterDriverW(pName: PWideChar; Level: DWORD; pDriverInfo: Pointer): BOOL; stdcall;
  645. function AddPrinterDriver(pName: PChar; Level: DWORD; pDriverInfo: Pointer): BOOL; stdcall;
  646. function EnumPrinterDriversA(pName, pEnvironment: PAnsiChar; Level: DWORD;
  647.   pDriverInfo: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  648. function EnumPrinterDriversW(pName, pEnvironment: PWideChar; Level: DWORD;
  649.   pDriverInfo: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  650. function EnumPrinterDrivers(pName, pEnvironment: PChar; Level: DWORD;
  651.   pDriverInfo: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  652. function GetPrinterDriverA(hPrinter: THandle; pEnvironment: PAnsiChar; Level: DWORD;
  653.   pDriverInfo: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  654. function GetPrinterDriverW(hPrinter: THandle; pEnvironment: PWideChar; Level: DWORD;
  655.   pDriverInfo: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  656. function GetPrinterDriver(hPrinter: THandle; pEnvironment: PChar; Level: DWORD;
  657.   pDriverInfo: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  658. function GetPrinterDriverDirectoryA(pName, pEnvironment: PAnsiChar; Level: DWORD;
  659.   pDriverDirectory: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  660. function GetPrinterDriverDirectoryW(pName, pEnvironment: PWideChar; Level: DWORD;
  661.   pDriverDirectory: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  662. function GetPrinterDriverDirectory(pName, pEnvironment: PChar; Level: DWORD;
  663.   pDriverDirectory: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  664. function DeletePrinterDriverA(pName, pEnvironment, pDriverName: PAnsiChar): BOOL; stdcall;
  665. function DeletePrinterDriverW(pName, pEnvironment, pDriverName: PWideChar): BOOL; stdcall;
  666. function DeletePrinterDriver(pName, pEnvironment, pDriverName: PChar): BOOL; stdcall;
  667. function AddPrintProcessorA(pName, pEnvironment, pPathName, pPrintProcessorName: PAnsiChar): BOOL; stdcall;
  668. function AddPrintProcessorW(pName, pEnvironment, pPathName, pPrintProcessorName: PWideChar): BOOL; stdcall;
  669. function AddPrintProcessor(pName, pEnvironment, pPathName, pPrintProcessorName: PChar): BOOL; stdcall;
  670. function EnumPrintProcessorsA(pName, pEnvironment: PAnsiChar; Level: DWORD; pPrintProcessorInfo: Pointer;
  671.   cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  672. function EnumPrintProcessorsW(pName, pEnvironment: PWideChar; Level: DWORD; pPrintProcessorInfo: Pointer;
  673.   cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  674. function EnumPrintProcessors(pName, pEnvironment: PChar; Level: DWORD; pPrintProcessorInfo: Pointer;
  675.   cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  676. function GetPrintProcessorDirectoryA(pName, pEnvironment: PAnsiChar; Level: DWORD;
  677.   pPrintProcessorInfo: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  678. function GetPrintProcessorDirectoryW(pName, pEnvironment: PWideChar; Level: DWORD;
  679.   pPrintProcessorInfo: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  680. function GetPrintProcessorDirectory(pName, pEnvironment: PChar; Level: DWORD;
  681.   pPrintProcessorInfo: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  682. function EnumPrintProcessorDatatypesA(pName, pPrintProcessorName: PAnsiChar; Level: DWORD;
  683.   pDatatypes: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  684. function EnumPrintProcessorDatatypesW(pName, pPrintProcessorName: PWideChar; Level: DWORD;
  685.   pDatatypes: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  686. function EnumPrintProcessorDatatypes(pName, pPrintProcessorName: PChar; Level: DWORD;
  687.   pDatatypes: Pointer; cbBuf: DWORD; var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  688. function DeletePrintProcessorA(pName, pEnvironment, pPrintProcessorName: PAnsiChar): BOOL; stdcall;
  689. function DeletePrintProcessorW(pName, pEnvironment, pPrintProcessorName: PWideChar): BOOL; stdcall;
  690. function DeletePrintProcessor(pName, pEnvironment, pPrintProcessorName: PChar): BOOL; stdcall;
  691. function StartDocPrinterA(hPrinter: THandle; Level: DWORD; pDocInfo: Pointer): DWORD; stdcall;
  692. function StartDocPrinterW(hPrinter: THandle; Level: DWORD; pDocInfo: Pointer): DWORD; stdcall;
  693. function StartDocPrinter(hPrinter: THandle; Level: DWORD; pDocInfo: Pointer): DWORD; stdcall;
  694. function StartPagePrinter(hPrinter: THandle): BOOL; stdcall;
  695. function WritePrinter(hPrinter: THandle; pBuf: Pointer; cbBuf: DWORD; var pcWritten: DWORD): BOOL; stdcall;
  696. function EndPagePrinter(hPrinter: THandle): BOOL; stdcall;
  697. function AbortPrinter(hPrinter: THandle): BOOL; stdcall;
  698. function ReadPrinter(hPrinter: THandle; pBuf: Pointer; cbBuf: DWORD; var pNoBytesRead: DWORD): BOOL; stdcall;
  699. function EndDocPrinter(hPrinter: THandle): BOOL; stdcall;
  700. function AddJobA(hPrinter: THandle; Level: DWORD; pData: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  701. function AddJobW(hPrinter: THandle; Level: DWORD; pData: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  702. function AddJob(hPrinter: THandle; Level: DWORD; pData: Pointer; cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  703. function ScheduleJob(hPrinter: THandle; JobId: DWORD): BOOL; stdcall;
  704. function PrinterProperties(hWnd: HWND; hPrinter: THandle): BOOL; stdcall;
  705. function DocumentPropertiesA(hWnd: HWND; hPrinter: THandle; pDeviceName: PAnsiChar;
  706.   const pDevModeOutput: TDeviceModeA; var pDevModeInput: TDeviceModeA; 
  707.   fMode: DWORD): Longint; stdcall;
  708. function DocumentPropertiesW(hWnd: HWND; hPrinter: THandle; pDeviceName: PWideChar;
  709.   const pDevModeOutput: TDeviceModeW; var pDevModeInput: TDeviceModeW; 
  710.   fMode: DWORD): Longint; stdcall;
  711. function DocumentProperties(hWnd: HWND; hPrinter: THandle; pDeviceName: PChar;
  712.   const pDevModeOutput: TDeviceMode; var pDevModeInput: TDeviceMode; 
  713.   fMode: DWORD): Longint; stdcall;
  714. function AdvancedDocumentPropertiesA(hWnd: HWND; hPrinter: THandle; pDeviceName: PAnsiChar;
  715.   pDevModeOutput, pDevModeInput: PDeviceModeA): Longint; stdcall;
  716. function AdvancedDocumentPropertiesW(hWnd: HWND; hPrinter: THandle; pDeviceName: PWideChar;
  717.   pDevModeOutput, pDevModeInput: PDeviceModeW): Longint; stdcall;
  718. function AdvancedDocumentProperties(hWnd: HWND; hPrinter: THandle; pDeviceName: PChar;
  719.   pDevModeOutput, pDevModeInput: PDeviceMode): Longint; stdcall;
  720. function GetPrinterDataA(hPrinter: THandle; pValueName: PAnsiChar; pType: PDWORD; pData: Pointer;
  721.   nSize: DWORD; var pcbNeeded: DWORD): DWORD; stdcall;
  722. function GetPrinterDataW(hPrinter: THandle; pValueName: PWideChar; pType: PDWORD; pData: Pointer;
  723.   nSize: DWORD; var pcbNeeded: DWORD): DWORD; stdcall;
  724. function GetPrinterData(hPrinter: THandle; pValueName: PChar; pType: PDWORD; pData: Pointer;
  725.   nSize: DWORD; var pcbNeeded: DWORD): DWORD; stdcall;
  726. function EnumPrinterDataA(hPrinter: THandle; dwIndex: DWORD; pValueName: PAnsiChar; 
  727.   cbValueName: DWORD; var pcbValueName, pType: DWORD; pData: PByte; 
  728.   cbData: DWORD; pcbData: PDWORD): DWORD; stdcall;
  729. function EnumPrinterDataW(hPrinter: THandle; dwIndex: DWORD; pValueName: PWideChar; 
  730.   cbValueName: DWORD; var pcbValueName, pType: DWORD; pData: PByte; 
  731.   cbData: DWORD; pcbData: PDWORD): DWORD; stdcall;
  732. function EnumPrinterData(hPrinter: THandle; dwIndex: DWORD; pValueName: PChar; 
  733.   cbValueName: DWORD; var pcbValueName, pType: DWORD; pData: PByte; 
  734.   cbData: DWORD; pcbData: PDWORD): DWORD; stdcall;
  735. function SetPrinterDataA(hPrinter: THandle; pValueName: PAnsiChar; dwType: DWORD; pData: Pointer; cbData: DWORD): DWORD; stdcall;
  736. function SetPrinterDataW(hPrinter: THandle; pValueName: PWideChar; dwType: DWORD; pData: Pointer; cbData: DWORD): DWORD; stdcall;
  737. function SetPrinterData(hPrinter: THandle; pValueName: PChar; dwType: DWORD; pData: Pointer; cbData: DWORD): DWORD; stdcall;
  738. function DeletePrinterDataA(hPrinter: THandle; pValueName: PAnsiChar): DWORD; stdcall;
  739. function DeletePrinterDataW(hPrinter: THandle; pValueName: PWideChar): DWORD; stdcall;
  740. function DeletePrinterData(hPrinter: THandle; pValueName: PChar): DWORD; stdcall;
  741.  
  742. const
  743.   PRINTER_NOTIFY_TYPE = $00;
  744.   JOB_NOTIFY_TYPE     = $01;
  745.  
  746.   PRINTER_NOTIFY_FIELD_SERVER_NAME             = $00;
  747.   PRINTER_NOTIFY_FIELD_PRINTER_NAME            = $01;
  748.   PRINTER_NOTIFY_FIELD_SHARE_NAME              = $02;
  749.   PRINTER_NOTIFY_FIELD_PORT_NAME               = $03;
  750.   PRINTER_NOTIFY_FIELD_DRIVER_NAME             = $04;
  751.   PRINTER_NOTIFY_FIELD_COMMENT                 = $05;
  752.   PRINTER_NOTIFY_FIELD_LOCATION                = $06;
  753.   PRINTER_NOTIFY_FIELD_DEVMODE                 = $07;
  754.   PRINTER_NOTIFY_FIELD_SEPFILE                 = $08;
  755.   PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR         = $09;
  756.   PRINTER_NOTIFY_FIELD_PARAMETERS              = $0A;
  757.   PRINTER_NOTIFY_FIELD_DATATYPE                = $0B;
  758.   PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR     = $0C;
  759.   PRINTER_NOTIFY_FIELD_ATTRIBUTES              = $0D;
  760.   PRINTER_NOTIFY_FIELD_PRIORITY                = $0E;
  761.   PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY        = $0F;
  762.   PRINTER_NOTIFY_FIELD_START_TIME              = $10;
  763.   PRINTER_NOTIFY_FIELD_UNTIL_TIME              = $11;
  764.   PRINTER_NOTIFY_FIELD_STATUS                  = $12;
  765.   PRINTER_NOTIFY_FIELD_STATUS_STRING           = $13;
  766.   PRINTER_NOTIFY_FIELD_CJOBS                   = $14;
  767.   PRINTER_NOTIFY_FIELD_AVERAGE_PPM             = $15;
  768.   PRINTER_NOTIFY_FIELD_TOTAL_PAGES             = $16;
  769.   PRINTER_NOTIFY_FIELD_PAGES_PRINTED           = $17;
  770.   PRINTER_NOTIFY_FIELD_TOTAL_BYTES             = $18;
  771.   PRINTER_NOTIFY_FIELD_BYTES_PRINTED           = $19;
  772.  
  773.   JOB_NOTIFY_FIELD_PRINTER_NAME                = $00;
  774.   JOB_NOTIFY_FIELD_MACHINE_NAME                = $01;
  775.   JOB_NOTIFY_FIELD_PORT_NAME                   = $02;
  776.   JOB_NOTIFY_FIELD_USER_NAME                   = $03;
  777.   JOB_NOTIFY_FIELD_NOTIFY_NAME                 = $04;
  778.   JOB_NOTIFY_FIELD_DATATYPE                    = $05;
  779.   JOB_NOTIFY_FIELD_PRINT_PROCESSOR             = $06;
  780.   JOB_NOTIFY_FIELD_PARAMETERS                  = $07;
  781.   JOB_NOTIFY_FIELD_DRIVER_NAME                 = $08;
  782.   JOB_NOTIFY_FIELD_DEVMODE                     = $09;
  783.   JOB_NOTIFY_FIELD_STATUS                      = $0A;
  784.   JOB_NOTIFY_FIELD_STATUS_STRING               = $0B;
  785.   JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR         = $0C;
  786.   JOB_NOTIFY_FIELD_DOCUMENT                    = $0D;
  787.   JOB_NOTIFY_FIELD_PRIORITY                    = $0E;
  788.   JOB_NOTIFY_FIELD_POSITION                    = $0F;
  789.   JOB_NOTIFY_FIELD_SUBMITTED                   = $10;
  790.   JOB_NOTIFY_FIELD_START_TIME                  = $11;
  791.   JOB_NOTIFY_FIELD_UNTIL_TIME                  = $12;
  792.   JOB_NOTIFY_FIELD_TIME                        = $13;
  793.   JOB_NOTIFY_FIELD_TOTAL_PAGES                 = $14;
  794.   JOB_NOTIFY_FIELD_PAGES_PRINTED               = $15;
  795.   JOB_NOTIFY_FIELD_TOTAL_BYTES                 = $16;
  796.   JOB_NOTIFY_FIELD_BYTES_PRINTED               = $17;
  797.  
  798.  
  799. type
  800.   PPrinterNotifyOptionsType = ^TPrinterNotifyOptionsType;
  801.   TPrinterNotifyOptionsType = record
  802.     wType: Word;
  803.     Reserved0: Word;
  804.     Reserved1: DWORD;
  805.     Reserved2: DWORD;
  806.     Count: DWORD;
  807.     pFields: PWord;
  808.   end;
  809.  
  810. const
  811.   PRINTER_NOTIFY_OPTIONS_REFRESH  = $01;
  812.  
  813. type
  814.   PPrinterNotifyOptions = ^TPrinterNotifyOptions;
  815.   TPrinterNotifyOptions = record
  816.     Version: DWORD;
  817.     Flags: DWORD;
  818.     Count: DWORD;
  819.     pTypes: PPrinterNotifyOptionsType;
  820.   end;
  821.  
  822. const
  823.   PRINTER_NOTIFY_INFO_DISCARDED       = $01;
  824.  
  825. type
  826.   PPrinterNotifyInfoData = ^TPrinterNotifyInfoData;
  827.   TPrinterNotifyInfoData = record
  828.     wType: Word;
  829.     Field: Word;
  830.     Reserved: DWORD;
  831.     Id: DWORD;
  832.     NotifyData: record
  833.       case Integer of
  834.         0: (adwData: array[0..1] of DWORD);
  835.         1: (Data: record 
  836.               cbBuf: DWORD; 
  837.               pBuf: Pointer; 
  838.             end);
  839.     end;
  840.   end;
  841.  
  842.   PPrinterNotifyInfo = ^TPrinterNotifyInfo;
  843.   TPrinterNotifyInfo = record
  844.     Version: DWORD;
  845.     Flags: DWORD;
  846.     Count: DWORD;
  847.     aData: array[0..0] of TPrinterNotifyInfoData;
  848.   end;
  849.  
  850. function WaitForPrinterChange(hPrinter: THandle; Flags: DWORD): DWORD; stdcall;
  851. function FindFirstPrinterChangeNotification(hPrinter: THandle; fdwFlags: DWORD;
  852.   fdwOptions: DWORD; pPrinterNotifyOptions: Pointer): THandle; stdcall;
  853. function FindNextPrinterChangeNotification(hChange: THandle; var pdwChange: DWORD;
  854.   pvReserved: Pointer; var ppPrinterNotifyInfo: Pointer): BOOL; stdcall;
  855. function FreePrinterNotifyInfo(pPrinterNotifyInfo: PPrinterNotifyInfo): BOOL; stdcall;
  856. function FindClosePrinterChangeNotification(hChange: THandle): BOOL; stdcall;
  857.  
  858. const
  859.   PRINTER_CHANGE_ADD_PRINTER              = $00000001;
  860.   PRINTER_CHANGE_SET_PRINTER              = $00000002;
  861.   PRINTER_CHANGE_DELETE_PRINTER           = $00000004;
  862.   PRINTER_CHANGE_FAILED_CONNECTION_PRINTER    = $00000008;
  863.   PRINTER_CHANGE_PRINTER                  = $000000FF;
  864.   PRINTER_CHANGE_ADD_JOB                  = $00000100;
  865.   PRINTER_CHANGE_SET_JOB                  = $00000200;
  866.   PRINTER_CHANGE_DELETE_JOB               = $00000400;
  867.   PRINTER_CHANGE_WRITE_JOB                = $00000800;
  868.   PRINTER_CHANGE_JOB                      = $0000FF00;
  869.   PRINTER_CHANGE_ADD_FORM                 = $00010000;
  870.   PRINTER_CHANGE_SET_FORM                 = $00020000;
  871.   PRINTER_CHANGE_DELETE_FORM              = $00040000;
  872.   PRINTER_CHANGE_FORM                     = $00070000;
  873.   PRINTER_CHANGE_ADD_PORT                 = $00100000;
  874.   PRINTER_CHANGE_CONFIGURE_PORT           = $00200000;
  875.   PRINTER_CHANGE_DELETE_PORT              = $00400000;
  876.   PRINTER_CHANGE_PORT                     = $00700000;
  877.   PRINTER_CHANGE_ADD_PRINT_PROCESSOR      = $01000000;
  878.   PRINTER_CHANGE_DELETE_PRINT_PROCESSOR   = $04000000;
  879.   PRINTER_CHANGE_PRINT_PROCESSOR          = $07000000;
  880.   PRINTER_CHANGE_ADD_PRINTER_DRIVER       = $10000000;
  881.   PRINTER_CHANGE_SET_PRINTER_DRIVER       = $20000000;
  882.   PRINTER_CHANGE_DELETE_PRINTER_DRIVER    = $40000000;
  883.   PRINTER_CHANGE_PRINTER_DRIVER           = $70000000;
  884.   PRINTER_CHANGE_TIMEOUT                  = $80000000;
  885.   PRINTER_CHANGE_ALL                      = $7777FFFF;
  886.  
  887. function PrinterMessageBoxA(hPrinter: THandle; Error: DWORD; hWnd: HWND; pText, pCaption: PAnsiChar;
  888.   dwType: DWORD): DWORD; stdcall;
  889. function PrinterMessageBoxW(hPrinter: THandle; Error: DWORD; hWnd: HWND; pText, pCaption: PWideChar;
  890.   dwType: DWORD): DWORD; stdcall;
  891. function PrinterMessageBox(hPrinter: THandle; Error: DWORD; hWnd: HWND; pText, pCaption: PChar;
  892.   dwType: DWORD): DWORD; stdcall;
  893.  
  894. const
  895.   PRINTER_ERROR_INFORMATION   = $80000000;
  896.   PRINTER_ERROR_WARNING       = $40000000;
  897.   PRINTER_ERROR_SEVERE        = $20000000;
  898.  
  899.   PRINTER_ERROR_OUTOFPAPER    = $00000001;
  900.   PRINTER_ERROR_JAM           = $00000002;
  901.   PRINTER_ERROR_OUTOFTONER    = $00000004;
  902.  
  903. function ClosePrinter(hPrinter: THandle): BOOL; stdcall;
  904. function AddFormA(hPrinter: THandle; Level: DWORD; pForm: Pointer): BOOL; stdcall;
  905. function AddFormW(hPrinter: THandle; Level: DWORD; pForm: Pointer): BOOL; stdcall;
  906. function AddForm(hPrinter: THandle; Level: DWORD; pForm: Pointer): BOOL; stdcall;
  907. function DeleteFormA(hPrinter: THandle; pFormName: PAnsiChar): BOOL; stdcall;
  908. function DeleteFormW(hPrinter: THandle; pFormName: PWideChar): BOOL; stdcall;
  909. function DeleteForm(hPrinter: THandle; pFormName: PChar): BOOL; stdcall;
  910. function GetFormA(hPrinter: THandle; pFormName: PAnsiChar; Level: DWORD; pForm: Pointer;
  911.   cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  912. function GetFormW(hPrinter: THandle; pFormName: PWideChar; Level: DWORD; pForm: Pointer;
  913.   cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  914. function GetForm(hPrinter: THandle; pFormName: PChar; Level: DWORD; pForm: Pointer;
  915.   cbBuf: DWORD; var pcbNeeded: DWORD): BOOL; stdcall;
  916. function SetFormA(hPrinter: THandle; pFormName: PAnsiChar; Level: DWORD; pForm: Pointer): BOOL; stdcall;
  917. function SetFormW(hPrinter: THandle; pFormName: PWideChar; Level: DWORD; pForm: Pointer): BOOL; stdcall;
  918. function SetForm(hPrinter: THandle; pFormName: PChar; Level: DWORD; pForm: Pointer): BOOL; stdcall;
  919. function EnumFormsA(hPrinter: THandle; Level: DWORD; pForm: Pointer; cbBuf: DWORD;
  920.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  921. function EnumFormsW(hPrinter: THandle; Level: DWORD; pForm: Pointer; cbBuf: DWORD;
  922.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  923. function EnumForms(hPrinter: THandle; Level: DWORD; pForm: Pointer; cbBuf: DWORD;
  924.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  925. function EnumMonitorsA(pName: PAnsiChar; Level: DWORD; pMonitors: Pointer; cbBuf: DWORD;
  926.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  927. function EnumMonitorsW(pName: PWideChar; Level: DWORD; pMonitors: Pointer; cbBuf: DWORD;
  928.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  929. function EnumMonitors(pName: PChar; Level: DWORD; pMonitors: Pointer; cbBuf: DWORD;
  930.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  931. function AddMonitorA(pName: PAnsiChar; Level: DWORD; pMonitors: Pointer): BOOL; stdcall;
  932. function AddMonitorW(pName: PWideChar; Level: DWORD; pMonitors: Pointer): BOOL; stdcall;
  933. function AddMonitor(pName: PChar; Level: DWORD; pMonitors: Pointer): BOOL; stdcall;
  934. function DeleteMonitorA(pName, pEnvironment, pMonitorName: PAnsiChar): BOOL; stdcall;
  935. function DeleteMonitorW(pName, pEnvironment, pMonitorName: PWideChar): BOOL; stdcall;
  936. function DeleteMonitor(pName, pEnvironment, pMonitorName: PChar): BOOL; stdcall;
  937. function EnumPortsA(pName: PAnsiChar; Level: DWORD; pPorts: Pointer; cbBuf: DWORD;
  938.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  939. function EnumPortsW(pName: PWideChar; Level: DWORD; pPorts: Pointer; cbBuf: DWORD;
  940.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  941. function EnumPorts(pName: PChar; Level: DWORD; pPorts: Pointer; cbBuf: DWORD;
  942.   var pcbNeeded, pcReturned: DWORD): BOOL; stdcall;
  943. function AddPortA(pName: PAnsiChar; hWnd: HWND; pMonitorName: PAnsiChar): BOOL; stdcall;
  944. function AddPortW(pName: PWideChar; hWnd: HWND; pMonitorName: PWideChar): BOOL; stdcall;
  945. function AddPort(pName: PChar; hWnd: HWND; pMonitorName: PChar): BOOL; stdcall;
  946. function ConfigurePortA(pName: PAnsiChar; hWnd: HWND; pPortName: PAnsiChar): BOOL; stdcall;
  947. function ConfigurePortW(pName: PWideChar; hWnd: HWND; pPortName: PWideChar): BOOL; stdcall;
  948. function ConfigurePort(pName: PChar; hWnd: HWND; pPortName: PChar): BOOL; stdcall;
  949. function DeletePortA(pName: PAnsiChar; hWnd: HWND; pPortName: PAnsiChar): BOOL; stdcall;
  950. function DeletePortW(pName: PWideChar; hWnd: HWND; pPortName: PWideChar): BOOL; stdcall;
  951. function DeletePort(pName: PChar; hWnd: HWND; pPortName: PChar): BOOL; stdcall;
  952. function SetPortA(pName, pPortName: PAnsiChar; dwLevel: DWORD; pPortInfo: Pointer): BOOL; stdcall;
  953. function SetPortW(pName, pPortName: PWideChar; dwLevel: DWORD; pPortInfo: Pointer): BOOL; stdcall;
  954. function SetPort(pName, pPortName: PChar; dwLevel: DWORD; pPortInfo: Pointer): BOOL; stdcall;
  955. function AddPrinterConnectionA(pName: PAnsiChar): BOOL; stdcall;
  956. function AddPrinterConnectionW(pName: PWideChar): BOOL; stdcall;
  957. function AddPrinterConnection(pName: PChar): BOOL; stdcall;
  958. function DeletePrinterConnectionA(pName: PAnsiChar): BOOL; stdcall;
  959. function DeletePrinterConnectionW(pName: PWideChar): BOOL; stdcall;
  960. function DeletePrinterConnection(pName: PChar): BOOL; stdcall;
  961. function ConnectToPrinterDlg(hwnd: HWND; Flags: DWORD): THandle; stdcall;
  962.  
  963. type
  964.   PProvidorInfo1A = ^TProvidorInfo1A;
  965.   PProvidorInfo1W = ^TProvidorInfo1W;
  966.   PProvidorInfo1 = PProvidorInfo1A;
  967.   TProvidorInfo1A = record
  968.     pName: PAnsiChar;
  969.     pEnvironment: PAnsiChar;
  970.     pDLLName: PAnsiChar;
  971.   end;
  972.   TProvidorInfo1W = record
  973.     pName: PWideChar;
  974.     pEnvironment: PWideChar;
  975.     pDLLName: PWideChar;
  976.   end;
  977.   TProvidorInfo1 = TProvidorInfo1A;
  978.  
  979. function AddPrintProvidorA(pName: PAnsiChar; level: DWORD; pProvidorInfo: Pointer): BOOL; stdcall;
  980. function AddPrintProvidorW(pName: PWideChar; level: DWORD; pProvidorInfo: Pointer): BOOL; stdcall;
  981. function AddPrintProvidor(pName: PChar; level: DWORD; pProvidorInfo: Pointer): BOOL; stdcall;
  982. function DeletePrintProvidorA(pName, pEnvironment, pPrintProvidorName: PAnsiChar): BOOL; stdcall;
  983. function DeletePrintProvidorW(pName, pEnvironment, pPrintProvidorName: PWideChar): BOOL; stdcall;
  984. function DeletePrintProvidor(pName, pEnvironment, pPrintProvidorName: PChar): BOOL; stdcall;
  985.  
  986. { SetPrinterData and GetPrinterData Server Handle Key values }
  987.  
  988. const
  989.   SPLREG_DEFAULT_SPOOL_DIRECTORY                    = 'DefaultSpoolDirectory'; 
  990.   SPLREG_PORT_THREAD_PRIORITY_DEFAULT               = 'PortThreadPriorityDefault'; 
  991.   SPLREG_PORT_THREAD_PRIORITY                       = 'PortThreadPriority'; 
  992.   SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT          = 'SchedulerThreadPriorityDefault'; 
  993.   SPLREG_SCHEDULER_THREAD_PRIORITY                  = 'SchedulerThreadPriority'; 
  994.   SPLREG_BEEP_ENABLED                               = 'BeepEnabled'; 
  995.   SPLREG_NET_POPUP                                  = 'NetPopup'; 
  996.   SPLREG_EVENT_LOG                                  = 'EventLog'; 
  997.   SPLREG_MAJOR_VERSION                              = 'MajorVersion'; 
  998.   SPLREG_MINOR_VERSION                              = 'MinorVersion'; 
  999.   SPLREG_ARCHITECTURE                               = 'Architecture'; 
  1000.  
  1001.  
  1002.   SERVER_ACCESS_ADMINISTER    = $00000001;
  1003.   SERVER_ACCESS_ENUMERATE     = $00000002;
  1004.   PRINTER_ACCESS_ADMINISTER   = $00000004;
  1005.   PRINTER_ACCESS_USE          = $00000008;
  1006.   JOB_ACCESS_ADMINISTER       = $00000010;
  1007.  
  1008. { Access rights for print servers }
  1009.  
  1010.   SERVER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or 
  1011.     SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE);
  1012.   SERVER_READ = (STANDARD_RIGHTS_READ or SERVER_ACCESS_ENUMERATE);
  1013.   SERVER_WRITE = (STANDARD_RIGHTS_WRITE or 
  1014.     SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE);
  1015.   SERVER_EXECUTE = (STANDARD_RIGHTS_EXECUTE or SERVER_ACCESS_ENUMERATE);
  1016.  
  1017. { Access rights for printers }
  1018.  
  1019.   PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or 
  1020.     PRINTER_ACCESS_ADMINISTER or PRINTER_ACCESS_USE);
  1021.   PRINTER_READ = (STANDARD_RIGHTS_READ or PRINTER_ACCESS_USE);
  1022.   PRINTER_WRITE = (STANDARD_RIGHTS_WRITE or PRINTER_ACCESS_USE);
  1023.   PRINTER_EXECUTE = (STANDARD_RIGHTS_EXECUTE or PRINTER_ACCESS_USE);
  1024.  
  1025. { Access rights for jobs }
  1026.  
  1027.   JOB_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or JOB_ACCESS_ADMINISTER);
  1028.   JOB_READ = (STANDARD_RIGHTS_READ or JOB_ACCESS_ADMINISTER);
  1029.   JOB_WRITE = (STANDARD_RIGHTS_WRITE or JOB_ACCESS_ADMINISTER);
  1030.   JOB_EXECUTE = (STANDARD_RIGHTS_EXECUTE or JOB_ACCESS_ADMINISTER);
  1031.  
  1032. function DeviceCapabilitiesA(pDevice, pPort: PAnsiChar; fwCapability: Word;
  1033.   pOutput: PAnsiChar; DevMode: PDeviceModeA): Integer; stdcall;
  1034. function DeviceCapabilitiesW(pDevice, pPort: PWideChar; fwCapability: Word;
  1035.   pOutput: PWideChar; DevMode: PDeviceModeW): Integer; stdcall;
  1036. function DeviceCapabilities(pDevice, pPort: PChar; fwCapability: Word;
  1037.   pOutput: PChar; DevMode: PDeviceMode): Integer; stdcall;
  1038.  
  1039. const
  1040.   winspl = 'winspool.drv';
  1041.  
  1042. implementation
  1043.  
  1044. function AbortPrinter; external winspl name 'AbortPrinter';
  1045. function AddFormA; external winspl name 'AddFormA';
  1046. function AddFormW; external winspl name 'AddFormW';
  1047. function AddForm; external winspl name 'AddFormA';
  1048. function AddJobA; external winspl name 'AddJobA';
  1049. function AddJobW; external winspl name 'AddJobW';
  1050. function AddJob; external winspl name 'AddJobA';
  1051. function AddMonitorA; external winspl name 'AddMonitorA';
  1052. function AddMonitorW; external winspl name 'AddMonitorW';
  1053. function AddMonitor; external winspl name 'AddMonitorA';
  1054. function AddPortA; external winspl name 'AddPortA';
  1055. function AddPortW; external winspl name 'AddPortW';
  1056. function AddPort; external winspl name 'AddPortA';
  1057. function AddPrinterA; external winspl name 'AddPrinterA';
  1058. function AddPrinterW; external winspl name 'AddPrinterW';
  1059. function AddPrinter; external winspl name 'AddPrinterA';
  1060. function AddPrinterConnectionA; external winspl name 'AddPrinterConnectionA';
  1061. function AddPrinterConnectionW; external winspl name 'AddPrinterConnectionW';
  1062. function AddPrinterConnection; external winspl name 'AddPrinterConnectionA';
  1063. function AddPrinterDriverA; external winspl name 'AddPrinterDriverA';
  1064. function AddPrinterDriverW; external winspl name 'AddPrinterDriverW';
  1065. function AddPrinterDriver; external winspl name 'AddPrinterDriverA';
  1066. function AddPrintProcessorA; external winspl name 'AddPrintProcessorA';
  1067. function AddPrintProcessorW; external winspl name 'AddPrintProcessorW';
  1068. function AddPrintProcessor; external winspl name 'AddPrintProcessorA';
  1069. function AddPrintProvidorA; external winspl name 'AddPrintProvidorA';
  1070. function AddPrintProvidorW; external winspl name 'AddPrintProvidorW';
  1071. function AddPrintProvidor; external winspl name 'AddPrintProvidorA';
  1072. function AdvancedDocumentPropertiesA; external winspl name 'AdvancedDocumentPropertiesA';
  1073. function AdvancedDocumentPropertiesW; external winspl name 'AdvancedDocumentPropertiesW';
  1074. function AdvancedDocumentProperties; external winspl name 'AdvancedDocumentPropertiesA';
  1075. function ClosePrinter; external winspl name 'ClosePrinter';
  1076. function ConfigurePortA; external winspl name 'ConfigurePortA';
  1077. function ConfigurePortW; external winspl name 'ConfigurePortW';
  1078. function ConfigurePort; external winspl name 'ConfigurePortA';
  1079. function ConnectToPrinterDlg; external winspl name 'ConnectToPrinterDlg';
  1080. function DeleteFormA; external winspl name 'DeleteFormA';
  1081. function DeleteFormW; external winspl name 'DeleteFormW';
  1082. function DeleteForm; external winspl name 'DeleteFormA';
  1083. function DeleteMonitorA; external winspl name 'DeleteMonitorA';
  1084. function DeleteMonitorW; external winspl name 'DeleteMonitorW';
  1085. function DeleteMonitor; external winspl name 'DeleteMonitorA';
  1086. function DeletePortA; external winspl name 'DeletePortA';
  1087. function DeletePortW; external winspl name 'DeletePortW';
  1088. function DeletePort; external winspl name 'DeletePortA';
  1089. function DeletePrinter; external winspl name 'DeletePrinter';
  1090. function DeletePrinterConnectionA; external winspl name 'DeletePrinterConnectionA';
  1091. function DeletePrinterConnectionW; external winspl name 'DeletePrinterConnectionW';
  1092. function DeletePrinterConnection; external winspl name 'DeletePrinterConnectionA';
  1093. function DeletePrinterDataA; external winspl name 'DeletePrinterDataA';
  1094. function DeletePrinterDataW; external winspl name 'DeletePrinterDataW';
  1095. function DeletePrinterData; external winspl name 'DeletePrinterDataA';
  1096. function DeletePrinterDriverA; external winspl name 'DeletePrinterDriverA';
  1097. function DeletePrinterDriverW; external winspl name 'DeletePrinterDriverW';
  1098. function DeletePrinterDriver; external winspl name 'DeletePrinterDriverA';
  1099. function DeletePrintProcessorA; external winspl name 'DeletePrintProcessorA';
  1100. function DeletePrintProcessorW; external winspl name 'DeletePrintProcessorW';
  1101. function DeletePrintProcessor; external winspl name 'DeletePrintProcessorA';
  1102. function DeletePrintProvidorA; external winspl name 'DeletePrintProvidorA';
  1103. function DeletePrintProvidorW; external winspl name 'DeletePrintProvidorW';
  1104. function DeletePrintProvidor; external winspl name 'DeletePrintProvidorA';
  1105. function DeviceCapabilitiesA; external winspl name 'DeviceCapabilitiesA';
  1106. function DeviceCapabilitiesW; external winspl name 'DeviceCapabilitiesW';
  1107. function DeviceCapabilities; external winspl name 'DeviceCapabilitiesA';
  1108. function DocumentPropertiesA; external winspl name 'DocumentPropertiesA';
  1109. function DocumentPropertiesW; external winspl name 'DocumentPropertiesW';
  1110. function DocumentProperties; external winspl name 'DocumentPropertiesA';
  1111. function EndDocPrinter; external winspl name 'EndDocPrinter';
  1112. function EndPagePrinter; external winspl name 'EndPagePrinter';
  1113. function EnumFormsA; external winspl name 'EnumFormsA';
  1114. function EnumFormsW; external winspl name 'EnumFormsW';
  1115. function EnumForms; external winspl name 'EnumFormsA';
  1116. function EnumJobsA; external winspl name 'EnumJobsA';
  1117. function EnumJobsW; external winspl name 'EnumJobsW';
  1118. function EnumJobs; external winspl name 'EnumJobsA';
  1119. function EnumMonitorsA; external winspl name 'EnumMonitorsA';
  1120. function EnumMonitorsW; external winspl name 'EnumMonitorsW';
  1121. function EnumMonitors; external winspl name 'EnumMonitorsA';
  1122. function EnumPortsA; external winspl name 'EnumPortsA';
  1123. function EnumPortsW; external winspl name 'EnumPortsW';
  1124. function EnumPorts; external winspl name 'EnumPortsA';
  1125. function EnumPrinterDataA; external winspl name 'EnumPrinterDataA';
  1126. function EnumPrinterDataW; external winspl name 'EnumPrinterDataW';
  1127. function EnumPrinterData; external winspl name 'EnumPrinterDataA';
  1128. function EnumPrinterDriversA; external winspl name 'EnumPrinterDriversA';
  1129. function EnumPrinterDriversW; external winspl name 'EnumPrinterDriversW';
  1130. function EnumPrinterDrivers; external winspl name 'EnumPrinterDriversA';
  1131. function EnumPrintersA; external winspl name 'EnumPrintersA';
  1132. function EnumPrintersW; external winspl name 'EnumPrintersW';
  1133. function EnumPrinters; external winspl name 'EnumPrintersA';
  1134. function EnumPrintProcessorDatatypesA; external winspl name 'EnumPrintProcessorDatatypesA';
  1135. function EnumPrintProcessorDatatypesW; external winspl name 'EnumPrintProcessorDatatypesW';
  1136. function EnumPrintProcessorDatatypes; external winspl name 'EnumPrintProcessorDatatypesA';
  1137. function EnumPrintProcessorsA; external winspl name 'EnumPrintProcessorsA';
  1138. function EnumPrintProcessorsW; external winspl name 'EnumPrintProcessorsW';
  1139. function EnumPrintProcessors; external winspl name 'EnumPrintProcessorsA';
  1140. function FindClosePrinterChangeNotification; external winspl name 'FindClosePrinterChangeNotification';
  1141. function FindFirstPrinterChangeNotification; external winspl name 'FindFirstPrinterChangeNotification';
  1142. function FindNextPrinterChangeNotification; external winspl name 'FindNextPrinterChangeNotification';
  1143. function FreePrinterNotifyInfo; external winspl name 'FreePrinterNotifyInfo';
  1144. function GetFormA; external winspl name 'GetFormA';
  1145. function GetFormW; external winspl name 'GetFormW';
  1146. function GetForm; external winspl name 'GetFormA';
  1147. function GetJobA; external winspl name 'GetJobA';
  1148. function GetJobW; external winspl name 'GetJobW';
  1149. function GetJob; external winspl name 'GetJobA';
  1150. function GetPrinterA; external winspl name 'GetPrinterA';
  1151. function GetPrinterW; external winspl name 'GetPrinterW';
  1152. function GetPrinter; external winspl name 'GetPrinterA';
  1153. function GetPrinterDataA; external winspl name 'GetPrinterDataA';
  1154. function GetPrinterDataW; external winspl name 'GetPrinterDataW';
  1155. function GetPrinterData; external winspl name 'GetPrinterDataA';
  1156. function GetPrinterDriverA; external winspl name 'GetPrinterDriverA';
  1157. function GetPrinterDriverW; external winspl name 'GetPrinterDriverW';
  1158. function GetPrinterDriver; external winspl name 'GetPrinterDriverA';
  1159. function GetPrinterDriverDirectoryA; external winspl name 'GetPrinterDriverDirectoryA';
  1160. function GetPrinterDriverDirectoryW; external winspl name 'GetPrinterDriverDirectoryW';
  1161. function GetPrinterDriverDirectory; external winspl name 'GetPrinterDriverDirectoryA';
  1162. function GetPrintProcessorDirectoryA; external winspl name 'GetPrintProcessorDirectoryA';
  1163. function GetPrintProcessorDirectoryW; external winspl name 'GetPrintProcessorDirectoryW';
  1164. function GetPrintProcessorDirectory; external winspl name 'GetPrintProcessorDirectoryA';
  1165. function OpenPrinterA; external winspl name 'OpenPrinterA';
  1166. function OpenPrinterW; external winspl name 'OpenPrinterW';
  1167. function OpenPrinter; external winspl name 'OpenPrinterA';
  1168. function PrinterMessageBoxA; external winspl name 'PrinterMessageBoxA';
  1169. function PrinterMessageBoxW; external winspl name 'PrinterMessageBoxW';
  1170. function PrinterMessageBox; external winspl name 'PrinterMessageBoxA';
  1171. function PrinterProperties; external winspl name 'PrinterProperties';
  1172. function ReadPrinter; external winspl name 'ReadPrinter';
  1173. function ResetPrinterA; external winspl name 'ResetPrinterA';
  1174. function ResetPrinterW; external winspl name 'ResetPrinterW';
  1175. function ResetPrinter; external winspl name 'ResetPrinterA';
  1176. function ScheduleJob; external winspl name 'ScheduleJob';
  1177. function SetFormA; external winspl name 'SetFormA';
  1178. function SetFormW; external winspl name 'SetFormW';
  1179. function SetForm; external winspl name 'SetFormA';
  1180. function SetJobA; external winspl name 'SetJobA';
  1181. function SetJobW; external winspl name 'SetJobW';
  1182. function SetJob; external winspl name 'SetJobA';
  1183. function SetPortA; external winspl name 'SetPortA';
  1184. function SetPortW; external winspl name 'SetPortW';
  1185. function SetPort; external winspl name 'SetPortA';
  1186. function SetPrinterA; external winspl name 'SetPrinterA';
  1187. function SetPrinterW; external winspl name 'SetPrinterW';
  1188. function SetPrinter; external winspl name 'SetPrinterA';
  1189. function SetPrinterDataA; external winspl name 'SetPrinterDataA';
  1190. function SetPrinterDataW; external winspl name 'SetPrinterDataW';
  1191. function SetPrinterData; external winspl name 'SetPrinterDataA';
  1192. function StartDocPrinterA; external winspl name 'StartDocPrinterA';
  1193. function StartDocPrinterW; external winspl name 'StartDocPrinterW';
  1194. function StartDocPrinter; external winspl name 'StartDocPrinterA';
  1195. function StartPagePrinter; external winspl name 'StartPagePrinter';
  1196. function WaitForPrinterChange; external winspl name 'WaitForPrinterChange';
  1197. function WritePrinter; external winspl name 'WritePrinter';
  1198.  
  1199. end.
  1200.