PDA

View Full Version : سوال: دابل کلیک بر روی دسکتاپ ؟



scarce
شنبه 15 فروردین 1388, 07:13 صبح
سلام

چگونه میشه فهمید یک نفر بر روی دسکتاپ دابل کلیک کرده ؟

Babak.Hassanpour
شنبه 15 فروردین 1388, 20:01 عصر
به سختی

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

scarce
شنبه 15 فروردین 1388, 21:49 عصر
بله منظورم هوک کردن است
یعنی زمانی که کاربر بر روی جای خالی دسکتاپ دابل کلیک کرد این عمل ثبت بشه یا یک پیغام بده

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

Babak.Hassanpour
یک شنبه 16 فروردین 1388, 12:04 عصر
این واسه پیدا کردن پنجره فعال



Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Const GW_HWNDNEXT = 2
Const WM_GETTEXT = &HD
Const WM_GETTEXTLENGTH = &HE
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 FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As Any, ByVal lpszWindow As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwprocessid As Long) As Long

Function GetCaption(Hwnd As Long) As String
Dim Wintext As String
Dim slength As Long
Dim retval As Long

'Gets the Length of the Caption
slength = SendMessage(Hwnd, WM_GETTEXTLENGTH, ByVal CLng(0), ByVal CLng(0)) + 1
'Makes Space for the Caption
Wintext = Space(slength)
'Gets The Caption
retval = SendMessage(Hwnd, WM_GETTEXT, ByVal slength, ByVal Wintext)
'Puts It in GetCaption
GetCaption = Left(Wintext, retval)
End Function

Function GetTopWindowCaption() As String
GetTopWindowCaption = GetCaption(GetForegroundWindow)
End Function










اینم واسه تشخیص رویداد های ماوس:

scarce
یک شنبه 16 فروردین 1388, 21:29 عصر
ممنونم ولی مشکل حل نشد
من یک سورس دانلود کردم که همینه dll نداره نمی دونم چرا فقط رو عکس اجرا میشه یعنی picture کلیک کنی میگه مثلا دابل کلیک شده یا تک کلیک شده من می خوام با گرفتن پنجره تشخیص بده خیلی ممنونم

Babak.Hassanpour
یک شنبه 16 فروردین 1388, 21:59 عصر
شما با ادغام این دو به نتیجه می رسید.من خودم انجام دادم هر وقت رو دسکتاپ کلیک می کردم اونت مربوطه رخ می داد.فردا واست میزارم.الن دارم از هوش میرم

Babak.Hassanpour
دوشنبه 17 فروردین 1388, 10:28 صبح
برات آماده کردم
برنامه رو ران کن روش کار توش مشخصه.موفق باشی
راستی نگفتی دقیقا واسه چی میخوای این کار رو بکنی؟

scarce
دوشنبه 17 فروردین 1388, 17:39 عصر
برای من ارور میده Run Time Error '429'

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

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