PDA

View Full Version : سوال: چک کردن فارسی بودن یا نبودن و صدای بوق زدن



behrooz69
یک شنبه 17 آذر 1392, 22:43 عصر
سلام به همه . بچه ها شدیدن گیر کردم به یه تکه کدی که که چک کنه اگه داریم جایی تایپ می کنیم اگه کیبورد انگلیسی بود Beep مادربرد در بیاد چون شاید اسپیکر نداشته باشه .

2 تا دکمه باشه که هم فارسی رو داشته باشه هم انگلیسی . اوکی تورو خدا زودتر وقت واسه گشتن و خودم تست کردن ندارم والا ... مرسی از همه

sagggad
یک شنبه 17 آذر 1392, 22:48 عصر
بهروزجان من تابع خاصی برای این کار بلد نیستم.اما شما میتونی یه تکس باکس که Visible اون False باشه در فرمت قرار بدی و بعد در رویداد TextChanged اون یه If بنویسی و شرط بذاری که اگر تکس باکس متنش یکی از حروف انگلیسی بود صدای Beep دربیاد.اوکی؟؟؟:لبخندساده::چ شمک:

behrooz69
یک شنبه 17 آذر 1392, 23:06 عصر
نه نه مظورمو نگرفتی . ببین ما تو بعضی از برنامه ها یه ساعت تایپ میکنیم و تازه می فهممیم که کیبورد انگلیسیه اوکی ؟؟؟ ادم اینجوری میشه :عصبانی++:

کد فارسی کردن کیبورد رو داری ؟؟

کد Beep زدن مادربرد چی ؟؟

sagggad
یک شنبه 17 آذر 1392, 23:07 عصر
کد Beep زدن که اینه: ()Beep

sagggad
یک شنبه 17 آذر 1392, 23:28 عصر
بیا داداش این هم برای فارسی کردن زبان کامپیوترت:
("Dim farsi As New Globalization.CultureInfo("fa-IR
(InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(farsi

behrooz69
دوشنبه 18 آذر 1392, 01:01 صبح
آقا من دست و پا شکسته با کمک سجاد درستش کردم البته چیزی نیست 4 خط کده :قهقهه:

ولی 2 تا مشکل هست ؟

1 ) وقتی رو دکمه فارسی می زنم فارسی میشه ولی وقتی ورد یا نوت پد رو باز می کنم زبان سیستمم دوباره انگلیسی میشن و وقتی دوباره برنامه رو میارم بالا فارسی میشه زبان سیستم .:عصبانی++::قهقهه:

2 ) می خوام وقتی کاربر رو دکمه فارسی کلیک کرد و رفت تو نوت پد یا وردپد متنی چیزی رو تایپ کرد اگه زبان سیستم انگلیسی بود Beep بزنه که طرف متوجه شه داره انگلیسی می نویسه و بر عکسشم بشه . کمکم کنید لطفا

اینم سورس
113691

sagggad
دوشنبه 18 آذر 1392, 09:23 صبح
باز هم بیش از صد ارور:این هم عکس هاش

113696 http://barnamenevis.org/images/misc/pencil.png113698
113699113697

behrooz69
دوشنبه 18 آذر 1392, 13:39 عصر
داش اینا اروور های مربوط به VB.net خودته . پاکش کن ورژن 2010 کامل رو نصب کن . مشکلت رفع می شه .

sagggad
دوشنبه 18 آذر 1392, 13:44 عصر
آها آخه من ورژن 2008 استفاده میکنم.البته راضیم هستم ازش

behrooz69
سه شنبه 19 آذر 1392, 00:13 صبح
اگه همه با همون 2008 راضی بودن که ماکروسافت مشکل نداشت دیگه آپدیت نمی داد و تا 2012 نمیداد بیرون داش من . آپدیت شدنش دلیل داره فقط UI که نیست.

behrooz69
شنبه 23 آذر 1392, 00:47 صبح
ما به عالم و آدم جواب میدیم ولی وقتی خودم کمک لازم دارم هیچکی نیست که کمکم کنه . آخه چرا .... مدیرا .... بچه ها کجایین پس

debugger
شنبه 23 آذر 1392, 01:15 صبح
شما باید یک برنامه بنویسی که مقیم در حافظه باشه و بدون اینکه دیده بشه یا فوکوس روش باشه کار کنه و تشخیص بده زبان ویندوز روی انگلیسی هست یا فارسی . برای این کار هم باید شما زبان سیستم را hook کنید و این کار نیازمند اینه که با توابع API آشنا باشی . بعد از اینکه hook کردی و زبانو تشخیص دادی می تونی بر حسب نیازت صدای Beep را ایجاد کنی

اینچوری طرف تو هر محیطی مشغول تایپ باشه برنامه شما عمل خواهد کرد

API Func که لازم داری اینه

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SetWindowsHookEx(WindowsHookCodes hookid, HookProc pfnhook, IntPtr hinst, int threadid);

internal enum Windows32Message : int
{
WM_INPUTLANGCHANGEREQUEST = 0x0050, // Used for languages which display better in a different font, ie Khmer
WM_INPUTLANGCHANGE = 0x0051
}


public class MessageFilterRoutine : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == (int)Windows32Message.WM_INPUTLANGCHANGEREQUEST)
MessageBox.Show("trapped: " + m.Msg);

