Discussion:
Standarddrucker während der Laufzeit festlegen
(zu alt für eine Antwort)
Frank Massel
2008-01-18 09:21:00 UTC
Permalink
Ein freundliches Hallo an die Newsgroup,

ich bitte Euch um Unterstützung bei der Lösung folgenden Problems:

Wir verwenden MS Visual Studio 2005 (Framework 2.0) und programmieren fast
ausschließlich in C#.

Gibt es im Framework eine Methode den WINDOWS-Standarddrucker (dauerhaft)
festzulegen (WINDOWS XP SP 2)?

Danke im voraus und viele Grüße

Frank Massel
Kerem Gümrükcü
2008-01-18 10:05:31 UTC
Permalink
Hallo Frank,
Post by Frank Massel
Gibt es im Framework eine Methode den WINDOWS-Standarddrucker (dauerhaft)
festzulegen (WINDOWS XP SP 2)?
Das geht mit Pinvoke (ziehe ich persönlich vor) oder mit
WMI.(Win32_Printer::SetDefaultPrinter)

//pinvoke layer c#
[DllImport("winspool.drv", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool SetDefaultPrinter(string Name);

[SetDefaultPrinter]
http://msdn2.microsoft.com/en-us/library/ms535468(VS.85).aspx


Geht mit 2000/XP/Vista (getestet!)

Grüße

Kerem
--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."
Frank Massel
2008-01-18 10:38:00 UTC
Permalink
Hallo Kerem,

herzlichen Dank für die prompte Hilfe: Funktioniert, Problem gelöst !

Viele Grüße

Frank
Kerem Gümrükcü
2008-01-18 10:40:39 UTC
Permalink
Post by Frank Massel
herzlichen Dank für die prompte Hilfe: Funktioniert, Problem gelöst !
War ja auch Sinn der Aktion *g*

Grüße

K.
--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."
Carl Schaffert
2008-01-18 13:58:51 UTC
Permalink
Post by Frank Massel
Hallo Kerem,
herzlichen Dank für die prompte Hilfe: Funktioniert, Problem gelöst !
Viele Grüße
Frank
Es gibt ein tolles Tool "WMI Code Creator" um WMI-Code (C# VB.NET und VB
Script) zu generieren und dann würde es so gehen:

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
public class CallWMIMethod
{
public static void Main()
{
try
{
ManagementObject classInstance =
new ManagementObject("root\\CIMV2",
"Win32_Printer.DeviceID='Sample Printer'",
null);

// no method in-parameters to define


// Execute the method and obtain the return values.
ManagementBaseObject outParams =
classInstance.InvokeMethod("SetDefaultPrinter", null,
null);

// List outParams
Console.WriteLine("Out parameters:");
Console.WriteLine("ReturnValue: " +
outParams["ReturnValue"]);
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to execute
the WMI method: " + err.Message);
}
}
}
}


Gruß Carl
Frank Dzaebel
2008-01-19 11:08:52 UTC
Permalink
Hallo Carl,
Post by Carl Schaffert
Es gibt ein tolles Tool "WMI Code Creator" um WMI-Code (C# VB.NET und VB
ne, dann würde es *deutlich* einfacher gehen!
Man braucht aber so ein Tool gar nicht, denn
Visual Studio 2005 kann das ja schon von
Hause aus. Nur irgendwie oft nicht bekannt:

Ansicht/Server Explorer/<DeinRechner>
/ Verwaltungsklassen/Drucker (ggf. Win32_Printer hinzufügen)
/ rechte Maus:verwaltete Klasse generieren, FERTIG

Der Code ist nun nach aussen managed und sieht z.B. so aus:

new Printer(PrinterSettings.InstalledPrinters[0]).SetDefaultPrinter();
// ! :-) Die Klasse ist übrigens [ggf.] deutsch dokumentiert.

Abfrage des Standarddruckers als Möglichkeit auch:
MessageBox.Show("Standarddrucker: " + new PrinterSettings().PrinterName);


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Carl Schaffert
2008-01-19 18:57:41 UTC
Permalink
Post by Frank Dzaebel
Hallo Carl,
Post by Carl Schaffert
Es gibt ein tolles Tool "WMI Code Creator" um WMI-Code (C# VB.NET und VB
ne, dann würde es *deutlich* einfacher gehen!
Man braucht aber so ein Tool gar nicht, denn
Visual Studio 2005 kann das ja schon von
Ansicht/Server Explorer/<DeinRechner>
/ Verwaltungsklassen/Drucker (ggf. Win32_Printer hinzufügen)
/ rechte Maus:verwaltete Klasse generieren, FERTIG
ja jaaaa.... klar, jetzt wo du's erwähnst... ich benutze das Teil viiiieeel
zu wenig, aber du hast Recht! Manchmal sieht man vor lauter Bäumen den Wald
nicht mehr *g*

Gruß Carl

Herfried K. Wagner [MVP]
2008-01-18 13:17:39 UTC
Permalink
Post by Frank Massel
Gibt es im Framework eine Methode den WINDOWS-Standarddrucker (dauerhaft)
festzulegen (WINDOWS XP SP 2)?
Nein. Aber es gibt mehrere Lösungen: PInvoke, WMI, WSH:

Ermitteln und Setzen des Systemstandarddruckers
<URL:http://dotnet.mvps.org/dotnet/faqs/?id=defaultprinter&lang=de>
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Loading...