| |
| Getting the Printer driver and port name from TPrinter's |
 |
How can I get the Printer driver and port name from TPrinter's GetPrinter() method?
Sometimes, these parameters will return blank string. You can use the Windows API function GetProfileString() to retrieve the associated driver and port from the Windows.ini file.
Example:
uses Printers;
{$IFNDEF WIN32}
const MAX_PATH = 44;
{$ENDIF}
procedure TForm .Button Click(Sender: TObject);
var
pDevice : pChar;
pDriver : pChar;
pPort : pChar;
hDMode : THandle;
begin
if PrintDialog .Execute then begin
GetMem(pDevice, cchDeviceName);
GetMem(pDriver, MAX_PATH);
GetMem(pPort, MAX_PATH);
Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
if lStrLen(pDriver) = 0 then begin
GetProfileString('Devices', pDevice, '', pDriver, MAX_PATH);
pDriver[pos(',', pDriver) - ] := #0;
end;
if lStrLen(pPort) = 0 then begin
GetProfileString('Devices', pDevice, '', pPort, MAX_PATH);
lStrCpy(pPort, @pPort[lStrLen(pPort)+2]);
end;
Memo .Lines.Add('Device := ' + StrPas(pDevice));
Memo .Lines.Add('Driver := ' + StrPas(pDriver));
Memo .Lines.Add('Port := ' + StrPas(pPort));
FreeMem(pDevice, cchDeviceName);
FreeMem(pDriver, MAX_PATH);
FreeMem(pPort, MAX_PATH);
end;
end;
4/2/99
|
|
| Hits/month |
2,500,000+ |
Downloads (Since May 2000) |
7,393,709 |
| Total Files |
6,023 |
| Forum msgs |
7,670 |
| Articles/FAQs |
70+/900+ |
Top Selling Software at Amazon
|