トップ回答者
リンクケーブルでつながった別パソコンのアプリ上のボタン押す

質問
-
お世話になります。黒と申します。
win10、visualstudio2015,vb.netでアプリを制作しています。
やりたい事はWin10のPCとWin7のPCをリンクケーブル(ELECOMのUC-TV5BK)でつなげて、PC(WIN7)上で動くアプリケーション(東京測器研究所製visuallog tds7130)のボタンを押す。
押すタイミングは自分で制作したアプリ上のボタンを押したとき。
同じパソコンならアプリの指定ができるのでしょうが、リンクケーブルでつながっている状態では他のPC上で動くアプリがタスクマネージャーで確認できないので無理なのでしょうか。
最低でも、マウスカーソルを他アプリのボタン上に配置しておいて、左ボタンクリックをできたらよいなと思っております。
リンクケーブルというのはPCとPCをUSBでつないで、データの移動・マウスキーボードの操作ができるというものです。
アドバイスよろしくお願いいたします。
回答
-
どうしてもUC-TV5BKというリンクケーブルを使用しなければならないのでしょうか?
リンクケーブルの実物はないのでメーカーサイトにあるマニュアルを読んだだけですが、おそらくこのケーブルはUSBの規格上はHIDクラス(ヒューマンインターフェースデバイス)の一種で、マウスやペンタブレットのような位置指定デバイスとして振舞っているだけなんじゃないかと。
両方のPCでエレコム専用ソフトを起動する必要があるようなので、その専用ソフトでマウスの位置が同期しているように見せていると思われます。
ユーザーからはケーブルがマウスのようなものにしか見えず、反対側のPCがどうなっているかはこれらの専用ソフトにしか判らないでしょう。
(たぶんクリップボード同期についてもHIDのカスタムデバイスで専用ソフトがテキスト通信してる)
なんにせよ、両方のPCで専用ソフトを動かすことが必要になっているようなので、その専用ソフトを外部から操作できれば何とか実現できるでしょうが、仕様は公開されていないでしょう。
USBに流れるデータをキャプチャして解析したら自作ソフトで同等の機能を実現できるでしょうが、あまり現実的な方法ではありません。どうしてもこのリンクケーブルでないとならないのであれば、
- エレコムの専用ソフトを両方のPCで実行したままにする
- Win10側では、ボタンをクリックしたら十分な長さの特定キーワード文字列をクリップボードにコピーするソフトを作る
- Win7側ではクリップボードを常に監視して、その特定キーワード文字列が来たら他アプリの操作を開始するソフトを作る
- 他アプリの操作はUIAutomationという機能で実装する。
- UIAUtomationはアプリケーションのタイトルで対象のアプリケーションのウィンドウを探して、そのウィンドウの中の目的のボタンを見つける。
- UIAutomationでマウスクリックと同等の動作が行えるので、ボタンクリックさせる。
(マウスの移動は必要ない)
で実現できるかもしれません。
UIAutomationで操作できるかはInspectというツールで調査できます。(VisualStudioのインストールでSDKをインストールしてるならいっしょに入っているはず)ですが、クリップボードでやることになる文字列をやり取りするという機能は、RS232/485,LAN といったケーブルで接続して通信したほうが確実に実現できると思われます。
あと、遠隔測定が目的であるのであれば、RS232ならPCを数十メートル離せるが、USBリンクケーブルだとせいぜい数メートルしか離すことができません。それなら両方のPCの画面を見ながらマウスカーソルを操作すればいいだけで、新たにソフトを開発する必要がないことになってしまいます。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク 9638masa 2020年10月8日 1:01
すべての返信
-
どうしてもUC-TV5BKというリンクケーブルを使用しなければならないのでしょうか?
リンクケーブルの実物はないのでメーカーサイトにあるマニュアルを読んだだけですが、おそらくこのケーブルはUSBの規格上はHIDクラス(ヒューマンインターフェースデバイス)の一種で、マウスやペンタブレットのような位置指定デバイスとして振舞っているだけなんじゃないかと。
両方のPCでエレコム専用ソフトを起動する必要があるようなので、その専用ソフトでマウスの位置が同期しているように見せていると思われます。
ユーザーからはケーブルがマウスのようなものにしか見えず、反対側のPCがどうなっているかはこれらの専用ソフトにしか判らないでしょう。
(たぶんクリップボード同期についてもHIDのカスタムデバイスで専用ソフトがテキスト通信してる)
なんにせよ、両方のPCで専用ソフトを動かすことが必要になっているようなので、その専用ソフトを外部から操作できれば何とか実現できるでしょうが、仕様は公開されていないでしょう。
USBに流れるデータをキャプチャして解析したら自作ソフトで同等の機能を実現できるでしょうが、あまり現実的な方法ではありません。どうしてもこのリンクケーブルでないとならないのであれば、
- エレコムの専用ソフトを両方のPCで実行したままにする
- Win10側では、ボタンをクリックしたら十分な長さの特定キーワード文字列をクリップボードにコピーするソフトを作る
- Win7側ではクリップボードを常に監視して、その特定キーワード文字列が来たら他アプリの操作を開始するソフトを作る
- 他アプリの操作はUIAutomationという機能で実装する。
- UIAUtomationはアプリケーションのタイトルで対象のアプリケーションのウィンドウを探して、そのウィンドウの中の目的のボタンを見つける。
- UIAutomationでマウスクリックと同等の動作が行えるので、ボタンクリックさせる。
(マウスの移動は必要ない)
で実現できるかもしれません。
UIAutomationで操作できるかはInspectというツールで調査できます。(VisualStudioのインストールでSDKをインストールしてるならいっしょに入っているはず)ですが、クリップボードでやることになる文字列をやり取りするという機能は、RS232/485,LAN といったケーブルで接続して通信したほうが確実に実現できると思われます。
あと、遠隔測定が目的であるのであれば、RS232ならPCを数十メートル離せるが、USBリンクケーブルだとせいぜい数メートルしか離すことができません。それなら両方のPCの画面を見ながらマウスカーソルを操作すればいいだけで、新たにソフトを開発する必要がないことになってしまいます。個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク 9638masa 2020年10月8日 1:01
-
9638masaさん、こんにちは。フォーラムオペレーターのKumoです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
本件、gekkaさんより参考になる投稿が寄せられたようでなによりです。
[回答としてマーク]機能は設定された投稿が後から参照しやすくなりますので、
同じ問題でお困りの方のためにも参考になった投稿に設定いただけますと幸いです。
お手数ですが、ご協力の程どうかよろしくお願いいたします。
引き続きMSDNフォーラムをご利用いただけますようお願い申し上げます。MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~