PDA

View Full Version : سوال: چگونه می توان مختصات mouse را بدست آوریم ؟



aradrobo
یک شنبه 02 تیر 1392, 17:34 عصر
می خواهم برنامه ای بسازم که مختصات ماوس را برایم بدست آورد . (x,y)

این مختصات در 2 تکست باکس باید نمایش داده شود . یکی مربوط به x و دیگری مربوط به y .

زمانی این مختصات در تکست باکس ها نمایش داده شود که کاربر ماوس را به نقطه مورد نظر برده و یک کلیک انجام دهد . یعنی تا زمانی که کلیک انجام نشد ، مختصات را نمایش ندهد . در ضمن خارج از فرم بتواند مختصات را پیدا کند و فقط مختص درون فرم نباشد . لطفاً راهنمایی فرمایید با تشکر

arash691
یک شنبه 02 تیر 1392, 17:40 عصر
می خواهم برنامه ای بسازم که مختصات ماوس را برایم بدست آورد . (x,y)

این مختصات در 2 تکست باکس باید نمایش داده شود . یکی مربوط به x و دیگری مربوط به y .

زمانی این مختصات در تکست باکس ها نمایش داده شود که کاربر ماوس را به نقطه مورد نظر برده و یک کلیک انجام دهد . یعنی تا زمانی که کلیک انجام نشد ، مختصات را نمایش ندهد . در ضمن خارج از فرم بتواند مختصات را پیدا کند و فقط مختص درون فرم نباشد . لطفاً راهنمایی فرمایید با تشکر

بیا داداش ...




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

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
textBox1.Text = e.X.ToString();
textBox2.Text = e.Y.ToString();
}
}
}

aradrobo
یک شنبه 02 تیر 1392, 17:53 عصر
بیا داداش ...




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

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
textBox1.Text = e.X.ToString();
textBox2.Text = e.Y.ToString();
}
}
}

دوست عزیز ، گفتم که خارج از فرم بتواند مختصات را پیدا کند ، الان با این روش شما باید حتماً درون فرم کلیک انجام دهم تا مختصات را به من بگوید ، آن هم مختصات داخل فرمی می باشد . می خواهم مختصات بر اساس صفحه دسکتاپ باشد.

aradrobo
یک شنبه 02 تیر 1392, 18:05 عصر
کد زیر فقط دورن فرم عمل می کنم و خارج از فرم مختصات را نمایش نمی دهد.
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
txtX.Text=MousePosition.X.ToString();
}

raza12
یک شنبه 02 تیر 1392, 18:45 عصر
حالکن

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
this.Text = e.X +" = "+ e.Y;
}

Veteran
یک شنبه 02 تیر 1392, 18:53 عصر
باید از API های ویندوز استفاده کنید

UfnCod3r
یک شنبه 02 تیر 1392, 18:55 عصر
[DllImport("user32.dll", EntryPoint="GetCaretPos"]
static extern bool GetCaretPos (ref Point lpPoint);

darknes666
یک شنبه 02 تیر 1392, 19:03 عصر
هر کدوم از لینک های زیر ممکنه بتونه کمکت کنه.

http://www.cplusplus.com/forum/windows/64786/

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648390%28v=vs.85%29.aspx


http://stackoverflow.com/questions/6423729/get-current-cursor-position

aradrobo
یک شنبه 02 تیر 1392, 20:10 عصر
حالکن

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
this.Text = e.X +" = "+ e.Y;
}


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

aradrobo
یک شنبه 02 تیر 1392, 20:10 عصر
باید از API های ویندوز استفاده کنید

چگونه ؟ اگه می دونستم که سوال نمی پرسدیم . لطفاً راهنمایی کنید.

