الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الكود ده بجد قرفنى بخصوص معرفه اللغه المستخدمه للوحه المفاتيح

مغلق
بدأه half angel في 7 يونيو 2006 · 11 رد · 1,274 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

بالنسبه لمعرفه اللغه المستخدمه للكتابه على لوحه المفاتيح هل هى العربيه ام الانجليزيه .

انا استخدمت الداله

 GetKeyboardLayout

التعريف :

  Declare Function GetKeyboardLayout Lib "user32" (ByVal dwlayout As Long) As Long

الاجراء اللى كتبتو

	Sub keyboardlang()
  Dim kbd As Long
  kbd = GetKeyboardLayout(0)
  If Right(kbd, 1) = 3 Then
	'ar
	Form1.text1 = "ar"
  Else
	'en
	Form1.text1 = "en"
  End If
End Sub

انا بستدعى الاجراء من داخل تايمر كل ثنيه الكود شغال و كل حاجهتمام بس المشكله انى مثلا لو فتحت برنامج ال word و بدائت اكتب فيه لما بغير لغه الكتابه من الانجليزى للعربى او العكس عن طريق الضغط على الت و كونترول الكود السابق لا يلاحظ التغير و يبقى على القرائه اللى اخذها عند بدايه البرنامج

انا كل اللى عايزو انى لما اغير اللغه اثناء الكتابه على اى صفحه يقوم بقرائتها على طول اى البرنامج يعرف ان اللغه اتغيرت انا لاحظت ان المشكله كلها ان الكود السابق يعمل فى ظل التركيز على نافذه البرنامج و عدم الخروج عنها اى لما بكون بداخل البرنامج اللى انا عامله بيلاحظ التغير بس لما بخرج عنه لا يائخذ اعتبار اى تغير فى اللغه

يا ريت من الاخوه الاعضاء اللى عندو حل للمشكله دى يساعدنى و جذاه الله كل خير

#2

انا ارفقت الكود فارجو التعديل عليه من فضلكم

half_angel.rar

#3

الكود ده خاص بالنافذة اللى تنفذ بها الكود

جرب مثلا أفتح نافذتين notepad

و أكتب فى الأولى بالعربى و الثانية بالأنجليزى

و تنقل بن النافذتين هتلاقى الأولى لغة الكتابة عربى و الثانية أنجليزى

ما أريد قولة أن لغة الكتابة خاصة بالنافذة

الحل :

ممكن تعمل hook على النافذة النشطة لمعرفة لغة الكتابة

فمن الممكن إعتراض الرسالة WM_SYSKEYDOWN

بأنتظار الضغط على ALT & SHIFT

دى مجرد أفكار

أكيد فى حل تانى غير اللى أنا قولته بس على ما أظن هيكون hook برضه على النافذة النشطه

لا تراجع و لا إستسلام

#4

شكرا كتير يا اخى net_code انت اول واحد تعبرنى

فكرتك حلوه و ممكن تفيدنى بس انا بصراحه معرفش اعمل hook لمعرفه النافذه النشيطه

فلو ممكن تعدلى على المرفق تكون مشكور

انا اعرف طريقه تانيه من خلال متابعه alt+shift بس الطريقه دى طويله شويتين و انا عايز اقصر الطرق

#5

آسف من زمان عن الـ API لذلك الحل سيكون نظري :)

الحل برأيي هو :

معرفة لغة لوحة التحكم الحالية

ثم وضع HOOK على لوحة المفاتيح (بغض النظر عن النافذة النشطة)

ثم راقب المفاتيح التي تضغط

وهكذا

ولكن

ماذا لو تغيرت لغة لوحة المفاتيح بواسطة الفارة :blink:

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#6

كتن عندى الكود ده هدورلك عليه وهو فكرته انه بيجيب ال ID الخاص بالنافذة النشيطة وعن طريق دالة API تأخذ ال ID وتجيب اللغة الحالية للنافذة النشيطة .. هحاول اجيبلك الكود

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#7

الموضوع جيد جدا بالفعل و كنت أبحث عن هذا الكود منذ فترة طويلة و ياريت أن نستطيع عكس اللغة المستخدمة على الفورم ذاته(بمعنى أنه لو كان المستخدم قد حدد لغة فورم الفيجوال بيسك العربية ثم أنتقل إلى برنامج أخر و غير اللغة إلى الأنجليزية فأن فورم الفيجوال بيسك يقوم بألتقاط التغيير و تغير لغته أيضا و حتى لو كانت أى لغة أخرى و التأثر بها

#8

اخى MSVS لو تفضلت تشرحلى طريقه اختطاف الرسائل المرسله للكيبورد بمثال اكون شاكر

و بالنسبه لتغير اللغه عن طريق الموس دى بردو كانت مشكله اتعرضت ليها فى الحل اللى وجته و كان ذالك من خلال دوال api لمعرفه حاله الازرار

getkeystate()

فعند بداء تحميل الفورم بجيب اللغه الحاليه للوحه المفاتيح بفرض الانجليزيه فعند الضغط على alt+shift من اى نافذه اخرى غير نافذه البرنامج

تتحول للعربيه و العكس بس الحل ده طويل اوى و يحتمل الخطىء و بردو مبيجبش عمليه تغير اللغه من خلال الماوس ....

اخى VB6-Rocket شكرا لك على المرور و انا فى انتظار الكود بس دور عليه كويس :D

شكرا لك xhacker على المشاركه

فى انتظار الردود

#9

سأحاول معرفة كيف يفعلها ملف ال ctfmon و سأوافيكم بالتفاصيل قريبا

لا تراجع و لا إستسلام

#10

بسم الله الرحمن الرحيم

اخي العزيز

انت تحتاج لمعرفة مقبض النافذة النشطة اولا وذلك عن طريق الدالة

h = GetForegroundWindow

ثانيا معرفة رقم

ThreadProcessId

وذلك بواسطة الدالة

h_thr = GetWindowThreadProcessId(h, 0)

القيمة الناتجة تمررها الي

If GetKeyboardLayout(h_thr) = 67177473 Then Form1.Text1 = "ar"

If GetKeyboardLayout(h_thr) = 67699721 Then Form1.Text1 = "en"

لانك عندما تمرر قيمة صفر يعود بحالة الكيبورد ل

thread

النشطة فقط

التعديل في المرفق

بدلا من التايمر استعمل

hook

راقب

WM_INPUTLANGCHANGE

السلام عليكم

half_angel0.rar

#11

عمل ممتاز بالفعل

تم تعديل هذه المشاركة بواسطة xhacker في 9 يونيو 2006 في 19:42

#12

شكرا اخى amr420 بجد الله ينور عليك هو ده اللى انا كنت عاوزه

معلش يا شباب تعبتكم معايه بس الحمد لله جت بنتيجه فى الاخر

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…