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

مشروع جماعي : مكتبة Win32api

بدأه محمد رضى في 21 سبتمبر 2009 · 34 رد · 2,307 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

في إطار بحثي عن ربح الوقت عندما يخص الأمر مشروعا يحتاج للمناداة على دوال Win32 Api, وجدث هذه المكتبة على هذا الرابط. آخر تحديث لهذه المكتبة أظن أنه كان سنة 2003 أي أنها بالطبع لن تحوي جديد ويندوز فيستا و ويندوز 7. و لهذا سيكون من الأحسن لو تعاونا جميعا لتحديث هذه المكتبة التي ستساعدنا في استدعاء دوال Win32Api بكل سهولة. و ستعم الفائدة على جميع أعضاء منتدى الدوت نت حيث و كما تعلمون أن المكتبة يمكن أن تستعمل من أي مشروع يعمل بلغة من لغات الدوت نت.

المكتبة بها الكثير الكثير من دوال Win32Api. قمت بترجمتها من C# إلى VB.NET حتى نتمكن جميعا من تحديثها في هذا القسم. الغد يوم عيد و لضيق الوقت لم أقم بتجارب على المكتبة بعد عملية الترجمة.

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

و الله ولي التوفيق...

post-207152-1253496543_thumb.jpg

Win32API.rar

#2

مجرد تحديد للقيم الإفتراضية للثوابت التالية التي لم تكن محددة في النسخة الأولى التي كانت نتيجة عملية ترجمة :

	' Properties
	Public ReadOnly HWND_BOTTOM As IntPtr = 1
	Public ReadOnly HWND_BROADCAST As IntPtr = &HFFFFI
	Public ReadOnly HWND_DESKTOP As IntPtr = 0
	Public ReadOnly HWND_NOTOPMOST As IntPtr = -2
	Public ReadOnly HWND_TOP As IntPtr = 0
	Public ReadOnly HWND_TOPMOST As IntPtr = -1
	Public ReadOnly HWND_MESSAGE As IntPtr = -3

تحياتي...

Win32API.rar

#3

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

تم, بحمد الله و حفظه, تحديث المكتبة بزيادة عدة دوال على المودول Shell.vb على الكلاس Shell. لم تتم تجربة أي من هذه الدوال حتى الآن. مجرد ترجمة من صيغة لغة سي/سي++ إلى فيبي دوت نت.

AddMRUStringW
CanShareFolderW
CreateEnvironmentBlock
CreateProfile
DAD_DragEnterEx
DAD_DragLeave
DAD_DragMove
DAD_SetDragImage
DAD_ShowDragImage
DeleteProfile
DestroyEnvironmentBlock
DriveType
EnumMRUListW
ExpandEnvironmentStringsForUser
ExtractAssociatedIconEx
FileIconInit
FreeMRUList
GetAllUsersProfileDirectory
GetDefaultUserProfileDirectory
GetFileNameFromBrowse
GetMenuContextHelpId
GetProfilesDirectory
GetProfileType
GetUserProfileDirectory
GetWindowContextHelpId
InitNetworkAddressControl
IsNetDrive
IsUserAnAdmin
LinkWindow_RegisterClass
LinkWindow_UnregisterClass
MIMEAssociationDialog
OpenRegStream

تحياتي...

Win32API.rar

#4

مجهود جبار اخي , و همة قوية , و لكن :eek: انا ليس لدي اي خبرة في API و لكني ارى انها مهمة لجميع المبرمجين

اذكر انني في مرة من المرات اردت ان استخدم API في كبس زر الـ Caps Lock برمجا , فتغلبت في ذلك و الله يعلم كم من الوقت قضيته في البحث , حتى يسر لي اخ من هذا المنتدى و قدم لي فنكشن API على البارد المستريح , فسررت كثيرا و لم اركز على فهمه انما فهمت كيف يستخدم

لا اعلم لماذا ربما لانهم في الجامعة عندما كنا على مقاعد الدراسة لم يعطونا مادة مستقلة عن هذا الموضوع و لا حتى مجرد تلميح , او ربما لان القدر لم يجمعني باحد من اصدقائي يعرف البرمجة بالـ API لكي يعلمني اياها , او ربما أنني لا اريد أن اتعمها , او ربما انيي لا املك الوقت الكافي الذي يمكنني التعلم فيه , صدقني لا اتحجج به لعدم تعلمي اي شيئ جديد , حيث انني اعمل في الامارات و الدوام شفتين من الساعة 8.3 صباحا الى 8 ليلا فتخل متى سوف اتعلم ,

