المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : التعامل مع البرامج الخارجية ؟


AL-MOB4RM3G
22-12-2008, 10:14 AM
السلام عليكم من جديد

اخواني لي سؤال بخصوص التعامل مع البرامج الخارجيّة؟
يعني لو اعتطيتكم مثال على ما اقصد...

انا لدي فورم وبه 3 كبسات buttons

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

وعند الضغظ على الكيثة الثالثة يتم عمل sign out الى اخره...
اظن اتضحت الفكرة...

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

me&delphi
24-12-2008, 09:10 PM
هنالك دوال api messenger ابحث قليلا وستجد الحل ان شاء الله

AL-MOB4RM3G
25-12-2008, 07:26 AM
طيب اخي. هل هذا معناه ان عند التاعامل مع البرمج الخارجيّة دائما احتاج الى ال api ?
في الحقيقة انا لا اتعامل مع الماسنجر ولكن اعطيته فقد كمثال.
التعامل مع برنامج البالتولك شبيه بلماسنجر.
هل يجب على ان ابحث عن ال paltalk api ?
فعلت هذا ولكن لم اجد شيا مناسبا ولله المستعان.

قررت ان اعمل برنامج صغير.
في الفورم عندي label و button واحد.
عند الضغط على البتون سيتم عمل كوبي للاديد بوكس للآلة الحاسبة.
صورة...
http://cybernetnews.com/wp-content/uploads/2008/02/xp-calc.jpg
...يعني اذا مكتوب 0 يتم كتابة 0 في ال label عند الضغط على ال button
وإذا مكتوب 434 سيتم كتابة هذا في اليبيل وو الى اخره...
هل احد يعلم كيف السبيل الى ذلك ؟
انا بحثت قليلا... قصدي كثيرا :D
ووجدت هذا الرابط... اظن انه يفيد...
http://delphi.about.com/od/windowsshellapi/a/wm_copydata.htm
ولكن مشكلتي انني لست قويا في الإنجليزية...
ولكن سأحاول قدر المستطاع ان شاء الله...
ودعوا لي بتوفيق

B.M.AbdelAziZ
25-12-2008, 02:10 PM
لكي تتحكم باي برنامج خارجي عليك ان تعرف كيفية عمل ذلك البرنامج وهذا يكون بالهندسة العكسية وتحليل عمل البرنامج بالتفصيل

انا لدي 3 buttons
الضغط على الأولى يتم عمل اونلين في الماسجر
الضغظ على الثانية فيتم عمل حالة الماسجر مشغول busy
الضغظ على الثالثة يتم عمل sign out


لكي تعمل ذلك عليك ان تجيب:

كيف يعمل الماسنجر Login ؟
كيف يغير الماسنجر الحالة الى Busy ؟
كيف يعمل الماسنجر LogOut ؟

عندما تعرف الإجابة تحاول القيام بها برمجيا
والسلام عليكم

AL-MOB4RM3G
28-12-2008, 01:38 PM
السلام عليكم من جديد...

الحمد لله بدأ التوصول الى شئ :D... وانا الآن فراحان جداّ جداّ

قلت في نفسي...
لو سهلت الطريقة على نفسي حتى اعرف اولا كيفية التعامل...

فقررت ان اعمل برنامج صغير...
في الفورم عندي label و button واحد...
عند الضغط على البتون سيتم عمل كوبي للاديد بوكس للآلة الحاسبة...

الحمد لله حققت الآن اول هدف لي...
وتم برمجة برنامج يعمل المطلوب...

وستخدمت فيه هذا الكود...

procedure TForm1.Button1Click(Sender: TObject);
var
forr, edi : THandle;
Tex: string;
begin
forr := FindWindow('SciCalc',nil);
edi := FindWindowEx(forr,0,'Edit',nil);
SetLength(Tex,Max_Path);
SendMessage(edi,WM_GETTEXT,Max_Path,LongInt(@Tex[1]));
edit1.Text:=Tex;

end;

والحمد لله ماشي الحال...
طبعا الأخواد تقريبا كوبي باست من موضوع الأخ...
لكن انا الآن تقريبا افهم ما معنيها...

وسيتم التعمق ان شاء الله تعلى ...
وأعدكم ان شاء الله انني سأعمل درس ...
يكون سهل ومفيد ان شاء الله... وخصوصا للمبتدئين... مثلي :D

لمن اراد السورس فليتفضل..
في المرفقات..

ويا حب ذا لو يقوم احد بتحميل البرنامج ويجربه...
حتى اعرف ان كان شغّال على جهازي فقد ام على كل الأجهزة...

بارك الله فيكم

ELARAPY
14-06-2011, 07:08 AM
بارك الله فيك اخي الفاضل طبعا عمل ممتاز والبرنامج شغال 100%
والف مبروك على التقدم وان شاء الله مزيد من التقدم للجميع

bibill
17-04-2012, 08:04 AM
السلام عليكم و رحمة الله :
الكود الذي قدمه الاخ AL-MOB4RM3G حقا يعمل و لاكن يحتاج الى الشرح :
- كيف حصلت على SciCalc في الكو
دforr := FindWindow('SciCalc',nil);
- أما ثانيا فمشكلتي هي نقل السلسلة النصية من التطبيق الخاص بي الى برنامج آخر
بعبارة أخرى مثلا في التطبيق الذي أنشأته من : edit1 لتطبيقك الى الآلة الحاسبة
وفي الاخير شكرا بالخصوص للاخ كاش واحد الذي أرشدني للموضوع

bibill
23-04-2012, 09:57 AM
السلام عليكم و رحمة الله

هذا الشرح مأخوذ مباشرتا من منتدى كلية الهندسة المعلوماتية للأخ حسام محمد علي

البرنامج السابق ينقل محتويات نص من الحاسبة الى تطبيقي
المنهج الاول forr := FindWindow('SciCalc',nil);
يبحث عن برنامج الحاسبة في الذاكرة وعندما يجده يعيد ممسك لايساوي nil يدل على العثور عليه

المنهج الثاني
edi := FindWindowEx(forr,0,'Edit',nil);
يبحث عن العنصر ذو الاسم Edit داخل برنامج الحاسبة
المنهج SendMessage يرسل رسالة الى نظام التشغيل ويندوز الى البرنامج المحدد بممسك الوسيط الاول وهنا

الرسالة هي WM_GETTEXT اي اعطني النص المحدد ضمن العنصر Edit
وضعه في الوسيط الرابع للتابع SendMessage

برنامج الذي تريده هو كما يلي:

uses messages;
procedure TForm1.Button1Click(Sender: TObject);

var
forr, edi : THandle;
Tex: string;
begin
forr := FindWindow('SciCalc',nil);
edi := FindWindowEx(forr,0,'Edit',nil);
SetLength(Tex,Max_Path);
Tex:=Edit2.Text;;
SendMessage(edi,WM_SETTEXT,Max_Path,LongInt(@Tex

[1]));
end;

بالبداية ضع النص المراد ضمن تطبيقك ثم المنهج SendMessage مع الرسالة WM_SETTEXT يرسل الرسالة الى الحاسبة
وبقي لي الغموض فقك في مايخص كيفية الحصول على : SciCalc
و شكرا

bibill
02-05-2012, 08:56 AM
السلام عليكم :

بقي لي الغموض فقط في مايخص كيفية الحصول على : SciCalc

فهل ممن يستطيع الاجابة . و السلام عليكم

khalmoh1971
09-05-2012, 06:36 PM
شكرا على الهدية