none
リンクケーブルでつながった別パソコンのアプリ上のボタン押す RRS feed

  • 質問

  • お世話になります。黒と申します。

    win10、visualstudio2015,vb.netでアプリを制作しています。

    やりたい事はWin10のPCとWin7のPCをリンクケーブル(ELECOMのUC-TV5BK)でつなげて、PC(WIN7)上で動くアプリケーション(東京測器研究所製visuallog tds7130)のボタンを押す。

    押すタイミングは自分で制作したアプリ上のボタンを押したとき。

    同じパソコンならアプリの指定ができるのでしょうが、リンクケーブルでつながっている状態では他のPC上で動くアプリがタスクマネージャーで確認できないので無理なのでしょうか。

    最低でも、マウスカーソルを他アプリのボタン上に配置しておいて、左ボタンクリックをできたらよいなと思っております。

    リンクケーブルというのはPCとPCをUSBでつないで、データの移動・マウスキーボードの操作ができるというものです。

    アドバイスよろしくお願いいたします。

    2020年10月5日 5:29

回答

  • どうしてもUC-TV5BKというリンクケーブルを使用しなければならないのでしょうか?

    リンクケーブルの実物はないのでメーカーサイトにあるマニュアルを読んだだけですが、おそらくこのケーブルはUSBの規格上はHIDクラス(ヒューマンインターフェースデバイス)の一種で、マウスやペンタブレットのような位置指定デバイスとして振舞っているだけなんじゃないかと。
    両方のPCでエレコム専用ソフトを起動する必要があるようなので、その専用ソフトでマウスの位置が同期しているように見せていると思われます。
    ユーザーからはケーブルがマウスのようなものにしか見えず、反対側のPCがどうなっているかはこれらの専用ソフトにしか判らないでしょう。
    (たぶんクリップボード同期についてもHIDのカスタムデバイスで専用ソフトがテキスト通信してる)

    なんにせよ、両方のPCで専用ソフトを動かすことが必要になっているようなので、その専用ソフトを外部から操作できれば何とか実現できるでしょうが、仕様は公開されていないでしょう。
    USBに流れるデータをキャプチャして解析したら自作ソフトで同等の機能を実現できるでしょうが、あまり現実的な方法ではありません。

    どうしてもこのリンクケーブルでないとならないのであれば、

    1. エレコムの専用ソフトを両方のPCで実行したままにする
    2. Win10側では、ボタンをクリックしたら十分な長さの特定キーワード文字列をクリップボードにコピーするソフトを作る
    3. Win7側ではクリップボードを常に監視して、その特定キーワード文字列が来たら他アプリの操作を開始するソフトを作る
    4. 他アプリの操作はUIAutomationという機能で実装する。
    5. UIAUtomationはアプリケーションのタイトルで対象のアプリケーションのウィンドウを探して、そのウィンドウの中の目的のボタンを見つける。
    6. UIAutomationでマウスクリックと同等の動作が行えるので、ボタンクリックさせる。
      (マウスの移動は必要ない)

    で実現できるかもしれません。
    UIAutomationで操作できるかはInspectというツールで調査できます。(VisualStudioのインストールでSDKをインストールしてるならいっしょに入っているはず)

    ですが、クリップボードでやることになる文字列をやり取りするという機能は、RS232/485,LAN といったケーブルで接続して通信したほうが確実に実現できると思われます。
    あと、遠隔測定が目的であるのであれば、RS232ならPCを数十メートル離せるが、USBリンクケーブルだとせいぜい数メートルしか離すことができません。それなら両方のPCの画面を見ながらマウスカーソルを操作すればいいだけで、新たにソフトを開発する必要がないことになってしまいます。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 9638masa 2020年10月8日 1:01
    2020年10月5日 10:01

