PDA

View Full Version : سوال: کلیک کردن روی مختصات دلخواه



aleas2
یک شنبه 21 شهریور 1389, 18:57 عصر
سلام خسته نباشید چطوری میشه با vb6 کدی نوشت که مختصات x ,y رو بهش میدی روی اون مختصات دبل کلیک کنه آیا میشه این کارو کرد اگر میشه کدش چی؟

FULLSYSTEM
یک شنبه 21 شهریور 1389, 19:13 عصر
بیا برات نوشتم

FULLSYSTEM
یک شنبه 21 شهریور 1389, 19:15 عصر
:چشمک:حالا با دستور CALL رویداد کلیک شئ مورد نظر فراخوانی کن

parselearn
یک شنبه 21 شهریور 1389, 19:19 عصر
http://barnamenevis.org/forum/showpost.php?p=891101&postcount=365

aleas2
یک شنبه 21 شهریور 1389, 19:20 عصر
بیا برات نوشتم
اقا مرسی ممنون ولی نمیشه کاری کرد بدون اینکه ماوس جابجا بشه روی مختصات دلخواه دبل کلیک کرد؟

FULLSYSTEM
یک شنبه 21 شهریور 1389, 19:22 عصر
متوجه نشدم

واضح تر بگو

aleas2
یک شنبه 21 شهریور 1389, 19:30 عصر
متوجه نشدم

واضح تر بگو

ببین من مختصات x,y رو به برنامه میدم بدون اینکه ماوس جابجا بشه رو اون مختصات بصورت مخفی کلیک کنه؟متوجه شدین؟

FULLSYSTEM
یک شنبه 21 شهریور 1389, 22:05 عصر
فقط با دستور CALL رویداد کلیک شئ مورد نظر فراخوانی کن

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

Saman_12
یک شنبه 21 شهریور 1389, 23:51 عصر
سلام.
ایشون میخوان با دادن مختصات موس روی اون مختصات کلیک بشه.
اول این API ها رو تعریف کن :

Public Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long
اینم زیر این API ها :

Const BM_CLICK = &HF5
اینجوری هم استفاده کن :

Dim Hwnd As Long
Dim Test As Long

Hwnd = WindowFromPoint("Xpost Of Mouse", "Ypost Of Mouse")
If Hwnd <> 0 Then Test = SendMessage(Hwnd, BM_CLICK, 0, 0)
اگه عملیات درست انجام بشه Test دارای یک مقدار غیر 0 خواهد بود.

aleas2
دوشنبه 22 شهریور 1389, 00:50 صبح
سلام.
ایشون میخوان با دادن مختصات موس روی اون مختصات کلیک بشه.
اول این API ها رو تعریف کن :

Public Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Longاینم زیر این API ها :

Const BM_CLICK = &HF5اینجوری هم استفاده کن :

Dim Hwnd As Long
Dim Test As Long

Hwnd = WindowFromPoint("Xpost Of Mouse", "Ypost Of Mouse")
If Hwnd <> 0 Then Test = SendMessage(Hwnd, BM_CLICK, 0, 0)اگه عملیات درست انجام بشه Test دارای یک مقدار غیر 0 خواهد بود.
اینو یاد گرفتم حالا میخوام بدونم میشه بدون اینکه ماوس جابجا بشه روی اون مختصات دبل کلیک بشه مثلا روی اون مختصات یه command هسته روش دبل کلیک بشه دگه ماوس به اون مختصات نره ضمنن هیچگونه مشخصاتی از command حتی نامشو هم نداریم ؟
--------------------

فقط با دستور CALL رویداد کلیک شئ مورد نظر فراخوانی کن

نیاز به برنامه اول نیست
عزیز من هیچ مشخصاتی از شی ندارم حتی نام

Saman_12
دوشنبه 22 شهریور 1389, 01:10 صبح
اون کد اصلا کاری به موس نداره و تنها یک پیغام مجازی ارسال میکنه.(جای "Xpost Of Mouse", "Ypost Of Mouse" مختصات شی مورد نظر رو بدید درست میشه.)یعنی موس هر جا که باشه فرقی نداره!

aleas2
دوشنبه 22 شهریور 1389, 11:02 صبح
اون کد اصلا کاری به موس نداره و تنها یک پیغام مجازی ارسال میکنه.(جای "Xpost Of Mouse", "Ypost Of Mouse" مختصات شی مورد نظر رو بدید درست میشه.)یعنی موس هر جا که باشه فرقی نداره!
ببخشید میشه یه مثال خودتون با سورس بزارین؟اگراز نظر مدیران اشکال نداشته باشه اخه هرکار میکنم روی اون مختصات کلیک نمیکنه

Saman_12
دوشنبه 22 شهریور 1389, 13:04 عصر
احتیاج به سورس نیست شما یک باتون بیانداز روی فرم و این کد ها رو وارد کن :


Private Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long

Const BM_CLICK = &HF5

Private Sub Command_Click()
MsgBox "Me Clicked This is a test"
End Sub


Private Sub Command_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Hwnd As Long
Dim Test As Long

Hwnd = WindowFromPoint(((Me.Top + Command.Left + X) \ Screen.TwipsPerPixelX) + 9, ((Me.Top + Command.Top + Y) / Screen.TwipsPerPixelY) + 31)
If Hwnd <> 0 Then Test = SendMessage(Hwnd, BM_CLICK, 0, 0)
End Sub

aleas2
دوشنبه 22 شهریور 1389, 13:40 عصر
احتیاج به سورس نیست شما یک باتون بیانداز روی فرم و این کد ها رو وارد کن :


Private Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long

Const BM_CLICK = &HF5

Private Sub Command_Click()
MsgBox "Me Clicked This is a test"
End Sub


Private Sub Command_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Hwnd As Long
Dim Test As Long

Hwnd = WindowFromPoint(((Me.Top + Command.Left + X) \ Screen.TwipsPerPixelX) + 9, ((Me.Top + Command.Top + Y) / Screen.TwipsPerPixelY) + 31)
If Hwnd <> 0 Then Test = SendMessage(Hwnd, BM_CLICK, 0, 0)
End Sub

مرسی داداش کار کرد حالا یه سوال دگه این برنامه رو اگر تو یه تایمر بنویسم که هر دقیقه یه بار اجرابشه درصورتی روی command یاهمون مختصات کلیک میشه که جز صفحه vb صفحه دگه باز نباشه چون اگر مثلا رو صفحه vb هم My Computer باز باشه روی command کلیک نمیشه حالا نمیشه کاری کرد که فقط رو همون صفحه vb که کدو نوشتم اجرا بشه امیدوارم متوجه منظورم شده باشین؟