none
タブレットPC設定で行う「タッチディスプレイの構成」作業をC++で行いたい

    質問

  • Windows10にてタッチ対応ディスプレイを複数接続して使用します。

    通常ディスプレイとタッチパネルの組み合わせの紐付けはコントロールパネルの「タブレットPC設定」から「画面」で構成のセットアップを実行して、実際にタッチして組み合わせを決めます。

    これを、プログラムで自動化することは出来るでしょうか?

    タッチデバイスはUSB接続でInput Deviceとして認識しています。
    タッチデバイスのUSBケーブルがどこのUSB端子に挿してあるかを調べて、ディスプレイ1,2..と固定的に割り付けたいです。
    (USB端子1ならディスプレイ1, USB端子2ならディスプレイ2と言った感じで)

    それらしいAPIが見つからなかったので質問させていただきました。
    レジストリの情報(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wisp\Pen\Digimon)あたりを操作すればできそうな感じがしますが、怖いので正攻法で行いたいと考えています。

    よろしくお願いします。

    2018年2月21日 1:59

回答

  • レジストリの情報(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wisp\Pen\Digimon)あたりを操作すればできそうな感じがしますが、怖いので正攻法で行いたいと考えています。

    (こんな提案したら、また怒られそうですけど)
    そこまでわかってんだったら、"Process Explorer" と "Process Monitor" を組み合わせて、そのレジストリにアクセスするプロセスとプロセス内にロードしている DLL を特定して、"Dependency Walker" かデバッガで、それらモジュールがどんな API をインポートしているのかを調べれば、それなりに手掛かりが掴めるのでは。。。。

    HID として認識してるなら、下記サイトが参考になるかも。
    ---------------------------------------------------
    Human Interface Devices (HID)
    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/_hid/

    kbdmou.h header
    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/kbdmou/index

    hidclass.h header
    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/hidclass/
    ---------------------------------------------------



    P.S.
    こんなんあった。(ちゃんと読んでないけど。)
    ---------------------------------------------------
    Associate HID Touch Device with Pnp Monitor
    https://stackoverflow.com/questions/42215120/associate-hid-touch-device-with-pnp-monitor
    ---------------------------------------------------
    • 編集済み お馬鹿 2018年2月22日 9:26 追記
    • 回答としてマーク Masato_55 2018年3月28日 0:57
    2018年2月22日 8:30

すべての返信

  • こんばんは。

    どの USB ポートに接続されたかで判断したいということでしたら usbview というサンプルが Git に公開されてますので、こちらを参考にしてはいかがでしょうか。
    usbview を利用するとどこのポートに何が接続されているかを確認できますので、まずはコンパイルして動作を。。 WDK インストールしてもツールのなかに入ります。

    usbview
    https://github.com/Microsoft/Windows-driver-samples/tree/master/usb/usbview

    USBView の中身を見てみる
    https://blogs.msdn.microsoft.com/jpwdkblog/2009/04/20/usbview/
    2018年2月21日 10:56
  • USBの情報ありがとうございます。
    USBViewは既に知っております。

    一番情報が無いのが、InputデバイスとDisplayとの組み合わせを設定するAPIです。

    どなたかご存じないでしょうか?

    2018年2月22日 6:57
  • コマンドプロンプト(CMD.exe)で、

    C:\Users\Nyanko>explorer shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}

    とするとタブレットPCの設定が開けますが、そういうことではだめですよね。

    2018年2月22日 7:36
  • レジストリの情報(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wisp\Pen\Digimon)あたりを操作すればできそうな感じがしますが、怖いので正攻法で行いたいと考えています。

    (こんな提案したら、また怒られそうですけど)
    そこまでわかってんだったら、"Process Explorer" と "Process Monitor" を組み合わせて、そのレジストリにアクセスするプロセスとプロセス内にロードしている DLL を特定して、"Dependency Walker" かデバッガで、それらモジュールがどんな API をインポートしているのかを調べれば、それなりに手掛かりが掴めるのでは。。。。

    HID として認識してるなら、下記サイトが参考になるかも。
    ---------------------------------------------------
    Human Interface Devices (HID)
    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/_hid/

    kbdmou.h header
    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/kbdmou/index

    hidclass.h header
    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/hidclass/
    ---------------------------------------------------



    P.S.
    こんなんあった。(ちゃんと読んでないけど。)
    ---------------------------------------------------
    Associate HID Touch Device with Pnp Monitor
    https://stackoverflow.com/questions/42215120/associate-hid-touch-device-with-pnp-monitor
    ---------------------------------------------------
    • 編集済み お馬鹿 2018年2月22日 9:26 追記
    • 回答としてマーク Masato_55 2018年3月28日 0:57
    2018年2月22日 8:30
  • お返事遅くなりました。

    タブレットPCの設定をコマンドから起動することができるんですね。
    でもGUIを使ってやるのではなくて自前のプログラムから設定したいと考えています。

    2018年3月28日 0:52
  • お返事遅くなりました。

    内部で使用しているAPIを調査する方法のご提供ありがうございます。
    実はその後、レジストリは書き換えてみたのですが、設定が変わらなかったため、まだ何かあると思っていました。
    APIを調べれば何か分かるかもしれませんね。

    また、stackoverflowで同じ悩みをもっている方がいて参考になりました。

    また、時間ができたら調査してみたいと思います。

    2018年3月28日 0:57