برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة: كيفية الحصول على الحروف العكوسة من لوحة المفاتيح - برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة

اذهب للمحتوى

تنبيه

تم تحديث قوانين القسم يرجى قراءتها جيداً و ذلك حفاظاً على نظام القسم و حماية لمشاركاتك اضغط هنا لقراءة الجديد
  • (2 صفحات)
  • +
  • 1
  • 2
  • لا يمكنك بدء موضوع جديد
  • هذا الموضوع مغلق

كيفية الحصول على الحروف العكوسة من لوحة المفاتيح مشروع بسيط لتحريك القسم اضف تقييما للموضوع -----

#1     غير متواجد   b.m.s Icon

  • خبير C++
  • مجموعة الخبراء المعتمدون
  • مشاركات 660
  • التقييم 12
  • النقاط المتوفرة 10.20
  • 2.40
    النقاط المحصلة
++

تم الارسال 21/06/2007 - 11:41 PM

أوه من زمان ما كتبت موضوع في هذا القسم :lol:

وبمناسبة الإجازة السعيدة , التعيسة على البعض , فكرت أصلح مشروع برنامج بسيط صغير أتعلم فيه بعض الأشياء ويكون مفيد لكل الأعضاء .

فكرة البرنامج وهو إنه يحاول معالجة الكتابة الخاطئة أحياناً بحيث ما يضطر المستخدم إلى إعادة كتابة الجملة كاملة لو كان يكتب بلغة غير الموجودة . مثال

شخص كان يكتب بالعربي وفجأة حول إلى اللغة الإنجليزية وكتب كلمة واحدة بعدين حول إلى العربي (لكن ما نجح التجول) وكتب كلام كثير ويوم ناظر للشاشة لقى حروف ملخبطة , هل لازم يعيد يكتب من جديد ؟ أحسها صعبه , خلاص حنا تطورنا B) .

مثال عملي : شخص يبي يكتب "لغة ال++C أفضل لغة حتى الآن".
قام يكتب على الكيبور "لغة ال++C Htqg gym pjn hgNk".

الحل التقليد : إعادة كتابة الكلام الملخبط .
الحل الأفضل : الضغط على مثلاً Ctrl + Shift + T . وخلاص مبروك إنحلت المشكلة .

الأجزاء المهمة في المشروع :-
1) تعميمة على النظام كامل بحيث يعمل في الخلفية ويصير في جميع البرامج ,مثل الماسينجر والفايرفوكس ووووو .
2) بناء جدول للحروف بحيث يحول بين حروف اللغتين المتوفرة في نظام التشغيل (مثل بين الحروف العربية والإنجليزية أي الحرف f يقابله الحرف ب).

حل الأجزاء المهمة في المشروع :-
1) تعميم البرنامج على النظام هذه حلها بسيط وهو عن طريق الhook للنظام كامل , وأتوقع حلها يكلف فقط وقت .
2) بناء الجدول وهذه مشكلته عويصة وصعبة , كيف أقدر أبني الجدول من خلال الحروف الموجودة في لوحة المفاتيح , هل توجد دوال في النظام تسمح لي بالحصول على قيم لوحات المفاتيح في حالة اللغتين حتى يكون النظام يعتمد على ماهو موجود عند المستخدم وليس ما هو متوفر عند المستخدم .

المشاكل المتوقعة :-
1) جعل البرنامج سريع وبدون أن يبطئ في النظام.
2) معرفة مكان أول كلمة خاطئة - هذه صعبة شوي :wacko: -

المطلوب :-
آرائكم , نصائحكم , حلولكم , مساعدتكم , ردودكم , أي حاجة ,أهم شئ تثرون الموضوع :D

تم تعديل هذه المشاركة بواسطةb.m.s: 21/06/2007 - 11:42 PM

0

شارك هذا الموضوع

      

#2     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 22/06/2007 - 06:21 AM

فكرة جيدة

Quote

1) تعميمة على النظام كامل بحيث يعمل في الخلفية ويصير في جميع البرامج ,مثل الماسينجر والفايرفوكس ووووو

ربما نواجه بعض الصعوبة مع بعض البرامج

Quote

2) بناء جدول للحروف بحيث يحول بين حروف اللغتين المتوفرة في نظام التشغيل (مثل بين الحروف العربية والإنجليزية أي الحرف f يقابله الحرف ب).

