نمایش نتایج 1 تا 24 از 24

نام تاپیک: انجام فرایند کلیک کردن بدون عمل موس

  1. #1

    Question انجام فرایند کلیک کردن بدون عمل موس

    سوالم اینه که مثلا تو برنامه یه دکمه داریم که می خوایم هر وقت کاربر روی این دکمه کلیک می کنه یه قسمتی از فورم- مثلا مختصات 20:20 - کلیک بشه. حتما هم لزومی نداره که توی اون قسمت از فورم آیتمی قرار داشته باشه، فقط اون جا کلیک بشه. یعنی فرایند کلیک کردن بدون عمل مستقیم موس انجام بشه.

    ممنون میشم اگه کسی جواب بده.


  2. #2

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    کسی نمی تونه کمک کنه؟!؟ یا شاید هم متوجه منظورم نشدید!

  3. #3
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    https://gardesh-gar.ir
    پست
    528

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    سلام فکر کنم رویداد Click واسه همین قرار داده شده!

  4. #4

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط ashkan1234 مشاهده تاپیک
    سلام فکر کنم رویداد Click واسه همین قرار داده شده!
    رویداد کلیک برای وقتی هست که با موس یه جا کلیک کردی و مثلا می خوای اطلاعات مربوط به موقعیت کلیک شده رو به دست بیاری. من می خوام بدون این که با موسم کاری انجام بدم یه محل رو کلیک کنم. شما اگه می تونید با رویداد کلیک همچین کاری بکنید لطفا یه مثال قرار بدین.

  5. #5

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    خب وقتي كليك بشه ميخواد تابع اي اجرا بشه

  6. #6

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط hamid_hr مشاهده تاپیک
    خب وقتي كليك بشه ميخواد تابع اي اجرا بشه
    منظورتون اینه که بدون کلیک موس این عمل انجام نمی شه؟

  7. #7
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    https://gardesh-gar.ir
    پست
    528

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    ببینید نمیدونم اینی که عرض میکنم تا چه حد به پاسختون نزدیکه!
    تو اونت Mouse_Click هر کدی رو که میخوایید بنویسید،مثلا بنده الان گفتم برو دکمه 2 رو روش کلیک کن:
           private void FrmMain_MouseClick(object sender, MouseEventArgs e)
    {
    button2_Click(sender,e);
    }

    بعد تشریف ببرید در قسمت اونت های اون دکمه ای که مد نظرتون هست!مثلا دکمه11
    در قسمت MouseClick (نکته اینکه واردش نشید،یعنی دابل کلیک نکنید)همونجا یه کلیک کنید و اینو بنویسید:
    FrmMain_MouseClick

    حالا وقتی روی دکمه 11 کلیک کنید میره رو دکمه 2 کلیلک میکنه!
    دقیقا وقتی روی فرم هم کلیک کنید همین اتفاق میفته!
    این پاسخ از چیزی بود که بنده متوجه سوالتون شدم و امیدوارم بکارتون بیاد!

  8. #8

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    عزیزم این کار رو که هر کسی بلده. این کاری رو که شما کردی فقط بازخوانیه یه متده که کارش کلیک روی یه دکمه است.
    شما کلا فرض کن فقط یه دکمه تو برنامه هست به نامه OK که شما هر وقت این رو کلیک کردین یه قسمتی از صفحه فورم (مثلا با مختصات 20:20) کلیک بشه. یعنی بدون این که موس شما توی مختصات 20:20 کلیکی انجام داده باشه، اونجا کلیک بشه.

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آذر 1389
    محل زندگی
    ایران
    پست
    1,328

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

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

  10. #10
    کاربر جدید آواتار xvahid
    تاریخ عضویت
    خرداد 1392
    محل زندگی
    استرالیا
    پست
    21

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    این کار با استفاده از کتابخانه user32.dll امکان پذیره.




    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
    }


    اینم منبعش :

    http://www.gamedev.net/topic/321029-...se-click-in-c/

  11. #11

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط programerinfonet مشاهده تاپیک
    دوست عزیز همون کدیو که میخوایی تو یک مختصات خاص کلیک کردی اجرا بشه رو مجدد فراخوانی کن
    امیدوارم تونسته باشم منظورمو بفهمونم
    یعنی چی؟
    من مشکلم همینه دیگه. که کدی بلد نیستم که مثلا بهش یه X و Y بدم، بعد بگم اون نقطه رو کلیک کن.

  12. #12
    کاربر جدید آواتار xvahid
    تاریخ عضویت
    خرداد 1392
    محل زندگی
    استرالیا
    پست
    21

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    منظور ایشون اینه که همون کاری که میخواید در صورت کلیک شدن یک نقطه از فرم انجام بدین در صورت کلیک شدن دکمه انجام بدین. که حرف بی منطقی هم نیست به نظر من. ولی اگر اصرار دارین که همون نقطه حتماً کلیک بشه از کدی که من گذاشتم استفاده کنین.

  13. #13

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط xvahid مشاهده تاپیک
    این کار با استفاده از کتابخانه user32.dll امکان پذیره.



    اینم منبعش :

    http://www.gamedev.net/topic/321029-...se-click-in-c/

    آقا من این رو نفهمیدم. شما خودت یه توضیح میدی؟
    تازه این ارور می ده.

  14. #14
    کاربر جدید آواتار xvahid
    تاریخ عضویت
    خرداد 1392
    محل زندگی
    استرالیا
    پست
    21

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    چه اروری میده؟

  15. #15

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    متد "موس اونت" 5 تا ورودی uint داره ولی x و y از نوع int هستند. می گه ناهماهنگه.

  16. #16

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    اصلا این برنامه دقیقا داره چیکار می کنه؟

  17. #17
    کاربر دائمی
    تاریخ عضویت
    آذر 1389
    محل زندگی
    ایران
    پست
    1,328

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط mosy_m.s مشاهده تاپیک
    یعنی چی؟
    من مشکلم همینه دیگه. که کدی بلد نیستم که مثلا بهش یه X و Y بدم، بعد بگم اون نقطه رو کلیک کن.
    منظور من این بود که کلیک تو یه مختصات خاص برای اینه که یه کدی اجرا بشه دیگه ؟ خوب همون کد رو فراخوانی کن

  18. #18

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط programerinfonet مشاهده تاپیک
    منظور من این بود که کلیک تو یه مختصات خاص برای اینه که یه کدی اجرا بشه دیگه ؟ خوب همون کد رو فراخوانی کن
    نه. این به کارم نمیاد.

  19. #19
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    https://gardesh-gar.ir
    پست
    528

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط mosy_m.s مشاهده تاپیک
    عزیزم این کار رو که هر کسی بلده. این کاری رو که شما کردی فقط بازخوانیه یه متده که کارش کلیک روی یه دکمه است.
    شما کلا فرض کن فقط یه دکمه تو برنامه هست به نامه OK که شما هر وقت این رو کلیک کردین یه قسمتی از صفحه فورم (مثلا با مختصات 20:20) کلیک بشه. یعنی بدون این که موس شما توی مختصات 20:20 کلیکی انجام داده باشه، اونجا کلیک بشه.
    سلام بلادل!
    خسته نباشید!
    خدای ناکرده بنده نخواستم به دانسته های شما توهینی کنم!فقط خواستم اگر مقدور باشه کمکی کرده باشم!
    فکر میکنم چیزی که شما میخوایید دقیقا با کدی که قرار داده بودم یکی هست!!؟؟
    خوب شما بلاخره وقتی عمل کلیک رو انجام میدید باید یکاری انجام بشه دیگه!
    فقط یکم باید خلاقیت بخرج میدادید و موقعیت کرسر رو خودتون بهش میداید!
    حالا با این کد اگه میخوایید میتونید کرسر موس رو هرجا که میخوایید ببرید:
                Cursor.Position = new Point(Cursor.Position.X - 150, Cursor.Position.Y - 150);

    این کرسر موس را بجایی که میخوایید میبره!حالا مثلا من گفتم 150تا بالا و چپ ببر!
    حالا با کد زیر یه شرط گذاشتم که وقتی کرسر توی یه محدوده خاص از فرم بود عمل کلیک روی فرم انجام بشه!
                if (Cursor.Position.X == 50 && Cursor.Position.Y <= 150)
    {
    MessageBox.Show("Test");
    }

    اینم چک میکنه ببینه روی دکمه کلیک چپ شده یا نه؟
    e.Button == MouseButtons.Left

    درنتیجه شما اینجوری بنویس ببین همون چیزیو که میخوایید هست؟
            private void FrmMain_MouseClick(object sender, MouseEventArgs e)
    {
    if (Cursor.Position.X == 50 && Cursor.Position.Y <= 150)
    {
    MessageBox.Show("Test");
    }

    }

    private void btn_MouseClick(object sender, MouseEventArgs e)
    {
    Cursor.Position = new Point(Cursor.Position.X - 150, Cursor.Position.Y - 150);
    if (e.Button == MouseButtons.Left )
    {
    FrmMain_MouseClick(sender,e);
    }
    }

    راستی اگه کد بالا رو بردی تو سی شارپ دیدی عمل نکرد،ناامید نشو!فقط شرطی که توی Form_Close گذاشتم موقعیت کرسر رو به اونجایی که میخوایی تغییر بده!
    موفق باشید!
    آخرین ویرایش به وسیله ashkan1234 : شنبه 25 خرداد 1392 در 11:14 صبح

  20. #20

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

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

  21. #21
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    https://gardesh-gar.ir
    پست
    528

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط mosy_m.s مشاهده تاپیک
    خیلی ممنون ازتون. کلک جالبی بود ولی در هر حال باز هم از کرسر موس استفاده شده. این جوری خیلی غیر عادی می شه که مثلا کاربر یه دکمه ای رو پایین صفحه بزنه بعد یه دفعه کرسر بره بالا.
    خواهش میکنم!
    بلاخره تو اون موقعیت که شما میخوایید کلیک بشه باید یه چیزی باشه دیگه!یه کنترلی یا چیزی!نمیدونم!
    ولی فکرکنم با این حال از this.Location کنترل هم بشه یه استفادههایی کرد!و بازهم از این کلک ها بزنید!
    یا میتونید اونجا که عمل کلیک قراره انجام بشه از یه پنل کنترل استفاده کنید که با فرم یکرنگ و یک سطح بشه!فکر کنم این بهتره!
    راه زیاده فقط باید بدونید دقیقا چه عملی و کجا و چرا باید انجام بشه!
    دیگه چیز دیگه ای الان به ذهنم نمیرسه!
    موفق باشید!

  22. #22

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    میشه این کاری که شما تو پست قبل گفتید رو بکنم بعد دوباره کرسر موس رو بیارم سر جای قبلیش. البته یه خورده غیر اصولیه ولی خوب چاره کار همینه.

  23. #23
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    https://gardesh-gar.ir
    پست
    528

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    همونطور که عرض کردم،بنده طبق سوال شما پاسخ دادم!
    شما اگه نمیخواهید از کرسر موس استفاده بشه از Location فرم استفاده کن!
    یعنی مثلا توی رویداد کلیک فرم شرط بزار اگر Location اون چیزی که میخوای روش کلیک کنی برابر Location ای که الان توش قرار داره یکی شد برو شرط رو اجرا کن!
    مثال:گفتم اگر دکمه1 لاکیشنش در فرم =389 شد،مسیج باکس!
            private void FrmMain_MouseClick(object sender, MouseEventArgs e)
    {

    if (button1.Location.X==389)
    {
    MessageBox.Show("Test");
    }

    }

    private void btn_MouseClick(object sender, MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Left)
    {
    FrmMain_MouseClick(sender, e);
    }
    }

    امیدوارم این بکارتون بیاد!

  24. #24
    کاربر جدید آواتار xvahid
    تاریخ عضویت
    خرداد 1392
    محل زندگی
    استرالیا
    پست
    21

    نقل قول: انجام فرایند کلیک کردن بدون عمل موس

    نقل قول نوشته شده توسط mosy_m.s مشاهده تاپیک
    متد "موس اونت" 5 تا ورودی uint داره ولی x و y از نوع int هستند. می گه ناهماهنگه.
    یه Cast کم داشت. این شکلی بنویس:


    [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);

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

    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()
    {
    InitializeComponent();

    MouseDown += (sender, args) => MessageBox.Show(string.Format("form clicked at({0},{1})", args.X, args.Y));
    }

    public static void LeftMouseClick(int newX, int newY, int previousX, int previousY)
    {
    SetCursorPos(newX, newY);
    mouse_event(MOUSEEVENTF_LEFTDOWN, (uint)newX, (uint)newY, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, (uint)newX, (uint)newY, 0, 0);
    SetCursorPos(previousX, previousY);
    }

    private void button1_Click(object sender, EventArgs e)
    {
    int X = Location.X + 20;
    int Y = Location.Y + 20;
    LeftMouseClick(X, Y, Cursor.Position.X, Cursor.Position.Y);
    }



    بجای X و Y مختصات مورد نظر خودتو بذار. پروژه رو هم برات اتچ کردم.
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: جمعه 30 تیر 1391, 12:53 عصر
  2. پاسخ: 2
    آخرین پست: پنج شنبه 29 تیر 1391, 21:07 عصر
  3. کنترل مختصات موس (((((بدون کلیک کردن)))))؟
    نوشته شده توسط complexcoding در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 02 مهر 1390, 21:30 عصر
  4. سوال: اجرای خودکار و بدون کلیک کردن روی فایل اجرایی
    نوشته شده توسط !mahdi! در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: جمعه 21 فروردین 1388, 12:13 عصر
  5. کلیک کردن با موس
    نوشته شده توسط sohrab o در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: شنبه 23 شهریور 1387, 18:00 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •