怎么编程用指定打印机打印,但是不把它设为默认打印机 . 怎么编程用指定打印机打印,但是不把它设为默认打印机 .Rave中又怎么实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //给你一个参考,打印结束后,有变为默认的打印机procedure TForm1.Button2Click(Sender: TObject);var PrnHd : THandle; PrnInfo : pPrinterInfol; PcbNeeded: DWORD; PDevModeBytes : DWORD; DevMode : PDeviceMode; PrnHdc : HDC; Docinfo :PDocInfo;begin OpenPrinter('Epson LQ-1600k', PrnHd,nil); //获得打印机句柄PrnHd GetMem(Prninfo,1024); Getprinter(PrnHd,1,PrnInfo,1024,@pcbNeeded); PDevModeBytes := DocumentProperties(Handle,PrnHd,prninfo^.pDescription,DevMode^,DevMode^,0); {获取DevMode结构所需的字节数} GetMem(DevMode,PDevModeBytes); //给结构DevMode分配空间 DocumentProperties(handle,PrnHd, PrnInfo^.pDescription,DevMode^,DevMode^,DM_OUT_BUFFER); //获取打印机的DevModej结构 with DevMode^ do begin dmPaperSize := DMPAPER_A4; //将纸张设置成A4 dmFields := dmFields or DM_PAPERSIZE; END; DocumentProperties( Handle,PrnHd, prnInfo^.pDescription,DevMode^,DM_OUT_BUFFER or DM_IN_BUFFER); //修改Devmode结构 {一下代码是为了测试打印机是否是按A4纸张大小来打印} PrnHdc := CreateDC( nil,'Epson LQ-l600K',nil,DevMode); GetMem(DocInfo ,100); with DocInfo^ do begin cbSize := sizeof(DocInfo); lpszDocName := nil; lpseOutput := nil; lpszDatatype := nil; fwType := DI_APPBANDING; end; StartDoc(PrnHdc,DocInfo^); StartPage(penhdc); Textout( prnHdc, 10,10,' Hello My Friend', 17); endPage(PrnHdc); endDoc(prnHdc); deletedc(Prnhdc); FreeMem(Docinfo); freeMem(prninfo); FreeMem(devMode); end;end; fastreport 問題啊。救急啊。要交工程,好可憐,有哪位會啊。幫幫忙啊 一个简单的关于插入数据到数据库的问题 招聘Delphi程序员!(北京) 有关ClientDataSet和XML的一个小问题? BlueTrees:接分!顺便问一下Delphi另两个问题!(关于MaskEdit) 怎么设置一个属性??? 急:用什么方法使自己的程序Active? 当制作安装程序时遇到一些问题???? 这个数据库问题急坏我了!!! 如何查找子窗口 安装raize出现的问题 delphi有没有像c语言中的#define的功能的指令?在线等待
procedure TForm1.Button2Click(Sender: TObject);
var
PrnHd : THandle;
PrnInfo : pPrinterInfol;
PcbNeeded: DWORD;
PDevModeBytes : DWORD;
DevMode : PDeviceMode;
PrnHdc : HDC;
Docinfo :PDocInfo;
begin
OpenPrinter('Epson LQ-1600k', PrnHd,nil);
//获得打印机句柄PrnHd
GetMem(Prninfo,1024);
Getprinter(PrnHd,1,PrnInfo,1024,@pcbNeeded);
PDevModeBytes := DocumentProperties(Handle,PrnHd,prninfo^.pDescription,DevMode^,DevMode^,0);
{获取DevMode结构所需的字节数}
GetMem(DevMode,PDevModeBytes);
//给结构DevMode分配空间
DocumentProperties(handle,PrnHd, PrnInfo^.pDescription,DevMode^,DevMode^,DM_OUT_BUFFER);
//获取打印机的DevModej结构
with DevMode^ do begin
dmPaperSize := DMPAPER_A4;
//将纸张设置成A4
dmFields := dmFields or DM_PAPERSIZE;
END;
DocumentProperties( Handle,PrnHd, prnInfo^.pDescription,DevMode^,DM_OUT_BUFFER or DM_IN_BUFFER);
//修改Devmode结构
{一下代码是为了测试打印机是否是按A4纸张大小来打印}
PrnHdc := CreateDC( nil,'Epson LQ-l600K',nil,DevMode);
GetMem(DocInfo ,100);
with DocInfo^ do
begin
cbSize := sizeof(DocInfo);
lpszDocName := nil;
lpseOutput := nil;
lpszDatatype := nil;
fwType := DI_APPBANDING;
end;
StartDoc(PrnHdc,DocInfo^);
StartPage(penhdc);
Textout( prnHdc, 10,10,' Hello My Friend', 17);
endPage(PrnHdc);
endDoc(prnHdc);
deletedc(Prnhdc);
FreeMem(Docinfo);
freeMem(prninfo);
FreeMem(devMode);
end;
end;