如何更改windows默认打印机的纸张大小,和横向打印

zsy_good 2003-08-20 03:04:30
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
result := E_Size;
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_LEGAL; {Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := Width {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := Height {SomeValueInTenthsOfAMillimeter};
{Set the bin to use}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
Printer.SetPrinter (Device,Driver,port,hDMode);
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;


这些函数全部有问题。
只在本程序有用。我把这些函数放到Dll,里面在Exe里面调用就有问题。
如果在Dll里面直接打印,就可成功,所以我想直接更改默认打印机的属性。
印象所有程序都可以。
...全文
583 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsy_good 2003-08-22
  • 打赏
  • 举报
回复
没有人知道这个问题怎么解决吗?
zsy_good 2003-08-21
  • 打赏
  • 举报
回复
UP
zsy_good 2003-08-20
  • 打赏
  • 举报
回复
不行,我测试了一天了。
在上面那个函数在Dll里面,在Dll里面打印就可以。
在Dll里面设置,exe里面打印,就和没有设置一样,我的Dll是给别人用的。
所有一定要写Dll
wyb716 2003-08-20
  • 打赏
  • 举报
回复
呵呵,老兄,你的做法应该可行吧。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