delphi4arab منتديات دلفي للعرب

نسخة كاملة : التعامل مع البرامج الخارجية ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم من جديد

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

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

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

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

نعم...
كيف يتم عمل ذلك...
عندي برنامج ال windowsspy حتى اتمكن من معرفة ال هاندل ولكن لا اعلم كيف الطريقة..
بارك الله بكم
هنالك دوال api messenger ابحث قليلا وستجد الحل ان شاء الله
طيب اخي. هل هذا معناه ان عند التاعامل مع البرمج الخارجيّة دائما احتاج الى ال api ?
في الحقيقة انا لا اتعامل مع الماسنجر ولكن اعطيته فقد كمثال.
التعامل مع برنامج البالتولك شبيه بلماسنجر.
هل يجب على ان ابحث عن ال paltalk api ?
فعلت هذا ولكن لم اجد شيا مناسبا ولله المستعان.

قررت ان اعمل برنامج صغير.
في الفورم عندي label و button واحد.
عند الضغط على البتون سيتم عمل كوبي للاديد بوكس للآلة الحاسبة.
صورة...
[صورة: xp-calc.jpg]
...يعني اذا مكتوب 0 يتم كتابة 0 في ال label عند الضغط على ال button
وإذا مكتوب 434 سيتم كتابة هذا في اليبيل وو الى اخره...
هل احد يعلم كيف السبيل الى ذلك ؟
انا بحثت قليلا... قصدي كثيرا Big Grin
ووجدت هذا الرابط... اظن انه يفيد...
http://delphi.about.com/od/windowsshella...pydata.htm
ولكن مشكلتي انني لست قويا في الإنجليزية...
ولكن سأحاول قدر المستطاع ان شاء الله...
ودعوا لي بتوفيق

لكي تتحكم باي برنامج خارجي عليك ان تعرف كيفية عمل ذلك البرنامج وهذا يكون بالهندسة العكسية وتحليل عمل البرنامج بالتفصيل
moh__ كتب :انا لدي 3 buttons
الضغط على الأولى يتم عمل اونلين في الماسجر
الضغظ على الثانية فيتم عمل حالة الماسجر مشغول busy
الضغظ على الثالثة يتم عمل sign out

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

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

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

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

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

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

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

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

PHP كود :
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; 

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

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

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

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

بارك الله فيكم
[color="purple"]بارك الله فيك اخي الفاضل طبعا عمل ممتاز والبرنامج شغال 100%
والف مبروك على التقدم وان شاء الله مزيد من التقدم للجميع
[/color]
السلام عليكم و رحمة الله :
الكود الذي قدمه الاخ AL-MOB4RM3G حقا يعمل و لاكن يحتاج الى الشرح :
- كيف حصلت على SciCalc في الكو
دforr := FindWindow('SciCalc',nil);
- أما ثانيا فمشكلتي هي نقل السلسلة النصية من التطبيق الخاص بي الى برنامج آخر
بعبارة أخرى مثلا في التطبيق الذي أنشأته من : edit1 لتطبيقك الى الآلة الحاسبة
وفي الاخير شكرا بالخصوص للاخ كاش واحد الذي أرشدني للموضوع
السلام عليكم و رحمة الله

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

البرنامج السابق ينقل محتويات نص من الحاسبة الى تطبيقي
المنهج الاول 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
و شكرا
السلام عليكم :

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

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