على كلا آسف على الاطالة بالرسالة و اتنى أن تجهز المكتبة و تكبر اكبر و اكبر , و اعذرني على عدم المشاركة , و هذه المكتبة بالتأكيد :nose_patch: سوف اكون اول المستفيدين منها :evil: , و إن شاء الله تكون صدقة نشر العلم و تكون بمثابة صدقة جارية لك .

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

#5

شكرا لك على الموضوع المفيد

الحقيقة انا من زمان عم انتظر هيك موضوع

انا بعرف شوي اتعامل مع الusb

بس المشروع هاد بلغة الفي بي وانا بعرف بالسي شارب

ممكن اعرف كيف بقدر زيد كلاس سي شارب على مشروع في بي

تم تعديل هذه المشاركة بواسطة ADNANOO في 23 سبتمبر 2009 في 21:42

#6
اقتباس
حتى يسر لي اخ من هذا المنتدى و قدم لي فنكشن API على البارد المستريح , فسررت كثيرا و لم اركز على فهمه انما فهمت كيف يستخدم

أنا :D

/index.php?showtopic=193317

ياعبد الله لو اعتمدت على الدراسة فلن تتعلم أى شئ ,, حاول البحث عن المواضيع الهامة وتعلمها بنفسك

هذا موضوع كنت قد بدأته قديما جدا فى قسم فيبى6 ربما يفيدك فى شئ

/index.php?showtopic=66019

أفكر فى إعادة شرح دوال الـAPI بلغة الـVB.NET بعد ما تعلمت منها الكثير بفضل الله تعالى

تم تعديل هذه المشاركة بواسطة GHOST2010 في 23 سبتمبر 2009 في 22:05

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

مبارك تقريتك اخى محمد رضا لدرجة الخبراء المعتمدين فعلا تستحقها

لما لا تضع هذا المشروع على codeplex حتى يمكن لأكثر من عضو ان يشارك معك فى تطويره

مدونتي: C++ Tips and Tricks

#8
اقتباس
مبارك تقريتك اخى محمد رضا لدرجة الخبراء المعتمدين فعلا تستحقها

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

اقتباس
لما لا تضع هذا المشروع على codeplex حتى يمكن لأكثر من عضو ان يشارك معك فى تطويره

هذه المشروع و كما هو مشار له في مقدمة الموضوع استوردته من الموقع CodeProject حيث بدأه صاحبه و لم يتم تحديثه مند سنة 2003. صراحة مللت من المنتديات الأجنبية. مدة شهور و أنا أشارك في المنتدى developpez.net و لم أحصل على صديق واحد و أصبحت أضايق و يتم تجاهلي بعد أن عرف أصلي. الحمد لله على هذا المنتدى الغالي, حصلت على العديد من الأصدقاء و الإخوة في الله الذين تشرفت بالتعرف عليهم. و سعيد بالعمل معهم. :)

اقتباس
أفكر فى إعادة شرح دوال الـAPI بلغة الـVB.NET بعد ما تعلمت منها الكثير بفضل الله تعالى

منتظرين دروسك المتميزة أخي محمد

أخي الكريم ADNANOO, يمكنك المشاركة في المشروع إن لم يكن بزيادة تعريفات جديدة فبالقيام بتجارب على المكتبة حيث يمكنك ربط مشروع c# بالمكتبة و المناداة على الدوال و الإعلام عن التي يرفع استثناءات عند المناداة عليها أو الدوال التي تنقص تعريفات ثوابتها أو بنيات البيانات المستعملة فيها حتى يتم التصحيح.

تحياتي...

#9

يا اخي أهو انت , جزاك الله كل الخير , و لا تنسى ان صنائع المعروف تقي مصارع السوء كما قال رسول الله صلى الله عليه و سلم .

ثانيا اتعلم انني استغرب من موضوع اي موضوع الـ API و بهذه المناسبة اريد ان اسالك اياه ,

اقتباس
الدالة SndPlaySound لتشغيل الملفات الصوتية من نوع wav

طريقة كتابتها:

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

و هذه الدالة تقوم بتشغيل ملف صوتي .