aradrobo
یک شنبه 02 تیر 1392, 20:11 عصر
[DllImport("user32.dll", EntryPoint="GetCaretPos"]
static extern bool GetCaretPos (ref Point lpPoint);


لطفاً توضیح دهید که چگونه و در کجا استفاده کنم ؟

aradrobo
یک شنبه 02 تیر 1392, 20:15 عصر
هر کدوم از لینک های زیر ممکنه بتونه کمکت کنه.

http://www.cplusplus.com/forum/windows/64786/

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648390%28v=vs.85%29.aspx


http://stackoverflow.com/questions/6423729/get-current-cursor-position

ممنون ، ولی این ها واسه سی شارپ نبودند.

kazem235
دوشنبه 03 تیر 1392, 02:37 صبح
ممنون ، ولی این ها واسه سی شارپ نبودند.
از اینجا هم میتونی کمک بگیری.
http://www.cppblog.com/skybook/archive/2008/12/02/68359.html

aradrobo
دوشنبه 03 تیر 1392, 08:19 صبح
از اینجا هم میتونی کمک بگیری.
http://www.cppblog.com/skybook/archive/2008/12/02/68359.html

این که کلاً خطا داره :
[DllImport("user32")]
public static extern bool GetCaretPos(ref System.Drawing.Point lpPoint);

private void GetCurRowNo()
{
try
{
Point P = new Point(0);
GetCaretPos(ref P);
int Pos = txtCmdInput.GetCharIndexFromPosition(P);
m_iCurRowNo = txtCmdInput.GetLineFromCharIndex(Pos);

}
catch
{
m_iCurRowNo = -1;
}
}

لطفاً قبل از ارسال خودتان تست کنید ببینید کار می کنه ؟

Salar Ashgi
دوشنبه 03 تیر 1392, 13:35 عصر
مطمئنا باید از API استفاده کنید .

یه برنامه واسش نوشتم ./

لینک پست (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1801140&viewfull=1#post1801140)

aradrobo
سه شنبه 04 تیر 1392, 15:42 عصر
مطمئنا باید از API استفاده کنید .

یه برنامه واسش نوشتم ./

لینک پست (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1801140&viewfull=1#post1801140)

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

tooraj_azizi_1035
سه شنبه 04 تیر 1392, 15:53 عصر
با استفاده از یک تایمر که لحظه به لحظه مختصات رو چک می کنه:
public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern bool GetCursorPos(ref Point lpPoint);


public Form1()
{
InitializeComponent();
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
Point pt = new Point();
GetCursorPos(ref pt);
textBox1.Text = pt.X.ToString();
textBox2.Text = pt.Y.ToString();
}


}

CsharpNevisi
سه شنبه 04 تیر 1392, 16:17 عصر
[;CSHARP]label1.Text = Cursor.Position.X.ToString()
label2.Text = Cursor.Position.X.ToString();[/CSHARP]
میتونی اینو تو یه تایمر یا یه ترد بنویسی که نیازی به کلیکم نداشته باشه

CsharpNevisi
سه شنبه 04 تیر 1392, 16:18 عصر
label1.Text = Cursor.Position.X.ToString();
label2.Text = Cursor.Position.Y.ToString();

میتونی اینو تو یه تایمر یا یه ترد بنویسی که نیازی به کلیکم نداشته باشه

vistacali
سه شنبه 04 تیر 1392, 16:21 عصر
http://www.geekpedia.com/tutorial146_Get-screen-cursor-coordinates.html

توی نت سرچ کرده بودی موجود بود دوست عزیز

aradrobo
سه شنبه 04 تیر 1392, 17:59 عصر
ای بابا ، دوستان همگی توجه فرمایید ، این چیزهایی که می گویید رو خودم بلد هستم . می خواهم کاری کنم که زمانی که روی دسکتاپ چپ کلیک کردم ، مختصات را نمایش دهد . نمی خواهم هر لحظه با تایمر ، مختصات را به من نشان دهد . زمانی که کلیک انجام شد مختصات را بنویسد.

mehran901
سه شنبه 04 تیر 1392, 18:16 عصر
دوست عزیز ، گفتم که خارج از فرم بتواند مختصات را پیدا کند ، الان با این روش شما باید حتماً درون فرم کلیک انجام دهم تا مختصات را به من بگوید ، آن هم مختصات داخل فرمی می باشد . می خواهم مختصات بر اساس صفحه دسکتاپ باشد.

با Api به راحتی قابل اجراست ... GetCursorPos واسه حل مشکل شما میتونه استفاده بشه

درمورد ساختار پوینت و چگونگی استفاده از این تابع از گوگل استفاده کنین ...

مثلا تو ویبی اینطوری استفاده میکنیم :



Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Sub Timer1_Timer()
Dim Point As POINTAPI
GetCursorPos Point
label1.caption = Point.x
label2.caption = Point.y
End Sub



و فشرده شدن کلید رو هم میتونین با ای پی آی متوجه بشین و البته مجازی هم میتونین کلید ها رو بفشارین!



Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10




کد ویبی رو صرفا گذاشتم تا شاید بتونین الگو بگیرین ... چون من به سی شارپ کد نمیزنم

aradrobo
سه شنبه 04 تیر 1392, 18:55 عصر
با فشرده شدن کلید رو بلد هستم . مشکلم فقط با فشرده شدن کلیک ماوس می باشد.

rostamkhani
سه شنبه 04 تیر 1392, 19:25 عصر
سلام
این برنامه رو قبلا واسه کاری نوشتم
دگمه start رو بزن بعد کمی موس رو تکون بده سپس دگمه stop بزن

الان تو برنامه کلید چپ رو تشخیص میده و ضبط میکنه میتونی برنامه رو تغییر بدی تا نمونه مورد نظر رو داشته باشی

Salar Ashgi
سه شنبه 04 تیر 1392, 22:45 عصر
اینو من خودم بلد هستم . چرا کسی به سوال من پاسخ نمیده ؟
می گم می خواهم وقتی کلیک کردم مختصات نمایش داده شود. نه اینکه ماوس رو هرجا ببرم خودکار نمایش بدهد . روی هر جای صفحه بردم و کلیک انجام شد روی همان قسمت ، مختصات آن قسمت را به من بدهد.


متاسفانه مشکل یه تعداد از کاربرها این هست که همه چیز رو آماده و حاضر میخوان ! و حتی به خودشون
زحمت یه دقیقه فکر کردن رو سورس رو نمیدن ! و این میشه وضعیت تالار #C !
دوست عزیز ، این برادرانی که به سوال شما جواب میدن ، نه وظیفشون هست و نه اینکه پولی باببتش میگیرن ، فقط پهنای باندشون رو
مصرف می کنن اونم فقط به خاطر علاقه شون به برنامه نویسی ! پس حسابی لطف می کنن و شما نباید این انتظار رو داشته باشین
که هرچی سفارش دادین آماده تحویل بدن خدمتتون !!
ما همیشه میگیم که باید روزنه ای از نور نشون داده بشه ، نه خود خورشید !
تجربه چند ساله ام رو بهتون میگم ، خودتون تلاش کنید ! وگرنه با بکار بردن سورس های آماده
بهتون برنامه نویس گفته نمیشه ، میگن تایپیست !! اگه لحن تندی داشتم ، عذر میخوام ؛ هدفم
فقط توصیه ای برادرانه جهت پیشرفت و برنامه نویس واقعی شدن بود !

موفق باشید ./

aradrobo
چهارشنبه 05 تیر 1392, 16:04 عصر
سلام
این برنامه رو قبلا واسه کاری نوشتم
دگمه start رو بزن بعد کمی موس رو تکون بده سپس دگمه stop بزن

الان تو برنامه کلید چپ رو تشخیص میده و ضبط میکنه میتونی برنامه رو تغییر بدی تا نمونه مورد نظر رو داشته باشی

خیلی جالب بود . تاحالا ندیده بودم . ولی جواب سوال من این نبود. اگر متجوه نشدین بگین تا با رسم شکل توضیح بدهم.

davidrobert
چهارشنبه 05 تیر 1392, 16:25 عصر
سلام
این برنامه رو قبلا واسه کاری نوشتم
دگمه start رو بزن بعد کمی موس رو تکون بده سپس دگمه stop بزن

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

davidrobert
چهارشنبه 05 تیر 1392, 16:29 عصر
خیلی جالب بود . تاحالا ندیده بودم . ولی جواب سوال من این نبود. اگر متجوه نشدین بگین تا با رسم شکل توضیح بدهم.
این برای به دست اوردن مختصات موس هستش که میگی در کجا قرار داده.http://persianit.net/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D9%85%D8%AE%D8%AA%D8%B5%D8%A7%D8%AA-%D9%85%DA%A9%D8%A7%D9%86%E2%80%8C%D9%86%D9%85%D8%A 7%DB%8C-%D9%85%D8%A7%D9%88%D8%B3.html
آدرس فایلش موفق باشید.

aradrobo
چهارشنبه 05 تیر 1392, 16:51 عصر
این برای به دست اوردن مختصات موس هستش که میگی در کجا قرار داده.http://persianit.net/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D9%85%D8%AE%D8%AA%D8%B5%D8%A7%D8%AA-%D9%85%DA%A9%D8%A7%D9%86%E2%80%8C%D9%86%D9%85%D8%A 7%DB%8C-%D9%85%D8%A7%D9%88%D8%B3.html
آدرس فایلش موفق باشید.

می گم من بلد هستََََََََََََََََََََََ َََََََََََََََََََََََََ َََم مختصات رو بدست بیارم . مشکلم چیز دیگه ای هستش . که با زدن کلیک چپ می خواهم مختصات درون مسیج باکس نمایش داده شود.

davidrobert
جمعه 07 تیر 1392, 19:38 عصر
امید وارد این بدردت بخوره برای به دست اوردن مختصات و داخل تکس باکس قرار بده این مختصات رو به دست میاره در بالا فرم ولی خودتن باید روی داد کلیدش رو در فرم بنویسید وقتی کلید شد در تکس باکس مختصات رو نشون بده.http://uplod.ir/yqe5sgla3cza/drawline.rar.htm

مهرداد صفا
جمعه 07 تیر 1392, 20:54 عصر
با سلام.
اگر این (http://barnamenevis.org/archive/index.php/t-387500.html ) تاپیک کمک نکرد در c# بازش کنم.

تشخیص کلیک موس (http://barnamenevis.org/showthread.php?387500-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%DA%A9%D9%84%DB%8C%DA%A9-%D8%B4%D8%AF%D9%86-%D9%85%D9%88%D8%B3)

aradrobo
جمعه 07 تیر 1392, 21:02 عصر
امید وارد این بدردت بخوره برای به دست اوردن مختصات و داخل تکس باکس قرار بده این مختصات رو به دست میاره در بالا فرم ولی خودتن باید روی داد کلیدش رو در فرم بنویسید وقتی کلید شد در تکس باکس مختصات رو نشون بده.http://uplod.ir/yqe5sgla3cza/drawline.rar.htm

خوب بحث منم همینه دیگه . می خوان بدونم شرط اینکه کلیک شد مختصات رو نشون بده چجوری نوشته می شه ؟

aradrobo
جمعه 07 تیر 1392, 21:06 عصر
با سلام.
اگر این (http://barnamenevis.org/archive/index.php/t-387500.html ) تاپیک کمک نکرد در c# بازش کنم.

تشخیص کلیک موس (http://barnamenevis.org/showthread.php?387500-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%DA%A9%D9%84%DB%8C%DA%A9-%D8%B4%D8%AF%D9%86-%D9%85%D9%88%D8%B3)

احسن ، من دقیقاً همینو واسه سی شارپ می خواستم. لطفاً کمکم کنید.

nimak2
جمعه 07 تیر 1392, 21:12 عصر
ممنون . من تازه کارم اینو بلد نبودم. دستتون درد نکنه:لبخندساده:

مهرداد صفا
جمعه 07 تیر 1392, 22:00 عصر
احسن ، من دقیقاً همینو واسه سی شارپ می خواستم. لطفاً کمکم کنید.

خواهش میکنم.
ساده ترین راه چک کردن کلیدهای موس با استفاده از تابع GetAsyncKeyState در یک تایمر و به دست آوردن مختصات با استفاده از GetCursorPos است و راه کلیتر استفاده از windows hook است که در تاپیک زیر یک نمونه وجود دارد.
کنترل برنامه های دیگر در حال اجرا (http://barnamenevis.org/showthread.php?363332-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%A8%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86)

aradrobo
شنبه 08 تیر 1392, 17:57 عصر
خواهش میکنم.
ساده ترین راه چک کردن کلیدهای موس با استفاده از تابع GetAsyncKeyState در یک تایمر و به دست آوردن مختصات با استفاده از GetCursorPos است و راه کلیتر استفاده از windows hook است که در تاپیک زیر یک نمونه وجود دارد.
کنترل برنامه های دیگر در حال اجرا (http://barnamenevis.org/showthread.php?363332-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%A8%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86)

مهندس قرار شد با سی شارپ بهم بگین.این که ویبی هستش.