if (m.Msg == (int)Windows32Message.WM_INPUTLANGCHANGE)
MessageBox.Show("trapped: " + m.Msg);

return false;
}
}

behrooz69
شنبه 23 آذر 1392, 23:53 عصر
دوست من ظاهرا شما قبلا با این نمونه برنامه کار کردی من شدیدا به این برنامه نیاز دارم. اگه امکانش هسواسم درستش کن سورسشو بذار ک هم من هم بچه ها استفاده کنن. دستت درد نکنه

behrooz69
یک شنبه 24 آذر 1392, 00:00 صبح
دوست من و یه چیز دیگه کدات واسه سی شارپه من واسه وی بی دات نت میخوام مرسی از لطفت

پرستو پارسایی
یک شنبه 24 آذر 1392, 10:04 صبح
دوست من و یه چیز دیگه کدات واسه سی شارپه من واسه وی بی دات نت میخوام مرسی از لطفت

<DllImport("user32.dll", CharSet := CharSet.Auto)> _
Public Shared Function SetWindowsHookEx(hookid As WindowsHookCodes, pfnhook As HookProc, hinst As IntPtr, threadid As Integer) As IntPtr
End Function


Friend Enum Windows32Message As Integer
WM_INPUTLANGCHANGEREQUEST = &H50
' Used for languages which display better in a different font, ie Khmer
WM_INPUTLANGCHANGE = &H51
End Enum


Public Class MessageFilterRoutine
Implements IMessageFilter
Public Function PreFilterMessage(ByRef m As Message) As Boolean
If m.Msg = CInt(Windows32Message.WM_INPUTLANGCHANGEREQUEST) Then
MessageBox.Show("trapped: " & Convert.ToString(m.Msg))
End If

If m.Msg = CInt(Windows32Message.WM_INPUTLANGCHANGE) Then
MessageBox.Show("trapped: " & Convert.ToString(m.Msg))
End If

behrooz69
یک شنبه 24 آذر 1392, 14:53 عصر
مرسی دوست من ولی این کد ها بازم انجام نمیدن یعنی بازم با آوردن برنامه ای نوشتاری مثل ورد یا نوت پد دوباره زبان Default میشه رو انگلیسی

behrooz69
یک شنبه 24 آذر 1392, 21:07 عصر
بچه ها من هرجوری شده با کمک این 2 تا دوستمون درستش کردم . ولی بازم 2 تا مشکل هست . همه چیز خوبه و آرومه .
مشکل 1 : با باز کردن ورد و نوت پد دوباره زبان برمیگرده رو انگلیسی .

مشکل 2 :من می خوام وقتی وورد یا نوت پد رو باز می کنم اگه احیاناٌ زبان سیستم برگشت یا حتی کاربر دستی زبان سیستم رو انگلیسی کرده بود برنامه پیام بده که زبان تغییر کرد و خودش دوباره زبان رو فارسی کنه .. لطفا کمکم کنید .
اینم سورس :

114000

Hossis
دوشنبه 25 آذر 1392, 07:19 صبح
اصلا شما نیازی نیست که زبان ورد و نوت پد رو چک کنید
فقط توی رویداد اکتیویت مربوط به فرمتون ، کد تغییر زبان رو بنویسید
sub Form_activate()
Dim farsi As New Globalization.CultureInfo("fa-IR")
(InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(farsi
end sub

این هم از کد چک کردن زبان ویندوز:

Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage
MsgBox(myCurrentLanguage.Culture.EnglishName)

behrooz69
دوشنبه 25 آذر 1392, 19:44 عصر
نشد داداشم بازم نشد . بدجوری موندم توش