حسنا انا كمبرمج اتعرف على هذه الـ API ما ادراني انا بوجود مكتبة "winmm.dll" لكي استخدمها طبعا سوف تقول بقليل من البحث و ايضا , أنا الى الآن لا ادري هل انت كمبرمج ....... او بمعنى ادق من كتب الفنكشن السابق sndPlaySound , أهو عصابة مايكروسوفت :P أم انت كمبرمج قمت فقط بعمل Copy & Past لهذا الفنكشن و قمت باستدعائه بهذه الطريقة و لا يمكنك التعديل عليه و لا بشكل من الاشكال , حيث ان هذه المكتبة تاخذ فقط متغيرين و ترجع كذا و كذا , طبعا اكيد ان هذه المكتبة بها الكثير من الاشياء لكني اقصد بكلامي تشغيل الملف Wav فقط بهذا الفنكشن و هذه الطريقة يستدعى

اقتباس
sndPlaySound "c:\a.wav", 1

ايضا عرفت من الاخ عبدالله فتحي الذي اسال الله لك و له للاخ جوست و جميع الاعضاء الجنة و المغفرة و العتق من النار , ان barometer الاول هو الـ Path أما الـ barometer الثاني هو من نوع long يدل على الهيئة أو الطريقة التي سيتم تشغيل الملف عليها، فاستغربت من الرقم 1 , لماذا عرف المتغير انه Log و من حدد ذالك !!! و لماذا 1 , أهو من اجل ان يبدأ تشغيل الملف الصوتي من أوله, أي من أول ثانية , أم ماذا ....

طريقة كتابة الكود السابق غريبة و لا تشابه Sentax الـ ++VB Or C , و اكيد انك لا تحفظه عن ظهر قلب و انا اريد ان اتعلم الصيد و لا اريد ان اُعطى سمكة .

هل هذا الفنكشن موجود في Help الـ Visual Studio , و ايضا سؤال آخر

لما ذا هذا الشكل في تعريف هذه الثوابت , سوف تقول ان الجهة المبرمجة لهذه الـ API اختارو هذا الشكل

حسنا هل يمكن لك شرحه لي بطريقة الاستاذ عبدالله فتحي كما في الرابط الذي اعطيتني اياه

اقتباس
أكثر من طريقة لتشغيل الملف عليها وهي كالتالي ( في شكل ثوابت ):

كودConst SND_SYNC = &H0

Const SND_ASYNC = &H1

Const SND_NODEFAULT = &H2

Const SND_MEMORY = &H4

Const SND_LOOP = &H8

Const SND_NOSTOP = &H10

اولا لماذا هذه المتغيرات اذا كان استدعاء الفنكشن السابق هكذا

اقتباس
sndPlaySound "c:\a.wav", 1

فهو لم يستخدم هذه المتغيرات , ام لماذا هذه المتغيرات و ما الذي تعنيه , كل هذه الاسالة تستفزني اريد ان اتعلمها كتعلمي الصيد و ليس اعطائي سمكة , ..................... اعذرني عن الاطالة و توجيع راسك Don't Care

هذا فيض من غيظ بموضوع الـ API فأنا اعتبر نفسي محلل و مبرمج برامج Data Base , وحلا مشاكل فقط , و اريد بشدة تعلم الـ API ....... ؟

ما تعليقك على الموضوع اخي الفاضل

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

#10

نسيت ان ابارك لك بالترقية الجديدة :rose: و اتمنى لك المزيد من التقدم و النجاح.

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

#11

إيه كل ده ,, أنت متزوج؟؟ :blink:

:D :D :D :D :D

مبدئيا الـAPI لا يمكن أن يستغنى عنها أى مبرمج محترف (طبعا بعيدا عن برامج قواعد البيانات المملة) فهناك الكثير من الأمور التى توفرها لك هذه الدوال ولا يمكن الوصول إليها إلا باستخدام الـAPI وأنت جربت بنفسك فى موضوع الـCaps Lock وعندما تم إصدار بيئة الدوت نت تم تغليف عدد كبير من الدوال لكن أيضا يبقى هناك الكثير لم يتم دمجه فى الدوت نت وبالتالى لابد لك من استخدام الـAPI وقامت الدوت نت بتوفير طريقة أخرى إضافية للإعلان عن دوال الـAPI باستخدام المواصفة DllImport

اقتباس
ما ادراني انا بوجود مكتبة "winmm.dll" لكي استخدمها طبعا سوف تقول بقليل من البحث

أجبت على نفسك ,, بالنسبة لى عندما سمعت عن شئ إسمه API بدأت بالبحث عنه وكنت وقتها أعمل على VB6 فوجدت برنامجا يتم تثبيته مع الفيجوال ستوديو إسمه API-Viewer يحتوى على عدد كبير جدا من دوال وثوابت الـAPI وطريقة الإعلان عنها ,, من هنا كانت البداية وبعدها قمت بقراءة أسماء جميع الدوال التى يوفرها هذا البرنامج وبقراءة الإسم أعرف وظيفة الدالة (طبعا ليس مع كل الدوال) وفى هذا الوقت لم يكن لدى أى اتصال بالإنترنت أى أننى كنت معزولا عن العالم الخارجى :D وبعدها دخلت إلى الإنترنت وكلما واجهتنى مشكلة أبحث عنها فأجد المعظم يستخدم هذه الدوال ومع كثرة استخدامها تعلمتها حتى أننى أحفظ طريقة الإعلان عن معظم الدوال :D

اقتباس
أنا الى الآن لا ادري هل انت كمبرمج ....... او بمعنى ادق من كتب الفنكشن السابق sndPlaySound , أهو عصابة مايكروسوفت أم انت كمبرمج قمت فقط بعمل Copy & Past لهذا الفنكشن و قمت باستدعائه بهذه الطريقة

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

اقتباس
و لا يمكنك التعديل عليه و لا بشكل من الاشكال

يمكنك التعديل بلغة الأسمبلى :D

لو أردت التعديل قم بإنشاء الدالة من البداية

اقتباس
أما الـ barometer الثاني هو من نوع long يدل على الهيئة أو الطريقة التي سيتم تشغيل الملف عليها، فاستغربت من الرقم 1 , لماذا عرف المتغير انه Log و من حدد ذالك

Long فى تعريفات الـAPI يقابله Integer أو Int32 فى لغات الدوت نت أى أنه يحجز 4 بايت أما عن السبب لماذا لم يستخدم مثلا النوع Short أو حتى Byte فهذا السؤال يوجه لبيل جيتس :D

اقتباس
و لماذا 1 , أهو من اجل ان يبدأ تشغيل الملف الصوتي من أوله, أي من أول ثانية , أم ماذا ....

أجبت عليه هنا

اقتباس
Const SND_SYNC = &H0

Const SND_ASYNC = &H1

Const SND_NODEFAULT = &H2

Const SND_MEMORY = &H4

Const SND_LOOP = &H8

Const SND_NOSTOP = &H10

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

اقتباس
لما ذا هذا الشكل في تعريف هذه الثوابت , سوف تقول ان الجهة المبرمجة لهذه الـ API اختارو هذا الشكل

حسنا هل يمكن لك شرحه لي بطريقة الاستاذ عبدالله فتحي كما في الرابط الذي اعطيتني اياه

حسنا ,, لنأخذ الجملة Const SND_SYNC = &H0

Const : طبعا للإعلان عن قيمة ثابتة

SND_SYNC : إسم الثابت

= : رمز الإسناد

&H0 : لعل مشكلتك فى هذا الشكل ,, هذه قيمة بالنظام السداسى عشر وفى حالتنا هذه هى القيمة صفر أى أن الثابت قيمته صفر ولوضع قيمة بالنظام السداسى عشر يجب أن تبدأ القيمة من ناحية اليسار بـ&H

فمثلا لو أردنا تعريف ثابت قيمته 10 يمكن كتابة ذلك بالنظام السداسى عشر بالشكل

Const MyConst As Integer = &HA

أو بالنظام العشرى

Const MyConst As Integer = 10

أنا شخصيا تعودت على الطريقة الأولى

اقتباس
طريقة كتابة الكود السابق غريبة و لا تشابه Sentax الـ ++VB Or C

طريقة كتابة الكود السابق موجودة فعلا فى الـC++ باسم ProtoTypes وكذلك موجودة فى السى شارب والأسمبلى

اقتباس
و اكيد انك لا تحفظه عن ظهر قلب

أحفظ الكثير منها لكثرة استخدامى لها لكن ليس بالضرورة حفظها يكفيك معرفة إسم الدالة المطلوبة واستخدام أى برنامج توضيحى لهذه الدوال مثل ApiGuide أو المرجع الأشمل مكتبة الـMSDN وستجد طريقة الإعلان عنها وأمثلة على استخدامها أيضا

اقتباس
هل هذا الفنكشن موجود في Help الـ Visual Studio

