マウス関連のプログラムを探しています。実験のため、複数のマウスを接続したパソコンがあります。それらマウスを、以下の内容で制御するプログラムソースを紹介したページを探しています。言語は、VisualBasicが希望です。


 ・マウスの左クリック操作を、複数あるマウスのいずれかのみに指定する
 ・指定外のマウスは、左クリックのみが無効になる
 ・指定方法は、GUIでもCUIでも可
 ・対象OSはWinXP
 ・接続マウスはUSB、2〜3個

Visual Studio .NET2003がありますので、Basic以外でも構いません。当方、Winのプログラミングは全く素人です。勉強をしていますが、書けるようになるまでには、かなりの時間がかかりそうです。

ズバリと使用できるようなソースをご提示いただいた方には、200pt差し上げたいと思います。

以上、よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答7件)

id:machinenoise No.1

回答回数50ベストアンサー獲得回数0

ポイント15pt

Raw Input APIを利用すると複数のマウスがあっても1つの状態が取得できるようです。

http://hp.vector.co.jp/authors/VA000092/win32/GenericInput.html

Win32プログラミングノート --- Raw Input ---

すみません、VBのソースが見つからなかったもので…VC++のサンプルソースです。

id:Mugicha2004

参考先のホームページが、ちょっと高度のようです。VC++もどうにか動きそうですので、試してみます(試せるかどうかが、やや不安...)。もう少し、ダイレクトなご回答がいただけると、幸いです。

2004/05/31 15:31:01
id:aki73ix No.2

回答回数5224ベストアンサー獲得回数27

ポイント20pt

http://homepage1.nifty.com/MADIA/vb/VBKANREN.htm

API 技術関連 - VBでのWin32APIのサンプル

URL先にマウス関係のVBのAPIサンプルがあります

まず、結論から

されようとしてることは。VBでは100%無理です

・USBマウスにもよりますが、OS上でIDの識別は出来ません

・IDの識別があったとして、デバイスドライバからの制御が必要になりますから、デバイスドライバを作成しなければなりません

・デバイスドライバはVBでは作ることができません

つまり、VB上から見る限りでは、複数繋いだマウスを識別することは不可能なのです

http://www.microsoft.com/japan/msdn/vs/vb/vbtchaccessingregistry...

このページは、存在しないか、削除されています。

では、無理か?

いくつか方法はあります

・USBではなくシリアルにマウスを接続し、COMポートからマウスを操作する(欠点、入手困難、プログラムに中級程度の知識が要る)

・HKEY_LOCAL_MACHINE¥System¥CurrentControlSet¥などのレジストりを直接操作する(再起動が必要、プログラミングに知識が必要、レジストリ操作するので危険、VBで直接アクセスできないので .NetFrameWorkガ必要)

・ソフトではなく、切り替え式のUSBハブを作る(これが一番楽かも^^;)

デバイスドライバを作られるのならVBではなく、VCだけでも無理です。デバイスドライバ用のSDKが必要になり、かなり高度な技術が必ようになります

id:Mugicha2004

詳細なご回答、ありがとうございます。なんと! VBなどでは、不可能なのですね。ううむ....困りました。VCもありますが、それでも×とは.... デバドラ作成はとても無理ですし、左クリックだけを選択したいので、単純なUSBハブもNGです。レジストリ操作の件も難しそうですし... 以外なアプローチがないか、もう少し、ご回答をお待ちしてみます。

2004/05/31 15:33:47
id:cx20 No.3

回答回数607ベストアンサー獲得回数108

ポイント20pt

Direct Input を使ったやり方ですが、

「Windows 98ではIDirectInput8::EnumDevicesで素直にデバイスご

とに取れるのだが、Windows 2000とXPではマウスやキーボードとい

うデバイスにまとめられてしまう。

どうやら、Windows 2000とXPではOSが数個のマウスやキーボードを

ひとつのマウスやキーボードとまとめるらしい。」

という記述がありました。

通常の方法では、複数マウスの個別認識はできなさそうですね。

「ダブルマウスシステム」というマウス複数台を利用したシステムを

研究しているところもあるようなので、

方法はありそうです。

一度、問い合わせてみてはいかがでしょうか?

http://www.cqpub.co.jp/hanbai/books/33/33191.htm

[絶版→新版移行2005.10.4] USBハード&ソフト開発のすべて

「USBハード&ソフト開発のすべて」

参考になるか分かりませんが、一応、本の紹介を載せておきます。

回答になっていないので、ポイントは結構です。

id:Mugicha2004

