- 註冊時間
- 2006-3-13
- 最後登錄
- 2025-1-10
- 在線時間
- 673 小時
- 閱讀權限
- 200
- 積分
- 417
- 帖子
- 1107
- 精華
- 0
- UID
- 2
  
|
- function GetDefaultPrinter: string;
- var
- ResStr: array[0..255] of Char;
- begin
- GetProfileString('Windows', 'device', '', ResStr, 255);
- Result := StrPas(ResStr);
- end;
- procedure SetDefaultPrinter1(NewDefPrinter: string);
- var
- ResStr: array[0..255] of Char;
- begin
- StrPCopy(ResStr, NewdefPrinter);
- WriteProfileString('windows', 'device', ResStr);
- StrCopy(ResStr, 'windows');
- SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr));
- end;
- procedure SetDefaultPrinter2(PrinterName: string);
- var
- I: Integer;
- Device: PChar;
- Driver: PChar;
- Port: PChar;
- HdeviceMode: THandle;
- aPrinter: TPrinter;
- begin
- Printer.PrinterIndex := -1;
- GetMem(Device, 255);
- GetMem(Driver, 255);
- GetMem(Port, 255);
- aPrinter := TPrinter.Create;
- try
- for I := 0 to Printer.Printers.Count - 1 do
- begin
- if Printer.Printers[I] = PrinterName then
- begin
- aprinter.PrinterIndex := I;
- aPrinter.getprinter(device, driver, port, HdeviceMode);
- StrCat(Device, ',');
- StrCat(Device, Driver);
- StrCat(Device, Port);
- WriteProfileString('windows', 'device', Device);
- StrCopy(Device, 'windows');
- SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device));
- end;
- end;
- finally
- aPrinter.Free;
- end;
- FreeMem(Device, 255);
- FreeMem(Driver, 255);
- FreeMem(Port, 255);
- end;
複製代碼- sprint := GetDefaultPrinter; //取得原始預設印表機
- SetDefaultPrinter2(sPrnName); // 更改預設印表機
- ShellExecute(Application.Mainform.Handle,'Print',Pchar(要列印的pdf 路徑),nil, nil, SW_SHOW);
- SetDefaultPrinter2(sprint); // 恢復原始預設印表機
複製代碼 http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=91080 |
|