Quote

2) بناء الجدول وهذه مشكلته عويصة وصعبة , كيف أقدر أبني الجدول من خلال الحروف الموجودة في لوحة المفاتيح , هل توجد دوال في النظام تسمح لي بالحصول على قيم لوحات المفاتيح في حالة اللغتين حتى يكون النظام يعتمد على ماهو موجود عند المستخدم وليس ما هو متوفر عند المستخدم .

تابع كهذا قد يفيد MapVirtualKeyEx Function
أيضا الدوال في Keyboard Input Function قد تفيد في الموضوع ... وإن كان من الضروري عمل جدول فلا أتوقع أن المشكلة صعبة جداً ...
بقيت أهم نقطة

Quote

) معرفة مكان أول كلمة خاطئة - هذه صعبة شوي

لا أعتقد أنك ستستطيع معرفة مكان أول كلمة أو لنقل الجزء المراد تعديله في هذه الحالة ...
بالإمكان جعل المستخدم يختار الجزء المراد تحويله ثم بعد الضغط على الـ hotkey الذي إختاره البرنامج مثلاً Ctrl+Shift+T - كما أشرت - وحينها بالإمكان إظهار قائمة فيها خيارات بلغات الإدخال-input language - المراد التحويل إليها ... يجب الإنتباه أننا نناقش Input Language وليست natural language .
0

#3     غير متواجد   كلمة الـعـرب Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 245
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 22/06/2007 - 05:09 PM

اخي العزيز (b.m.s)...

بامكاننا العمل كالتالي.. (على اساس ان المستخدم حدد الكلمة او الجملة)
المرور على جميع الحروف واستبدال شيفرة اسكي للحرف بالشيفرة العربية او العكس..

كمثال صغير...
#include <iostream.h>
#include <stdio.h>
/*------------------*/
main()
{
char ch;
cin >> ch;
/*-------------*/
if (ch==65)
ch=212;
/*----------*/
cout << ch;
getchar();
}

هنا ادخل الحرف A سيظهر مكانه الحرف المقابل له بلوحة المفاتيح ش (لاحظ الحرف A الكبير)..
هذا كتطبيق صغير للفكرة...
اعلم انه لاشيئ.. لكن اعتقد اننا نستطيع البدء من هنا...

بالتوفيق...
0

#4     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 22/06/2007 - 06:33 PM

كلمة الـعـرب
الأخ B.M.S أشار إلى ما ذكرته وهو" بناء الجدول".
كما ذكرت التعامل سيكون مع Input Languge فبعض المحارف تختلف موقعها باختلاف الـ Input Langauage فمثلاًArabic-Yemen تختلف قليلاً عن Arabic-Algeria ...
0

#5     غير متواجد   الشمري Icon

  • مشرف قسم برمجة الألعاب و مراقب عام
  • مجموعة إدارة الفريق العربي
  • مشاركات 5034
  • التقييم 298
  • النقاط المتوفرة 65.30
  • 68.30
    النقاط المحصلة
++

تم الارسال 22/06/2007 - 07:45 PM

أتوقع يجب أن نضع حدود للمشروع والا رح نضيع ..
أرى فوق رأسي عدة علامات استفهام ,,, سأطرحها حتى لو كان طرحها في غير وقتها ولكن :

Quote

آرائكم , نصائحكم , حلولكم , مساعدتكم , ردودكم , أي حاجة ,أهم شئ تثرون الموضوع


أين المشكلة الان .. هل هي بتحويل الكلام الملخبط .. او مراقبة لوحة المفاتيح .. او تغيير الخطأ ( يعني تدخل داخل البرنامج وداخل الحقل النصي وتغير الخطأ ) ,,

- مسألة اخرى ... هل البرنامج يكتشف انه الكلام ملخبط .. أو هذه ليست من مهمته ,, يعني نحن من يأمره بالتعديل .

رأيي هو أن يتم تقسيم المشروع الى عدة مكتبات ..
- مكتبة تتعامل مع النص الخاطئ وتحوله الى المقابل الصحيح ( وهذا اتوقع اسهل شيء في المشروع ) .
- مكتبة تقتحم البرنامج اللي حصل فيه الخطأ وتحصل على النص الخاطئ وتعطيه المكتبة السابقة .. لتعطينا المكتبة الحل الصحيح ونقتحم مرة اخرى البرنامج ونضع فيه النص الصحيح ,

