PDA

نسخه کامل مشاهده نسخه کامل : تغییر زبان و اعداد به فارسی در vb



ooje_asman
26-04-2005, 13:16
برنامه ای – در هر دو vb6 و vb.net- که بتواند زبان و اعداد سیستم را چک کند و در صورتی که فارسی نباشد آنرا به فارسی تغییر دهد و آیا اصلا برنامه ای وجود دارد که بتواند فقط این کار را در برنامه انجام دهد و با سایر برنامه های ویندوز کاری نداشته باشد.

مهمان
26-04-2005, 18:01
سلام
توسط api مي تواني اين کار را انجام بدهي:
ابتدا يک تابع را اعلان مي نماييم:
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
حال در قسمت لود فرم کد زير را مي نويسي:
Call ActivateKeyboardLayout(1, 1)
با ابن کار کيبورد فارسي را اکتيو مي نماييد
در انتها هم بايد در قسمت unload مربوط به فرم اصلي برنامه کد زير را بنويسيم تا به حالت اوليه برگرديم.
Call ActivateKeyboardLayout(0, 1)
موفق باشيد.

ooje_asman
26-04-2005, 20:20
با سلام و مرسی
رامبد جان قسمت اول فکر کنم مونده که سیستم چک کنه ببینه زبان فارسی فعاله یا نه و به نظرتان با وجود xp و اینکه اکثرا زبان فارسی رو فعال می کنند نیازی به این کارا هست

مهمان
27-04-2005, 19:29
سلام
شما مي توانيد توسط تابع GetKeyboardLayout متوجه شويد که فارسي فعال است يا انگليسي:
Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
If GetKeyboardLayout(0) = 67175425 Then
Call ActivateKeyboardLayout(1, 1)
End If

ابتدا برنامه اي بنويسيد که مقدار GetKeyboardLayout(0) را برگرداند. يعني کيبورد را فارسي کنيد و مقدار اين تابع را ببينيد که چه مي شود و سپس انگليسي کنيد و مقدار برگشتي اين تابع را ببينيد.
عددي که با برگرداندن تابع فوق براي زبان انگليسي مي دهد را جلوي شرط فوق قرار دهيد. همان عددي که در بالا 67175425 است.
درباره اينکه آيا نياز به چنين کاري است بستگي به سيستم عاملي دارد که شما مي خواهيد روي آن برنامه را اجرا نماييد.
بعضي مواقع نياز به اين کار هست مثلا وقتي که شما برنامه را به چندين نفر مي دهيد.
اما اگر برنامه را سفارشي مي نويسيد بايد به شخص گوشزد کنيد که مثلا برنامه تحت ويندوز XP اجرا مي شود.
موفق باشيد

ooje_asman
10-05-2005, 06:37
با سلام رامبد جان من اینارو نوشتم و برا فارسی و انگلیسی به ترتیب این اعداد رو برگرداند : وقتی صفحه رو با Shift + Alt فارسی میکردم : 9222812402685903913 وقتی صفحه انگلیسی بود : 9222812402683806729

مهمان
10-05-2005, 17:19
سلام دوست عزيز
من نوشتم که با تابع ActivateKeyboardLayout(1, 1) مي توان از زباني به زبان ديگر در صفحه کليد سوئيچ کرد.
موفق باشيد :)

bithiah
12-05-2005, 01:02
اوج آسمان عزيز
اين كد نوشته خودمه. مي توني ازش استفاده كني. هركي دوست داشت مي تونه با ذكر اسمم به هر كس ديگه اي لازم داره بده:

'************************************************* ************************************
'
' modEn-Fa.bas by Bithiah modEn-Fa.bas
' ---> Send me to: Bithiah76@Yahoo.com <---
' *********************************
'
' Note: This module works in MS Windows 98, 2000, XP provided that your keyborad has
' both layouts(English and Farsi). But I didn't tested or upgraded it with
' VB .Net.
' Please inform me about possible compatiblity with .Net and any other
' detected errors.
'
'************************************************* ************************************

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
Private Const VER_PLATFORM_WIN32s = 0
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32_NT = 2

'************************************************* ************************************
'
'S E T F A R S I ()
'
'************************************************* ************************************
'sets keyborad layout to Farsi
'************************************************* ************************************

Public Sub SetFarsi()

Dim x, dwLo As Long
Dim OSstr As String

x = GetKeyboardLayout(dwLo)
If x = 67699721 Then
x = ActivateKeyboardLayout(67175425, klf_reorder)
x = ActivateKeyboardLayout(67175465, klf_reorder)
x = ActivateKeyboardLayout(69796905, klf_reorder)
End If

End Sub

'************************************************* ************************************
'
'S E T E N G L I S H ()
'
'************************************************* ************************************
'sets keyboard layout to English
'************************************************* ************************************

Public Sub SetEnglish()

Dim x, dwLo As Long

x = GetKeyboardLayout(dwLo)
If x = 67175425 Or x = 67175465 Or x = 69796905 Then
x = ActivateKeyboardLayout(67699721, klf_reorder)
End If

End Sub

'************************************************* ************************************

'I S F A R S I ()

'************************************************* ************************************
'returns TRUE if keyboard layout is Farsi, else returns FALSE
'************************************************* ************************************

Public Function IsFarsi() As Boolean

Dim x, dwLo As Long

x = GetKeyboardLayout(dwLo)
If x = 67175425 Or x = 67175465 Or x = 69796905 Then
IsFarsi = True
Else
IsFarsi = False
End If

End Function

مهمان
12-05-2005, 16:12
سلام خانم bithiah
اين کدها را خودتان نوشتيد که ميگيد به اسم شما پخش بشه؟؟؟

bithiah
12-05-2005, 16:25
بله آقا رامبد. خط به خطش رو و فقط با كمك MSDN. چيه؟ به ما نمياد :oops:

مهمان
12-05-2005, 16:51
بله آقا رامبد. خط به خطش رو و فقط با كمك MSDN. چيه؟ به ما نمياد :oops:

سلام
اميدوارم کدهاي خيلي بهتري هم بتواني بنويسي با MSDN!!! :)

ooje_asman
16-05-2005, 06:23
با سلام
حالا خانم جان این کدا چیکا میکنه یعنی می تونه زبان برنامه رو جدای از حالت xp با اعداد هم فارسی کنه

bithiah
16-05-2005, 19:20
آقاي محترم
لطف كنين و يه نگاهي به comment اون كد (در بالاي روال ها و فانكشن ها) بيندازين اگه جوابتونو پيدا نكردين در خدمتتون هستم