<< FaceBookのメモ、サンプルアプリ | カラツバ法で似非ゴースト暗算 >>

Windows7で簡単にマルチタッチを試す

Windows7で簡単にマルチタッチを試す方法として、 "Multi-Touch Vista" があります。
名前の通り、それほど新しいソフトではないのでご存じの方もいるでしょう。

2つのマウス入力を2つのタッチポイントに見立てて、
マルチタッチ環境を実現してくれるドライバとコントロールソフトです。

Virtual環境でこれを何とか動かせないか試したのですが、
VMware, VirtualPC, VirtualBox いずれも動かせませんでした。

ドライバの認識まではできて、コントロールパネルに
「ペンとタッチ」が追加されるところまでは行くのですが
Multitouch.Configuration.WPF.exeの"Configuer device"で
Block native windows...のチェックを入れると
マウスが一切効かなくなります。
やはり実環境が必要なのかもしれません。

実環境であれば、概ね問題なく使えるのですが、
スタートメニューやタスクマネジャーを開けるとちょっと困った問題が発生します。
.好拭璽肇瓮縫紂湿紊法▲織奪舛寮屬ぁのマークが表示されない。
▲織好マネージャー上で操作できない。

△砲弔い討蓮
Multitouch.Service.Console.exe,Multitouch.Driver.Console.exe
管理者として実行すれば可能ですが,量簑蠅あるので、
管理者権限で実行しているWindow上にタッチマークを表示することができずに、
管理者アプリのWindow背面にマークが表示されてしまいます。

"Multi-Touch Vista"は、コード公開されているので
multitouchvista-30935.zipをダウンロードして
Multitouch.InputProviders.slnをVS2010で開くと、
DebugCursor.csがマークを表示していることがわかります。

Z-Orderに関する問題ですが、常に最前面にユーザーWindowを表示する方法は、
WindowsOSのバージョンによっても変わります。

・Formの指定やCreateWindowでTopMostを指定する
・SetForegroundWindowsやAttachThreadInputの呼び出し
・BringWindowToTopの呼び出し

等がありますが、

Windows7でC#なら、Control.BringToFront()を使うのが簡単です。

DebugCursorを呼び出しているのは、DeviceStatusクラスですので
SyncUpdateLocation()に一行追加します。


void SyncUpdateLocation(object state)
{
   debugCursor.BringToFront(); //<-------------- この行を追加
   debugCursor.Location = new Point(Location.X - debugCursor.Width / 2, Location.Y - debugCursor.Height / 2);
}



これをBuildして、Outputフォルダに出力されたファイルを上書きすれば、
.好拭璽肇瓮縫紂湿紊法▲織奪舛寮屬ぁのマークが表示されない。
▲織好マネージャー上で操作できない。
の問題が解決します。




Tags: プログラムメモ VirtualPC関連 Windows7(x64)関連
author : HUNDREDSOFT | - | -