هناك حل سهل ..

وهو انه فقط نراقب الكيبورد .. ونحفظ كل الحروف المدخلة ..
ومتى ما اراد المستخدم التراجع يفتح برنامجنا .. ويختار النص اللي فيه المشكلة ويختار تحويله .. ثم ينسخه من برنامجنا ( يعني برنامجنا ماتدخل في شؤون البرامج الاخرى )

لا ادري هل قدمت شيء جديد ... أحس ان كلامي هو نسخة من كلام الاخ بندر :D .

اعتبر كلامي هو من فئة

Quote

أي حاجة

:D
0

#6     غير متواجد   كلمة الـعـرب Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 245
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 23/06/2007 - 01:12 AM

اخي (cipher)..

Quote

فبعض المحارف تختلف موقعها باختلاف الـ Input Langauage

الا نستطيع تجاهل ذلك..
فكل مانريد فعله هو استبدال الحرف الانجليزي بالحرف المقابل له بالعربي...

Quote

مثال عملي : شخص يبي يكتب "لغة ال++C أفضل لغة حتى الآن".
قام يكتب على الكيبور "لغة ال++C Htqg gym pjn hgNk".

Htqg = أفضل
من الممكن انني لم افهم ما تقصده.. اذا كنت كذلك ضع مثال اوضح على ما تقصد...

تحياتي..
0

#7     غير متواجد   b.m.s Icon

  • خبير C++
  • مجموعة الخبراء المعتمدون
  • مشاركات 660
  • التقييم 12
  • النقاط المتوفرة 10.20
  • 2.40
    النقاط المحصلة
++

تم الارسال 23/06/2007 - 02:49 AM

هلا بـ cipher
كذا الواحد لما يشوفك معه له نفس يشتغل . :lol:
ومثل ما قلت أنا من قبل إن التحويل على حسب الحروف الموجودة في لوحة المفاتيح وراح أراجع مرجع MSDN اللي حطيته وأشوفه. لكن ما قلت وش نوعية المشاكل اللي بنقابلها في بعض البرامج . بصراحة خلفيتي بسيطة في الhook.
ومعرفة أول مكان للكلمة الخاطئة مثل ما قلت إنه صعب التعرف عليه وإقتراحك حلو وحل المشكلة وهو إن المستخدم يحدد المكان بنفسه وراح يكون هذا هو الأساس اللي راح نشتغل عليه , وفيه شئ إضافي يمكن يكون زيادة على الشغل وهو إنه البرنامج يتنبئ بمكان أول كلمة . وعندي طريقة في راسي قد تحل جزء كبير من المشكلة بأطرحها بعدين إن شاء الله . وشكر على مرورك

هلا بـ
كلمة الـعـرب
ما نقدر نتجاهل مسائلة إختلاف المحارف , وعشان البرنامج يعمل في كل الأنظمة على أي لوحة مفاتيح فالأفضل إنه يعتمد على الحروف الموجودة لنفس الزر (تقريباً أربع حروف).
وبوضح لك بمثال وهو a يقابلها ش أما A يقابلها الكسرة ِ . وقد يختلف من لوحة مفاتيح إلى غيرها . فما نقدر نعتمد على لوحة المفاتيح الموجودة عن المبرمج . وأنتظر مشاركتك .

هلا بالشمري
لا تخاف إستفهاماتك مو من أي حاجة :D .
المشكلة هي بتحويل الكلام الملخبط وحل الخطأ , يعني التدخل وتعديل النص (ما أدري على هو ممكن لكن ما أظن فيه شئ مستحيل على الhook)
والبرنامج ما يكتشف من نفسه الكلام الملخبط , حنا نقول له الحين حول , لسى ما وصلنا لمرحلة إنه يكتشف الكلام بنفسه :P

Quote

