¿Cómo puedo imprimir en visual basic ...?

Respuesta de
a
Usuario
Hola.
Estoy haciendo un programita para generar archivos *.prn que se guardan
en una ruta y después los envío a imprimir, la forma en que trato de enviar imprimir dichos archivos es la siguiente: (todo seguido.)

Filecopy
"C:\Archivo.prn", "\\Server\HPLJ4000"

Pero me sale error. Estoy intendo mandarlo imprimir igual que si estuviera en MS-DOS, pero desde Visual Basic 6.0, ¿mi sintaxis esta mal? ¿O cómo puedo hacer esto?

Gracias. :0)
Avatar
Experto
Hola

Prueba ha abrir el puerto de la impresora como si fuera un archivo y le escribes los datos del archivo *.prn, por ejemplo yo para probar he creado un archivo prn y luego he utilizado el siguiente código:

Private Sub Command1_Click()
Dim Datos As String
Dim intArchivo As Integer
Dim strArchivo As String
intArchivo = FreeFile
strArchivo = "C:\Windows\escritorio\prueba.prn"
Datos = String(FileLen(strArchivo), 0)
Open strArchivo For Binary As intArchivo
Get intArchivo, , Datos
Close intArchivo
intArchivo = FreeFile
Open "LPT1" For Binary As intArchivo
Put intArchivo, , Datos
Close intArchivo
End Sub

Tu deberas poner el puerto de red de la impresora en vez de LPT1
Prueba con esto y si te funciona cuéntame a mi me funciono a la primera (con la ayuda del Churrero(un colega en C++))


Saludos y hasta la próxima
Usuario
Hola.
Gracias por la solución. Lo siguiente lo encontré en Internet y tiene la misma función (para ser sincera, no lo comprendí muy bien), tu ayuda funciono perfecta, y sólo cambie LPT1 como lo sugeriste.

X As Integer

Open strArchivoPRN For Binary As #1
Open "LPT1" For Binary As #2

'calculate size of file and amount left over
numLoops = LOF(1) \ MaxSize
LeftOver = LOF(1) Mod MaxSize

'initialize variables and loop
Chunk = Space$(MaxSize)
For X = 1 To numLoops
Get #1, , Chunk
Put #2, , Chunk
Next

'grab what's leftover
Chunk = Space$(LeftOver)
Get #1, , Chunk
Put #2, , Chunk

Close #2: Close #1
Chunk = "": numLoops = 0: LeftOver = 0:

Voy a estudiar el código que me enviaste y
Gracias de nueva cuenta. :o)