ايران ويج

نسخه‌ی کامل: شبیه سازی کلیک موس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
بچه ها میخوام رویداد کلیک شبیه سازی کنم تو ویندوز 7 نمیشه
عیب از منه یا ویندوزه ؟
اینم کد
فوریه راهنمایی کنید
کد:
Option Explicit
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Const BM_CLICK = &HF5
Private Type POINTAPI
x As Long
y As Long
End Type

Private Sub Timer1_Timer()
'
Dim mPoint As POINTAPI
Dim objectHwnd As Long
Dim objectClassName As String * 100

Call GetCursorPos(mPoint)
objectHwnd = WindowFromPoint(mPoint.x, mPoint.y)
If objectHwnd Then
Call GetClassName(objectHwnd, objectClassName, Len(objectClassName))
If InStr(1, UCase(objectClassName), "BUTTON") > 0 Then
Call SendMessage(objectHwnd, BM_CLICK, 0, 0)
End If
End If
'
End Sub
من که نفهمیدم چی گفتی :
نقل قول: اشتباهات غیر جبران ناپذیری!!!!!!!!
بعدش موفق زیادی داشت!!!!!!!!!!

حالا بگذریم .اینا یه تست کن ببین جواب می ده (فقط برای Button ها)

توی تایمر :
کد:
Dim mPoint As POINTAPI
Dim objectHwnd As Long
Dim objectClassName As String * 100

Call GetCursorPos(mPoint)
objectHwnd = WindowFromPoint(mPoint.x, mPoint.y)
If objectHwnd <> 0 Then
Call GetClassName(objectHwnd, objectClassName, Len(objectClassName))
objectClassName = Left(objectClassName, InStr(objectClassName, Chr(0)) - 1)
If Trim(objectClassName) = "Button" Then
Call SendMessage(objectHwnd, BM_CLICK, 0, 0)
End If
End If

من روی ویستا تست کردم جواب داد و از این اطمینان داشته باش که مشکل از ویندوز نیست.
(۲۸-مرداد-۱۳۸۹, ۲۰:۰۷:۱۱)yeketaz نوشته است: [ -> ]من که نفهمیدم چی گفتی :
نقل قول: اشتباهات غیر جبران ناپذیری!!!!!!!!
بعدش موفق زیادی داشت!!!!!!!!!!

حالا بگذریم .اینا یه تست کن ببین جواب می ده (فقط برای Button ها)

توی تایمر :
کد:
Dim mPoint As POINTAPI
Dim objectHwnd As Long
Dim objectClassName As String * 100

Call GetCursorPos(mPoint)
objectHwnd = WindowFromPoint(mPoint.x, mPoint.y)
If objectHwnd <> 0 Then
Call GetClassName(objectHwnd, objectClassName, Len(objectClassName))
objectClassName = Left(objectClassName, InStr(objectClassName, Chr(0)) - 1)
If Trim(objectClassName) = "Button" Then
Call SendMessage(objectHwnd, BM_CLICK, 0, 0)
End If
End If

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

تو ويندوز 7 تست شد هيچ مشکلی نداره
واسه من نمیشه چرا تغییر مکان موس میتونم بدم
ولی کلیک نهههههه
سلام.

(۲۸-مرداد-۱۳۸۹, ۲۰:۰۷:۱۱)yeketaz نوشته است: [ -> ]من که نفهمیدم چی گفتی :
نقل قول: اشتباهات غیر جبران ناپذیری!!!!!!!!
بعدش موفق زیادی داشت!!!!!!!!!!

حالا بگذریم .

نقل قول: اشتباهات زیادی کردم اشتباهات غیر جبران ناپذیری اما بعدش موفق زیادی داشتم

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

(۲۸-مرداد-۱۳۸۹, ۲۰:۵۰:۳۱)amintatu1990 نوشته است: [ -> ]عزیزم بهتره نفهمیدی چی من گفتم

ویستا ویندوز 7 یه سری فرقهای داره

واسه من نمیشه چرا تغییر مکان موس میتونم بدم

زبون میخیه؟

روی 7 تست کردم جواب داد.
شما موقعیت جاری موس رو گرفتی و بعد هندل و کلاس موقعیت مورد نظر و بعد گفتی اگه کلاس از نوع BUTTON بود کلیک کنه. پس باید موس روی یه کلید قرار داشته باشه.
یه کلید رو فرمت قرار بده. اما روش کلیک نکن. فقط موس رو ببر روش نگه دار. تا کلیک انجام بشه.
اگه میدونی مکانی که موس هست درسته با این روش کلیک کن:
کد:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
http://msdn.microsoft.com/en-us/library/...S.85).aspx

نقل قول: اشتباهات زیادی کردم اشتباهات غیر جبران ناپذیری اما بعدش موفق زیادی داشتم

معلم املاء و دستورزبان فارسیش کی بوده خدا میدونه Biggrin
سلام، چند هفته است در سایتهای ایرانی و خارجی دنبال راه حل میگردم ولی ...
اگر بخواهم با کلیک ماوس دستوری اجرا بشود ولی فرم مربوط به آن دستور فوکوس نداشته باشد باید چه کنم؟
خیلی ساده بگم مثلا دستور beep را با کلیک روی هر نقطه ای از دسکتاپ یا در هر برنامه دیگری اجرا کند.
خیلی نیاز ضروری دارم- ممنون میشم کمک کنید
کافیه تابع کلیک موس رو هوک کنی و هر زمان که موس کلیک اتفاق افتاد عملی که می خوای رو انجام بدی.
در مورد هوک و توابع API قبلا به تفصیل داخل همین فروم بحث شده و سورس های نمونه هم براش موجود هست.
استاد عزیز ممنون از توجهتان ولی ببخشید هم در سایت تازه واردم و هم در برنامه نویسی. نتونستم اینجا چیزی پیدا کنم.
میشه آدرس دقیق تر بدین و اگه لطف کنین یه نمونه از سورس رو بگذارید؟
این یک نمونه کد :
کد:
option Explicit
private Declare Function GetAsyncKeyState Lib "user32" _
        (byval vKey as Long) as Integer
private Const VK_LBUTTON = &H1
private Const VK_RBUTTON = &H2
private Sub Form_Load()
    Timer1.Interval = 100
End Sub
private Sub Timer1_Timer()
    If GetAsyncKeyState(VK_LBUTTON) then
        Label2.Caption = "Left Click"
    ElseIf GetAsyncKeyState(VK_RBUTTON) then
        Label2.Caption = "Right Click"
    else
        Label2.Caption = ""
    End If
End Sub

اینم سورسش
[attachment=12853]
صفحه‌ها: 1 2