رأيي هو أن يتم تقسيم المشروع الى عدة مكتبات ..
- مكتبة تتعامل مع النص الخاطئ وتحوله الى المقابل الصحيح ( وهذا اتوقع اسهل شيء في المشروع ) .
- مكتبة تقتحم البرنامج اللي حصل فيه الخطأ وتحصل على النص الخاطئ وتعطيه المكتبة السابقة .. لتعطينا المكتبة الحل الصحيح ونقتحم مرة اخرى البرنامج ونضع فيه النص الصحيح ,

هذا هو المشروع كامل , لكن مع إضافة جزء للبرنامج وهو إنه يسمح له بالعمل في الخلفية .

بأقرى المرجع اللي وضعه cipher عشان أحدد ال Structure حق الجدول .

ولا تحرمونا من مشاركاتكم

تم تعديل هذه المشاركة بواسطةb.m.s: 23/06/2007 - 02:50 AM

0

#8     غير متواجد   Yousof Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 193
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 25/06/2007 - 01:15 AM

لماذا تكون معرفة بداية أول كلمة خاطئه صعبة التطبيق. الوورد يعرف أول كلمه خاطئه ان كانت هذه الكلمه غير موجوده في القاموس بوضع خط أحمر تحتها ..
0

#9     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 25/06/2007 - 11:40 AM

Quote

الا نستطيع تجاهل ذلك..
فكل مانريد فعله هو استبدال الحرف الانجليزي بالحرف المقابل له بالعربي...

لا يمكن تجاهل ذلك .. ذكرت مثال على ذلك في ردي السابق وأوضح الأمر الأخ بندر (b.m.s) .
Yousof:
لا نريد تعقيد المسألة بعمل مصحح إملائي ...
أظن أن الإعتماد على جعل المستخدم هو الذي يختار الجزء المراد تغييره ثم إختيار إحدى لغات الإدخال سيكون أفضل ...

Quote

بأقرى المرجع اللي وضعه cipher عشان أحدد ال Structure حق الجدول .

في الغالب لن تحتاج لعمل جدول عدا مع بعض اللغات ...
---
يبدو أن لا أحد مهتم بالموضوع ...
على العموم سأضع النقاط التي يمكن البدء بها لمن هو مهتم ...

للحصول على Input Language الموجودة حالياً في النظام :
(1) Call GetKeyboardLayoutList to get a list of  keyboard layout handles 
(2) Call VerLanguageName to get language description string

بعد ذلك يمكن إضافتها لـ PopupMenu سنستخدمها لتمكين المستخدم من الإختيار
---
لعمل التغيير بين المحارف :
a)Get the selected text
b)Using a loop through the whole text (selected text) to do:
 	1)Get virtual key using VkKeyScanA/W ...
 	2)Chk shift state and set the keystate
 	3)Call MapVirtualKeyEx, using the target keyboard layout
 	4)Call ToUnicodeEx ,using the target keyboard layout, keystate depending on step 2,..
 	5)Adding the chr to the target text
c)Replace the selected text

هذه بعض النقاط المهمة باختصار ..
عذراً لإستخدام الإنجليزية في وضع النقاط ...
تحياتي

تم تعديل هذه المشاركة بواسطةcipher: 25/06/2007 - 11:50 AM

0

#10     متواجد   سنان محمد صالح Icon

  • عضو شرف
  • مجموعة أعضاء الشرف
  • مشاركات 1069
  • التقييم 56
  • النقاط المتوفرة 9.00
  • 4.00
    النقاط المحصلة
++

تم الارسال 25/06/2007 - 03:05 PM

اخوان اذا سمحتم لي بالتدخل وابداء رأيي بالفكرة ...
اولا هناك عدة نقاط يجب ان تقوموا بحسمها في البداية ...
1. وهي هل البرنامج يعمل دائما (نجده في قائمة البرامج التي تعمل حاليا) .. ام عند الحاجه (كالقواميس) ...؟؟؟
2. طريقة التحويل(العمل) هل تكون بتحديد النص ... ام تمرير المؤشر فوقها ... ام نسخ النص ووضعه في محرر نصوص كما في القواميس ..؟؟؟
3. هل البرنامج سيبرمج بلغات البرمجه المرئية (فيجول سي ++ ) ام في لغة السي ++ الام ...؟؟؟؟ لانها تفرق جدا من ناحية الواجهة ودوال API
4. هل يحول البرنامج اللغة العربية الخطأ الى الانكليزية الصح والعكس ايضا ..؟؟؟ ام واحدةمنها فقط ؟؟؟


