ورود

View Full Version : سوال: id (شماره) Language bar در کد جاک برای نمایش زبان کیبورد در استاتوس بار



saeed_r67
دوشنبه 15 آذر 1389, 20:52 عصر
سلام خدمت همه عزیزان.

id (شماره) Language bar در کد جاک برای نمایش زبان کیبورد در استاتوس بار چنده؟

amir200h
دوشنبه 15 آذر 1389, 21:02 عصر
سلام دوست من.
ای دی رو خودت باید بدی

saeed_r67
پنج شنبه 18 آذر 1389, 22:47 عصر
سلام .
دوست عزیز :
برای اینکه مثلا :در استاتوس باری که با کدجاک ایجاد کردیم روشن بودن دکمه ناملوک یا کپس لوک رو نمایش بدیم باید
در پنلی که ایجاد میکنیم کد قرارا بدیم
2156=panel.
حالا نمیدونم کدی که زبان کیبورد رو نشون میده چنده؟
بازم ممنون.

saeed_r67
جمعه 26 آذر 1389, 00:45 صبح
اگه میشه دوستان یه نظری به این تاپیک داشته باشند .
ممنون

butterfly8528
پنج شنبه 02 دی 1389, 00:01 صبح
سلام دوست عزیز .


Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long


Private Sub Timer1_Timer()

Select Case GetKeyboardLayout(0)
Case 67699721
CommandBars.StatusBar.FindPane(101).Text = "EN"
Case 69796905
CommandBars.StatusBar.FindPane(101).Text = "FA"
End Select

End Sub



به جای 101 ، آیدی Pane مورد نظر را وارد کنید .

موفق باشید .

saeed_r67
پنج شنبه 02 دی 1389, 20:49 عصر
سلام دوست عزیز .


Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long


Private Sub Timer1_Timer()

Select Case GetKeyboardLayout(0)
Case 67699721
CommandBars.StatusBar.FindPane(101).Text = "EN"
Case 69796905
CommandBars.StatusBar.FindPane(101).Text = "FA"
End Select

End Sub



به جای 101 ، آیدی Pane مورد نظر را وارد کنید .

موفق باشید .




سلام .ممنون
اما من نمی خواستم از تایمر استفاده کنم .
می خواستم از کد ، خود کد جاک استفاده کنم .
که با قرار دادن کد ، کد جاک به صورت خودکار زبان رو نمایش بده .
مثل num و caps
بازم ممنون از لطفتون.

milad-fa
پنج شنبه 02 دی 1389, 21:19 عصر
سلام دوست عزیز .


Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long


Private Sub Timer1_Timer()

Select Case GetKeyboardLayout(0)
Case 67699721
CommandBars.StatusBar.FindPane(101).Text = "EN"
Case 69796905
CommandBars.StatusBar.FindPane(101).Text = "FA"
End Select

End Sub



به جای 101 ، آیدی Pane مورد نظر را وارد کنید .

موفق باشید .



با سلام،
فکر کنم منظور saeed_r67 این هستش که با استفاده از آیدی LanguageBar بجای استفاده از Timer و امثال اون بشه این قابلیت رو به StatusBar اضافه کرد.
مثل دکمه های NumLock,CapsLock,ScrollLock که برای استفاده از اونها از آیدیشون به شکل زیر استفاده میشه:
StatusBar.AddPane 59137
StatusBar.AddPane 59138
StatusBar.AddPane 59139
فکر کنم LanguageBar هم آیدی ای داشته باشه!!!
من هم همین مشکل رو دارم که تو تاپیک زیر مطرح کردم.
http://barnamenevis.org/showthread.php?266120-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-StatusBar
ممنون میشم اگه به این تاپیک هم یه نگاهی بندازید.
با تشکّر.

butterfly8528
پنج شنبه 02 دی 1389, 23:12 عصر
سلام دوستان عزیز .

تا اونجایی که من اطلاع دارم ID خاصی برای Language در نظر گرفته نشده.

اگه ناراحت استفاده از تایمر و سرباری که ایجاد میکنه هستید،یک راه دیگه وجود داره که در زیر اون رو توضیح میدم :

ویندوز یه پیغام داره با نام WM_INPUTLANGCHANGE که برابر با مقدار &H51 هست، وقتی زبان نوشتار تغییر پیدا بکنه این پیغام به صورت خودکار به همه پنجره های برنامه ها ارسال میشه .

حالا شما باید با استفاده از توابع WaitMessage و PeekMessage یک Message Handler در برنامه خودتون ایجاد کنید، و به محض دریافت پیغام WM_INPUTLANGCHANGE ، با استفاده از تابع GetKeyboardLayout آیدی زبان نوشتار رو چک کنید و مقدار مورد نظر رو در StatusBar نمایش بدید .

موفق و پیروز باشید .