如何控制紙張小大(PrinterSetupDialog) |
尚未結案
|
littlecheng
一般會員 發表:9 回覆:6 積分:3 註冊:2008-07-05 發送簡訊給我 |
|
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
Hi這是以 Delphi 寫的, 可以設定紙張.
Begin _SetPrintDefault('Letter') End; ========================================================= uses WinSpool2; procedure _SetPrintDefault(_sFormName:string); var _PPrinterInfo2 : PPrinterInfo2; pPrinterName : PChar; sPrinterName : String; hPrinter : THandle; cbNeeded : DWORD; dwBufferSize : DWORD; begin if not GetDefaultPrinter(nil, dwBufferSize) then begin case GetLastError of // 即使呼叫成功也會有此一錯誤(Buffer 不足), 我只是要取得 Buffer 大小所以忽略此錯誤訊息 ERROR_INSUFFICIENT_BUFFER : ; ERROR_FILE_NOT_FOUND : raise Exception.Create('無預設印表機.'); else raise Exception.Create('GetDefaultPrinter Error, Code : ' IntToStr(GetLastError)); end; end; pPrinterName := nil; try GetMem(pPrinterName, dwBufferSize); GetDefaultPrinter(pPrinterName, dwBufferSize); sPrinterName := StrPas(pPrinterName); // <-- 預設印表機名稱 finally if pPrinterName <> nil then begin FreeMem(pPrinterName, dwBufferSize); pPrinterName := nil; end; end; // 設定印表機的紙張大小名稱 if not WinSpool.OpenPrinter(PChar(sPrinterName), hPrinter, nil) then raise Exception.Create('OpenPrinter Error, Code : ' IntToStr(GetLastError)); WinSpool.GetPrinter(hPrinter, 2, nil, 0, @cbNeeded); _PPrinterInfo2 := nil; try GetMem(_PPrinterInfo2, cbNeeded); WinSpool.GetPrinter(hPrinter, 2, _PPrinterInfo2, cbNeeded, @cbNeeded); with _PPrinterInfo2^.pDevMode^ do begin StrLCopy(dmFormName, PChar(_sFormName), CCHFORMNAME - 1); //dmPaperSize := PaperSizeID(sPrinterName, sFormName); dmFields := DM_FORMNAME; // DM_PAPERSIZE end; // 不知為何 SetPrinter 一定會有錯誤 -> GetLastError = ERROR_ACCESS_DENIED // (即使以 Administrator 身份執行), 所以先把 raise 註解掉, Who could explain it for me ? Thanks. if not WinSpool.SetPrinter(hPrinter, 2, _PPrinterInfo2, 0) then ; //raise Exception.Create('SetPrinter Error, Code : ' IntToStr(GetLastError)); finally if _PPrinterInfo2 <> nil then FreeMem(_PPrinterInfo2); _PPrinterInfo2 := nil; end; end;
------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2008-10-02 14:57:32, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |