Agregar impresora a windows desde C#

05/12/2005 - 16:26 por Franklin Marcano | Informe spam
Saludos

Como podria agregar y eliminar una impresora a Windows XP, desde codigo C#.

Atentamente
Franklin Marcano
 

Leer las respuestas

#1 Braulio Diez
06/12/2005 - 10:39 | Informe spam
Hola,

Me parece que la única opción es usar las APIs de windows, tienes los
metodos:

AddPrinterDriver
AddPrinter

Aquí te van unos links, espero que te sean de ayuda

De Funciones de la API y .net (los dos ultimos definicion de AddPrinter y
AddPrinterDriver)
http://custom.programming-in.net/ar...nspool.drv
http://custom.programming-in.net/ar...AddPrinter
http://custom.programming-in.net/ar...nterDriver

Lo más parecido a un ejemplo que he encontrado es:

Una firma simple
internal class Win32{
[DllImport("Winspool")]
public static extern Boolean AddPrinterConnectionW(String name);



}

Una firma más complicada (Esto creo que es añadiendo añadiendo una con más
parametros):

[DllImport("winspool.drv",CharSet=CharSet.Auto)]
|| private static extern IntPtr AddPrinter(string myserver,
|| uint dwLevel, ref PRINTER_INFO_2 pi );
||
|| private void menuItem4_Click(object sender,
|| System.EventArgs e)
|| {
|| string mynull;
|| mynull = null;
|| IntPtr mystrptr = new IntPtr(0);
|| bool mysend;
|| IntPtr mysend2;
|| PRINTER_INFO_2 pi = new
|| PRINTER_INFO_2();
|| string myservername;
|| myservername = "blahblah"
||
|| pi.pServerName = "\\\\" + myservername ;
|| pi.pPrinterName = "\\\\" + myservername + "\\" + "CN-3-NCA" ;
|| pi.pShareName = "CN-3-NCA";
|| pi.pPortName = "123.123.123.27:print";
|| pi.pDriverName = "Cannon iR2200-3300 PCL6";
|| pi.pComment = "No Comment";
|| pi.pLocation = "3rd Floor North
|| Alcove Copy Center";
|| pi.pDevMode = mystrptr;
|| pi.pSepFile = "";
|| pi.pPrintProcessor = "WinPrint";
|| pi.pDatatype = "RAW";
|| pi.pParameters = "";
|| pi.pSecurityDescriptor = mystrptr;
|| //pi.Attributes = mystrptr;
|| //pi.Priority = mystrptr;
|| //pi.DefaultPriority = mystrptr;
|| //pi.StartTime = mystrptr;
|| //pi.UntilTime = mystrptr;
|| //pi.Status = mystrptr;
|| //pi.cJobs = mystrptr;
|| //pi.AveragePPM = mystrptr;
|| mysend2 = AddPrinter(mynull,2, ref
|| pi);
|| }
||
|| [StructLayout(LayoutKind.Sequential,
|| CharSet=CharSet.Auto)]
||
|| private class PRINTER_INFO_2
|| {
|| public string pServerName;
|| public string
|| pPrinterName;
|| public string pShareName;
|| public string pPortName;
|| public string pDriverName;
|| public string pComment;
|| public string pLocation;
|| public IntPtr pDevMode;
|| public string pSepFile;
|| public string
|| pPrintProcessor;
|| public string pDatatype;
|| public string pParameters;
|| public IntPtr
|| pSecurityDescriptor;
|| public uint Attributes;
|| public uint Priority;
|| public uint
|| DefaultPriority;
|| public uint StartTime;
|| public uint UntilTime;
|| public uint Status;
|| public uint cJobs;
|| public uint AveragePPM;
|| }

Buena suerte, Saludos
Braulio

///
/// Braulio Díez Colaborador DNM
///
/// http://www.dotnetmania.com
///




"Franklin Marcano" escribió:

Saludos

Como podria agregar y eliminar una impresora a Windows XP, desde codigo C#.

Atentamente
Franklin Marcano



Preguntas similares