フォーム以外をクリックするとフォームを閉じるには

解決


よっしー  2009-08-01 07:02:13  No: 142304  IP: 192.*.*.*

すみませんが、また教えて下さい。
フォームのボタンとか×ボタンを押さないで、フォーム以外の何かをクリックした時にフォームを閉じるにはどうすれば良いでしょうか?
フォームは最前面に表示する様にしています。
クリックする場所は、規定出来ません。スタートボタンであったり、
既に表示されているエクスプローラーだったり、タスクバーであったりします。
宜しくお願いします。

編集 削除
よっしー  2009-08-01 08:18:05  No: 142305  IP: 192.*.*.*

すみません。VB6での話です。あちこち調べているのですが、なさそうなので、今の所、タイマーで3秒後に何も操作が無ければ、ユーザーフォームを閉じる様にしようかと、それとマウスムーブを見て3秒閉をキャンセルする。
これだと自分で作れそうです。
もっと簡単に出来る方法があれば教えて下さい。

編集 削除
そふと99  2009-08-01 12:01:39  No: 142306  IP: 192.*.*.*

フォーム以外の何か  のうちマウスクリックイベントがあるものすべての
マウスクリックプロシージャに「フォームを閉じる」コードを追加する。

編集 削除
魔界の仮面弁士  2009-08-01 16:18:49  No: 142307  IP: 192.*.*.*

DirectInput を試してみてください。
別アプリの上でのキーボード/マウス操作も捕らえることができます。

http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse2.html

編集 削除
オショウ  2009-08-01 19:31:18  No: 142308  IP: 192.*.*.*

フォームのLostFocusイベントではダメなんでしょうか?

※  未確認です。

以上。

編集 削除
よっしー  2009-08-02 06:51:56  No: 142309  IP: 192.*.*.*

皆さんご回答有り難う御座います。

他のやりたい事も全て叶えてくれる方法
http://www.geocities.co.jp/SiliconValley/7406/tips/mouse/mouse2.html
がすごいです。これ使いたいのですが、
起動した時から、このフォーム上のmouseと言うボタンを押さないで
マウスの追跡を行う様にするにはどうすれば良いか教えて貰えませんか。
mDIDevM.Acquireがわからないので、フォームのイニシャライズで
Sub chk_Mouse_Clickを一度コールすればいいのか?と思ったりする
私のレベルなのですが、駄目でした。

'マウス情報へのアクセスON/OFF
Private Sub chk_Mouse_Click()
    Select Case chk_Mouse.Value
        Case 0  'OFF
            If Not mDIDevM Is Nothing Then
                'アクセス権の破棄
                mDIDevM.Unacquire
            End If
            
        Case 1  'ON
            If Not mDIDevM Is Nothing Then
                'アクセス権の取得
                mDIDevM.Acquire
            End If
    End Select
End Sub

編集 削除
魔界の仮面弁士  2009-08-02 09:43:58  No: 142310  IP: 192.*.*.*

> 起動した時から、このフォーム上のmouseと言うボタンを押さないで
> マウスの追跡を行う様にするにはどうすれば良いか教えて貰えませんか。

「Mouse チェックボックスが押されたときに実行されるコード」を、
Form の Load イベントの最後に組み込めばよいかと。

> Sub chk_Mouse_Clickを一度コールすればいいのか?
ただ呼ぶだけだと、「Select Case chk_Mouse.Value」の部分の判定を
通過できませんよね。Sub chk_Mouse_Click を呼ぶのではなく、その中にある
「アクセス権を取得するためのコード」の部分だけを呼び出せば OK です。

編集 削除
よっしー  2009-08-02 19:52:46  No: 142311  IP: 192.*.*.*

Private Sub Form_Initialize
で下の物を呼び出す事で出来ました。
大変有り難う御座いました。

       'アクセス権の取得
       mDIDevM.Acquire

編集 削除
よっしー  2009-08-02 21:06:23  No: 142312  IP: 192.*.*.*

解決報告を忘れてました。

編集 削除