- - PR -
メタ環境にてのクライアント情報取得
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-01-29 10:49
いつもお世話になっております。
現在.NET3.5 C# VS2008、Win.XP Pro. SP3 環境で開発を行っているのですが、 メタ環境にてのクライアント情報の取得で悩んでおります。 やりたいことは以下のとおりです。。 あるアプリケーションをCitrixのXenAppにて仮想化しています(XenAppが乗っかってるのはWin.2008)。 で、アプリケーションを実行(クライアントはWin2000,WinXP,WinVistaのどれか)し、 印刷ダイアログを表示した際、あらかじめシンクラサーバのINIファイルにてホスト名と結びつけておいたデフォルトプリンタ名を表示したいと思います。 しかし、実際のクライアントのプリンタ名は 「セッション 2 の (<ホスト名> からの) EPSON LP-S5500」 となっており、単純に「EPSON LP-S5500」の部分をPrintDialog.PrinterSettings.PrinterNameに設定しているだけでは設定されません。 ホスト名はVBの関数であるInteraction.Environ("CLIENTNAME") を使用して取得できるのでいいんですが、「セッション 2 」の部分の「2」を取得することってできないものでしょうか?取得できるのなら文字をつなげてプリンタ名に設定しようと考えているのですが。。 以上よろしくお願いします。 | ||||||||
|
投稿日時: 2009-01-29 14:32
ターミナルサービスのセッションIDですよね。 WTSQuerySessionInformation(API関数)で取れます。 または安直な方法ですが、環境変数TMPから取れます。
それより、使用できるプリンタをすべて列挙して「EPSON LP-S5500」と部分一致するものを探すとか。 | ||||||||
|
投稿日時: 2009-01-29 15:37
todoさんありがとうございます。
使用できるプリンタってのが取得できるんですね。(知らなかったです(^^) 以下のような感じで設定したいと思います。 //インストールプリンタ取得 var printers = PrinterSettings.InstalledPrinters; string defPrinterName = string.Empty; foreach (var printer in printers) { //プリンタ名はどこかに設定しとく。。 if (printer.ToString().Contains("EPSON LP-S5500")) { defPrinterName = printer.ToString(); break; } } //ここでプリンタ名設定 if(!string.IsNullOrEmpty(defPrinterName)) printDialog.PrinterSettings.PrinterName = defPrinterName; |
1