スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Windows10は特別扱い? | トップページ | とりあえず、完成 »

Windows10でも出来たので

今は、Mirror-DTCの次バージョン用に、Mirror-DTC Transporterを開発しているのだが、昨日書いた様に、Windows10ではWindows8.1とは異なる挙動となったのでどうしようかと思っていたのだが、何とか同様の挙動に出来たので、Windows8.1と同じ仕様にする。

Mirror-DTC Transporterというのは、デスクトップ上にあるウインドウを指定すると、そのウインドウの映像をMirror-DTCプロトコルでMirror-DTCクライアントに転送するソフト、という事になる。

何故、そんなソフトを作っているのか、というと、PC使用時には、複数のウインドウを同時に見たいケースも多々出て来るのだが、モニターの解像度が低いと、両方を同時に見るのが辛い場面も多々ある筈だからだ。

この様な場合、普通は、デュアルモニター化する事で、同時表示可能なウインドウを増やしたりするのだが、例えば、ノートPCに外付けモニターを接続するのは面倒だし、逆に、ノートPCのモニターというのは、普通は、デスクトップPCの外付けモニターには出来ない訳だ。

これに対して、Mirror-DTC Transporterというのは、当然の事ながら、ネットワーク経由でデータを転送するので、WiFi接続が可能な環境なら、デスクトップPCとノートPCを有線ケーブルで接続する必要なく、ノートPCからデスクトップPCのモニターに映像を表示したり、逆に、デスクトップPCからノートPCの液晶に、映像を表示したり出来るので便利になったりする筈な訳だ。

もっとも、Transporterというのは、Serverとは異なり、サーバーPCのデスクトップとは異なるデスクトップモドキの映像を持てるのだが、そのデスクトップモドキに表示されるウインドウは、表示位置の調整は出来ても、実際の操作は行えない。

なので、例えば、ブラウザで何か調べものをしていて、その結果をTransporterで別モニターに表示している状況で、そのブラウザの表示を別のタグに切り替えたいと思った時には、一旦、そのウインドウを通常のデスクトップに戻し、再度、別モニターに表示させる必要がある訳だ。

で、上記を行う最も単純な方法としては、一旦、ブラウザのウインドウを転送対象から外してしまい、その結果としてデスクトップに表示される様になるので、そこでタグを切り替えた後、また、転送対象として指定すれば良いのだが、その為には、Transporterのダイアログでの操作が必要になるので、作者的にも、頻繁に、こんな面倒な操作はしたくない訳だ。

このため、転送対象として指定したウインドウも、アクティブウインドウになった場合には、デスクトップに表示し、非アクティブウインドウになった場合には、また、別モニターに表示させる格好にしたのだが、Windowsでは、アクティブウインドウが閉じられた場合なんかには、その次の候補が自動的にアクティブウインドウになったりする。

で、別モニターに表示する様にしたウインドウに関しても、最初は、その候補になっていたので、特に操作したくない場合にも、別モニターからデスクトップに表示させる格好になるケースが頻発し、これはこれで、鬱陶しかった。

なので、転送対象に指定した段階で、WS_EX_NOACTIVATE属性を指定する様にしたのだが、Windows7/8.1では、この属性を指定してもタスクバーのアイコンが表示されなくなる、なんて事は無かったのだが、昨日書いた様に、Windows10では表示されなくなる場合と表示される場合があった訳だ。

このため、WS_EX_NOACTIVATE属性は指定できないかなあ、と、思っていたのだが、色々と調べた結果、同時に、WS_EX_APPWINDOW属性も指定する様にすると、Windows10でも、タスクバーのアイコンが表示されなくなる現象は無くなった。

と、いう事で、Windows10でも、Windows8.1と同様の挙動を示す様になったので、仕様的には、上記の通り、転送対象のウインドウも、アクティブ化すれば、それだけで、デスクトップに再度表示される様になり、非アクティブ化する事で、また、非表示状態になり、別モニター上に表示される格好にした。

で、転送対象のウインドウは、WS_EX_NOACTIVATE属性が指定されているので、デスクトップ上のアクティブウインドウが非アクティブ化された様な場合に自動的にアクティブ化される事はなく、タスクバーアイコンをクリックしたり、ALT+Tabでアクティブ化する様な、積極的な操作があった場合にのみ、デスクトップに表示される格好になる。

上記の通りなので、デュアルモニター化した場合には、サブモニター側に表示させているウインドウを操作したい場合には、マウスポインターを大きく動かす必要があるのに対し、Transporterで別モニターに転送してあるウインドウの操作は、より楽だ。

つまり、タスクバーアイコンをクリックすれば、普通に目の前のモニターに表示されるので、マウスポインターを大きく動かすことなく操作できるし、再度、別モニターに表示させる操作も、別ウインドウやデスクトップをクリックするだけだ。

と、いう事で、5月初旬くらいから、色々な事をやってきたのだが、そういった苦労は、Mirror-DTC Transporterという新しいソフトが出来上がる事で報われそうだ。

ちなみに、Mirror-DTC Transporterを動作させるためには、Exeファイルと同じフォルダーにMCSrvDll.dllというファイルも必要になっているのだが、作者的には、このファイルを不要にする事も可能だ。

つまり、MCSrvDll.dllを開発しているのも作者な訳なので、そのソースファイルをTransporterのプロジェクトに追加すれば、何も、Dllを呼び出さなくても、その中にある関数と同じ処理を実行する事も可能になる訳だ。

しかしまあ、MCSrvDll.dllというのは、Mirror-DTC クライアントで操作可能なアプリを簡単に開発できる様に、という事で開発してきたdllで、Transporterというのは、そのサンプルソフトを作る必要性から生まれたソフト、という事にもなる。

と、いう事なので、Transporterについては、とりあえず、次バージョンでは、MCSrvDll.dllが必要なままにしておく事にするのだが、これのソースコードを添付するのはやめておく。

つまり、次バージョンには、MCSrvDll.dllが同梱され、それを利用するTransporterも同梱されるのだが、Transporterのソースファイル等は添付されないので、MCSrvDll.dllを使って一般ユーザーがアプリ開発する事は出来ない格好になる。

まあ、Mirror-DTC的に重要なコードはMCSrvDll.dll側に持たせているので、Mirror-DTC Transporterのソースコードには、大した処理コードはないので、公開できない、という事もないのだが、少し前に書いた様に、今は1995年ではないので、ソースコードを付けても、それを使ったソフト開発をする人は皆無な筈なので、そんなモノを添付して、サポートコストだけが増加するのは避ける事にした訳だ。

 

« Windows10は特別扱い? | トップページ | とりあえず、完成 »

2019年12月
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 のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google