امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
نویسنده پیام
RAMA2009 آفلاین
Banned

ارسال‌ها: 131
موضوع‌ها: 38
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 43
( 59 تشکر در 51 ارسال )
ارسال: #1
تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
سلام دوستان
سورس تشخیص change شدن زبان صفحه کلید، هنگامی که فوکوس روی فرم نیست.
در کل چیکار کنیم وقتی فوکوس روی فرم نیست، یه رویدادی تشخیص داده بشه.
مثلا سورس change شدن صفحه کلید رو بلدم ولی وقتی فوکوس روی فرم نیست کار نمیکنه، حالا چیکار کنم؟
۰۴-بهمن-۱۳۹۰, ۰۲:۱۳:۳۹
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
RAMA2009 آفلاین
Banned

ارسال‌ها: 131
موضوع‌ها: 38
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 43
( 59 تشکر در 51 ارسال )
ارسال: #2
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
چی شد پس؟! لطفا.... لازمش دارم
۰۴-بهمن-۱۳۹۰, ۲۳:۵۷:۱۱
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #3
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
سلام.
از تایمر استفاده کن.
۰۵-بهمن-۱۳۹۰, ۱۶:۲۷:۰۴
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
RAMA2009 آفلاین
Banned

ارسال‌ها: 131
موضوع‌ها: 38
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 43
( 59 تشکر در 51 ارسال )
ارسال: #4
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
سلام از تایمر استفاده کردم ولی زمانی که فوکوس روی فرم نیست جواب نمیده،
اما به محض اینکه فرم فوکوس میشه جواب میده
من میخوام زمانی که فوکوس رو فرم نیست، تشخیص بده که زبان صفحه کلید change شده
۰۵-بهمن-۱۳۹۰, ۱۶:۳۰:۵۰
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #5
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
فوکوس کجاست؟
روی برنامه هم نیست؟ اگه روی برنامه هست همون جا می توین بفرستی روی فروم
تایمر تا اونجا که من می دونم ایونت هاش همیشه اجرا می شه کاری به فوکوس نداره درست داری چک می کنی
روش دیگه ای که هست هوک کردن ایونت های سیستم که کار راحتی نیست

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۵-بهمن-۱۳۹۰, ۱۶:۴۶:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
RAMA2009 آفلاین
Banned

ارسال‌ها: 131
موضوع‌ها: 38
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 43
( 59 تشکر در 51 ارسال )
ارسال: #6
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
سلام
برنامه ی زیر رو ببینید، وقتی فوکوس روی فرم نیست(مثلا فرض کنید ویزیبل فرم فالسه)، زبان صفحه کلید رو change کنید، میبینید که
برنامه نشخیص نمیده - که مشکل اینجاست
حالا وقتی فوکوس رو فرمه اینکارو انجام بدید میبینید که برنامه کار میکنه
۰۵-بهمن-۱۳۹۰, ۲۱:۳۳:۱۱
ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #7
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
نقل قول: برنامه ی زیر رو ببینید
من لینوکس دارم نمی تونم ببینم
نقل قول: وقتی فوکوس روی فرم نیست(مثلا فرض کنید ویزیبل فرم فالسه)
این ۲ تا خیلی فرق دارن باهم، فوکوس روی فرم نیست. یعنی پنجره دیگه ای رو هست و این پنجره فعال ولی زیر پنجره های دیگه قرار گرفته
ویزیبل رو که فالس می کنی فکر کنم کل پنجره رو ازکار می ندازه و دیگه تایمر ها کار نمی کنه
شما تایمر رو بزار توی فرم بالایی (اصلی) و اونجا چک کن

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۵-بهمن-۱۳۹۰, ۲۲:۰۴:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mahdi321
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #8
RE: تشخیص رویداد خاص هنگامی که فوکوس روی فرم نیست
سلام.
مشکل شما اینه که هندل به API ندادی و فرم جاری به صورت دیفالت بررسی میشه.

شما باید هندل پنجره فعال رو به برنامت بدی تا زبانش رو چک کنه.

تغییری در کدت دادم تا ابتدا هندل پنجره فعال به دست بیاد و بعد زبان اون پنجره بررسی بشه.

