bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Delphi 更改預設印表機
查看: 4049|回復: 0
go

更改預設印表機 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2010-5-4 14:49 |只看該作者 |倒序瀏覽 |打印
  1. function GetDefaultPrinter: string;
  2. var  
  3.   ResStr: array[0..255] of Char;
  4. begin
  5.   GetProfileString('Windows', 'device', '', ResStr, 255);
  6.   Result := StrPas(ResStr);
  7. end;

  8. procedure SetDefaultPrinter1(NewDefPrinter: string);
  9. var
  10.   ResStr: array[0..255] of Char;
  11. begin
  12.   StrPCopy(ResStr, NewdefPrinter);
  13.   WriteProfileString('windows', 'device', ResStr);
  14.   StrCopy(ResStr, 'windows');
  15.   SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr));
  16. end;

  17. procedure SetDefaultPrinter2(PrinterName: string);
  18. var  
  19.   I: Integer;
  20.   Device: PChar;   
  21.   Driver: PChar;
  22.   Port: PChar;   
  23.   HdeviceMode: THandle;
  24.   aPrinter: TPrinter;   
  25. begin
  26.   Printer.PrinterIndex := -1;   
  27.   GetMem(Device, 255);
  28.   GetMem(Driver, 255);   
  29.   GetMem(Port, 255);
  30.   aPrinter := TPrinter.Create;
  31.   try
  32.     for I := 0 to Printer.Printers.Count - 1 do
  33.     begin
  34.       if Printer.Printers[I] = PrinterName then
  35.       begin
  36.         aprinter.PrinterIndex := I;
  37.         aPrinter.getprinter(device, driver, port, HdeviceMode);
  38.         StrCat(Device, ',');
  39.         StrCat(Device, Driver);
  40.         StrCat(Device, Port);
  41.         WriteProfileString('windows', 'device', Device);
  42.         StrCopy(Device, 'windows');
  43.         SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device));
  44.       end;   
  45.     end;
  46.   finally
  47.     aPrinter.Free;
  48.   end;   
  49.   FreeMem(Device, 255);
  50.   FreeMem(Driver, 255);
  51.   FreeMem(Port, 255);
  52. end;
複製代碼
  1. sprint := GetDefaultPrinter;     //取得原始預設印表機   
  2. SetDefaultPrinter2(sPrnName);    // 更改預設印表機   
  3. ShellExecute(Application.Mainform.Handle,'Print',Pchar(要列印的pdf 路徑),nil, nil, SW_SHOW);               
  4. SetDefaultPrinter2(sprint);   // 恢復原始預設印表機   
複製代碼
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=91080
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-5-2 12:39 , Processed in 0.012535 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.