كما ذكرت معظمها موجود فى الـMSDN وتوجد بعض الدوال غير معلنة لكنها خاصة بعمليات متقدمة جدا ولن تفيدك

اقتباس
اولا لماذا هذه المتغيرات اذا كان استدعاء الفنكشن السابق هكذا

إقتباس

sndPlaySound "c:\a.wav", 1

فهو لم يستخدم هذه المتغيرات , ام لماذا هذه المتغيرات و ما الذي تعنيه

يمكنك طبعا استبدال القيمة 1 بالثابت المقابل لها وهو SND_ASYNC ,, قام الأخ عبدالله فتحى بكتابة جميع القيم التى يمكن استخدامها مع هذه الدالة للأغراض التعليمية فقط ولك الحرية فى اختيار القيمة التى تناسب متطلباتك أنت كمبرمج وهذا رابط على MSDN يوضح لك معنى هذه الثوابت

http://support.microsoft.com/kb/86281

بالتوفيق ,,

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#12

يعني , ومن الآخر , اسستني ببضع كلمات , و عرفت من اين تأكل الكتف , و صهرت الجليد الذي كان مني على لغة الـ API فعلا انا كنت اتعقد من هذه الصيغة &H0 و لم اكن اعرف ما قلته لي عنها , و ابهجتني اجاباتك الدقيقة التي و بالمصطلح الاردني بين دبل كوتيشن "أفحمتني"

*ملاحظة : أنا هنا في الامارات و بسبب التقائي بجنسيات الوطن العربي كلها , اصبحت اعرف ان المصاروة لا يفهمون معظم المصطلحات الاردنية و لا الفلسطينية لذلك ان واجهت صعوبة بفهمها لا تتردد باخباري :lol:

و على سبيل المثال , قلت لصديقي المصري , يا زلمة شو مالك , صدقني انه عصب و كان سوف يضربني , و في الآخر فهمت لماذا حيث قال لي ان هذه الجملة " يا زلمة " تعني يا حذاء عندكم باللهجة المصرية , لا عليك Don't Care

و في الختام شكرا و كل الشكر للاخوة " محمد رضى " و للاخ "Ghost2010" و للادارة القائمة على هذا الموقع الشامل الرائع. ;)

على فكرة انا لست متزوج , و اقولها على سبيل الدعاء للآخرين , لأن الملائكة تأمن و تقول لك مثله

تم تعديل هذه المشاركة بواسطة assaf_abdullah في 24 سبتمبر 2009 في 13:06

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

#13

اقتراح صغير لماذا نقوم بتحويل دوال الـ API بـنفسنا و يوجد لدينا الموقع الجميل Pinvoke.net و الذى يحتوى على دوال API كثببببببره و بالـ C# ايضا مع الـ Structures و الـ Enum.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#14
Muhammad alaa كتب:
اقتراح صغير لماذا نقوم بتحويل دوال الـ API بـنفسنا و يوجد لدينا الموقع الجميل Pinvoke.net و الذى يحتوى على دوال API كثببببببره و بالـ C# ايضا مع الـ Structures و الـ Enum.

و الله ولى التوفيق

نعم :) هذا ما أعمل عليه بالوقت الحالي وهو إنشاء برنامج شبيه بالـ( API Text Viewer ) ولكن ليس للـ( VB 6 ) :) أحاول الأن جمع الـ( Declarations, Enumerations, Structures, Interfaces, Constants ) وفي النهاية سيكون انتاج كل منهم بالـ( VB.Net ) والـ( VCSharp ) :)

بالمناسبة ( PInvoke ) لا يحوي جميع ( Declarations And Constants ) ;)

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 24 سبتمبر 2009 في 13:47

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#15

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

"System.windows.forms.unsafenativemethods"

هل تعلم أن مجال الأسماء هذا يحتوى على حوالى 90% من دوال الـAPI والثوابت والتراكيب وخلافه

جرب استخدام الـReflector على هذا المجال وسترى العجب :D

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#16
GHOST2010 كتب:
لقد بدأت مشروعاً منذ فترة أسميته ApiFramework وقمت بجمع الكثير من الدوال والثوابت من أماكن كثيرة لكنى توقفت عن العمل فيه منذ أكثر من شهر وهناك موضوع جميل يمكن للخبراء فقط تصفحه بإسم

"System.windows.forms.unsafenativemethods"

