C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: マウス左クリックを出力する。


(過去ログ 101 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■60276 / inTopicNo.1)  マウス左クリックを出力する。
  
□投稿者/ とろとろ (1回)-(2011/06/26(Sun) 10:23:01)

分類:[VB.NET/VB2005 以降] 

フォームのボタンをクリックしたイベントを発生させる方法はあちこちにかかれてますが、フォームボタン以外で単にマウスボタンの左クリックを出力させることは可能でしょうか?単に現在マウスのカーソルがいるところで、左クリックしたことになればいいのですが。
引用返信 編集キー/
■60277 / inTopicNo.2)  Re[1]: マウス左クリックを出力する。
□投稿者/ 逆運の覇者 (18回)-(2011/06/26(Sun) 11:07:44)
マウスの位置取得やクリップ(移動範囲の限定)であれば
System.Windows.Form.Cursor名前空間でできますが、
マウスのクリックという動作はアプリが専有できるものではありません。
なので、OSからクリックされた該当のアプリに対し、
クリックイベントが通知される手順になります。

WindowsAPIのSendInput()でできるようです。



http://www.google.co.jp/#hl=ja&q=c%23+win32+マウス

MouseEvent(VB)
http://hp.vector.co.jp/authors/VA017912/winapi/musevent.html

マウスの自動操作(C#)
http://homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268
引用返信 編集キー/
■60278 / inTopicNo.3)  Re[2]: マウス左クリックを出力する。
□投稿者/ επιστημη (2643回)-(2011/06/26(Sun) 11:26:10)
επιστημη さんの Web サイト
こんなんでどうでしょ、な例

/*
form には button1,2,3 texobox1,2,3 timer1 を置いてます
*/

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 1000;
            timer1.Enabled = true;
        }

        private int count1 = 0;
        private int count2 = 0;
        private int count3 = 0;

        private void button1_Click(object sender, System.EventArgs e)
        {
            textBox1.Text = string.Format("押した回数:{0}", ++count1);
        }
 
        private void button2_Click(object sender, System.EventArgs e)
        {
            textBox2.Text = string.Format("押した回数:{0}", ++count2);
        }

        private void button3_Click(object sender, System.EventArgs e)
        {
            textBox3.Text = string.Format("押した回数:{0}", ++count3);
        }

        // 一定時間が経過するごとに
        private void timer1_Tick(object sender, System.EventArgs e)
        {
            // 現在のマウス位置にあるコントロールがボタンなら
            Button btn = GetChildAtPoint(PointToClient(Control.MousePosition)) as Button;
            if (btn != null)
            {
                // それを押す
                btn.PerformClick();
            }
        }

    }
}

引用返信 編集キー/
■60279 / inTopicNo.4)  Re[3]: マウス左クリックを出力する。
□投稿者/ επιστημη (2644回)-(2011/06/26(Sun) 11:28:35)
επιστημη さんの Web サイト
↑うぉっと失礼、VBでしたか。んでも言わんとするところはわかるよね^^;

引用返信 編集キー/
■60280 / inTopicNo.5)  Re[4]: マウス左クリックを出力する。
□投稿者/ みきぬ (973回)-(2011/06/26(Sun) 12:24:57)
要はマウスのクリックをエミュレートしたいんだよね?
それがFormの上なら .NET の範囲でできるけど、常駐アプリにして好きな場所で行いたいなら mouse_event か SendInput を使うことになるんじゃないかな。

# え、透明フォーム?
引用返信 編集キー/
■60282 / inTopicNo.6)  Re[1]: マウス左クリックを出力する。
□投稿者/ shu (808回)-(2011/06/27(Mon) 08:03:04)
No60276 (とろとろ さん) に返信

『ボタンのクリックではPerformClickが使えるけど、Labelではそれっぽいのがあるのかな?』ということですか?
だとしたらClickの処理を別処理にしてClickと同じことをしたいとこでその処理を呼べばよいかと思います。

例)

Private Sub ProcLabel1Click()
    〜
End Sub

Public Sub Label1_Click(〜) handles Label1.Click
    ProcLabel1Click()
End Sub

Public Sub 〜
    '--- Label1.Clickと同じ処理をしたい
    ProcLabel1Click()
End Sub

引用返信 編集キー/
■60291 / inTopicNo.7)  Re[2]: マウス左クリックを出力する。
□投稿者/ とろとろ (2回)-(2011/06/27(Mon) 11:26:03)
皆さんご回答大変有り難う御座います。
色々教えて頂いた事で、試してみましたが、出来そうです。
自分自身の仕様を見直してあった物で詳細作り込みと
なりますので、取りあえずお礼まで
大変有り難う御座いました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -