简单的工作室

一台电脑连接两台打印机,delphi控制默认打印机

时间:2014-05-21 21:11来源:未知 作者:admin 点击:
最近工作中碰到了个问题,哎,搞开发的 有时候确实很郁闷,客户现场的实际需要总是很复杂的,比如有台电脑连接了两台打印机, 一台是普通的打印word文档的打印机,一台确实打印条码的标签打印机TSC-244,当设置好系统自动打印机后,两个程序都不会自动智能 选择打印机,很是奇怪,虽然

   最近工作中碰到了个问题,哎,搞开发的 有时候确实很郁闷,客户现场的实际需要总是很复杂的,比如有台电脑连接了两台打印机,

一台是普通的打印word文档的打印机,一台确实打印条码的标签打印机TSC-244,当设置好系统自动打印机后,两个程序都不会自动智能

选择打印机,很是奇怪,虽然那个开发文档好像说是调用打印机名称,就可以自己调用TSC标签打印机的了,不会调用系统设置的默认打印机

但是我设置了那个条码打印机名称让程序调用,根本打印不出来,程序还死掉了,也许哪里没处理好,我今晚躺在床上突然想到,也许

在打印条码之前修改系统默认的打印机,然后打印完成就修改回来,也许这个能解决这个问题。明天拿去试试。哎,希望顺利.


delphi 设置系统默认打印机

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Inifiles,Printers;

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
{ tell printer to go to the default by setting
the PrinterIndex value to -1 }
Printer.PrinterIndex := -1;

{ make our combobox non-editable }
ComboBox1.Style := csDropDownList;

{ set our combobox items to the printer printers } 
ComboBox1.Items := Printer.Printers;

{ set combobox to view the default printer 
according to printer printerindex as set above } 
ComboBox1.ItemIndex := Printer.PrinterIndex;

end;

procedure TForm1.Button1Click(Sender: TObject);
var 
MyHandle : THandle; 
MyDevice, 
MyDriver, 
MyPort: array [0..255] of Char; 
begin 
{ set printer to the selected according to the 
combobox itemendex } 
Printer.PrinterIndex := ComboBox1.ItemIndex;

{ get our printer properties } 
Printer.GetPrinter(MyDevice, 
MyDriver, 
MyPort, 
MyHandle);

{ create string of exactly what WriteProfileString() 
wants to see by concat each of the above received 
character arrays } 
StrCat( MyDevice, ','); 
StrCat( MyDevice, MyDriver ); 
StrCat( MyDevice, ','); 
StrCat( MyDevice, MyPort );

{ copy our new default printer into our windows ini file 
to the [WINDOWS] section under DEVICE= } 
WriteProfileString('WINDOWS', 
'DEVICE', 
MyDevice );

{ tell all applications that the windows ini file has 
changed, this will cause them all to recheck default 
printer } 
SendMessage(HWND_BROADCAST,
WM_WININICHANGE, 
0, 
LongInt(pChar('windows'))); 
end;


end.

(责任编辑:简单的工作室)
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容