هل تعلم أن مجال الأسماء هذا يحتوى على حوالى 90% من دوال الـAPI والثوابت والتراكيب وخلافه

جرب استخدام الـReflector على هذا المجال وسترى العجب :D

هههههههههههههههههههه ( للخبراء فقط :P :lol: ) أبدعونا أيها الخبراء بشرح عمل كل من الـ( API Calls ) ;)

بالمناسبة لم أعد بحاجة لعمل شيء مثل ذلك :

http://www.fileguru.com/getfile.php?fileid=38263&i=1

بالتوفيق للجميع

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 24 سبتمبر 2009 في 14:29

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#17
Bashar Rabat كتب:
هههههههههههههههههههه ( للخبراء فقط :P :lol: ) أبدعونا أيها الخبراء بشرح عمل كل من الـ( API Calls ) ;)

بالمناسبة لم أعد بحاجة لعمل شيء مثل ذلك :

http://www.fileguru.com/getfile.php?fileid=38263&i=1

بالتوفيق للجميع

الخبراء فقط سيفهمون ردى :D

الحكاية كلها يابشار أن هذا الموضوع مخفى ويظهر فقط للخبراء والمشرفين والإداريين :wink:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#18
GHOST2010 كتب:
الخبراء فقط سيفهمون ردى :D

الحكاية كلها يابشار أن هذا الموضوع مخفى ويظهر فقط للخبراء والمشرفين والإداريين :wink:

كده ؟ :( هي الحكاية صعبة اوي :lol:

بالمناسبة برأيي إذا أردتم فعلاً أن يكون هذا الموضوع ناجح عليّكم شرح تصريحات، ثوابت، مرقمات و تراكيب الـ API، لأنه وبصراحة لنفرض أننا مبتدئين :)، فما فائدة قراءة أسماء وطرق التصريح بدون فهم سبب الاستخدام ؟ وخصوصاً أن ( محمد علاء ومحمد رضى ) يستخدمون طرق متقدمة في كتابة الـ( Code ) وعلى سبيل المثال استخدام شكل الـ( Hex ) عوضاً عن الـ( Int32 ) :P اعلم أنها طريقة مسلية واحترافية بشكل ما، لكن وكما ذكرت بالنسبة للأعضاء المبتدئين فهذا ليس من صالحهم :( سيعتقدون أنه نوع جديد من المتغيّرات ( على سبيل المثال )، مشكور لشرحك هذه الفكرة :) .

بالتوفيق .

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#19
اقتباس
هذا ما أعمل عليه بالوقت الحالي وهو إنشاء برنامج شبيه بالـ( API Text Viewer )
اقتباس
لقد بدأت مشروعاً منذ فترة أسميته ApiFramework

يبدو إن القلوب عند بعضها لإنى كنت بدءت فى مشروع مشابه لهذا منذ فتره بعيده و توقفت عنه لفتره و حتى الان لم يحن وقت الرجوع إليه (مكانه فى جدول البرامج لسه مجاش).

مدونتي: C++ Tips and Tricks

#20

بصراحة موضوع API's موضوع يهمني ، ولكنني للاسف لم ادخله بالطريقة الصحيحة حتى الان ، فكل ما اجده هو اكواد جاهزه ومكتبات بها دوال تطبق المثل " تعال وشل " او " على قفى مين يشيل " ! لكن لا مدخل حقيقي حتى الآن !

بالنسبه للفئة UnsafeNativeMethods فلم اكن اعلم عنها ، ولكنها ثروة حقيقية لمن يستطيع الاستفادة منها ..

بالمناسبه لدي سؤال : ماهو خطورة استخدام دوال ِAPI ؟ لانني عرفت انها خطيرة وللمبرمجين الشجعان فقط لكن لماذا؟

#21
اقتباس
"System.windows.forms.unsafenativemethods"

هل تعلم أن مجال الأسماء هذا يحتوى على حوالى 90% من دوال الـAPI والثوابت والتراكيب وخلافه

صراحة لا أجد الكثير من دوال Api و لكن الكثير من الواجهات Interfaces.

اقتباس
اقتراح صغير لماذا نقوم بتحويل دوال الـ API بـنفسنا و يوجد لدينا الموقع الجميل Pinvoke.net و الذى يحتوى على دوال API كثببببببره و بالـ C# ايضا مع الـ Structures و الـ Enum.

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

