是否有可能仅针对一个“作业”更改Windows默认打印机?没有Windows XP / Vista / 7下的管理员权限吗?
我想做什么:
如果没有管理权限且没有“消息框”或UI对话框,它将会正常工作。
应该在VBA下使用或(在C#/ .NET
下勉强)答案 0 :(得分:2)
在C#中,您可以打印到计算机上安装的任何打印机。您无需更改默认打印机。我不确切知道它在VBA中是否相同,但它适用于C#。
修改强>:
由于您的评论,我添加了一些示例,希望能够引导您前进:
public void DoPrint()
{
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
var printDocument = new PrintDocument
{
DefaultPageSettings = { PrinterSettings = printDialog.PrinterSettings }
};
printDocument.PrintPage += OnPrintPage;
}
}
private void OnPrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString("Hello");
}
这会将“Hello”打印到您在对话框中选择的打印机。
答案 1 :(得分:1)
来自Access帮助:
以下示例使Printers集合中的第一台打印机成为系统的默认打印机,然后报告其名称,驱动程序信息和端口信息。
Dim prtDefault As Printer
dim strOldDefault as string
strOldDefault = Application.printer
Set Application.Printer = Application.Printers(0)
Set prtDefault = Application.Printer
With prtDefault
MsgBox "Device name: " & .DeviceName & vbCr _
& "Driver name: " & .DriverName & vbCr _
& "Port: " & .Port
End With
编辑:您可以在更改之前轻松保存默认打印机,并在打印后再将其重新设置。此外,由于更改默认打印机是一个缓慢的过程,我建议您在更改之前检查默认打印机是什么,以避免不必要的更改。
保存/恢复:
Dim strOldPrinter As String
'save old printer'
strOldPrinter = Application.Printer.DeviceName
'....do stuff'
'restore old Printer'
Set Application.Printer = Application.Printers(strOldPrinter)
答案 2 :(得分:-1)
因为你没有具体说明你的工作"实际上,我会在这里提供一个更简单的答案。
作为编程方法的替代方法,如果您专门尝试通过某台打印机打印特定的报告,则MS Access中有内置功能可以实现此目的。
只需选择报告的“打印预览”视图,然后选择:
页面设置 - >页面标签 - >使用特定打印机 - >然后浏览并选择!
这最终满足了我的需求,所以希望它也能为你提供帮助。