デフォルトプリンタの設定
|
>「通常使うプリンタ」を変更したいのですが、よい方法が見つかりません。
最近 SetPrinter API の使い方を覚えました。これで出来ます(^^
procedure SetDefaultPrinter(Index: Integer);
begin
var Device, Driver, Port: array[0..511] of Char;
hDevMode: THandle;
hPrinter: THandle;
pInfo2: ^TPrinterInfo2;
Size: DWORD;
begin
Printer.PrinterIndex := Index;
// デバイス名を得る
Printer.GetPrinter(Device, Driver, Port, hDevMode);
// プリンタハンドルを作る。
Win32Check(OpenPrinter(Device, hPrinter, Nil));
try
// Printer_Info_2 に必要なバッファサイズを取得
WinSpool.GetPrinter(hPrinter, 2, pInfo2, 0, @size);
// バッファ確保
GetMem(pInfo2, size);
try
// プリンタ情報を取得
Win32Check(WinSpool.GetPrinter(hPrinter, 2, pInfo2, Size, @size));
// デフォルトプリンタにする
pInfo2.Attributes := pInfo2.Attributes or
PRINTER_ATTRIBUTE_DEFAULT;
// プリンタ情報をプリンタへセットする
Win32Check(WinSpool.SetPrinter(hPrinter, 2, pInfo2,
PRINTER_CONTROL_SET_STATUS));
finally
FreeMem(pInfo2);
end;
finally
ClosePrinter(hPrinter);
end;
end;
Win98 でしか確認していません。あしからず。 |
|