ملاحظة : محتوى الموقع pinvoke.net ليس محدثا هو الآخر و لكن في نفس الوقت يحتوى على محتويات مكتبات متنوعة أخرى غير التي تستعمل كثيرا.

صراحة, لم يقنعني الحوار الذي دار في الموضوع لترك المشروع...

المشروع مازال جاريا. :)

تحياتي...

#22

وفقك الله و إن احتجت إلى مساعده ستجدنا معك ان شاء الله

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#23
محمد رضى كتب:
صراحة, لم يقنعني الحوار الذي دار في الموضوع لترك المشروع...

المشروع مازال جاريا. :)

الحوار لا يتمحور على إيقاف الموضوع، موضوعك مهم جداً لجميع الفئات لكن الفكرة الرئيسية هي شرح طبيعة عمل كل شيء تذكره ;) 

بالتوفيق :)

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#24
اقتباس
الحوار لا يتمحور على إيقاف الموضوع، موضوعك مهم جداً لجميع الفئات لكن الفكرة الرئيسية هي شرح طبيعة عمل كل شيء تذكره

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

اقتباس
وفقك الله و إن احتجت إلى مساعده ستجدنا معك ان شاء الله

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

تحياتي...

#25
محمد رضى كتب:
لاول وهلة ظننت انكم تتكلمون عن طريقة سهلة وجاهزة و انا اضيع وقتي في اعادة تطوير ما هو موجود ولكن بعد القراءة المتأنية و البحث وجدت أن المشروع يجب أن يبقى جاريا.

في الحقيقة أعتقد أن إنشاء تطبيق كالـ( API Text Viewer ) سيسهل عليّك الكثير من العمل، تضمين الـ( API Declarations ) وتوابعها من ( Constants, Enumerations, Structures ) ضمن ( Class ) أو ( Module ) لا يساعد الأعضاء بشكل فعلي، نحن على دارية كبيرة بأننا لا نستخدم ما ليس له عمل ضمن فكرة مشروعنا, أليس كذك ؟ وننصح أيضاً بعدم تضمين ماهو غير فعال في المشاريع الحقيقية ؟

أعلم أن الفكرة من كتابة هذا الـ( Module ) هوتجديد عهد الـ( API ) واعلم أن موضوعك مفيد وكما ذكرت ( مهم جداً لجميع الفئات ) لكن المبدء الذي ينادينا هو ( المعرفة ) المعرفة ليست فقط بكتابة ( Code ) المعرفة ليس فقط بتحديث شكل تصريح أنواع المتغيّرات وإنما بشرح كل جزء متجزء ينص على استخدام المحتويات كـ :

1 - ماعمل هذا التصريح ؟

2 - مالغاية من استخدام كل من عوامله ( Parameters ) ؟ ( إن وجدت )

3 - ما طبيعة تأثير كل من الثوابت ؟ ( إن وجدت )

4 - ماذا يمثل كل متغير من متغيرات هذا التركيب ؟ ( إن وجد )

وعلى سبيل المثال :

[setParent]

اسم التصريح : SetParent .

عمل التصريح : تضمين نافذة ما ضمن نافذة أخرى ( الأكثر استخداماً ) .

شكل التصريح :

Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr

عوامل التصريح :

hWndChild As IntPtr يمثل بيان تعريف النافذة المراد تضمينها .

hWndNewParent As IntPtr يمثل بيان تعريف النافذة الأم التي ستحوي النافذة المراد تضمينها .

مثال على طريقة الاستخدام :

Public Class Form1

	Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr

	PRivate Sub Form1_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Handles MyBase.Load
		Dim Pr As Process = Process.Start("notepad")
		Pr.WaitForInputIdle()
		SetParent(Pr.MainWindowHandle, Handle)
	End Sub

End Class

مثال أخر ( يذكر إن كان هناك داعي لإظهار نظرية ما ) :

Public Class Form1

	Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr

	Private Sub Form1_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs) Handles MyBase.Load
		Dim Frm As New Form
		SetParent(Frm.Handle, Handle)
		Frm.Show()
	End Sub

End Class

صدقني إذا قمت باستخدام هذه الطريقة سترى عدد كبيرمن أعضاء المنتدى ( ليس فقط أعضاء من قسم الـ( VB.Net ) وإنما من جميع أقسام المنتدى ) يتتبعون موضوعك خطوة بخطوة ( Step by Step ;) ) .

بالتوفيق .

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 26 سبتمبر 2009 في 07:09

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

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