Discussion: Using PrintDialog() in Console Application

C# .NET .NET (C# and Visual Basic) Using PrintDialog() in Console Application

Activities (3)
Avatar
Hares
Member
Avatar
Hares:13. July 20:45

I'm attempting to create a console app executable for my company that batch prints folders. The code loops through a folder, and outputs images. I'd like to have a printdialog option available, to adjust settings easily. I want one print dialog to adjust settings once, then to loop through all the files using those settings. Is there a way for me to wrap my code below under a printDialog() event? I can try form later, but for now i want to try a printdialog() to run once, for all the files to be printed in a directory. Could anyone help me out with this?

Module Module1


    Sub Main()
          Dim files() as String = IO.Directory.GetFiles("\\sv-fs03\users$\hfakoor\Desktop\Driven\dwg printer")
    For Each file In files

      Try

                 Dim psi As New ProcessStartInfo(file)
        psi.Verb = "print"
        psi.UseShellExecute = True
        psi.WindowStyle = ProcessWindowStyle.Hidden
        psi.CreateNoWindow = True
        Process.Start(psi).WaitForExit(5000)
      Catch ex As Exception
        Console.WriteLine(File)
      End Try
Next file
        Console.WriteLine("Done.")
Console.ReadKey
    End Sub

End Module
 
Reply 13. July 20:45
Avatar
David Capka
ICT.social team
Avatar
Replies to Hares
David Capka:14. July 6:36

What data do you need to pass from the printer dialog?

As you say, I'd really rather try forms and the PrintDialog class https://msdn.microsoft.com/…vs.110).aspx?….

You can find your problem solved here: https://social.msdn.microsoft.com/…ific-printer?…

Usage of the PrintDialog class:

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim psi As New ProcessStartInfo

        psi.UseShellExecute = True

        psi.Verb = "print"

        psi.WindowStyle = ProcessWindowStyle.Hidden

psi.Arguments = PrintDialog1.PrinterSettings.PrinterName.ToString()' Here specify printer name

        psi.FileName = "C:\MyFile.doc" ' Here specify a document to be printed

        Process.Start(psi)

    End Sub

End Class
Up Reply 14. July 6:36
You can walk through a storm and feel the wind but you know you are not the wind.
Avatar
Hares
Member
Avatar
Replies to David Capka
Hares:14. July 22:38

I want all the contents in my folder (which may or may not be read into a stream) to get printed with one print setting for all of them. Hence, I want to pass the contents of the folder to a printdialog().

Worst case scenario I can print it to the file system, but this limits how the files will be outputted.

I can get everything read into a stream(if needed) etc, my issue has been wrapping my set of files/loop inside one instance of a printdialog()

 
Up Reply 14. July 22:38
Avatar
David Capka
ICT.social team
Avatar
Replies to Hares
David Capka:15. July 9:21

Yes, I understand. But the way you're doing it is just wrong IMHO. Just invest some of your time and learn how to do forms. Printing is then quite easy. There are PrintDialog and PrintDocument classes for that.

Up Reply 15. July 9:21
You can walk through a storm and feel the wind but you know you are not the wind.
To maintain the quality of discussion, we only allow registered members to comment. Sign in. If you're new, Sign up, it's free.

4 messages from 4 displayed.