Home Devices

Citrix and Printer Names

edited July 2008 in Devices
This is similar to the post by Louis Beck on 1/13/2007.

Under Citrix, the session ID is appended to the printer name. The user can
then see (loop through PrinterNames) all printers for all sessions that have
been created.

EX: HP1 is the printer

PrinterNames will show
HP1 Session1
HP1 Session2
HP1 Session 3
etc.

The reality is that the user really only has acess to one of these printers.
Is there a way to determine when looping through Printer Names which ones
are avaiable to the user, and which ones are not?

Thanks

Comments

  • edited July 2008
    Citrix issues tend to be related to configuring Citrix itself. We do not
    experience with Citrix here, but have customers that use it successfully.

    RB uses standard Windows API calls to enumerate the printers available to
    the windows user account under which the application is running. Perhaps
    with Citrix you need to configure the printer differently or need to
    configure the user accounts differently.



    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited July 2008
    Nard

    I am trying to work around the issue in code. While the Windows API
    provides a list of printers, not all are avaiable to the user. When they go
    to print to one of those devices, they get a message 'Screen is not a
    printer device', which leads me to believe that somewhere in RB you are able
    to capture whether the printer is 'real' or not. If I could test which
    printers are 'real' for the user, I'd be able to work around the problem.

    Thanks

    Joe

  • edited July 2008

    I would try to solve this by configuring Citrix and/or security/user
    accounts such that the correct printers are shown to each users. I do not
    know Citrix, but for Windows you can configure groups/user accounts etc and
    you can install printer drivers for specific accounts and then share them,
    configure security for each printer etc.

    I think testing every printer to see which are valid is going to be a slow
    process. If you want to pursue that, have a look at the ppPrintr.pas unit.
    You can probably use the global ppPrinters list to iterate over the printer
    names, create a TppPrinter object and set the printer name, then try to get
    access to the canvas.

    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
This discussion has been closed.