PDA

View Full Version : سوال: کشیدن موس به یک نقطه و عمل کلیک...



samadblaj
چهارشنبه 15 آذر 1391, 23:38 عصر
سلام

چطور میتونم وقتی form مم load شد مقیاس فرمم رو نسبت به یک شی تغییر و توی نقطه خاص کلیک کنم؟

ordebehesht
چهارشنبه 15 آذر 1391, 23:44 عصر
میشه بیشتر و واضحتر توضیح بدی

samadblaj
چهارشنبه 15 آذر 1391, 23:48 عصر
سلام دوست عزیز نمونه کد زیر رو ببینید موس رو از نقطه قرار گرفته به نقطه دیگه ای میبره...
ولی من میخوام حرکت این مقیاس از صفر webBrowser باشه...

this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point( webBrowser1.Location.X + 100, webBrowser1.Location.Y + 100);

میخام وقتی فرمم load شد فرمم تو هر اندازه ای بود موس توی webBrowser به نقطه خاص حرکت کنه و یک کلیک کند...

ordebehesht
چهارشنبه 15 آذر 1391, 23:53 عصر
یعنی چی با لود فرم موس حرکت کنه یا نقطه خاصی رو نشون بده!!!!!!!!!!!!!!!!!!!؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟/
اما میتونی رویداد کلیک رو به صورت متد استفاهده مکنی

samadblaj
پنج شنبه 16 آذر 1391, 00:02 صبح
به هر شکل : میخوام توسط کد بالا به نقطه خاص برم و کلیک کنم (نقطه شروع از webbrowser باشه)...

mousa1992
پنج شنبه 16 آذر 1391, 00:37 صبح
سلام همشهری
مگه با همین کدی که نوشتی cursor به محل مورد نظرت از webbrowser نمیره ؟ :متفکر: با این کد باید با لود شدن محل ) 100 و 100 ( از webbroser باشه

samadblaj
پنج شنبه 16 آذر 1391, 00:46 صبح
سلام همشهری
مگه با همین کدی که نوشتی cursor به محل مورد نظرت از webbrowser نمیره ؟ با این کد باید با لود شدن محل ) 100 و 100 ( از webbroser باشه

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

و چطور میتونم وقتی بهنقطه خاص فرستاده شد کلیک کنم ؟

mousa1992
پنج شنبه 16 آذر 1391, 00:53 صبح
در صورتی که فرم جابجا بشه از مسیر فعلی خارج مشه ... مشکل داره... طبیعیه عزیز
توی رویداد Move بنویس کدتو مشکلش برطرف میشه



و چطور میتونم وقتی بهنقطه خاص فرستاده شد کلیک کنم ؟ باید از توابع api استفاده کنی تو همین سایت هست کدها ( فک کنم تو سیستم داشته باشم plz w8 سرچ میکنم )

mousa1992
پنج شنبه 16 آذر 1391, 01:04 صبح
نقل قول: کلیک خودکار موس


این کار رو باید با استفاده از dll های ویندوز انجام دهید :

ابتدا namespace زیر رو اضاف کنید
1
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.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
}

samadblaj
پنج شنبه 16 آذر 1391, 01:05 صبح
ممنونم بایت راهنماییت سوال اولم اینجور حل نمیشه نمیتونم move رو ببینم فرم hide اجرا خواهد شد؟

mousa1992
پنج شنبه 16 آذر 1391, 01:18 صبح
میشه دقیق تر توضیح بدی چه اتفاقاتی قراره بیافته ؟
خب توی لود فرم کرسر به محل مورد نظرت میره و کلیک انجام میده و فرم هم مخفی هست و گفتی با تغییر محل مکان کرسر بهم میخوره ! راستش دقیق متوجه نشدم چی میخواد بشه

samadblaj
پنج شنبه 16 آذر 1391, 01:22 صبح
Mousa ی عزیز کلیکم که راه افتاد از کد اولی استفاده کردم مشکلی نداشت تا ببینم میتونم مقیاس رو به درستی به دست بیارم چون هر بار که میخوام توی تغییر سایز پنجره در webbrowser در یک نقطه خاص بره مشکل میده...
یا اصلا نشد از صفر web تا n موس رو ببرم...

mousa1992
پنج شنبه 16 آذر 1391, 01:28 صبح
ممنون از اطلاعت در مورد کلیک موس
الان متوجه منظورتون شدم _ مشکل اینجاست که با تغییر سایز معلوم نیست صفحه ی اینترنتی شما تا چه حدی باشه اسکرول میشه و یا اینکه مکان کنترل مورد نظرتون بالا پایین ممکنه بشه با کوچک و بزرگ شدن
تغییر مکانو فک کنم هم به صورت عرضی و هم طولی دارید

samadblaj
پنج شنبه 16 آذر 1391, 01:32 صبح
اصلا اینجوریم که نباشه فکر کنیم یه picturebox روی فرم داریم میخوایم توی سایز Normal فرم ، بریم یه نقطعه اش عمل نمیکنه... :متفکر:
به نظرم استفاده از کد زیر باید یک مقیاس باید توی webbrowser باشه که هر دو هم X هم Y خارج هستش...

this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(webBrowser1.Location.X-10, webBrowser1.Location.Y+10);

mousa1992
پنج شنبه 16 آذر 1391, 01:55 صبح
دوست عزیز من رویداد mouseClick برا فرم نوشتم و ازش خواستم مختصات محل کلیک شده رو بده و با زدن button دستور ارسال کلیک به مختصاتی از صفحه رو ارسال کردم ولی اتفاقی نمیافتاد تا اینکه موس از button خارج میکردم اون موقع محل موس رو نشونم میداد !!!

samadblaj
پنج شنبه 16 آذر 1391, 11:12 صبح
دوست عزیز من رویداد mouseClick برا فرم نوشتم و ازش خواستم مختصات محل کلیک شده رو بده و با زدن button دستور ارسال کلیک به مختصاتی از صفحه رو ارسال کردم ولی اتفاقی نمیافتاد تا اینکه موس از button خارج میکردم اون موقع محل موس رو نشونم میداد !!!

من متوجه توضیحاتتون نشدم الان اگه بخوایم بریم یه نقطه از WebBrowser باید چیکار کنیم؟