سئوال

Collapse
X
 
  • زمان
  • نمایش
Clear All
new posts
  • shamsololama

    • 2010/02/15
    • 940

    سئوال

    با درود فراوان
    از دوستان کسی می دونه با چه کدی میشه زبان فعال کی بورد رو شناسایی کنیم
    کدی که از طیق اکسل بشه این زبان رو تغییر بدم پیدا کردم ولی کدی که نشون بده چه زبانی فعال است هنوز پیدا نکردم کسی میدونه ممنون میشم راهنمایی کنه

    توضیح بیشتر:
    وقتی چند تکس باکس داریم که در تعدادی از آنها باید فارسی تایپ کنیم و در چند تا هم انگلیسی می خواهم زمانی که مکان نما درون هر تکس باکس قرار میگیره بسته به نیاز زبان رو تغییر داده به انگلیسی و یا فارسی حالا این که با چه کدی این زبان را به فارسی یا انگلیسی تغییر بده می دونم ولی اول نیاز هست که بدونیم زبان فعال چیه که اگر در تکس باکس زبان فارسی نیاز داشتین ببینه اگه زبان فعال فارسی هست تغییر نده و اگر انگلیسی بود به فارسی تغییر بده تا به زبان مورد نظر در آن تکس باکس برسیم.

    سپاس گزارم
    ---------------------------------------------------------------------------------------------------
    بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
    shamsololama@yahoo.com
    09177733411
  • m_d6712

    • 2010/05/22
    • 174

    #2
    RE: سئوال

    با سلام
    در مورد فراخوانی و تعویض زبان نوشتاری سیستم عامل در زبان های VB کتابخانه هایی وجود داره که می شه از آن ها استفاده کرد. به کد زیر توجه کنید. دو تابع در آنها وجود داره که فکر می کنم سوال شما رو پاسخ بده:

    کد:
    Option Explicit
    
    Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
    
    Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
    
    Const KLF_ACTIVATE = &H1
    
    Private Const LANG_ENGLISH As String = "00000409"
    Private Const LANG_Persian As String = "00000429"
    
    Private Const LANG_FRENCH As String = "0000040C"
    Private Const LANG_GREEK As String = "00000408"
    Private Const LANG_ITALIAN As String = "00000400"
    Private Const LANG_GERMAN As String = "00000407"
    
    
    
    Private Function SwitchKeyboardLang(ByVal strLangID As String) As Boolean
    Dim strRet As String
       On Error Resume Next
        strRet = String(9, 0)
      GetKeyboardLayoutName strRet
    If strRet = (strLangID & Chr(0)) Then
        SwitchKeyboardLang = True
        Exit Function
    Else
        strRet = String(9, 0)
        strRet = LoadKeyboardLayout((strLangID & Chr(0)), KLF_ACTIVATE)
    End If
    
    GetKeyboardLayoutName strRet
    If strRet = (strLangID) Then
        SwitchKeyboardLang = True
    End If
    End Function
    
    Private Sub TextBox1_Enter()
    SwitchKeyboardLang (LANG_ENGLISH)
    End Sub
    
    Private Sub TextBox2_Enter()
    SwitchKeyboardLang (LANG_Persian)
    End Sub
    در كى بالا تابع GetKeyboardLayoutName strRet موردی است که شما می خواهید.
    برای دریافت کد های زبان های دیگر نیز می توانید از رجیستری کامپیوتر استفاده کنید. آدرس زیر را در Regedit دنبال کنید به می توانید کد همه زبان ها را داشته باشید.

    HKEY_LOCAL_MACHINE
    System
    CurrentControlSet
    Control
    Keyboard Layout
    DosKeybCodes
    -------
    http://md6712.com
    جامعه ایده پردازان: http://idekadeh.com

    کامنت

    • shamsololama

      • 2010/02/15
      • 940

      #3
      RE: سئوال

      با درود فراوان
      از شما بخاطر پاسخ بسیار خوب و کاملی که داده بودید بینهایت سپاسگزارم
      ---------------------------------------------------------------------------------------------------
      بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
      shamsololama@yahoo.com
      09177733411

      کامنت

      Working...