Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Printing from a VB.NET console application

Posted on 2009-05-14
10
Medium Priority
?
1,538 Views
Last Modified: 2012-05-07
Can anybody tell me how to open a window, given a URL, and then print the contents of that window to the default printer from a VB.NET console application?  I have been able to open, edit and print a word document and I have also been able to open a window and display a URL, but I can't figure out how to print the contents of that window once I get it opened.  Perhaps I am using the wrong method for opening the window and supplying the URL.  Any help would be greatly appreciated.  THanks.
0
Comment
Question by:LLCurtis
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 5
10 Comments
 
LVL 83

Accepted Solution

by:
CodeCruiser earned 2000 total points
ID: 24385226
What window are you opening? IE? How are you supplying the URL? You could possible use SendKeys to first send the CTRL + P and then {Enter}.
0
 

Author Comment

by:LLCurtis
ID: 24388053
For complete lack of knowledge, I used the following command because it worked . . . in that it opened the window and I can see the page that I want to print (the Loandata array contains the URL).  I can subsequently choose File/Print from the IE menu manually and get the output to the printer that I desire.  I am sure that there are other ways to open the window and display the URL.  Perhaps one or more of these would be more conducive to subsequent printing.

System.Diagnostics.Process.Start("IExplore.exe", LoanData(i, 10))
0
 
LVL 83

Assisted Solution

by:CodeCruiser
CodeCruiser earned 2000 total points
ID: 24390295
After executing this statement, you could insert some delay waiting for Internet Explorer to load (its damn slow). Use this statement to pause the current thread
System.Threading.Thread.Sleep(2000)
 
Then following command would bring up the print dialog (given that IE has the focus)
SendKeys.Send("^p")

Then
SendKeys.Send("{Enter}")
would have the effect of pressing the ok button on print dialog.
0
Linux Academy Android App Now Supports Chromecast

We have some fantastic news for our Android fans. We’re so excited to announce that the Linux Academy Android app is now available with Chromecast support. That’s right – simply download the latest update of the Linux Academy App and start casting your favorite course videos!

 

Author Comment

by:LLCurtis
ID: 24394424
I think you may be on the right track.  The timing is a pain, but I'm not sure that it is a big concern here since the documents that I will be printing will take perhaps 30 seconds to come off the printer anyway so if the printing process is slow it should be no big deal.  The issue I'm having now, however, is that Sendkeys requires an object and I don't know how to initialize an object for it to use.  If I just define an object and use that, I get the standard "Object variable or With block variable not set" error.  Also, reading about the Sendkeys.Send method, I see it is part of the System.Windows.Form namespace.  Will that be a problem since this application is running from a console application rather that a Windows application?  If so, I may be able to simply convert it to a Windows application and place the code into the Open_Form event.  THanks in advance for your continued efforts to solve this problem for me.
0
 
LVL 83

Assisted Solution

by:CodeCruiser
CodeCruiser earned 2000 total points
ID: 24394499
>The issue I'm having now, however, is that Sendkeys requires an object and I don't know how to initialize an object for it to use.

I do not understand what you mean. The SendKeys.Send is a shared method which means you could access it without creating any object.
0
 

Author Comment

by:LLCurtis
ID: 24394912
Is that true even in a console application because if I remove an object from in front of it (e.g. objIE.SendKeys.Send("^p")), then I get a compile error "name Sendkeys is not declared".
0
 
LVL 83

Assisted Solution

by:CodeCruiser
CodeCruiser earned 2000 total points
ID: 24394953
Being a console application is the difference i think. In WinForms, it could be used without object. But using the object is a good point because the keys would be sent to that object i think. Try this
System.Windows.Forms.SendKeys.Send("")
0
 

Author Comment

by:LLCurtis
ID: 24395326
Well, again I think you/we are getting closer.  This time it gave an error saying that Sendkeys could not run inside this application because the application is not handling Windows messages.  It suggested that I either change the application to handle messages or use SendWait method instead of Send.  I chose the latter (since THAT I knew how to do) and it ran without erors . . . however, nothing came out of the printer.  I decided to set a breakpoint on the "send enter key" line and when I did that, I could see the print dialog box come up (perhaps I need to put another SLEEP even after the "^p"?), but when I single-stepped the "press ENTER" line it did not go away nor did it print.  When I pressed the ENTER key on the keyboard (after giving that window focus), it DID print.  Could there be something wrong with my "press ENTER" line?  I looked it up on MSDN and I think I have it coded exactly as they did there.

                System.Windows.Forms.SendKeys.SendWait("^p")
                System.Windows.Forms.SendKeys.SendWait("{ENTER}")
0
 
LVL 83

Assisted Solution

by:CodeCruiser
CodeCruiser earned 2000 total points
ID: 24395495
I think you should make the thread sleep for some time after send the ^p command because IE takes some time to show the print dialog.
0
 

Author Closing Comment

by:LLCurtis
ID: 31581414
With all due respect, it "slept" quite a while when I was sitting at the breakpoint so I didn't think that timing was the issue in this case.  That having been said, I placed a loooong sleep between the two commands anywas just to verify my thinking . . .  and it worked!  I guess we're not supposed to be able to explain EVERYTHING.  THanks for all of your help!
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For most people, the WrapPanel seems like a magic when they switch from WinForms to WPF. Most of us will think that the code that is used to write a control like that would be difficult. However, most of the work is done by the WPF engine, and the W…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question