詳細なご回答を、ありがとうございました。先ほどの方もおっしゃってましたが、どうやら、難しそうですね。

参りました.... 簡単なコトだと思っていたのですが....

ご提示いただいたページを、じっくりと拝見してみます。あきらめきれないので、もう少し、他の方のご回答を待ってみます。

2004/05/31 16:39:50
id:cx20 No.4

回答回数607ベストアンサー獲得回数108

ポイント14pt

「『WindowsXPから、複数マウスの使用はDirectInputから切り離

されました』だと。

(本文は英語だったけど、日本語訳するとこんな感じ) そのかわ

りにRaw Input APIとかいうのを使えば複数マウスが取得できるん

だそうだ。」

だそうです。

Windows XP だと、Raw Input API を使うしか無さそうですね・・・。

id:Mugicha2004

了解しました。みなさま、同じご指摘のようですね。

実際に、この「Raw Input API」を使用したサンプルソースの紹介をしていただけると助かります。

希望条件を実際に実現(左クリックの機器指定)している内容だと、大助かりです。

2004/06/01 10:24:46
id:kuippa No.5

回答回数1030ベストアンサー獲得回数13

ポイント20pt

http://www.vector.co.jp/soft/dl/winnt/prog/se244983.html

USB/PCMCIAデバイス管理用DLL(WindowsNT/2000/XP/Vista / プログラミング)

OSがプログラムに渡してくれる情報の中には、どこからの入力か…というハード的な情報は含まれていません。

そぉいう意味ではまったくもって不可能です。

新しいディバイスドライバを作るという点でもVBならずとも無理なんじゃないだろうかと思います。

…が、100%無理かといわれると、ん〜、なんか手はないかと昼からひっかかってました。

で、考えたのが、「マウスをコントロールするディバイスドライバをコントロールするプログラムを書く。」これならばOSに乗っかったプログラムからもマウスディバイスごとに指示ができるのではないでしょうか。

指定マウスのドライバを一時的に不能にしてしまえば、すくなくとも要件は達することができます。(* ´¬`)。oO(すごいことになりますな)

で、手段としては、掲題のURLのプログラムがドライバにソースがくっついております。

隠しAPIもいいところなので、正直素人プログラマーが手を出していいレベルだとは思えませんが、参考までに可能性として提示します。

id:Mugicha2004

むむむ... いろいろとお考えいただいたようで、すみません。ありがとうございます。かなり厳しいようですね....

ご指摘の手法と、ご指摘のDLLを使って、実現できないか、トライしてみます。しかし、Win系のプログラミングは、全くの素人(ゼロからスタートVB超入門を読んでます)ですので、道のりは遠そうです。

簡単なのかな...と、勝手読みしていたのが、甘かったのですね。

2004/06/01 10:27:29
id:moriss No.6

回答回数11ベストアンサー獲得回数0

ポイント5pt

http://www.personal-media.co.jp/tron/developer/doc/brightv.r4/de...

第1章 デバイスドライバ共通仕様

URLは関係ありません。

ウチは素人ですが、素人考えで、

デバイスドライバーを一から作らなくても、ノートパソコンのデバイスドライバーを改変する事はできないのでしょうか?

売ると問題でしょうが、実験の為なら、、、。

http://www.katch.ne.jp/~morii/xgc/

Xbox コントローラ用デバイス ドライバ

無関係URLその2

ゲーム用のコントローラ(デバイスのある物)をばらして、各ボタンから、配線をマウスにつなぎ、ひとつのコントローラーを複数のマウスに改造する。

ゲームのコントローラーのボタンの設定をすべて左クリックと同じにしたら、、、あ、左クリックだけなら、シングルボタンのマウスにしたら沢山のマウスが、、、

http://www.xlsoft.com/jp/products/windriver/windriver.html

XLsoft Corporation : エクセルソフト デバイスドライバ開発ツール WinDriver - WinDriver

更に無関係URL

何の実験か想像できませんが、画面上の表示がTHMLなら、邪魔スクリプトで右クリックできないようにするのが楽チン

id:Mugicha2004

大変申し訳ありませんが、いずれの内容も、参考にはならないようです。すみません。

2004/06/02 10:41:45
id:miyakoshiyun No.7

回答回数5ベストアンサー獲得回数1

ポイント14pt

英語のページですが、このページにRaw Input APIのサンプルがサンプルが掲載されています。Visual C++でも使えるようです。

id:Mugicha2004

難しそうですが、がんばってコンパイルしてみます。手元には、Visual C# .net 2003があります。これでいけるかな?

2004/06/03 16:13:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません