ايران ويج

نسخه‌ی کامل: تشخیص وضعیت زبان جاری صفحه کلید
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان،
چگونه تشخیص بدیم، که زبان جاری صفحه کلید چیست؟
کد عوض کردن زبان صفحه کلید رو بلدم اما تشخیص زبان جاری صفحه کلید رو چگونه انجام بدم؟
کد:
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

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

Private Sub Command1_Click()
    MsgBox pvGetUserLocaleInfo(GetKeyboardLayout(0&) And &HFFFF&, LOCALE_SISO639LANGNAME)
End Sub
مرسی HamedFaa جان
حالا کی میتونه به من بگه که چطوری وقتی زبان صفخه کلید Change شد تشخیصش بدیم؟
مثلا به محض اینکه زبان رو تغییر دادیم یه msg بیاد که زبان تغییر داده شد؟
http://s1.picofile.com/file/7233786020/k...d.zip.html

کد:
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 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

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

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
hamed faa خیلی گلی دمت گرم
hamed faa خیلی عالی بود ممنون،
حالا چیکار کنیم زمانی که فوکوس روی فرم نیست، تشخیص بده که زبان صفحه کلید change شده؟
HamedFaa ی عزیز ممنون از پاسختون
از دوستان گرامی هرکس که میدونه
میشه بگید چیکار کنیم که زمانی که فوکوس روی فرم نیست،
(یعنی مثلا فرم ویزیبلش فالسه و فوکوس نداره)
برنامه تشخیص بده که زبان صفحه کلید change شده؟