As far as I've been able to tell (I haven't tried to reflect the method) GetOutputPort simply returns the name of the printer.
Microsoft has put a lot of justifiable effort into abstracting printers to make printing in Windows very generalized. A trade-off to such a level of abstraction is losing some of the details. I think it's near impossible to generally limit printing to printers based on some hardware-level feature. If I encountered "Please use a different printer", I'd quickly move on to a different product... On Tue, 23 Jan 2007 06:40:21 +0200, Brady Kelly <[EMAIL PROTECTED]> wrote: >If the property being private is your issue, can't you use reflection to get >its value? > >> -----Original Message----- >> From: Discussion of advanced .NET topics. [mailto:ADVANCED- >> [EMAIL PROTECTED] On Behalf Of MIke Collins >> Sent: 22 January 2007 21:31 PM >> To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM >> Subject: [ADVANCED-DOTNET] PrinterSettings.OutputPort in C# >> >> I need to find a way to gain access to the name of the printer port when >> trying to print. >> >> What I am trying to do is make sure that the user does not print to an >> electronic format. For example PDF, Microsoft Office Image Writer, >> PaperPort, etc. I only want the user to be able to print directly to a >> physical printer. >> >> It is possible for the user to change the name of the printer. For >> example >> the default name for the Adobe PDF printer is "Adobe PDF" but this name >> can >> be changed by the user to something like "Adobe P.D.F." This would >> prevent >> me from being able to halt printing based on the printer name. >> >> BUT!! The PrinterSettings.OutputPort (Which is not public) can not be >> changed as easily. I would like to be able to get that value so I can >> check >> that to make sure that the user is not printing to PDF, etc. >> >> Does anyone have any clues?? >> >> Thanks, >> Mike >> >> Here is a small code snipet: >> PrintDocument pd = new PrintDocument(); >> >> while( true ) >> { >> PrintDialog dlg = new PrintDialog(); >> dlg.PrinterSettings = pd.PrinterSettings; >> dlg.AllowCurrentPage = false; >> dlg.AllowSelection = false; >> dlg.AllowSomePages = false; >> dlg.AllowPrintToFile = false; >> dlg.PrinterSettings.Copies = 1; >> dlg.PrinterSettings.DefaultPageSettings.Landscape = >> true; >> dlg.UseEXDialog = false; >> >> if( dlg.ShowDialog() == DialogResult.OK ) >> { >> // Here we check to see if the user is >> attempting to >> print >> // to a printer that we won't accept. (PDF, >> etc.) >> string temp = >> pd.PrinterSettings.PrinterName.ToLower(); >> if( temp.IndexOf( "pdf" ) > -1 || >> temp.IndexOf( "image writer" ) > -1 || >> temp.IndexOf( "paperport" ) > -1 ) >> { >> MessageBox.Show( "Invalid printer type. >> Please select a different printer." ); >> } =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com