PDA

View Full Version : تغییر زبان صفحه کلید در VB



Rambod
پنج شنبه 07 آبان 1383, 19:14 عصر
سلام
من یه مشکلی دارم. برنامه من فارسیه و کاربر باید اطلاعات رو فارسی بنویسه. برای دسترسی به بعضی قسمتها هم باید کلمه عبور رو وارد کنه. کلمه عبور انگلیسیه. از اونجا که کاربر قبلاً صفحه کلیدش رو فارسی کرده و یادش رفته موقع تایپ کردن پسورد اون رو به انگلیسی برگردونه، همش پیغام خطای پسورد اشتباه است رو دریافت میکنه.
حالا من نمیتونم وقتی میخوام از کاربر پسورد بگیرم خودم اتوماتیک صفحه کلید رو انگلیسی کنم؟
خیلی ممنون

anp2001
پنج شنبه 14 شهریور 1387, 14:29 عصر
من هم همین مشکل رو دارم اگه فهمیدی چیکار کنی به من هم بگو
anp_2001as@yahoo.com

maryamb
پنج شنبه 14 شهریور 1387, 15:42 عصر
راه حل !!!!!

http://barnamenevis.org/forum/showthread.php?t=13280&highlight=%D9%81%D8%A7%D8%B1%D8%B3%DB%8C+%DA%A9%D8 %B1%D8%AF%D9%86+%D8%B5%D9%81%D8%AD%D9%87+%DA%A9%D9 %84%DB%8C%D8%AF

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

.:KeihanCPU:.
پنج شنبه 14 شهریور 1387, 15:54 عصر
میتونی زمانی که فوکوس به تکست مربوط به ورود پسورد رفت زبان انگلیسی بشه و در تکستهای دیگه فارسی

ali_habibi1384
پنج شنبه 14 شهریور 1387, 16:27 عصر
با استفاده از 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&

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