Delphi Tips 
-----------------------------

0242  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/09/09 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/09/09 osamu 編集
デフォルトプリンタの設定

>「通常使うプリンタ」を変更したいのですが、よい方法が見つかりません。

最近 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 でしか確認していません。あしからず。
参照: [Delphi-ML:33386] <印刷>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp