PDA

View Full Version : سوال: کلیک خودکار موس



aradrobo
یک شنبه 18 تیر 1391, 01:12 صبح
سلام . خواهشا به من کمک کنید . از شما تشکر می کنم

می خواهم یک برنامه بسازم که موس عمل کلیک را انجام دهد .

یعنی وقتی روی باتن کلیک کردم ، برنامه بیاد روی مای کامپیوتر و یا هر چیزی که م می خواهم عمل کلیک را انجام دهد .

یا برنامه به این صورت باشد که یک فرم کوچک که درونش فقط یک باتن قرار دارد را بسازم . وقتی باتن را کلیک کردم ، هر چیزی که زیر فرم هست کلیک انجام شود .

امیدوارم به من کمک نمایید . با تشکر

ahmadreza517
یک شنبه 18 تیر 1391, 08:27 صبح
به نام تنها برنامه نویس هستی
سلام ,

اینو ببینید.

aradrobo
یک شنبه 18 تیر 1391, 12:55 عصر
به نام تنها برنامه نویس هستی
سلام ,

اینو ببینید.

منم دقیقا همچین چیزی ساختم . ولی اگه دقت کرده باشین واسه وارد کردن متن اگر داخل باکس کلیکی انجام نشه و حرفی تایپ نشه ، کد کپچا نمایش داده نمیشود . لذا واسه همین می خواستم بدونم چه کنیم ؟

aradrobo
سه شنبه 10 مرداد 1391, 17:18 عصر
سلام . خواهشا به من کمک کنید . از شما تشکر می کنم

می خواهم یک برنامه بسازم که موس عمل کلیک را انجام دهد .

یعنی وقتی روی باتن کلیک کردم ، برنامه بیاد روی مای کامپیوتر و یا هر چیزی که م می خواهم عمل کلیک را انجام دهد .

یا برنامه به این صورت باشد که یک فرم کوچک که درونش فقط یک باتن قرار دارد را بسازم . وقتی باتن را کلیک کردم ، هر چیزی که زیر فرم هست کلیک انجام شود .

امیدوارم به من کمک نمایید . با تشکر

لطفاً از دوستانی که اطلاع دارند به من کمک نمایند .

bita_naz
سه شنبه 10 مرداد 1391, 20:38 عصر
این کار رو باید با استفاده از dll های ویندوز انجام دهید :

ابتدا namespace زیر رو اضاف کنید
using System.Runtime.InteropServices;
بعد dll ها و تعاریف مورد نیاز رو import کنید
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);

[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

حالا تابع جهت کلیک مجازی موس
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
بعد در رویداد کلیک باتن :
Cursor.Position = new Point(X, Y);
DoMouseClick();

موفق باشید

ali_habibi1384
سه شنبه 10 مرداد 1391, 20:55 عصر
شبيه سازي عمليات موس:


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class Form1 : Form
{
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

public Form1()
{
}

public void DoMouseClick()
{
//Call the imported function with the cursor's current position
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}

//...other code needed for the application
}

aradrobo
چهارشنبه 11 مرداد 1391, 12:14 عصر
این کار رو باید با استفاده از dll های ویندوز انجام دهید :

ابتدا namespace زیر رو اضاف کنید
using System.Runtime.InteropServices;
بعد dll ها و تعاریف مورد نیاز رو import کنید
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);

[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

حالا تابع جهت کلیک مجازی موس
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
بعد در رویداد کلیک باتن :
Cursor.Position = new Point(X, Y);
DoMouseClick();

موفق باشید

سلام . این برنامه ای که شما به من دادین رو من عیناً وارد کردم ولی ارور می دهد . برنامه رو برایتان ارسال می کنم شما مشاهده فرمایید :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Mouse_Click
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);

[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}

private void button1_Click(object sender, EventArgs e)
{
Cursor.Position = new Point(X, Y);
DoMouseClick();
}

public int X { get; set; }

public int Y { get; set; }
}
}

aradrobo
چهارشنبه 11 مرداد 1391, 12:19 عصر
شبيه سازي عمليات موس:


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class Form1 : Form
{
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

public Form1()
{
}

public void DoMouseClick()
{
//Call the imported function with the cursor's current position
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}

//...other code needed for the application
}



public void DoMouseClick()
{
//Call the imported function with the cursor's current position
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}

private void mouse_event(int p, int X, int Y, int p_2, int p_3)
{
throw new NotImplementedException();
}

این قسمت رو خودش می سازد . و دیگر اینکه رویداد باتن را چی بنویسم ؟

aradrobo
چهارشنبه 11 مرداد 1391, 12:30 عصر
این کار رو باید با استفاده از dll های ویندوز انجام دهید :

ابتدا namespace زیر رو اضاف کنید
using System.Runtime.InteropServices;
بعد dll ها و تعاریف مورد نیاز رو import کنید
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);

[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

حالا تابع جهت کلیک مجازی موس
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
بعد در رویداد کلیک باتن :
Cursor.Position = new Point(X, Y);
DoMouseClick();

موفق باشید

وقتی روی باتن کلیک می کنم ارور زیر را می دهد .

aradrobo
چهارشنبه 11 مرداد 1391, 15:40 عصر
وقتی روی باتن کلیک می کنم ارور زیر را می دهد .

لطفاً یکی از دوستان به من کمک نماید . با تشکر

bita_naz
چهارشنبه 11 مرداد 1391, 19:06 عصر
X و Y رو مقدار دهی نکردید. در حقیقت کلیک مجازی در هر نقطه ای از صفحه نمایش که شما بر مبنای Resolution مانیتور مشخص میکنید انجام میشود . شاید توی ارسال مقادیر مشکل دارید .

aradrobo
پنج شنبه 12 مرداد 1391, 10:53 صبح
X و Y رو مقدار دهی نکردید. در حقیقت کلیک مجازی در هر نقطه ای از صفحه نمایش که شما بر مبنای Resolution مانیتور مشخص میکنید انجام میشود . شاید توی ارسال مقادیر مشکل دارید .

چگونه این مقدار دهی را انجام دهم ؟ لطفاً راهنمایی فرمایید . با تشکر

bita_naz
پنج شنبه 12 مرداد 1391, 19:23 عصر
مقداردهی مکان کرسر . وقتی مکان کرسر مشخص شد حالا با تابع DoMouseClick() کلیک انجام میشود.
مثلا میخاهیم در مکان (150,200) مانیتور کلیک کنید :
Cursor.Position = new Point(150, 200);
DoMouseClick();

aradrobo
شنبه 14 مرداد 1391, 11:02 صبح
مقداردهی مکان کرسر . وقتی مکان کرسر مشخص شد حالا با تابع DoMouseClick() کلیک انجام میشود.
مثلا میخاهیم در مکان (150,200) مانیتور کلیک کنید :
Cursor.Position = new Point(150, 200);
DoMouseClick();



مگر در تابع زیر این مقدار دهی انجام نمی شود ؟
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
آخه من نمی خواهم دستی مقدار دهی کنم . می خواهم هرجا که ماوس هستش ، خودش مختصات رو بگیره و نه اینکه من دستی بهش مختصات بدم .
لطفاً اگر امکان دارد نمونه سورس را برایم ارسال نمایید . با تشکر

bita_naz
شنبه 14 مرداد 1391, 22:25 عصر
اگر بگی قصد انجام چه کاری رو داری بهتر میتونم راهنماییت کنم.

aradrobo
شنبه 14 مرداد 1391, 23:23 عصر
اگر بگی قصد انجام چه کاری رو داری بهتر میتونم راهنماییت کنم.

می خواهم نرم افزاری بسازم که به صورت خودکار عملیات کلیک را انجام بدهد .

aradrobo
پنج شنبه 26 مرداد 1391, 20:27 عصر
لطفاً از دوستان اگر کسی اطلاعاتی در این زمینه دارند به من کمک کنید .