کد:
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long

Private Const LOCALE_SISO639LANGNAME        As Long = &H59
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Dim strChangeLanguage, strCurrentLanguage As String

Private Sub Form_Load()
    strCurrentLanguage = GetKeyName
End Sub

Private Sub Timer1_Timer()
    strChangeLanguage = GetKeyName
    If strChangeLanguage <> strCurrentLanguage Then
        MsgBox "Keyboard language change to '" & GetKeyName & "'", vbInformation + vbOKOnly, "Keyboard"
        strCurrentLanguage = GetKeyName
    End If
End Sub

Private Function GetKeyName() As String
    GetKeyName = pvGetUserLocaleInfo(GetKeyboardLayout(GetActiveWindow) And &HFFFF&, LOCALE_SISO639LANGNAME)
End Function

Private Function GetActiveWindow()
Dim lngCurrent_HKL As Long
    Dim lngActiveWindowHandle As Long
    Dim lngActiveWindowThreadId As Long
    lngActiveWindowHandle = Val(GetForegroundWindow)
    Dim lngTemp As Long
    lngActiveWindowThreadId = GetWindowThreadProcessId(lngActiveWindowHandle, lngTemp)
    GetActiveWindow = lngActiveWindowThreadId
End Function

Private Function pvGetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
   Dim sReturn          As String
   Dim nSize            As Long

   nSize = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
   If nSize > 0 Then
      sReturn = Space$(nSize)
      nSize = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
      If nSize > 0 Then
         pvGetUserLocaleInfo = Left$(sReturn, nSize - 1)
      End If
   End If
End Function
۰۵-بهمن-۱۳۹۰, ۲۲:۴۵:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : RAMA2009, mahdi321


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Exclamation [حل شد] فوکوس روی پنجره یک برنامه svb93 1 3,080 ۲۶-شهریور-۱۳۹۴, ۰۹:۵۷:۴۱
آخرین ارسال: moderator
  [سوال] فوکوس کردن روی یک پنجره برنامه خاص bvk 1 2,453 ۱۶-بهمن-۱۳۹۳, ۱۵:۲۷:۲۵
آخرین ارسال: Payman62
  [سوال] فانکشن برای تشخیص زبان عبارت متنی eppagh 0 1,726 ۱۳-شهریور-۱۳۹۳, ۱۰:۲۵:۲۵
آخرین ارسال: eppagh
  سوال در رابطه با دور زدن کد تشخیص وب بروزر sevdaboy 5 4,378 ۱۶-تير-۱۳۹۲, ۱۹:۴۸:۱۶
آخرین ارسال: sevdaboy
  تشخیص اولین کاراکتر در هر خط RAMA2009 9 7,577 ۱۹-دى-۱۳۹۱, ۰۳:۰۴:۵۰
آخرین ارسال: mahmoodgh
Sad تشخیص ( پلاک خودرو ) و ( چهره انسان ) kopolezerang 8 13,178 ۲۶-فروردین-۱۳۹۱, ۱۵:۵۴:۰۶
آخرین ارسال: megatron
  تشخیص خاموش شدن/رست شدن/لاگ اف شدن ویندوز در وی بی6 RAMA2009 12 9,773 ۱۸-اسفند-۱۳۹۰, ۰۳:۳۱:۵۴
آخرین ارسال: RAMA2009
  دریافت عکس،تشخیص حجم آن و تشخیص حداکثر کیفیتی که میتونه داشته باشه RAMA2009 3 4,062 ۱۱-بهمن-۱۳۹۰, ۱۷:۳۰:۱۲
آخرین ارسال: Payman62
  انتخاب اتوماتیک متن داخل TextBox هنگام دریافت فوکوس RAMA2009 1 3,864 ۰۴-بهمن-۱۳۹۰, ۰۱:۲۶:۴۴
آخرین ارسال: Payman62
  تشخیص وضعیت زبان جاری صفحه کلید RAMA2009 7 6,910 ۰۲-بهمن-۱۳۹۰, ۱۳:۱۱:۱۴
آخرین ارسال: RAMA2009

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS