PDA

View Full Version : نوشتن کد برای کلیک در همه محیط ها



amindiary
سه شنبه 27 فروردین 1387, 10:49 صبح
سلام
من چند وقت قبل یه همچین سوالی پرسیدم اما جواب خوبی نگرفتم، الان یک نمونه برنامه پیدا کردم که منظورم رو میرسونه! برنامه نقاشی کشیدن توی کلوب که یه عکس bitmap میگیره و با کلیک کردن و حرکت ماوس نقاشی رو میکشه!
من من خوام این حرکت ماوس و کلیک رو داشته باشم با سی شارپ! اگر کسی می تونه بگه از چه توابعی از API باید استفاده کرد!
برنامه هم پیوست کردم.

amindiary
سه شنبه 27 فروردین 1387, 11:08 صبح
درضمن اینها کاری که من میخوام رو انجام نمیده!! یعنی رو چیزی که زیرش هست (مثلا دکمه استارت ویندوز) کلیک اعمال نمیشه:

private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;

[DllImport("user32.dll")]
private static extern void mouse_event(
UInt32 dwFlags, // motion and click options
UInt32 dx, // horizontal position or change
UInt32 dy, // vertical position or change
UInt32 dwData, // wheel movement
IntPtr dwExtraInfo // application-defined information
);

public static void SendClick(Point location)
{
Cursor.Position = location;
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new System.IntPtr());
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new System.IntPtr());
}

private void button1_Click(object sender, EventArgs e)
{
SendClick(new Point(100, 100));
}

amindiary
سه شنبه 27 فروردین 1387, 11:18 صبح
تابعی که بالا نوشتم تو محیط فرم برنامه جواب میده اما بیرونش نه!:عصبانی++::عصبانی++::عصبانی ++::عصبانی++::عصبانی++:

Amir Oveisi
سه شنبه 27 فروردین 1387, 14:34 عصر
احتیاجی به استفاده از API نیست. با handle کردن event های MouseMove فرم و چک کردن اینکه button موس کلیک شده یا نه میتونین این کار رو انجام بدین.

http://barnamenevis.org/forum/showpost.php?p=321431&postcount=2

amindiary
چهارشنبه 28 فروردین 1387, 20:44 عصر
من یه چیزی مثل ماکرو فرض کنید میخوام بسازم! البته نه دقیقا!:ناراحت: