アクティブなウィンドウを別なパソコンに飛ばすアプリ
アクティブなウィンドウを別な仮想デスクトップに飛ばすアプリに感化されてちょっとやってみっかと。
その前に。ぐらばくさん御無沙汰してます。仮想デスクトップとか胸熱の分野で、なんかちょっとグッと来ました。その昔に、Windowsキーを無効にするアプリでフック使って以来全然でしたけど、なんかちょっとグッと来ました。艦これのツールとかスゲー応援してますんでこれからも頑張って下さい!
さて。
表題の「アクティブなウィンドウを別なパソコンに飛ばすアプリ」は完全にぐらばくさんのパクr・・・オマージュとかリスペクトとかインスパイアなんですけど、丁度AzureRemoteAppの記事用にデモプログラム作ってまして、偶然ぐらばくさんの記事を発見して、似てるー!ってな具合です。
ま、アクティブなウィンドウを別なパソコンに、ってな感じなんで、リモートデスクトップなんですが、従来のBrynhildrとかSiegfriedって、デスクトップ丸ごとなんですよね。もちろんキャプチャー位置とかキャプチャーサイズも指定も出来るんですけど、アクティブなウィンドウじゃないですし。
で、AzureRemoteAppって特定のウインドウのみを転送してますんで、アクティブなウインドウさえ指定出来れば、同じよーにウインドウの転送は御安い御用なんです、そうBrynhildrならね。まぁ、GetForegroundwindowでGetWindowRectで位置とサイズをゲッツして、キャプチャー位置とキャプチャーサイズをリアルタイムで書き換えるとゆー。数行で完成とゆー。
こんな感じでWindows10マシンのMicrosoftEdgeのウインドウだけを転送でけます。ウインドウを移動しても追随します。
但し、Siegfriedで試してみたら、落ちる・・・。何かVP8の制約に引っかかるようで、何箇所か修正をしました、そーならないよーに。って、これって特定の解像度で同じようにSiegfriedが落ちていた可能性もありまして、御迷惑を掛けた方、もう暫く御待ち下さいませ!そんな事してる場合じゃねーでしょがー!って声も聞こえる気もしないでもないですけど。
あと、コーデックとか利用するとするとDLLとかいるんで、MotionJPEGを使う事でDLL無しでも動くようにしました。てかなってましたのでビルドオプションを変えただけですが。これが噂の「CORE」とかゆー基本のモデルです。分からない人はちょっと前の記事を御覧下さい。ちなみに画面は画質最高にしたんでデータ転送サイズはちょっとデカいです。MotionJPEGなんで元々デカいんですが。
さて、そんなこんなでとりあえず動きはしたものの、常にアクティブなウインドウを転送って、結構厄介ですよね。クライアントからはアクティブなウインドウを選べないので、閉じたら次のウインドウに移動しちゃうんですが、サーバー側でウインドウを選択するとかクライアント側からウインドウを選択するとかゆー機能も考えたんですけど、ちょっとめんどいので、「アクティブなウインドウを閉じたら次のウインドウ」でいっとこーかなと。ただ、タスクバーとかスタートメニューとかもウインドウとして判定しちゃうんで、これらを取り除く機能が必要な気がしないでもないですな、これは。
そんなデモプログラムは「Undine」と名付けてみました。
ちゅー事で、AzureRemoteAppの記事用にそんなデモプログラムを作ってるワケですけど、ほしい人いますかね。
その前に。ぐらばくさん御無沙汰してます。仮想デスクトップとか胸熱の分野で、なんかちょっとグッと来ました。その昔に、Windowsキーを無効にするアプリでフック使って以来全然でしたけど、なんかちょっとグッと来ました。艦これのツールとかスゲー応援してますんでこれからも頑張って下さい!
さて。
表題の「アクティブなウィンドウを別なパソコンに飛ばすアプリ」は完全にぐらばくさんのパクr・・・オマージュとかリスペクトとかインスパイアなんですけど、丁度AzureRemoteAppの記事用にデモプログラム作ってまして、偶然ぐらばくさんの記事を発見して、似てるー!ってな具合です。
ま、アクティブなウィンドウを別なパソコンに、ってな感じなんで、リモートデスクトップなんですが、従来のBrynhildrとかSiegfriedって、デスクトップ丸ごとなんですよね。もちろんキャプチャー位置とかキャプチャーサイズも指定も出来るんですけど、アクティブなウィンドウじゃないですし。
で、AzureRemoteAppって特定のウインドウのみを転送してますんで、アクティブなウインドウさえ指定出来れば、同じよーにウインドウの転送は御安い御用なんです、そうBrynhildrならね。まぁ、GetForegroundwindowでGetWindowRectで位置とサイズをゲッツして、キャプチャー位置とキャプチャーサイズをリアルタイムで書き換えるとゆー。数行で完成とゆー。
こんな感じでWindows10マシンのMicrosoftEdgeのウインドウだけを転送でけます。ウインドウを移動しても追随します。
但し、Siegfriedで試してみたら、落ちる・・・。何かVP8の制約に引っかかるようで、何箇所か修正をしました、そーならないよーに。って、これって特定の解像度で同じようにSiegfriedが落ちていた可能性もありまして、御迷惑を掛けた方、もう暫く御待ち下さいませ!そんな事してる場合じゃねーでしょがー!って声も聞こえる気もしないでもないですけど。
あと、コーデックとか利用するとするとDLLとかいるんで、MotionJPEGを使う事でDLL無しでも動くようにしました。てかなってましたのでビルドオプションを変えただけですが。これが噂の「CORE」とかゆー基本のモデルです。分からない人はちょっと前の記事を御覧下さい。ちなみに画面は画質最高にしたんでデータ転送サイズはちょっとデカいです。MotionJPEGなんで元々デカいんですが。
さて、そんなこんなでとりあえず動きはしたものの、常にアクティブなウインドウを転送って、結構厄介ですよね。クライアントからはアクティブなウインドウを選べないので、閉じたら次のウインドウに移動しちゃうんですが、サーバー側でウインドウを選択するとかクライアント側からウインドウを選択するとかゆー機能も考えたんですけど、ちょっとめんどいので、「アクティブなウインドウを閉じたら次のウインドウ」でいっとこーかなと。ただ、タスクバーとかスタートメニューとかもウインドウとして判定しちゃうんで、これらを取り除く機能が必要な気がしないでもないですな、これは。
そんなデモプログラムは「Undine」と名付けてみました。
ちゅー事で、AzureRemoteAppの記事用にそんなデモプログラムを作ってるワケですけど、ほしい人いますかね。