Announcement

Collapse
No announcement yet.

Hilfe sehr dringend "API EnumPrinters"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe sehr dringend "API EnumPrinters"

    Hallo<br>
    ich benutze diese Procedure um Drucker Informationen auszulesen<br>
    auf den meisten getesteten PCs (Win98 - W2K) funktioniert das auch ...<br>
    ein PC hat aber das Problem das eine Pointer Error Exception verursacht wird. <br>Beim Debugen auf dem PC läuft die Funktion durch bis Freemem(Buffer,Count), oder die Procedure verlassen wird, und dann kommt die Exception ...<br><br>
    <b>Hat jemand ne Idee ?</b><br><br>
    <p>Procedure WritePrinterInfo(var RL:TStringList; isNt:Boolean);</p>
    <p>var&nbsp;&nbsp;Buffer: PByte;<br>&nbsp;&nbsp;myPrinterInfo2:array of PRINTER_INFO_2;<br>&nbsp;&nbsp;Flags,
    Count, NumInfo: DWORD;<br>&nbsp;&nbsp;i:Integer;<br>begin</p>
    <p>&nbsp;&nbsp;if isNt then &nbsp;Flags := (PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL)<br>&nbsp;&nbsp;else
    Flags := PRINTER_ENUM_LOCAL;<br>&nbsp;&nbsp;Count := 0;<br>&nbsp;&nbsp;Try<br>&nbsp;&nbsp;&nbsp;&nbsp;E numPrinters(Flags,
    nil,2, nil, 0, Count, NumInfo);<br>&nbsp;&nbsp;&nbsp;&nbsp;if Count = 0 then
    Exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>GetMem(Buffer, Count);</i><br><br>&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nb sp;&nbsp;&nbsp;&nbsp;&nbsp;if
    not EnumPrinters(Flags, nil,2, PByte(Buffer), Count, Count, NumInfo) then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;myPrinterInfo2
    :=@Buffer^;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;for I := 0 to NumInfo - 1
    do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R L.Add(Format('%s_%d=%s',['Printer',i,myPrinterInfo2[i].pPrinterName]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;RL.Add(Format('%s_%d=%s',['PrinterDriver',i,myPrinterInfo2[i].pDriverName]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;RL.Add(Format('%s_%d=%s',['PrinterPort',i,myPrinterInfo2[i].pPortName]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RL.Add(Format ('PrinterCount=%d',[NumInfo]));<br>&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>FreeMem(Buffer,
    Count);</i><br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp; Except<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;& nbsp;end;<br>end;</p>

  • #2
    Hab mir selbst geholfen<br>
    <br><br>
    Danke ;-

    Comment

    Working...
    X