PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سئوال



shamsololama
2010/07/13, 11:34
با درود فراوان
از دوستان کسی می دونه با چه کدی میشه زبان فعال کی بورد رو شناسایی کنیم
کدی که از طیق اکسل بشه این زبان رو تغییر بدم پیدا کردم ولی کدی که نشون بده چه زبانی فعال است هنوز پیدا نکردم کسی میدونه ممنون میشم راهنمایی کنه

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

سپاس گزارم

m_d6712
2010/07/14, 15:46
با سلام
در مورد فراخوانی و تعویض زبان نوشتاری سیستم عامل در زبان های 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

shamsololama
2010/07/15, 07:59
با درود فراوان
از شما بخاطر پاسخ بسیار خوب و کاملی که داده بودید بینهایت سپاسگزارم