PDA

View Full Version : عملیات بر روی تغیر شکل نشانگر ماوس



fortex
یک شنبه 25 فروردین 1392, 09:41 صبح
سلام دوستان
یه کد میخاستم که اگر نشانگر موس از حالت عادی به فینگر تغیر کرد مقدار متغیری که از پیش تعریف کردم از صفر تبدیل بشه به یک
از همتون صمیمانه تشکر میکنم

fortex
دوشنبه 26 فروردین 1392, 09:10 صبح
از عزیزان کسی نمیتونه کمک کنه؟

mehrdad1991h
دوشنبه 26 فروردین 1392, 11:18 صبح
از عزیزان کسی نمیتونه کمک کنه؟

بفرمایید
this.Cursor = new Cursor("adrese shekle jadid");

fortex
دوشنبه 26 فروردین 1392, 11:51 صبح
بفرمایید
this.Cursor = new Cursor("adrese shekle jadid");
دوست عزیز میشه یکم در موردش توضیح بدید؟
من یه کد دارم :
[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);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
public const int MOUSEEVENTF_RIGHTDOWN = 0x08;
public const int MOUSEEVENTF_RIGHTUP = 0x10;

this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(970, 370);
Cursor.Clip = new Rectangle(this.Location, this.Size);
uint X = (uint)Cursor.Position.X;
uint Y = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
int C;
for (C = 970; C > 900; C--)
{
this.Cursor = new Cursor(
Cursor.Position = new Point(C, 300);

Cursor.Clip = new Rectangle(this.Location, this.Size);
uint X1 = (uint)Cursor.Position.X;
uint Y1 = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X1, Y1, 0, 0);

این کد میاد نشانگر موس رو به نقطه970 منتقل میکنه و ار اونجا با حلقه for از نقطه 970 در عرض به نقطه 900 در عرض حرکت میکنه .یکی یکی .حالا از دوستان انجمن یه کمک میخاستم که یه کد بهم پیشنهاد کنن که شرطی توی حلقه بگدارم که نقطه ای که الان اشاره گر موس روش وایساده به عوض شده یا نه. مثلا تیدیل شده به فینگر یا نه.

mehrdad1991h
دوشنبه 26 فروردین 1392, 14:45 عصر
یعنی در واقع شما میخوای فقط بفهمی نشانگر موس تغییر شکل میدهد تو این مسیری که داره حرکت میکنه یا خیر ؟ همینه ؟
(در این صورت صبر کن دیگران نظر دهند من نمیدونم !)

یا اینکه میخوای خودت نشانگر موس را شکلش را عوض کنی ؟ اگر میخوای خودت شکلش را عوض کنی که با همون کدی که دادم باید این کار را انجام بدی
یه نمونه از رو کرسر میسازی و بعد هم ازش استفاده میکنی دیگه !!! myCursor.cur هم همون شکل نشانه گر جدیدی هست که میخوای نمایشش بدی باید یه جا داشته باشیش فایلش را و اینجا ادرسش را بدی تا بخونتش !!!
Cursor myCursor = new Cursor("myCursor.cur");
myControl.Cursor = myCursor;
این هم یه نمونه سورس با توضیحات کامل و یه چیزی بیش زا اونی که شما لازم داری
http://tech.pro/tutorial/732/csharp-tutorial-how-to-use-custom-cursors

یه نکته هم بگم ( چرا میخوای ببینی موس تغیر شکل میدهد یا نه ؟ اگر بیان کنی شاید راه ساده تری پیدا شد و تونستی استفاده کنی)
موفق باشید

fortex
دوشنبه 26 فروردین 1392, 14:54 عصر
سلام دوست محترم بله من میخام بدونم نشانگر موس تغییر شکل میدهد تو این مسیری که داره حرکت میکنه یا خیر.
میخام یه برنامه سرچ درست کنم که توی یه محیط کاری دنبال اشکال و لینک ها بگرده

massar
دوشنبه 26 فروردین 1392, 15:32 عصر
سلام اینجا (http://www.codeproject.com/Articles/12850/Capturing-the-Desktop-Screen-with-the-Mouse-Cursor) نوشته چطوری عکس کرسر رو بگیری منم یه نمونه نوشتم باهاش

fortex
دوشنبه 26 فروردین 1392, 15:52 عصر
سلام اینجا (http://www.codeproject.com/Articles/12850/Capturing-the-Desktop-Screen-with-the-Mouse-Cursor) نوشته چطوری عکس کرسر رو بگیری منم یه نمونه نوشتم باهاش
ممنون دوست عزیز
حالا چطور میتونم روی این عکس مانور بدم؟
مثلا بگم اگه عکس شد finger مثلا یه پیغام نمایش بده

massar
دوشنبه 26 فروردین 1392, 16:17 عصر
ساده ترین راه اینه که تصاویرو پیکسل به پیکسل مقایسه کنید

fortex
دوشنبه 26 فروردین 1392, 16:19 عصر
ساده ترین راه اینه که تصاویرو پیکسل به پیکسل مقایسه کنید
امکانش هست با یه مثال بهم توضیح بدبد؟

massar
دوشنبه 26 فروردین 1392, 16:24 عصر
براتون ایمیل کردم

fortex
دوشنبه 26 فروردین 1392, 19:10 عصر
ممنون اما این برنامه هم جواب نداد

mehrdad1991h
سه شنبه 27 فروردین 1392, 09:19 صبح
سلام دوست محترم بله من میخام بدونم نشانگر موس تغییر شکل میدهد تو این مسیری که داره حرکت میکنه یا خیر.
میخام یه برنامه سرچ درست کنم که توی یه محیط کاری دنبال اشکال و لینک ها بگرده

این مسیری که موس داره طی میکنه
در برنامه ی خودت هست یا هر چیزی میتونه باشه ؟
خوب برای به دست اوردن لینک ها و شکل ا اگر در برنامه خودت باشه و اگر مثلا خواستی لینک های یک صفحه ی وب مثلا نتیجه ی جستجوی تصاویر در گوگل را به دست بیاری خیلی راحت تر میتونی اقدام کنی و هم تصاویرش را جدا کنی و هم لینک هاش را دیگه نیازی به این کارا هم که گفتید نیست این روشی که دارید میرید خیلی عجیب است !!!
اگر کاری که من گفتم یعنی به دست اوردن لینک ها و تصاویر صفحه ی وب (یا حالا هر صفحه ی دیگه ای که این حالت راداشته باشه) مانند نتیجه ی جستجوی تصاویر در گوگل
اگر میخوای این کار را انجام بدی با regex ها و خیلی چیزای دیگه خیلی راحت تر و سریع تر میتونی این کار را انجام بدی

اگر منظورت همینی بود که من گفتم بگو تا برات نمونه بزارم در غیر این صورت یکمی بیشتر توضیح بده
اینی که شما میگی اگر مثلا موس فینگر شد فلان کار را بکنه ( کمی یه جوری است :) ) چون شما ممکنه نهایتا خودت بتونی به دست بیاری که موس شکلش عوض شده یا نه
در این صورت با این کاری که میخوای بکنی یه مشکل هم داری اینه که اگر زبانه ای در سر راه موس قرار بگیره و موس به شکل فلش هم در بیاد یا.... شکلش عوض شده ولی مورد دلخواه شما نبوده !!!! و.....

ولی این که بتونی بفهمی چه شکلی هست الان نیاز به این داره که بتونی با سیستم عامل ارتباط برقرار کنی که باهاش به سیستم عامل متصل بشی و سیستم عامل جوابت را بدهد مثلا ادرس تصویر اصلی را بهت بگه یا بگه عوض شد یا .......
که برای چیزی که میخوای فکر میکنم میتونی از Win32Stuff استفاده کنی و این کار را انجام بدهی
این هم کد :

static Bitmap CaptureCursor(ref int x, ref int y)
{
Bitmap bmp;
IntPtr hicon;
Win32Stuff.CURSORINFO ci = new Win32Stuff.CURSORINFO();
Win32Stuff.ICONINFO icInfo;
ci.cbSize = Marshal.SizeOf(ci);
if (Win32Stuff.GetCursorInfo(out ci))
{
if (ci.flags == Win32Stuff.CURSOR_SHOWING)
{
hicon = Win32Stuff.CopyIcon(ci.hCursor);
if (Win32Stuff.GetIconInfo(hicon, out icInfo))
{
x = ci.ptScreenPos.x - ((int)icInfo.xHotspot);
y = ci.ptScreenPos.y - ((int)icInfo.yHotspot);

Icon ic = Icon.FromHandle(hicon);
bmp = ic.ToBitmap();
return bmp;
}
}
}

return null;
}


لینک با توضیحات لازم : (http://stackoverflow.com/questions/918990/c-sharp-capturing-the-mouse-cursor-image)( و همچنین سورس کد فوق)

http://stackoverflow.com/questions/918990/c-sharp-capturing-the-mouse-cursor-image
امیدوارم به کارتون بیاد
موفق باشید