ثانيا .. فكره من افكار تصميم البرنامج ...
لو فرضنا ان البرنامج سيبرمج ويصمم بلغة سي++ الاصلية (غير المرئية ) فانا ارى فكرة تصميم شئ مشابه للمصفوفة او هي مصفوفة ولكن باحتمالات كثيرة وتقسم الى قسمين واحده للتحويل من العربي للانكليزي والاخرى بالعكس ..


بعد ان يقوم المستخدم بكتابة الكلمات الخطأ ... ويجد انها مكتوبه بلغة خطأ .. فإنه سيستدعي البرنامج لغرض التحويل .. يجب ان يأخذ البرنامج كلمة واحدة وهي مفصوله بمسافات .. كل كلمة ناخذ منها حرفا واحدا ونقارنه مع المصفوفة الصحيحة للغة .. فناخذ الحرف الصحيح ونضعه في مصفوفة الناتج الصحيح .. وبالنتيجة تطبع الكلمة الاولى .. وبعدها الكلمة الثانيه .. وهكذا ..
يجب الاخذ بنظر الاعتبار سهولة عمل البرنامج وسرعته لانه لو فرضنا الحاجه الماسه له من قبل المستخدم وهو يكتب احتاج البرنامج لكي يحول فلا يمكن ان ياخذ كلمة ويلصقها وينتظر التحويل ..
لو كان عمل البرنامج شبيه ببرنامج المترجم الفوري لكان هو الشكل المطلوب والجيد . اي بمجرد وضع الؤشر على الكلمة فانه يحولها الى الصحيح . وهذا ياخذ دوال API واحدا الفأرة ايضا وتفاصيل اخرى لا نتحدث عنها هنا الان .

اتمنى ان تكون فكرتي قد وصلت وانا إن شاء الله ساقوم بالبدأ بتجارب على المشروع يمكن ان اقوم ببناء بذرة له تفيد في تصميمه .
تحياتي العطره
0

#11     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 25/06/2007 - 05:11 PM

هذا رأيي الشخصي على النقاط التي وضعها الأخ MR.SD
1.هذه النقطة معروفة سلفاً وهي ككثير من البرنامج ... توفير خيار جعل البرنامج يعمل عند الدخول على الويندوز ...
البرنامج سيكون شغال دائماً - وإن لم يكن يعمل فعلى المستخدم فتحه - و سيعتمد على HotKey نحدده أو يحدده المستخدم ...
2. أفضل فكرة تحديد النص . فكرة تمرير المؤشر ستكون معقدة ... علينا ملاحظة أننا سنتعامل مع الـ Controls التي تسمح بكتابة النصوص كـ Edit , RichEdit ...
3. برنامج بواجهه رسومية وليس بالضرورة إختيار C++ كلغة .. شخصياً سأعمل على دلفي فالمهم هي الفكرة أما التنفيذ فممكن بلغات كثيرة ..
4. بالإمكان تعميم البرنامج على كل الـ Input Language الموجودة في جهاز المستخدم .. ربما نقابل مشاكل وحالات خاصة مع بعض اللغات ..

Quote

لو فرضنا ان البرنامج سيبرمج ويصمم بلغة سي++ الاصلية (غير المرئية ) فانا ارى فكرة تصميم شئ مشابه للمصفوفة او هي مصفوفة ولكن باحتمالات كثيرة وتقسم الى قسمين واحده للتحويل من العربي للانكليزي والاخرى بالعكس ..


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

ستضطر حينها إلى عمل كم كبير من المصفوفات لإحتواء قيم المحارف الخاصة بكل Input Language المعروفة ...
كما ذكر الأخ بندر و ذكرت في ردي نحن لا نتعامل مع الـ Natural Language بل مع الـ Input Language فلا يمكن أن نفترض أن حرف الـ 'a' يقابله 'ش' مثلاً ... فبإمكاني عمل طريقة إدخال جديدة و أغير من ترتيب المحارف وحينها كيف ستحل المشكلة !
أشرت إلى وجود إختلاف بين Arabic-Yemen و Arabic-Algerea في بعض المحارف مثلاً ...
لتتضع الفكرة أكثر افتح On Screen Keyboard - باستخدام osk.exe في run - وقم بالتغيير بين لغات الإدخال ولاحظ التغيير في البرنامج . أيضاً لاحظ التغيير عند الضغط على Shift أو CapsLock ...
شخصياً طبقت الخطوات التي ذكرتها في أخر رد لي في نفس البرنامج و كانت النتائج صحيحة . بقي تعميم العملية ...
هناك مشكلة بسيطة سأذكرها لاحقاً بعد أن أرى ما توصل له بقية الأخوة ..

تم تعديل هذه المشاركة بواسطةcipher: 25/06/2007 - 05:13 PM

0

#12     متواجد   سنان محمد صالح Icon

  • عضو شرف
  • مجموعة أعضاء الشرف
  • مشاركات 1069
  • التقييم 56
  • النقاط المتوفرة 9.00
  • 4.00
    النقاط المحصلة
++

تم الارسال 26/06/2007 - 03:47 PM

الاخ العزيز cipher ..
شكرا على توضيحك للنقاط التي كتبتها انا يوم امس ..
الفكرة التي اردت ان يكون البرنامج عليها كانت مبدأية وانا قرأت مشاركتك طبعا ولكن للاسف لم انتبه الى الاختلاف بين اللغات ..
وانا اعلم شئ وهو ان اللغة Arabic Iraq تختلف عن البقية وهي اللغة التي اختارها لجهازي دائما .. وايضا انا رايي عن البرنامج في البداية هي فكرة مبسطة للعمل اي ان يكون البرنامج مقتصرا على نوع واحد من اللغات وهي العربيه القياسه في الجهاز او نوع واحد من اللغات ونحول عليه وبعد ان يختبر البرنامج وينجح نقوم ببرمجة اصدارة جديده منه ليعمم على بقية اللغات .. لان الفكره والعمل الصحيح اهم شئ في البرمجة ..
ولكن لدي استفسار بسيط .. يمكن ان يبسط الحل قليلا لو تم ..
لماذا لا نجعل البرنامج يحدد في البداية لغة الجهاز ويعمل عليها ..
اي Arabi - Iraq او غيرها ومن ثم يعمل عليها بحيث البرنامج يكون نفسه مع اختلاف اللغة المصححة فقط .
على حد خبرتي ومعرفتي في نظام وندوز فانه يمكن معرفة اللغة مثلا من الريجستري او من ايمكان اخر لا اقصج التحديد ومن ثم نعم على ملفاتها التي موجوده في النظام ..
اتوقع ان هذا يسهل عمل البرنامج سواء التصميم او التنفيذ وكذلك يسرع من عمل البرنامج ..

عزيزي Cipher انا قرأت هذا الموضوع يوم امس لانني لم ادخل على المنتدى من فترة ولكن إن شاء الله ساعود للمشاركة في المنتدى لانني قد اكملت امتحاناتي الجامعية ..
اتمنى منك ان ترفق مع المشاركة اي شئ توصلت له .. سواء كود اوفكرة مع التوضيح لها لكي نستطيع ان نقوم بعمل شئ جميعنا ونستفاد منه علميا وعمليا ...

تحياتي العطرة ....
0

#13     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 26/06/2007 - 04:07 PM

الأخ MR.SD :
يبدو أنك قرأت ردودي بسرعة :)
راجع المشاركة رقم 9 خصوصاً النقاط التي ذكرتها بعد العبارة

Quote

على العموم سأضع النقاط التي يمكن البدء بها لمن هو مهتم

ستجد طريقة الحصول على جميع لغات الإدخال في الجهاز Input Languages ..
كما أني ذكرت خطوات عملية التغيير بين المحارف .. وهي عامة لأغلب لغات الإدخال ... طبعاً سنقابل بعض الحالات الخاصة وبعض المشاكل لكن الفكرة الأساسية قد وضعتها ...
لست من محبي وضع الشفرة المصدرية مباشرة دون نقاش خصوصاً وأني وضعت الخطوات وذكرت الدوال التي سنستخدمها ... ربما أضيف flow chart للخطوات المذكورة ....
يبدو أني الوحيد الذي يثرثر هنا ...
0

