[[20181216114542]] 『マウスイベント中にマウス操作を禁止したい』(dum) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マウスイベント中にマウス操作を禁止したい』(dum)

よろしくお願いします。

APIを利用し他アプリケーションを操作している時に、
ユーザーがマウスを触っても反応しないようにしたいのです。
以下のコードにどのような命令を足せば出来るでしょうか?

 Declare Function SetCursorPos Lib "user32" (ByVal x As Long, 
 ByVal y As Long) As Long
 Declare Sub mouse_event Lib "user32" ( _
    ByVal dwFlags As Long, _
    Optional ByVal dx As Long = 0, _
    Optional ByVal dy As Long = 0, _
    Optional ByVal dwDate As Long = 0, _
    Optional ByVal dwExtraInfo As Long = 0)

 Sub マウスで画面の任意の位置をクリック()
    SetCursorPos 100, 35  '左から100ピクセル、上から35ピクセルの位置にカーソルを移動
    mouse_event 2  '左ボタン押下のコード
    mouse_event 4  '左ボタン解放のコード
 End Sub

< 使用 Excel:unknown、使用 OS:unknown >


「他のアプリケーションがマウスイベントをどう解釈するか」を
変更するということなので、そう簡単なことではないのでは?
他のアプリケーションが何かにもよるでしょうし。
また、仮にできたとして、それを再開する必要があると思いますが、
それはどういうことをトリガーにするのでしょうか?
 
あなたのされたいことの本来の目的は何でしょうか。
なぜマウスに反応しないようにしたいのですか。
そのあたりをもう少し説明されれば、
別の方法が提案されるかもしれません。いかがですか?

(γ) 2018/12/16(日) 22:52


あなたが命令すべきはVBAではありません。人間です。

自動操作を始める前にマウスから手を離しなさい!と強く画面にアピールするようにしましょう。

自動操作ならポインタの座標は常にVBAで把握出来るはずですから、たまに手動操作しようとしていないかチェックしても良いと思います。

マウスからの入力を本気で止めたいなら、USBケーブルを抜いて貰うかソフト的にデバイスを無効化するしかありませんが、マウスが一つもないと(たしか)ポインタが消えてしまうので、仮想マウスドライバまで組み込まないといけなくなりそうです。
つまり無理だと考えるべきでしょう。
(123123) 2018/12/17(月) 09:35


ご返信頂いた方々、ありがとうございます。
やはり厳しそうですね。
会社独自のアプリケーションがありまして、
本来手動で数値を打ったりエンターを押したりして一定の操作をするのですが、
打ち込むべきものを最初から全部エクセルに入れて間違いないか確認したらマクロをスタートさせて
マクロでアプリケーションの操作をさせたら誤入力が低減されるかなと思い、
そのマクロ実行中はマウスイベントは動くけど実際のマウスは反応しないようにできたら
他のユーザーも安心に使えるかなと思った次第です。
(dum) 2018/12/17(月) 13:21

Application.Interactive = False

が使えるかもしれません。

注意して使ってください。
戻れないと、困ったことになります。

(チオチモリン) 2018/12/17(月) 20:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.