スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 2015年を振り返って (後半) | トップページ | やっぱりストリーミングかな »

アイデアは色々とあるんだが

今は、Mirror-DTCの次バージョンを開発中なのだが、目玉が無いとリリースする気にならないので、目玉に出来そうな新ネタを色々と試していた。しかし、アイデアは色々と出るものの、殆どをボツにした。これは、Mirror-DTCは作者的にも使えなくなると困るからだ。

目玉に出来そうな新ネタというのは、現行のMirror-DTCには無い斬新な機能という事になるのだが、Mirror-DTCというのは、リモートデスクトップソフトなので、それ絡みの話になる。

で、どういうアイデアを出していたのかというと、まず、作者的には不要なのだが、一般的な需要を鑑みて、Mirror-DTCからの接続中には、サーバー画面をローカル環境では見れなくする機能だ。

Mirror-DTCというのは、RDPが専用デスクトップ画面を転送しているのに対し、サーバーに表示されているリアルなデスクトップ画面を転送するソフトなので、それは不可能だろう、と、思う人もいる筈なのだが、別段、不可能という訳でもない。

具体的には、Windowsでは、モニターの省電力モードをプログラムから簡単に設定できるので、クライアントから接続されたサーバーは、モニターの電源をOFFにする事が出来る。

モニターの電源がOFFになれば、ローカル環境ではサーバー画面は見れなくなる訳なので、前述の目的は達せられるのだが、実際にやってみた所、モニターの電源をOFFにすると、ディスプレイドライバーも省電力モードに入ってしまうみたいで、AGMPlayerみたいなGPU支援を必要とするソフトの画面表示は数秒に一回程度しか更新されなくなってしまった。

それでも、普通のGDI描画を行うソフトなら、使えない事も無かったのだが、Mac mini Late2014をデュアルモニター構成で使用している作者環境では、モニターの電源をOFFにすると、勝手にプラグ&プレイ機能が動作し始め、ディスプレイ構成が変な感じになる不具合が発生した訳だ。

と、いう事なので、こんな危険な機能をMirror-DTCに実装する訳にも行かず、作者的には、上記の実装については諦めたのだが、モニターの電源を入れたまま、画面の最前部にデスクトップを隠す為のウインドウを表示してしまえば、これでも目的は達成できる。

この場合、通常のデスクトップキャプチャー方式だと、最前面のウインドウがキャプチャーされてしまうので、Mirror-DTC的には意味をなさないのだが、別のキャプチャー方式を採用すれば、この状態でも、Mirror-DTC経由では、普通にデスクトップの操作は可能だ。

具体的には、Windowsには、Magnification APIというのがあって、これを使うと、デスクトップ画面を指定ウインドウに描画出来るのだが、その時に、特定のウインドウを描画対象から外す事も出来る訳だ。

なので、最前面に描画したウインドウを描画対象外にしてしまえば、Magnification API用ウインドウに描画されるデータには、その最前面ウインドウは含まれなくなるので、普通に、デスクトップ画面が描画されるし、最前面ウインドウをフラグ付きで作成しておけば、マウスイベントなんかも、このウインドウは素通りする格好に出来る。

で、問題は、前述のMagnification APIによって描画されたデータをどうやって取り込むのか、という事になるのだが、このブログを書き始めた頃に、BitBltなんかで取り込もうとして取り込めなかったので、作者的には、このAPIを使うのを諦めた訳なのだが、Windows8.1以降では、PrintWindowというAPIを使うと、取り込める様になった。

なので、Mirror-DTC的には、Windows8.1以降では、サーバーが最前面にデスクトップを隠す為のウインドウを表示したとしても、クライアントは最前面のウインドウが表示されないデスクトップ画面を普通に描画し、操作する事も可能になっている。

ただし、Windows8.1では、デスクトップ画面とは別に、スタート画面があるのだが、単純な処理では、この画面は隠せないし、最前面ウインドウでも、タスクバーには負けるので、操作状況によっては、タスクバーやスタート画面はチラチラと見えてしまう訳だ。

このため、このアイデアについてもボツにしたのだが、問題になるのは、タスクバーだとかスタート画面になる訳なので、Mirror-DTC接続時には、そういったモノを使えなくすれば、問題は無くなる。

例えば、Mirror-DTCサーバーにExplorer相当のShell機能を持たせ、Mirror-DTC接続時には、通常のデスクトップとは別のデスクトップを作成し、それをカレントに切り替えた上で、そのShell機能を動作させ、その環境では、タスクバーだとかスタート画面を使えなくすれば、全く問題は無くなる訳だ。

しかしまあ、上記は如何にもA型的発想で、普通に鑑みて、特定用途向けならいざ知らず、一般コンシューマ向けを想定しているMirror-DTCが、そんなShell環境を提供したとしても、今時の人が使いたがるんだろうか? という話になる訳だ。

なので、上記案についてもボツにしたので、今のところ、接続中にサーバー画面を見れなくする機能は実装できそうにないのだが、そういう機能が必要になるのは、実は、企業向けで、一般ユーザー的には、別段、必要でもない筈だ。

実際、今時の殆どの人にとって、PCというのはノートPCになる訳で、ノートPCの場合、電源設定で、「カバーを閉じた時の動作選択」で、「何もしない」を選択しておけば、モニターの電源を切った状態で、前述の様な性能劣化も発生せず、普通にMirror-DTC接続で使える。実際、作者も、X202EとdynabookMX/33については、そういう使い方をしている。

と、いう事なので、次バージョンのMirror-DTCでも、アグレッシブな機能変更は無さそうな感じになってきているのだが、やれそうな事は他にも色々あるので、その他のアイデアについては、もう一日鑑みてみる事にする。

= この記事に関連する公開中ソフト =

Mirror-DTC

Mirror-DTC

(2016/05/04追記)

« 2015年を振り返って (後半) | トップページ | やっぱりストリーミングかな »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/62973450

この記事へのトラックバック一覧です: アイデアは色々とあるんだが:

« 2015年を振り返って (後半) | トップページ | やっぱりストリーミングかな »

2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google