Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm wearing my developer's hat at the moment, but this is more of a systems admin question where I'm trying to work with a client of ours to solve a problem. (Some names and numbers changed - idea / issue still the same)

The client has 10 Citrix servers. There are perhaps 50 staff members. Each staff member may be running between 3 and 8 copies of an application we'll call "B". It's a published app. The instances of application B could be running all on the same server/session or might be spread out over multiple servers (and thus multiple sessions).

I have an application that we'll call "D". It ties in to application B. Specifically you can trigger something in D which will scrape B's screen for the current record and bring up the corresponding data in D. So the user is in B and wants to bring up the additional information about B's current record in D's screen.

D is a single-instance app - it is aware of all of the distinct B databases and amalgamates them. Thus the user should only be running a single D at a time.

Most of our clients don't have multiple servers or multiple instances of B. So our app D just registers a global hotkey to let the user invoke the function in the single copy of D to scrape the single copy of B's screen.

At this client that approach won't work - we don't want the user's desktop, which is a conglomeration of many published B windows plus maybe a web browser, email client, etc, to be also cluttered with a D window for each distinct Citrix server.

I had an idea to write a small stub application for D which, when executed, scraped the active B screen, interacted with the user and then quit. This D stub, which I'll call X, could be on every Citrix server and wouldn't be a drain on resources. However I still need to have a way to launch it.

I've tried making a desktop shortcut in the user's profile on the Citrix servers but this doesn't seem to work. My idea here was to put a shortcut to X on the desktop and set that shortcut's shortcut key (very hard term to Google/Bing!) to something like Ctrl+Alt+D. Unfortunately this doesn't seem to work. It could be that such behaviour relies on explorer.exe and, since there's an app being published, there is no explorer.exe.

Even if it did work, I then need to make sure it's only activated in the "current" Citrix session, that is the one with the user's focussed instance of B. I don't want every Citrix server to which the user is connected to trigger our little X stub app when the keyboard shortcut is pressed.

Given that situation (thanks for reading this far!) I have two questions

  1. Does anyone know if I should be able to make shortcut keys inside of shortcuts on a published app Citrix session work? If so, what might I have to do? Also, if it helps to use RDP instead of Citrix I'd be interested in opinions there too.

  2. If you know how to make #1 work, how then might I have only the server with the focussed window respond?

  3. If #1 can't be made to work, I could have our client modify the way B is launched to be launched via a batch file. I then have a small stub app run in the background at the same time as B is launched. X could register a mutex to avoid being launched multiple times within the same session. But, in that situation, I still would like some opinion on how Citrix (or MS RDP) might handle globally registered keyboard shortcuts. If the user hit Ctrl+Alt+D does that end up going to the various copies of X or just the X that belongs in the session of the B app with fous?

I've tried to cut out the unnecessary bits of the above background. Please point out if I've been ambiguous and you'd like clarification. Thanks for any & all opinions offered.

share|improve this question

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.