2016-08-23 10 views
0

タイトルで述べたように、選択したコントロール(コントロールの位置)にカーソルを移動/シェイクする必要があります。カーソルを選択したコントロールに移動する(x、yポジション)

は、これは私がコントロールの位置を取得何も前に、私は私が私のカーソルを配置したい(btnMinimizeと呼ばれるボタンをは私が話していますコントロールである)、それをやった方法です。これは私がXとYを取得する方法である位置:

[System.Runtime.InteropServices.DllImport("user32.dll")] 
static extern bool SetCursorPos(int x, int y); 

public static void LeftMouseClick(int xpos, int ypos) 
{ 
     SetCursorPos(xpos, ypos); 
     // mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0,0); 
     // mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0); 

} 

私は、私が選択したコントロールの上に私のカーソルがにある位置の後に何をしたいのか、今:

ここ
relativePoint = this.btnMinimize.TransformToAncestor(this).Transform(new Point(0, 0)); 

LeftMouseClick(relativePoint.X, relativePoint.Y); 

LeftMouseClickメソッドの定義がありますマウスを1ピクセル左または右に動かしてみると、psyhiclyはマウスに触れて移動しました。このように、カーソルは私が本当にマウスを動かすまで、選択されたコントロールの上にカーソルを置くことはできません。 。

は、ここでは、2つの画像です:

最初の1私がアプリケーションを実行すると:私は黄色のボックス私btnMinizeで、あなたは、アプリケーションがrunnedされているが、カーソルがそこに示されていない見ることができるようにマークされ

enter image description here を...

YOUは、マウスカーソルをそのHIDDEN図示しない第二の画像上で見ることができるように私は私のマウスPHYSYCALI

enter image description here

をタッチすると

、ここでは別の画像IS ANYMOREコンピュータに接続しているマウスに触れたので、

実際の動きをシミュレートするにはどうすればいいですか?私のカーソルを自分のコントロール上に表示し、少し左または右に動かすだけです。 btnMinimizeを超えて見えるようにします。

みんなありがとう、二日は、私はこの解決策を見つけた、と誰もが答えのいずれかを掲示するので、私は私が「ので、それを削除するのではなく自分の質問に答えるために[OK]をだと思う苦労の後 CHEERS

答えて

0

私は答えを見つけた。

これは私がこの解決方法です:あなたは、私は、コードのいくつかの新しい行を追加してみんな見ることができるように

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); 

public void LeftMouseClick(int xpos, int ypos) 
{ 
     SetCursorPos(xpos, ypos); 

     mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0,0); 
     mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0); 
     mouse_event(MOUSEEVENTF_MOVE, xpos+5, ypos+5, 0, 0); 

     timer.Interval = 1000; // here time in milliseconds 
     timer.Tick += timer_Tick; 
     timer.Start(); 

} 

void timer_Tick(object sender, System.EventArgs e) 
{ 
     SetCursorPos(1500, 28); 
     timer.Stop(); 
} 

を: mouse_event(MOUSEEVENTF_MOVE, xpos+5, ypos+5, 0, 0); //を私は、xとyの上にカーソル5つのピクセルを移動するには、このラインを使用ある動きを登録すると、次に何をしたのか、タイマーを使って1秒後に画面上の特定の位置にカーソルを移動させ、1秒後にカーソルが置かれているので、答えが見つかったように見えます。新しい場所に:SetCursorPos(1500, 28);これは私が探していたものです。

ありがとうとにかく、 乾杯。

関連する問題