# Native Code > برنامه نویسی در 6 VB >  تغییر زبان صفحه کلید در VB

## Rambod

سلام
من یه مشکلی دارم. برنامه من فارسیه و کاربر باید اطلاعات رو فارسی بنویسه. برای دسترسی به بعضی قسمتها هم باید کلمه عبور رو وارد کنه. کلمه عبور انگلیسیه. از اونجا که کاربر قبلاً صفحه کلیدش رو فارسی کرده و یادش رفته موقع تایپ کردن پسورد اون رو به انگلیسی برگردونه، همش پیغام خطای پسورد اشتباه است رو دریافت میکنه.
حالا من نمیتونم وقتی میخوام از کاربر پسورد بگیرم خودم اتوماتیک صفحه کلید رو انگلیسی کنم؟
خیلی ممنون

----------


## anp2001

من هم همین مشکل رو دارم اگه فهمیدی چیکار کنی به من هم بگو 
anp_2001as@yahoo.com

----------


## maryamb

راه حل !!!!!

https://barnamenevis.org/showth...84%DB%8C%D8%AF

----------


## babi6363

شما  برای  اینکار می تونی به  اینصورت  عمل کنی! کاربر و  محدود کنی که فقط عدد وارد کنه!که اینجوری دردسر کمتری داره!برای گرفتن  فقط عدد هم  اگه خواستی بگو  که واسط کد شو بذارم! ولی در مورد سوالت از این کد تو ماژول استفاده کنید:
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As Long) As Long
و  واسه  فراخوانی هم  مثلا توی فرم  و  رویدادactivate  :
 از این کد:
LoadKeyboardLayout "00000429", 1
امیدوارم که مشکلتون  حل شده باشه !

----------


## .:KeihanCPU:.

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

----------


## ali_habibi1384

با استفاده از  API  میتونی این کارو بکنی: اینو در قسمت  general  بنویس:

Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000   '&H70000   &H60000
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const HKL_NEXT = 1
Private Const HKL_PREV = 0
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Dim oldKB As Long

اینو در رویداد gotfocous  تکست باکس پسوردت بنویس:

oldKB = GetKeyboardLayout(0)
ActivateKeyboardLayout HKL_NEXT, ByVal 0&

با اجرای این کد زبان صفحه کلید به زبان بعدی انتقال می یابد مثلا اگر قبلش فارسی بوده حالا انگلیسی میشه.
الته روشهای بهینه تری هم هست اما فعلا همین دم دستم بود.

----------