#14     غير متواجد   الشمري Icon

  • مشرف قسم برمجة الألعاب و مراقب عام
  • مجموعة إدارة الفريق العربي
  • مشاركات 5034
  • التقييم 298
  • النقاط المتوفرة 65.30
  • 68.30
    النقاط المحصلة
++

تم الارسال 26/06/2007 - 04:26 PM

Quote

يبدو أني الوحيد الذي يثرثر هنا ...

:) .

أنا منشغل بقسم برمجة الالعاب وهالمشاريع اللي ما تخلص ..( ما انجزت شي الى الان ) .

سأبدأ اليوم وأحاول أطبق الخطوات التي ذكرتها .
0

#15     متواجد   سنان محمد صالح Icon

  • عضو شرف
  • مجموعة أعضاء الشرف
  • مشاركات 1069
  • التقييم 56
  • النقاط المتوفرة 9.00
  • 4.00
    النقاط المحصلة
++

تم الارسال 27/06/2007 - 02:31 PM

الاخ العزيز cipher ...
يبدو اننا نفكر بنفس الطريقة لذلك وفقك الله في تحاول ان تفعل وانا ايضا بدأت ببعض الاشياء التي قد تفيد في المشروع ...
اتمنى ان تقوم بوضع موضوع خاص للمناقشة عن هذا المشروع يبدأ من الفكرة التي انت الان تعمل عليها وربما يصل الموضوع الى الحد الذي تقوم به الادارة بالتثبيت ليستفيد الجميع منه ...

بالمناسبة .. ماذا تقصد يبدو انني الوحيد الذي يثرر هنا ...؟؟؟؟

انا لدي فقط فترة الظهيرة للعمل ويمكن ان تتاكد بنفسك من وقت المشاركة .. لذلك فان الاجابة بين ردي وردك تكون متباعدة بعض الشئ ..
اما اذا كنت تقصد شيئا اخر اتمنى ان توضحه ..

تحياتي العطرة ...
0

#16     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 27/06/2007 - 07:17 PM

ما وضعته من نقاط هي الفكرة الأساسية للبرنامج وقد طبقتها ضمن البرنامج ونجحت الفكرة وبقي التعميم -وهي ليست صعبة- على بقية البرامج وساحاول عملها حين أجد الوقت ..
لا داعي لإعطاء المشروع حجم كبير والدعوة لتثبيت الموضوع .. فكرة الموضوع جيدة لكنها ليست جديدة
البارحة وجدت برنامج روسي يعمل نفس الفكرة لكنه لم يناقش مشكلة اليونيكود لذا لم يعطي نتائج صحيحة عندي ..
0

#17     غير متواجد   surini Icon

  • عضو جديد
  • مجموعة اعضاء
  • مشاركات 28
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 29/06/2007 - 03:43 PM

مشوار الألف ميل يبدأ بخطوة


واول خطوة موجودة في المرفقات
لن اشرح ماقمت به ، ولكن ادع لكم التجربة
البرنامج مرفق مع السورس كود ( الكود مكتوب بالدلفي )




تحياتي surini

ملف مرفق(ملفات)

  • ملف مرفق  KeyLayout.rar (189.64كيلو )
    عدد مرات التحميل : 34

0

#18     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 29/06/2007 - 04:16 PM

محاولة جيدة ..
تقريباً نفس الخطوات التي أشرت إليها لكن هناك مشكلة في البرنامج هي أنك لم تستخدم اليونيكود نهائياً وحيث أن فكرة البرنامج الأساسية هي اللغات فلا بد من دعم اليونيكود حتى يعمل البرنامج بشكل سليم ..
على الاقل عندي لم يعمل لان النظام عندي صيني ..
Edit1.PasteFromClipboard;

انت إعتمدت على أن الكلمة المختارة في الـ clipboard مسبقاً وبذا على المستخدم عمل ثلاث خطوات
choose text , copy to clipboard , press the hotkey then choose the language
بامكانك اختصار الخطوة copy to clipboard وعملها برمجياً ...
هناك نقطة أخرى
GetKeyboardState(keyboardState);

هذه فقط تاخذ keyboardstate في الـ current thread :)

Quote

2)Chk shift state and set the keystate

هذه الخطوة تتم عن طريق فحص القيمة الراجعة من VkKeyScanA/W
راجع MSDN

Quote

Return Values

