91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Delphi 設置系統默認打印機

發布時間:2020-07-03 08:11:10 來源:網絡 閱讀:5137 作者:kindao 欄目:軟件技術

獲取默認打印機名:

function TForm1.GetDefaultPrinterName: string;
var
  iSize: Integer;
  sIniFile, sSection, sKeyName: PChar;
begin
  iSize := 256;
  sIniFile := 'win.ini';
  sSection := 'windows';
  sKeyName := 'device';
  SetLength(Result, iSize);
  GetPrivateProfileString(sSection, sKeyName, nil, PChar(Result), iSize, sIniFile);
  Result := Copy(Result, 0, Pos(',', Result) - 1);
end;

更改默認打印機:需要Uses WinSpool

procedure ChangeDefaultPrinter(const Name: string);
var
  W2KSDP: function(pszPrinter: PChar): Boolean; stdcall;
  H: THandle;
  Size, Dummy: Cardinal;
  PI: PPrinterInfo2;
begin
  if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 5) then
  begin
    @W2KSDP := GetProcAddress(GetModuleHandle(winspl), 'SetDefaultPrinterA');
    if @W2KSDP = nil then RaiseLastOSError;
    if not W2KSDP(PChar(Name)) then RaiseLastOSError;
  end
  else
  begin
    if not OpenPrinter(PChar(Name), H, nil) then RaiseLastOSError;
    try
      GetPrinter(H, 2, nil, 0, @Size);
      if GetLastError <> ERROR_INSUFFICIENT_BUFFER then RaiseLastOSError;
      GetMem(PI, Size);
      try
        if not GetPrinter(H, 2, PI, Size, @Dummy) then RaiseLastOSError;
        PI^.Attributes := PI^.Attributes or PRINTER_ATTRIBUTE_DEFAULT;
        if not SetPrinter(H, 2, PI, PRINTER_CONTROL_SET_STATUS) then RaiseLastOSError;
      finally
        FreeMem(PI);
      end;
    finally
      ClosePrinter(H);
    end;
  end;
end; //ChangeDefaultPrinter
ChangeDefaultPrinter函數 在D7下使用SetDefaultPrinterA,在Delphi2010以上版本使用SetDefaultPrinterW
procedure TDM.ChangeDefaultPrinter(const Name: string);
var
  Device: array[0..255] of Char;
  Driver: array[0..255] of char;
  Port: array[0..255] of char;
  s : array[0..255] of Char;
  hDeviceMode: THandle;
  I: Integer;
begin
  for I := 0 to Printer.Printers.Count - 1 do
    if Printer.Printers.Strings[I] = name then
    begin
      Printer.PrinterIndex := I;
      Break;
    end;
  Printer.GetPrinter (Device, Driver, Port, hDeviceMode);
  StrCopy (s, Device);
  StrCat (s, ',');
  StrCat (s, Driver);
  StrCat (s, ',');
  StrCat (s, Port);
  WriteProfileString ('windows', 'device', s);
  StrCopy (s, 'windows');
  SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s));
end;//這個函數也可以更改打印機,效果沒有上面的好


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄平县| 东阳市| 双桥区| 田东县| 喜德县| 三门峡市| 江都市| 西平县| 通州区| 枣强县| 皋兰县| 会东县| 房产| 南丰县| 桃园县| 宁阳县| 闻喜县| 东山县| 合肥市| 汉川市| 吉安市| 宜丰县| 武川县| 抚宁县| 股票| 旬邑县| 东源县| 大理市| 威海市| 密山市| 时尚| 梅州市| 宿松县| 阿克| 南丹县| 金寨县| 虎林市| 凌海市| 中江县| 台湾省| 莱芜市|