Foros del Web » Programación para mayores de 30 ;) » .NET »

Ayuda con PrintDocument

Estas en el tema de Ayuda con PrintDocument en el foro de .NET en Foros del Web. Hola amigos, necesito su ayuda o sus consejos para saber porqué al recuperar la información de la lista de impresoras intaladas en el servidor, solo ...
  #1 (permalink)  
Antiguo 29/04/2005, 12:14
Avatar de jeancarle  
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 20 años, 5 meses
Puntos: 0
Ayuda con PrintDocument

Hola amigos, necesito su ayuda o sus consejos para saber porqué al recuperar la información de la lista de impresoras intaladas en el servidor, solo me regresa una sola y tengo instaladas varias.

Les cuento como está mi proyecto.

Hice un proyecto en VS .NET de tipo DLL llamado "PrintDLL" con interacción con COM pues deseo llamar al componente dll desde ASP 3.0 y llenar un combo box con la lista de las impresoras.

En el coodigo del componente hice una clase llamada clsPrinDoc, dentro del proyecto con el siguiente método:
Código:
Private pd As PrintDocument
Private ps As PageSettings
Public Function GetPrinters() As String
        Dim lista As String
        Dim i As Int16
        
        For i = 0 To pd.PrinterSettings.InstalledPrinters.Count - 1
            lista = lista & pd.PrinterSettings.InstalledPrinters.Item(i).ToString & ","
        Next

        Return lista

End Function
Aqui está la llamada al componente desde ASP 3.0
Código:
<%
dim lista
dim prn

set prn = server.CreateObject("PrintDLL.clsPrintDoc")
lista = prn.getPrinters()
response.Write("<h1>Lista de Impresoras en el Servidor</h1>")
response.Write("<input type='text' value='"& lista & "'>")

prn.Dispose()

%>
Lo que intento es recuperar una lista de las impresoras instaladas (separada por comas pues no puedo regresar un arreglo no se porque) y solo me regresa la primera impresora y en el servidor se encuentran varias instaladas.

También pensé que la que me regresaba era la impresora predeterminada pero ya lo revisé no es así.

Que puede ser, o donde puedo estar mal. Hice una prueba con un proyecto .NET tipo Aplicación para windows en VB.NET y hago la llamada al componente y si me regresa la lista completa.

Gracias por su ayuda
__________________
Todo es mas sencillo de lo que parece... :-)

Última edición por jeancarle; 29/04/2005 a las 12:27
  #2 (permalink)  
Antiguo 29/04/2005, 15:48
Avatar de jeancarle  
Fecha de Ingreso: junio-2004
Mensajes: 37
Antigüedad: 20 años, 5 meses
Puntos: 0
Ya lo solucione

Gracias de todos modos, ya encontre la solucion. Para todos los que tienen este problema, se soluciona cambiando el usuario de acceso anónimo IUSR_COMPUTERNAME del directorio virtual de la aplicación por otro que tenga permisos de administración, puede ser el usuario de inicio de sesión de windows.

Por cuestiones de seguridad, no muestra las impresoras cuando el usuario es el de acceso anónimo.

Y tengo otra duda, como puedo regresar un arreglo desde un método de la clase al cliente ASP sin que me marque "NO COINCIDEN LOS TIPOS"

En el ejemplo anterior, quisiera pasar el listado de impresoras disponibles en un arreglo hacia ASP. Entonces el codigo del componente seria así:
Código:
Private pd As PrintDocument
Public Function GetPrinters() As String()
        Dim arr() As String
        Dim i As Int16

        Redim arr(0)
        For i = 0 To pd.PrinterSettings.InstalledPrinters.Count - 1
            Redim Preserve arr(i)
            arr(i) = pd.PrinterSettings.InstalledPrinters(i).ToString
        Next

        Return arr

End Function
Y el código de la llamada al componente se vería asi:
Código:
<%
dim arr()
dim prn
dim i 

set prn = server.CreateObject("PrintDLL.clsPrintDoc")
arr = prn.getPrinters()
response.Write("<h1>Lista de Impresoras en el Servidor</h1>")
for i =0 to ubound(arr)
    response.write (cstr(arr(i)))
next

prn.Dispose()

set prn = nothing
%>
El codigo anterior me marca el error de "NO COINCIDEN LOS TIPOS" en la linea que está en negritas.

Alguien sabe como puedo pasar el arreglo, o en donde estoy mal?
Gracias a todos
__________________
Todo es mas sencillo de lo que parece... :-)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:29.