If the function succeeds, the low-order byte of the return value contains the virtual-key code and the high-order byte contains the shift state, which can be a combination of the following flag bits:

Bit Meaning
1 Either SHIFT key is pressed.

طبعاً سنقابل مشكلة هنا في حالة كون capslock on ..
0

#19     غير متواجد   surini Icon

  • عضو جديد
  • مجموعة اعضاء
  • مشاركات 28
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 29/06/2007 - 04:53 PM

مرحباً بك اخي cipher
قد فاجئتني بسرعة ردك :D

Quote

تقريباً نفس الخطوات التي أشرت إليها لكن هناك مشكلة في البرنامج هي أنك لم تستخدم اليونيكود نهائياً وحيث أن فكرة البرنامج الأساسية هي اللغات فلا بد من دعم اليونيكود حتى يعمل البرنامج بشكل سليم


لم آخذ هذا بعين الاعتبار لان النظام كان يدير المعاملات لذا كانت تجربتي بـ ANSI
واعتقد ToUnicode ستفي بالغرص ،

Quote

انت إعتمدت على أن الكلمة المختارة في الـ clipboard مسبقاً وبذا على المستخدم عمل ثلاث خطوات
choose text , copy to clipboard , press the hotkey then choose the language
بامكانك اختصار الخطوة copy to clipboard وعملها برمجياً ...


بالفعل ،واقد اوضحت ذلك في بداية عمل البرنامج ،
اما بالنسبة للقيام بـ copy to clipboard برمجياً ، فكنت اعمل على تفيذها قبل رفع العمل ، احسست انها ستأخذ مني شيء من الوقت فاخترت ان أجلها للخطوة القادمة

وهل برأيك ان يوجد هناك طريقة افضل ؟؟؟

Quote

هناك نقطة أخرى
كود
GetKeyboardState(keyboardState);

هذه فقط تاخذ keyboardstate في الـ current thread regular_smile.gif
إقتباس
2)Chk shift state and set the keystate

هذه الخطوة تتم عن طريق فحص القيمة الراجعة من VkKeyScanA/W


ملاحظة جيده ،



اسعدتني اخي cipher بهذا المرور ، اتمنى ان ارى تفاعلاتكم البرمجية
خصوصاً اني اقدمت على هذه الخطوة لكسر حاجز التنفيذ
فلا احبذ ان تكون الافكار مجرد تنظير بدون تنفيذ

تركت لكم خطوتي الاولى لنخطوى بها حتى النهاية ، بإنتظاركم ...





تحياتي surini
0

#20     غير متواجد   cipher Icon

  • عضو
  • مجموعة اعضاء
  • مشاركات 982
  • التقييم 0
  • النقاط المتوفرة 6.00
  • 0.00
    النقاط المحصلة
++

تم الارسال 29/06/2007 - 05:22 PM

Quote

قد فاجئتني بسرعة ردك

(h) نظرة سريعة في الكود تكفي لمعرفة ما كتب فيه . المشكلة فقط في النصوص العربية تظهر خرابيط عندي بسبب النظام ..

Quote

خصوصاً اني اقدمت على هذه الخطوة لكسر حاجز التنفيذ
فلا احبذ ان تكون الافكار مجرد تنظير بدون تنفيذ

(h)
هل انا انظر؟ :)
فقط لا أحب وضع الأكواد جاهزة دون فهم الآخرين للموضوع كاملاً و عمل محاولاتهم الذاتية ...
انا عملت الكود في نفس اليوم الذي كتب فيه الموضوع وإلا ما كنت وضعت الخطوات بالتفصيل , لكن لم اضع الاكواد لاني لا أريد الموضوع فقط مجرد كود و كلٌ يذهب لحاله سبيله ...
0

شارك هذا الموضوع


  • (2 صفحات)
  • +
  • 1
  • 2
  • لا يمكنك بدء موضوع جديد
  • هذا الموضوع مغلق

( 1 ) عضو يشاهد هذا الموضوع
( 0 ) الأعضاء, ( 1 ) الزوار, ( 0 ) عضو بدخول مخفي




لإفضل مشاهدة للمنتدى إستخدم مستعرض فايرفوكس
Free PageRank Checker

 الآن ... إستايل خاص لمن يملك هاتف iPhone  ... لتنزيل البرنامج  اضغط هنا