[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/09/29(Fri) 10:00
投稿者名:シーモア
Eメール:
URL :
タイトル:
マウスカーソルをセカンダリ上でも消したい(ShowCursorではプライマリだけ消える)
マウスカーソルを消したいのですけれども、
ShowCursor
では、プライマリーモニタ上では消えるんですけど
セカンダリモニタ上にいくと表示されてしまいます
セカンダリモニタ上でも消せないでしょうか?
よろしく御願いします

Public Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long

'マウスポインタを非表示にする
Private Sub Command1_Click()
 Dim Ret As Long
   Ret=ShowCursor(0)
End Sub

’マウスポインタを表示する
Private Sub Command2_Click()
 Dim Ret As Long
   Ret=ShowCursor(1)
End Sub

投稿時間:2006/09/29(Fri) 10:23
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: マウスカーソルをセカンダリ上でも消したい(ShowCursorではプライマリだけ消える)
> セカンダリモニタ上にいくと表示されてしまいます
> セカンダリモニタ上でも消せないでしょうか?
だったら、移動しないようにすればいいのでは。

 マウスのイベントを無効にし、マウスカーソルを非表示に設定
 http://hanatyan.sakura.ne.jp/vbhlp/MouseLook.htm

投稿時間:2006/09/29(Fri) 14:38
投稿者名:シーモア
Eメール:
URL :
タイトル:
Re^2: マウスカーソルをセカンダリ上でも消したい(ShowCursorではプライマリだけ消える)
> > セカンダリモニタ上にいくと表示されてしまいます
> > セカンダリモニタ上でも消せないでしょうか?
> だったら、移動しないようにすればいいのでは。
>
>  マウスのイベントを無効にし、マウスカーソルを非表示に設定
>  http://hanatyan.sakura.ne.jp/vbhlp/MouseLook.htm
詳細に記述しますと
@プライマリの画面をクリックする
Aセカンダリの相対位置にマウスを飛ばし(ここでマウスカーソルを消したい)
マウスダウンを発生させて、
理由があってマウスを0.4ミリ秒この位置に停泊した後に
マウスアップを発生させる
Bプライマリへマウスを戻し、マウスカーソルを表示する

以上のことをやりたいのですが、教えていただいたコードを組み合わせて
やり方が間違っているのかどうか、
色々試しましたがうまくいきません...

投稿時間:2006/09/29(Fri) 15:41
投稿者名:シーモア
Eメール:
URL :
タイトル:
Re^2: マウスカーソルをセカンダリ上でも消したい(ShowCursorではプライマリだけ消える)
> > セカンダリモニタ上にいくと表示されてしまいます
> > セカンダリモニタ上でも消せないでしょうか?
> だったら、移動しないようにすればいいのでは。
>
>  マウスのイベントを無効にし、マウスカーソルを非表示に設定
>  http://hanatyan.sakura.ne.jp/vbhlp/MouseLook.htm
どうなるかといいますと、セカンダリーにマウスカーソルが飛んで
カーソルは見えたままで、プライマリにマウスカーソルが戻りません
プライマリにマウスカーソルを戻すのは
DEBUGで一旦とめると成功するので
DoeventsやSleepをいれて色々試しましたができませんでした

                GetClipCursor LookOff
                Call SetCursorPos(lngX, lngY)  'セカンダリー相対位置マウスカーソルを移動
                Dim MoLook As RECT
                MoLook.Left = lngX
                MoLook.Top = lngY
                MoLook.Right = lngX
                MoLook.Bottom = lngY
                sMouseVisible False 'マウスカーソルを非表示
                ClipCursor MoLook 'マウスカーソルをロック
                Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)  'マウスダウン
                DoEvents
                Dim lngTickCount
                lngTickCount = GetTickCount + 400
                Do   '0.4m秒待機
                    DoEvents
                    If lngTickCount < GetTickCount Then
                       Exit Do
                    End If
                Loop
                Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 'マウスアップ
                ClipCursor LookOff   'マウスカーソルのロック解除
                sMouseVisible True  'マウスカーソルを表示
                Call SetCursorPos(getP.x, getP.y)   'マウスカーソルを元の位置(プライマリ)へ

投稿時間:2006/09/29(Fri) 16:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: マウスカーソルをセカンダリ上でも消したい(ShowCursorではプライマリだけ消える)
同じような環境が準備できませんので、試せませんが、マウスカーソルの表示カウントは
どのようになっていますか?

投稿時間:2006/09/29(Fri) 16:11
投稿者名:シーモア
Eメール:
URL :
タイトル:
Re^2: マウスカーソルをセカンダリ上でも消したい(ShowCursorではプライマリだけ消える)
> > セカンダリモニタ上にいくと表示されてしまいます
> > セカンダリモニタ上でも消せないでしょうか?
> だったら、移動しないようにすればいいのでは。
>
>  マウスのイベントを無効にし、マウスカーソルを非表示に設定
>  http://hanatyan.sakura.ne.jp/vbhlp/MouseLook.htm
解決ではないですが、以下の方法で目たないようにしようと思います
花ちゃんさんありがとうございました

@プライマリからセカンダリにいってマウスダウンを発生させる
A直後にプライマリに戻る
B0.4MM秒待機
Cプライマリからセカンダリにいってマウスアップを発生させる
Dプライマリに戻る

                Call SetCursorPos(lngX, lngY)  'セカンダリー相対位置マウスカーソルを移動
                Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)  'マウスダウン
                Call SetCursorPos(getP.x, getP.y)   'マウスカーソルを元の位置(プライマリ)へ
                DoEvents
                Dim lngTickCount
                lngTickCount = GetTickCount + 400
                Do   '0.4m秒待機
                    DoEvents
                    If lngTickCount < GetTickCount Then
                       Exit Do
                    End If
                Loop
                Call SetCursorPos(lngX, lngY)  'セカンダリー相対位置マウスカーソルを移動
                Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 'マウスアップ
                Call SetCursorPos(getP.x, getP.y)   'マウスカーソルを元の位置(プライマリ)へ