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

Reply via email to