【发布时间】:2013-06-05 12:12:38
【问题描述】:
我的以下代码在我的 Win 7 机器上运行良好 - 即列出可用的打印机并将选定的打印机更改为默认打印机 - 将“勾选”移动到正确的打印机。但是,当我在终端服务器上运行它时,它列出的打印机没问题,但是当我选择打印机时,它会完全删除默认打印机(没有对任何打印机打勾) - 有什么想法吗?
uses Printers;
function GetDefaultPrinter: string;
var
ResStr: array[0..255] of Char;
begin
GetProfileString('Windows', 'device', '', ResStr, 255);
Result := StrPas(ResStr);
end;
procedure SetDefaultPrinter(NewDefPrinter: string);
var
ResStr: array[0..255] of Char;
begin
StrPCopy(ResStr, NewdefPrinter);
WriteProfileString('windows', 'device', ResStr);
StrCopy(ResStr, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr));
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
//Fill the combobox with all available printers
Combobox1.Items.Clear;
Combobox1.Items.AddStrings(Printer.Printers);
// Get the Default Printer:
label1.Caption := Format('Default Printer: %s',[GetDefaultPrinter]);
end;
procedure TfrmMain.Button2Click(Sender: TObject);
begin
//Set the selected printer in the combobox as default printer
if Combobox1.Text <> '' then
SetDefaultPrinter(Combobox1.Text)
else ShowMessage('Choose a Printer first !');
end;
【问题讨论】:
-
你在说什么“滴答”?我在这段代码中看不到对复选框的操作。
-
@RobKennedy:他的意思是打印机图标上的勾号,表示默认打印机...
-
你看到我的回答了吗?