Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[278] 기본 프린터 변경하기
civilian [civilian] 5666 읽음    2010-09-01 13:57
uses
  WinSpool, Printers;

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 WinSpool.SetPrinter(H, 2, PI, PRINTER_CONTROL_SET_STATUS) then
          RaiseLastOSError;
      finally
        FreeMem(PI);
      end;
    finally
      ClosePrinter(H);
    end;
  end;
end;

+ -

관련 글 리스트
278 기본 프린터 변경하기 civilian 5666 2010/09/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.