人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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


●質問者: Mugicha2004
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード: .NET BASIC Cui GUI OS
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● machinenoise
●15ポイント

http://msdn.microsoft.com/library/default.asp?url=/library/en-us...

About Raw Input

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

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

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

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

◎質問者からの返答

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


2 ● aki73ix
●20ポイント

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が必要になり、かなり高度な技術が必ようになります

◎質問者からの返答

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


3 ● cx20
●20ポイント

http://www.netlaputa.ne.jp/~packet/pday/pday200209.html

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

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

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

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

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

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

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

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

http://www-nishio.ise.eng.osaka-u.ac.jp/tresearch/doublemouse/

ダブルマウスシステム

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

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

方法はありそうです。

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

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

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

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

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

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

◎質問者からの返答

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

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

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


4 ● cx20
●14ポイント

http://nagoya.cool.ne.jp/ariel_star/diary_2003_09.html

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

されました』だと。

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

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

だそうだ。」

だそうです。

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

◎質問者からの返答

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

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

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


5 ● くいっぱ
●20ポイント

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

◎質問者からの返答

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

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

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


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