Eee Slate B121 上の CLIP STUDIO PAINT でタッチ入力できないようにしたかったから自分でツール作ってみようかとアレコレしたけど、どうにもうまくいかないっていうか、便利ツールとまではいかなかったわー(´・ω・`)
ちなみに、ただタッチ入力を無効化するだけなら「Eee Slate B121 のタッチを無効化する方法」でおk。
試した方法は2つ。
- CLIP STUDIO PAINT に対してタッチ関係のメッセージを送らないようにする
- タッチデバイスを簡単に切り替える
結果としてはどっちもうまくいかなかったんだけどww
今後何かの参考になるかもしれないから書き残しておこうかなーなんて思った次第よ。
try.1 CLIP STUDIO PAINT に対してタッチ関係のメッセージを送らないようにする
グローバルメッセージフックで MW_TOUCH メッセージをブロックすればいけんじゃねー?
…と、思って CLIP STUDIO PAINT を Spy++ でメッセージ監視したら…
MW_TOUCH 来てねー!
という事実が判明いたしました。
全部 WM_MOUSEMOVE だったよこんちくしょー! ということで、筆圧情報とかは別ルートで取得している、と。
ぐぬぬ。 CLIP STUDIO PAINT 側でネイティブにタッチ対応してタッチ無効化モードとか用意してくれないかなーとか思うわー。
今度セルシスに要望出してみようかしら?
try.2 タッチデバイスを簡単に切り替える
「Eee Slate B121 のタッチを無効化する方法」で行っていることを単独のアプリケーション化&設定の簡易化で利用の敷居を下げるというのを目指してみたんだけど、デバイスの停止・再開自体は可能でも、タッチデバイスをプログラムだけで識別するのは無理っぽいわね。
とりあえず、Windows の API 的には下記のものがキーになるわ。
- HidD_GetHidGuid
- SetupDiGetClassDevs
- SetupDiDestroyDeviceInfoList
- SetupDiEnumDeviceInterfaces
- SetupDiGetDeviceInterfaceDetail
- SetupDiSetClassInstallParams
- SetupDiChangeState
- CM_Get_DevNode_Status
- SetupDiGetDeviceRegistryProperty
これらを使ってタッチデバイスを特定できないかと思ったんだけど、何がタッチデバイスのキーになるかサッパリわからなくて、今回は失敗とあいなった次第。
以上。
もう少し情報集めたらリトライしたいわー。
参考サイト
Japan WDK Support Blog:デバイスの有効・無効をプログラムから切り替える方法
Windows 7 タッチ アプリケーション 開発ガイダンス(pdf)
追記:
CM_Disable_DevNode() で無効化しようとしたら CR_ACCESS_DENIED エラーが出てアクセス拒否られた。
追記 2013.4.12 :
タッチデバイスを簡単に切り替える方法でツール作りますた。