すべての返信

  • どうしてもUC-TV5BKというリンクケーブルを使用しなければならないのでしょうか?

    リンクケーブルの実物はないのでメーカーサイトにあるマニュアルを読んだだけですが、おそらくこのケーブルはUSBの規格上はHIDクラス(ヒューマンインターフェースデバイス)の一種で、マウスやペンタブレットのような位置指定デバイスとして振舞っているだけなんじゃないかと。
    両方のPCでエレコム専用ソフトを起動する必要があるようなので、その専用ソフトでマウスの位置が同期しているように見せていると思われます。
    ユーザーからはケーブルがマウスのようなものにしか見えず、反対側のPCがどうなっているかはこれらの専用ソフトにしか判らないでしょう。
    (たぶんクリップボード同期についてもHIDのカスタムデバイスで専用ソフトがテキスト通信してる)

    なんにせよ、両方のPCで専用ソフトを動かすことが必要になっているようなので、その専用ソフトを外部から操作できれば何とか実現できるでしょうが、仕様は公開されていないでしょう。
    USBに流れるデータをキャプチャして解析したら自作ソフトで同等の機能を実現できるでしょうが、あまり現実的な方法ではありません。

    どうしてもこのリンクケーブルでないとならないのであれば、

    1. エレコムの専用ソフトを両方のPCで実行したままにする
    2. Win10側では、ボタンをクリックしたら十分な長さの特定キーワード文字列をクリップボードにコピーするソフトを作る
    3. Win7側ではクリップボードを常に監視して、その特定キーワード文字列が来たら他アプリの操作を開始するソフトを作る
    4. 他アプリの操作はUIAutomationという機能で実装する。
    5. UIAUtomationはアプリケーションのタイトルで対象のアプリケーションのウィンドウを探して、そのウィンドウの中の目的のボタンを見つける。
    6. UIAutomationでマウスクリックと同等の動作が行えるので、ボタンクリックさせる。
      (マウスの移動は必要ない)

    で実現できるかもしれません。
    UIAutomationで操作できるかはInspectというツールで調査できます。(VisualStudioのインストールでSDKをインストールしてるならいっしょに入っているはず)

    ですが、クリップボードでやることになる文字列をやり取りするという機能は、RS232/485,LAN といったケーブルで接続して通信したほうが確実に実現できると思われます。
    あと、遠隔測定が目的であるのであれば、RS232ならPCを数十メートル離せるが、USBリンクケーブルだとせいぜい数メートルしか離すことができません。それなら両方のPCの画面を見ながらマウスカーソルを操作すればいいだけで、新たにソフトを開発する必要がないことになってしまいます。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 9638masa 2020年10月8日 1:01
    2020年10月5日 10:01
  • gekka様

    ご回答ありがとうございます。

    一見できそうに思ったのですが、やってみるとWIN7のアプリが確認できなくてエレコムのアプリしか確認できませんでした。

    たしかにRS232Cでつないで受信側のアプリを作って、キャラクターコードを受信→ボタンを押すみたいなのが、現実的ですね。ありがとうございました。

    RS232Cでつなぐは全然考えてなかったです。ありがとうございました。

    2020年10月6日 1:40
  • 9638masaさん、こんにちは。フォーラムオペレーターのKumoです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    本件、gekkaさんより参考になる投稿が寄せられたようでなによりです。

    [回答としてマーク]機能は設定された投稿が後から参照しやすくなりますので、
    同じ問題でお困りの方のためにも参考になった投稿に設定いただけますと幸いです。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。

    引き続きMSDNフォーラムをご利用いただけますようお願い申し上げます。

    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2020年10月7日 2:27
    モデレータ
  • 細かい話ですが、、、

    > RS232ならPCを数十メートル離せるが

    規格上は、そんなには無理の筈。長くても 10m程度では?  (最新の規格は知らないですが)
    長いのが必要なら、RS422 とか。

    ま、環境次第では、数十m でも使える事もありますが(昔、使ってた)、保証外。

    2020年10月7日 12:20
  • (1)「通信の方法」ですが、
    両PCが同じLAN上にいるなら232Cを使わなくても、TCP/IPやUDPでも通信できます。

    (2)「ボタンを押す」方法ですが、
    マウスをエミュレートしなければならないケースもありますが、
    WM_COMMAND に当該機能のボタンのIDを付与してPastMessage()するだけで動作する場合もあります。

    2020年10月8日 1:31