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

التعامل مع نافذة برنامج آخر ؟؟

مغلق
بدأه <>دلفي<> في 19 أغسطس 2004 · 6 رد · 773 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ممكن مثال لطريقة التعامل مع نوافذ أخرى من برنامجي

مثلا

إذا قمت بتصميم برنامج يوجد فيه أداة list وراح يكون فيها مجموعة بيانات

إسم البرنامج (file1)

(تحميل المشروع) http://www.arttimeetc.com/alzaim/pic/file1.zip

هل ممكن تصميم برنامج آخر حين تشغيله يتأكد من وجود البرنامج الأول

ثم إحضار البيانات من البرنامج الأول الموجوده داخل list الى هذا البرنامج

اذا كان الأمر صعب

البرنامج الأول يكون فيه زر حين ضغطه يحفظ البيانات الموجوده في كل Items داخل list تلقائي لمجلد معين بنسق html

هل من الممكن أيضا الضغط على هذا الزر من القائمه من برنامجي

أريد السيطره على النافذه الأخرى بأي شكل من الأشكال

:)

شكراااااا

تم تعديل هذه المشاركة بواسطة <>دلفي<> في 19 أغسطس 2004 في 19:37

محمـــــــــد

المملكه العربيه السعوديـــه

[الفريق العربي للبرمجه الأفضـل دائما]

/

::::::::::::::::::::::::::::::::::::

msvbvm60.dll = فيجوال بيسك

.................= دلفــــــــــــــي

::::::::::::::::::::::::::::::::::::

#2

عليكم السلام

بامكانك استخدام windows messages لعمل ما تريده .

ربما التعامل مع ListBox & ListView سيكون اصعب قليلاً في بادئ الأمر لكن بتطبيق اكثر من message سيصبح الأمر سهلا . ستحتاج لاستعمال اكثر من message للحصول على معلومات كل Item خاصة ان كانت listview بعدة اعمدة ....

التعامل مع Button سيكون أسهل فبمجرد ارساله Message واحدة BM_CLICK سيتم تنفيذ الأمر في البرنامج الأخر وتحصل على الملف html ...

طبعا لازم تحصل على Hadle للمكون الذي تريد التحكم به ....

المعذرة ليس لدي وقت لوضع شرح اكثر عن الموضوع ..

راجع ListBox &ListView messages وحاول تتعرف على طريق ارسال message للحصول على معلومة معينة ..

ان وجدت وقت ساحاول كتابة رد اطول مفصل ولكن لا أظن انه سيكون لدي وقت لفترة طويلة قد تصل الى شهر

تحياتي

CIONO1

تم تعديل هذه المشاركة بواسطة tmaaa في 21 أغسطس 2004 في 15:51

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

كما قال الاخ tmaaa و ممكن ان تجد ال handle باستخدام SPY++ الذي ياتي مع الفجوال ستوديو و ممكن تحميله او باستخدام دالة FindWindow لكن يجب ان تعرف ال Classname لبرنامجك لاستعمال هذه الاداة. على كل بعد ان تحصل على المقبض(handle) للبرنامج استعمل دالة FindWindowEx لايجاد المقبض لاي نافذة داخلية و من ثم SendMessage لارسال Windows Message

procedure DoSomething()
double hWnd; double InsidehWnd; 
begin
  hWnd = FindWindow("ClassNameHere", NULL);
   InsidehWnd = FindWindowEx(hWnd, etc);
   SendMessage(InsidehWnd, BM_CLICK, 0,0);
End;

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#4

ممتاااااااز :)

PostMessage << FindWindow

استطعت ارسال أمر معين للنافذه الأخرى مثلا الزر (vk_F1 = F1)

وتم تنفيذ الأمر وحفظ الملف طبعا بمعرفة window name

بدئت أفهمها أكثر ولكن

حين جربت البرنامج على نظام ويندوز 98 لم يعمل الأمر بشكل جديد هل الخطأ في الكود أو ماذا

أنا جربت المثال وناجح على نظام XP

محمـــــــــد

المملكه العربيه السعوديـــه

[الفريق العربي للبرمجه الأفضـل دائما]

/

::::::::::::::::::::::::::::::::::::

msvbvm60.dll = فيجوال بيسك

.................= دلفــــــــــــــي

::::::::::::::::::::::::::::::::::::

#5

اتوقع انه اختلاف في الرسائل اوة قيمها في ال وندوز 98

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#6

ممكن تكتب الكود الذي استعملته فربما منه نعرف الخلل ..

لا أعلم ما المشكله مع win98 , شخصيا لم أتعامل مع win98 منذ ظهور win2k و لا أحبذ استعمالها هي و winme ( ما ارتحت لهما ابدا ).

window & messages api functions ممكن تعطيك أشياء كثيرة ان استعملتها بكثرة واتقنتها ...

لا أعلم ان كنت لسه زعلان مني ام لا :)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#7

شكرا لكم

قبل كتابة الكود أود أن أسئل عن بعض الأمور إذا أمكن

بالنسبه لي

SendMessage

يوجد في الداله

wMsg مع wParam

فقط أريد أن أعرف ماذا تعني wMsg و

(WM_SETTEXT,WM_LBUTTONDOWN ,WM_KEYDOWN ,WM_KEYUP ,VK_SPACE)

ماذا تعني بالضبط هذي الأوامر ومتى نستخدمها ؟

سؤالي الثاني

FindWindow

الآن لو أردت إيجاد نافذه معينه لبرنامج مجرد كتابة windows name يكفي لذلك

W := FindWindow(NIL,'Form1');

ولكن ماذا لو كنت أريد إيجاد أداه معينه داخل النافذه Form1

مثلا لو أردت أرسال جمله من برنامجي الى أداة النص edit في البرنامج الآخر

الآن يجب تحديد نافذة البرنامج ككل ثم تحديد الـ edit ثم إستخدام أمر الإرسال

هل الطريقه هكذا صحيح أو هناك طريقه أخرى أو ماذا

الكود

""""""""""""""""""""""""""""""""""""""""""""

var  W : HWnd;
begin
W := FindWindow(NIL,'Form1');
if W <> 0 then
begin
PostMessage(W, wm_KeyDown, vk_F1,0);
end;
end;

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

وطبعا المثال يقوم بإرسال الأمر F1

tmaaa :) أبدااااااا

تم تعديل هذه المشاركة بواسطة <>دلفي<> في 23 أغسطس 2004 في 12:12

محمـــــــــد

المملكه العربيه السعوديـــه

[الفريق العربي للبرمجه الأفضـل دائما]

/

::::::::::::::::::::::::::::::::::::

msvbvm60.dll = فيجوال بيسك

.................= دلفــــــــــــــي

::::::::::::::::::::::::::::::::::::

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

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