فارسی کردن کیبورد با دستورات api
اینطوری: :o :lol: :wink:
declare integer ActivateKeyboardLayout in win32api integer,integer
ActivateKeyboardLayout(1025,8) &&for farsi like alt+shiftright
ActivateKeyboardLayout(1033,0) &&for latin like alt+shiftleft
دستور اول برای لود کردن api مربوط به فارسی سازی
دستور دوم برای فعال کردن فانکشن فارسی سازی یا راست به چپ نویسی
معمولا این دستور را با یک علامت مساوی قبل از آن در واقعه gotfocus یک تکس باکس میذارند
دستور دوم برای لاتین کردن یا چپ به راست نویسی است میتوانید پس از اتمام کار در تکس باکس فارسی شده و برای اینکه کیبورد مجددا به حالت لاتین برگرده این فانکشن را در واقعه lostfocus همان تکس باکس قراردهید
البته فونت تکس باکس شما چیزی باشد که فارسی را ساپورت کند
تابع تبدیل صفحه کلید به فارسی ولاتین
باسلام مجدد خدمت اساتید خودم
باتوجه به اینکه بیشتر برنامه های من تحت داس وشبکه (فاکس پرو) میباشد وبیشتر
درزمینه شرکتهای تعاونی مصرف میباشد وتازه ویژوال فاکس پرو را شروع کردم به راهنمایی
های شما عزیزان نیازمندم البته بصورت دست گرمی یک سی تا فرمی نوشته ام
وارتباطاتشان نیز خوب است و این فایل را نیز از یکی ازدوستان گرفته ام تقریبا مشابه
دستورات آقا کیا است پرحرفی کردم عذرمیخواهم
PARAMETERS KeymodeInValue
If !Vartype(KeymodeInValue)=="C"
Return .F.
EndIf
Do Case
Case "WINDOWS 5" $ Upper(OS())
DECLARE LONG LoadKeyboardLayout IN WIN32API STRING pwszKLID,INTEGER Flags
Do Case
Case Upper(KeymodeInValue)='FA'
lnRetCode = LoadKeyboardLayout('00000429', 1)
Case Upper(KeymodeInValue)='EN'
lnRetCode = LoadKeyboardLayout('00000409', 1)
EndCase
Other
Declare Integer ActivateKeyboardLayout In Win32Api Integer,Integer
Do Case
Case Upper(KeymodeInValue)='FA'
ActivateKeyboardLayout(1025,8)
Case Upper(KeymodeInValue)='EN'
ActivateKeyboardLayout(1033,0)
EndCase
EndCase
Return .T.
PARAMETERS KeymodeInValue
Local OldOnError
OldOnError=On("ERROR")
On Error Wait Nowa
DECLARE INTEGER GetKeyboardLayout IN win32api integer ValueGetKeyboardLayout
DECLARE INTEGER ActivateKeyboardLayout IN win32api integer ValueActivateKeyboardLayout
Old_GetKeyboardLayout=GetKeyboardLayout(0)
keymode_loopmax=20
keymode_loopcount=0
Do Case
Case Upper(KeymodeInValue)='FA'
Do While GetKeyboardLayout(0)<>67175425 .AND. GetKeyboardLayout(0)<>70255657 .AND. keymode_loopcount<keymode_loopmax
keymode_loopcount=keymode_loopcount+1
=ActivateKeyboardLayout(1)
EndDo
Case Upper(KeymodeInValue)='EN'
Do While GetKeyboardLayout(0)<>67699721 .AND. keymode_loopcount<keymode_loopmax
keymode_loopcount=keymode_loopcount+1
=ActivateKeyboardLayout(1)
EndDo
Case Upper(KeymodeInValue)='UK'
Do While GetKeyboardLayout(0)<>67699746 .AND. keymode_loopcount<keymode_loopmax
keymode_loopcount=keymode_loopcount+1
=ActivateKeyboardLayout(1)
EndDo
EndCase
If keymode_loopcount=keymode_loopmax
Do While GetKeyboardLayout(0)<>Old_GetKeyboardLayout
=ActivateKeyboardLayout(1)
EndDo
KeymodeOutValue=.F.
Else
KeymodeOutValue=.T.
EndIf
Clear Dlls
On Error &OldOnError
Return KeymodeOutValue
نقل قول: فارسی کردن کیبورد با دستورات api
نقل قول:
نوشته شده توسط
سرائی-محمدجواد
سلام به همگی
البته یک تابع نیز من دارم که میشود صفحه کلید را فارسی ولاتین نمود.
هرکدام ازدوستان میخواد بگه برایش ایمیل کنم متشکرم
واسه من ایمیل کن..ممنون
rakhshani_mojtaba25@yahoo.com:لبخندساده: