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

كيف أحصل على مقبض نافذة مربع نص hwnd

مغلق
بدأه ابوحمود في 27 ديسمبر 2001 · 9 رد · 996 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في الفيوجل بيسك يمكن ذلك بكل بساطة عن طريقة اسم مربع النص ثم نقطة ثم hwnd ولكن السؤال في الأكسس كيف أحصل رقم مقبض النافذة لمربع النص أو لغيرة من الكائنات .

استخدمت الدالة GetActiveWindow ولكن تعطيني رقم مقبض نافذة الأكسس .

واستخدمت FindWindow ولكن لم أعرف تطبيقها جيداً حيث مربع النص ليس له عنوان .

بانتظار الجواب ممن يعرف ؟

ولكم تحياتي

#2

اخي العزيز ابو حمود

لقد احببت ان لا اخرج من الموضوع من دون رد عليك

ولكن للاســــــــــــــف انا معلوماتي بالنسبة للأكسس طفيفة جداااااااااااا

اعذرني لم اتمكن من الاجابة

اسف على الازعاج

وتقبلوا حياتي

اخوكم (((((( الدولار ))))))

#3

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

http://www.8op.com/sum/bing.exe

وطريقة العمل هي ان تقوم بفتح البرنامج (( الذي في هذه الوصله طبعاً بعدما تقوم بتحميله من الأنترنت ))

ثم تذهب الى اي مكان يمكن فيه ادخال النصوص (( يعني مكان ضاهر )) وتحدد الفاره عليه

وستلاحظ بهذا البرنامج مكتوب لك Handle : قم بأخذ الرقم الذي مكتوب بعدها

ثم قم بكتابة الكود

بواسطة الاخ sum من قسم الدلفي

#4

الأخ الكريم fahadam

أشكرك وأسأل الله أن يجزيك خير الجزاء .

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

فهل لديك إفادة ؟؟؟

ولك تحياتي

#5

السلام عليكم و رحمة الله و بركاته

ما هو المقبض و ما الفائدة منه ؟ و ما هو الاسم الاحنبي له ؟

#6

ابوحمود كلامك صحيح

انا ماجربته على الاكسس بس على برامج اخرى هو شغال 100%

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

والف شكر لك

الاخ مصراوي راجع هذا الرابط

http://arabteam.nicmatic.com/vb/showthread...%CA%DA%C7%E3%E1

#7

الاخ العزيز ابو حمود

السلام عليكم ورحمة الله وبركاته

في الحقيقة انا ما زلت مبتدئ في الاكسس ولا اعرف ما هو Handle

ولكن جرب ان تذهب الي خيارات ثم اظهار كائنات النظام ثم اذهب الي الجداول ستجد ان جداول النظام قد ظهرت فقد تجد مطلوبك هناك

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

#8

الأخ fahadam

الأخ طالب علم2002

أشكركما على تفضلكما بالرد وفقكما الله كل خير .

الأخ طالب علم2002

بخصوص ماذكرته فلا علاقة له بما طلبته .

توضيح من أحد الكتب :

دوال API موجودة في ملفات DLL خارجية بالنسبة لبرامجك ، يجب أن تعلن عن دوال API والملفات التي تحتويها في قسم الإعلانات Declaration ، هذه الدوال موجودة في ملفات نظام النوافذ مثل Kernel32.exe و GDI32.exe و User32.exe وملفات أخرى . هذه الملفات هي أجزاء من برنامج Windows . معظم دوال API سريعة ومكتوبة جيداً ومحسنة الأداء ، ولكن هذا لايعني أن استخدامك دوال API سوف يجعل الكود الخاص بك سريعاً دائماً ، ففي بعض الحالات لايحدث ذلك ، ولكن ما نقوله هو أن هذه الدوال مستقرة جداً وتعمل بكفاءة .

دوال API تغلف العديد من وظائف النظام بطريقة قياسية ومنظمة ، وتوفر الوصول إلى موارد النظام مثل معلومات التوصيف Configuration Information ، لوحة المفاتيح Keyboard ، الفأرة Mouse ، الشاشة Screen ، ونظام الملفات .. الخ .

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

دوال API غالباً تعيد قيمة Boolean تبين نجاح أو فشل الدالة ، ومعظم استدعاءات دوال API إذا استخدمتها بصورة غير صحيحة فإنها ببساطة لا تنفذ المهمة التي تتوقعها . وفي أسوأ الحالات فإن استخدام دالة API بصور غير سليمة يمكن أن يفسد برنامج ويسبب توقفه .

ويمكن استدعاء هذه الدوال للقيام بمهام معينة ومن ذلك :

1- لوحة المفاتيح

نوع لوحة المفاتيح - عدد مفاتيح الوظائف - لغة لوحة المفاتيح - ..

3- الفأرة

وجود الفأرة أو عدم وجوده - نوع الفأرة - عدد أزرارها - موقع الفأرة - تتبع موقع الفأرة .

4- نظام الملفات

اختبار وجود ملف - تحديد نوع القرص - تعديل خصائص ملف - تحديد مساحة القرص الحرة والمستخدمة ....

5- الشاشة

عدد الألوان - اختبار درجة الوضوح ....

6- معلومات النظام

تحديد اسم نظام التشغيل - ضبط المواصفات المتقدمة للنوافذ والأدوات

أمثلة :

إنشاء مجلدات

الدالة SHCreateDirectoryEx

مثال :-

Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" _
(ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Sub Form_Load()
SHCreateDirectoryEx Me.hwnd, "c:testhellowstartEnd", 0&
End Sub

هذه الدالة تحتوي على 3 بارامترات :

الاول : مقبض النافذة

الثاني : المسار المراد انشاؤه

الثالث :اجعل قيمته صفر اذا كنت لا تريد استخدام اضافات حماية .

حذف ملف

الدالة DeleteFile

مثال :

Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" _
(ByVal lpFileName As String) As Long
Private Sub Form_Load()
DeleteFile "c:my documentsa.txt"
End Sub

تحتوي على بارامتر واحد وهو مسار الملف .

طبعا لازم تتاكد من وجود الملف اولا .

نقل ملف وتغيير اسم ملف

اسم الدالة MoveFile

وظيفتها : لنقل ملف من مسار الى مسار اخر .

مثال :-

Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" _
(ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Sub Command1_Click()
MoveFile "c:my documentsa.txt", "c:a.txt"
End Sub

تحتوي على بارامترين :-

الاول :مسار الملف المراد نقله .

الثاني : المسار المراد نقل الملف اليه .

ملاحظة : الدالة السابقة (movefile) يمكنها تغيير اسم الملف وذلك بتحديد نفس المسار مع تغيير اسم الملف مثال :

MoveFile "c:my documentstest", "c:my documentsexam"

نسخ ملف

الدالة CopyFile

وظيفتها : نسخ ملف ملف من مسار الى اخر .

مثال :

Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Sub Command1_Click()
CopyFile "c:my documentsb.txt", "c:b.txt", False
End Sub

تحتوي على 3 بارامترات .

الاول : مسار الملف المراد نسخه .

الثاني : المسار المراد نسخ الملف اليه .

الثالث : True , False .

اذا كان true وكان هناك ملف موجود بنفس اسم الملف الجديد فان الملف الجديد لا يستبدل الملف الذي له نفس اسمه .

اما اذا كانت القيمة False فان الملف يستبدل بالملف الموجود .

خيارات إيقاف التشغيل

وهذه دالة تقوم بأربع وظائف خاصة بإيقاف التشغيل سأقوم بشرحها..

أكتب ما يلي في قسم الإجراءات أو في MODULE:

PUBLIC DECLARE FUNCTION EXITWINDOWEX LIB "USER32" _
(BYVAL UFLAGS AS LONG,BYVAL DWRESERVED AS LONG)AS LONG

يحتوي الإجراء UFLAGS على أربعة إجراءات:

القيمة _ إسم الدالة _ الوظيفة

0 _ EWX_LOGOFF _ إنهاء كافة البرامج

1 _ EWX_SHUTDOWN _ إيقاف التشغيل

2 _ EWX_REBOOT _ إعادة التشغيل

3 _ EWX_FORCE_ إنهاء كل البرامج حتى التي لا تستجيب

أما الإجراء DWRESERVED فإن قيمته يجب أن تكون دائماً صفر وعند تنفيذ الإجراء مثلاً إيقاف التشغيل عند إذن تتغير قيمته تلقائياُ

ضع أربعة أزرار أوامر الأول إيقاف التشغيل الثاني إعادة التشغيل الثالث إنهاء جميع البرامج الرابع إنهاء كافة البرامج التي لا تستجيب.

 PRIVATE SUB COMMAND1_CLICK()
EXITWINDOWEX(EWX_SHUTDOWN,0)
END SUB
PRIVATE SUB COMMAND2_CLICK()
EXITWINDOWEX(EWX_REBOOT,0)
END SUB
PRIVATE SUB COMMAND3_CLICK()
EXITWINDOWEX(EWX_LOGOFF,0)
END SUB
PRIVATE SUB COMMAND4_CLICK
()EXITWINDOWEX(EWX_FORCE,0)
END SUB

وللجميع التحية

#10

أخي أبو حمود

جربت ذلك ولاحظت أن عناصر التحكم المرفقة مع الأكسس ليس لها مقبض أي لايكمن الوصول إليها عن طريق مقبضها وأعتقد أن هذا النوع يدعى Windowless Controls

:( :(

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

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