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

تعلم كتابة الدوال API

مغلق
بدأه JAAS في 9 أغسطس 2004 · 30 رد · 13,808 مشاهدة · في المواضيع و الدروس القيّمة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كما يقال دائما كثرة كتابة الأكواد تؤهلك لإحتراف لغة البرمجة

ومن هذا المنطلق سنبدأ إن شاء الله بكتابة مجموعة من الأكواد وفهم دوال الربط البينية API

ملاحظة مهمة: الأكواد كتبت بواسطة فجول سي بالكود القياسي 32 بت إذا كنت

تستخدم مكاتب MFC قد تواجهة بعض الأخطاء ولذلك قبل كل دالة ضع هذة العلامة ::

مثال الدالة MessageBox إكتبها بهذة الطريقة

MessageBox::

وبسم الله نبدأ

يجب فهم أهم الدوال وأكثرها إستخدام

أولا: دوال الملفات

CreateFile

دالة إنشاء ملف جديد أوفتح ملف أو إنشاء مقبض لجهاز مثل السواقة أو المنافذ

البارمترات:

1- مسار الملف وقد يكون إسم جهاز مثل COM1,COM2 أو A: أو C: أو إسم أي معرف جهاز

في الذاكرة

2- خصائص الوصول إما للكتابة في الملف أو للقرائة أو للكتابة والقرائة

3- خصائص الوصول للمشاركة بمعنى أن تسمح لأي برنامج غير برنامجك من القرائة والكتابة

أو الحذف من الملف

4- خصائص الأمن للملف وهذة الشغلة نأجلها لبعدين

5- طريقة إنشاء الملف وتأخذ القيم التالية

CREATE_NEW = إنشاء ملف جديد وإذا كان موجود إنهي العملية

CREATE_ALWAYS= إنشاء ملف جديد وإذا كان موجود إحذفة وأنشأ ملف جديد فارغ

OPEN_EXISTING = إفتح ملف موجود وإذا كان غير موجود إنهي العملية وهذا المتغير دائما يوضع

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

OPEN_ALWAYS =إفتح ملف موجود وإذا كان غير موجود إنشأ جديد

TRUNCATE_EXISTING = فتح ملف موجود فارغ وإذا كان غير موجود أو حجمة أكبر من صفر إنهي العملية

6- خصائص الملف مثل إرشيف أو مخفي أو للنظام أو مؤقت

FILE_ATTRIBUTE_ARCHIVE

FILE_ATTRIBUTE_HIDDEN

FILE_ATTRIBUTE_NORMAL

FILE_ATTRIBUTE_OFFLINE

FILE_ATTRIBUTE_READONLY

FILE_ATTRIBUTE_SYSTEM

FILE_ATTRIBUTE_TEMPORARY

7- مقبض لملف مؤقت وهذا يستخدم مثلا في برامج تحرير النصوص وللملفات التي يتم فيها التغيير مستمر.

هذة الدالة تعيد مقبض الملف الذي ستستخدمة للكتابة والقرائة

-----------------

ReadFile

WriteFile

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

1- مقبض الملف العائد من دالة إنشاء ملف

2- مخزن البيانات إذا كانت الدالة قرائة تخزن البيانات المقروئة

في هذا البارمتر وإذا كانت دالة كتابة سيكتب في الملف البيانات المخزنة هنا

3- عدد البايتات التي تريد كتابتها أو قرائتها

4- مؤشر إلى عدد البايتات التي قرأت أو كتبت للملف هذا البارمتر

لمعرفة إذا حدث أي خطأ في الدالة إذا كانت هذة القيمة مساوية للصفر

فهنالك خطأ

5- هذا البارمتر لة علاقة بالأجهزة والمنافذ مثل المودم وأجهزة الإدخال والإخراج

حيث إنة يعمل كمؤشر للمخزن التي تستخدمة هذة الأجهزة كما لة علاقة بالأحداث

----------------

أمثلة على كل ماسبق

إليك مثال يقوم بإنشاء ملف نصي جديد وإذا كان موجود يحذفة وينشأ ملف جديد

وبعد إنشاء الملف يقوم بكتابة عبارة داخلة ويغلق الملف

HANDLE hFile;
DWORD nbyte;
hFile=CreateFile ("D:\\file.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE
 	 ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hFile!=INVALID_HANDLE_VALUE)
WriteFile (hFile,(LPCVOID)"Arab-team",9,&nbyte,NULL);

CloseHandle (hFile);

في ملاحظة على الكود لاحظ هذا السطر

f(hFile!=INVALID_HANDLE_VALUE)

إذا حدث خطأ في دالة إنشاء الملف فإن الدالة ترجع القيمة

INVALID_HANDLE_VALUE

ونلاحظ في الكود أنة مكتوب إذا كان المقبض لا يساوي هذة القيمة

أي أن المقبض صحيح نفذ دالة كتابة إلى الملف

يمكن أحد الأعضاء يسأل لماذا الشرط if لم يحدد لة بلوك كمايلي

if(hFile!=INVALID_HANDLE_VALUE){
WriteFile (hFile,(LPCVOID)"Arab-team",9,&nbyte,NULL);
}

طبعا كلامة صحيح مئة بالمئة ولكن إذا كان بعد الشرط سطر واحد ينفذ

تستطيع أن لا تكتب البلوك بمعنى أن كل الطرق صحيحة

مثال ثاني مع دالة القرائة

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

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

ويظهرة في مسج لا حظ التغيرات في دالة إنشاء الملف

HANDLE hFile;
DWORD nbyte;
char buff[10];

ZeroMemory(buff,10);   //تصفير مصفوفة حروف

hFile=CreateFile ("D:\\file.txt",GENERIC_READ,0
 	 ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

if(hFile==INVALID_HANDLE_VALUE)  //إذا كان المقبض خطأ
strcpy(buff,"Error");    //نفذ الكود وهو نقل كلمة خطأ لمصفوفة الحروف  
else    // وإذا كان غير ذلك نفذ دالة القرائة
ReadFile (hFile,buff,9,&nbyte,NULL);

MessageBox (NULL,buff,NULL,NULL);   // إظهار نتيجة القرائة

CloseHandle (hFile);

-----------------

تكملة دوال الملفات

SetFilePointer

هذة الدالة تغير مكان مؤشر القرائة أو الكتابة

فمثلا عند فتح ملف يكون المؤشر يساوي 0 أي بداية الملف

لاحظ في مثالنا السابق في القرائة من الملف

غير في الكود بهذة الطريقة بعد دالة إنشاء

الملف وقبل جملة الشرط if ضع هذا الكود

SetFilePointer(hFile,4,NULL,FILE_BEGIN);

وجرب البرنامج بتلاحظ إن البرنامج قرأ من بعد رابع

حرف من البداية وهذا بالظبط فكرة الدالة غير الرقم

4 مثلا إكتب 6 أو 3 وشوف النتيجة

بالنسبة للمتغير FILE_BEGIN

معناة الإزاحة تبدأ من البداية ولها قيم أخرى

FILE_END = الإزاحة تبدأ من نهاية الملف

FILE_CURRENT = الإزاحة تبدأ من الموقع الحالي للمؤشر

في ملاحظة هنا وهي

أن المؤشر يتغير بشكل ذاتي فمثلا لو أنشأنا ملف جديد

وكتبنا عبارة من خمس أحرف فإن المؤشر بشكل ذاتي يتحول إلى

رقم 5 ولو نفذنا تعليمة قرائة في هذة اللحظة فإن النتيجة ستكون خطأ

وهنا تأتي أهمية هذة الدالة يجب أن ننقل المؤشر إلى رقم 0 وثم نقرأ من الملف

وفي شيء آخر إذا أوغلق المقبض تختفي قيمة المؤشر

وفي دوال لها علاقة بهذة الدالة

SetEndOfFile

وهي تنقل المؤشر إلى نهاية الملف

وتستخدم لإكمال كتابة ملف تم غلقة وهي مثل الدالة السابقة

بهذا الشكل

SetFilePointer(hFile,0,NULL,FILE_END);

بمعنى آخر أغلب الدوال لها نفس الطريقة

----------

حذف الملف في نهاية الكود إكتب

DeleteFile("D:\\file.txt");

مع ملاحظة أنك قد أغلقت مقبض الملف

---------

معرفة حجم الملف

DWORD size=GetFileSize(hFile,NULL);

إذا كان خطأ ترجع القيمة

0xFFFFFFFF

----------

معرفة أو تغيير خصائص الملف

SetFileAttributes

GetFileAttributes

أكيد البارمتر واحد مسار الملف والخصائص تم ذكرها في أول دالة

------------------

نقل الملفات وهي الدوال التي تقوم بنقل الملف ومحتواة كامل لدليل آخر

CopyFile

MoveFile

مثال لنقل الملف من سواقة لأخرى

CopyFile ("d:\\file.txt","c:\\NewFileB.txt",FALSE);

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

إذا كان صح TRUE

فإن النظام إذا وجد ملف بنفس إسمة في نفس الدليل الذي سينقل لة

ينهي العملية

أما إذا كان FALSE

فإنة يحذف الملف القديم ويحل محلة الملف الجديد

معلومة : أغلب الفايروسات تستخدم هذة الطريقة لنقل

نفسة إلى دليل النظام بهذة الطريقة

char AppPhat[MAX_PATH];
ZeroMemory(AppPhat,MAX_PATH);
GetModuleFileName (NULL,AppPhat,MAX_PATH);
CopyFile (AppPhat,"c:\\My.exe",FALSE);

--------------

البحث والعرض

FindFirstFile

FindNextFile

FindClose

لعرض محتويات مسار معين أو للبحث عن ملف معين

وتعيد إسم الملف نوعة وقت الإنشاء والتعديل

مثال عن عرض الملفات

HANDLE hFind;
WIN32_FIND_DATA cbFind;

hFind=FindFirstFile ("d:\\*.*",&cbFind);

if(hFind!=INVALID_HANDLE_VALUE){

do{
MessageBox (NULL,cbFind.cFileName,NULL,MB_OK);
}while(FindNextFile (hFind,&cbFind)!=0);

}

FindClose (hFind);

هذا الكود يعرض كل الملفات والمجلدات في دليل معين

--------------

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

إستكمالها فيما بعد وأكيد بمشاركت الأعضاء

--------------

دوال السلاسل النصية والحروف

lstrcpy

نقل نص إلى مخزن أحرف

lstrcat

إضافة نص إلى المخزن

lstrcmp

مقارنة نصيين مع مراعاة الأحرف الصغيرة والكبيرة

مثال للثلاث دوال

سنعرف مصفوفة أحرف ونضيف لها بداية الأحرف ABCDEFG

ثما نقارن النصين معا

char buff[MAX_PATH];
ZeroMemory(buff,MAX_PATH);

lstrcpy(buff,"ABC");
MessageBox (NULL,buff,"1",NULL);

lstrcat(buff,"DE");
MessageBox (NULL,buff,"2",NULL);

lstrcat(buff,"FG");
MessageBox (NULL,buff,"3",NULL);

if(lstrcmp(buff,"ABCDEFG")==0)
MessageBox (NULL,"النص مساوي ",NULL,NULL);
else
MessageBox (NULL,"النص لا يساوي",NULL,NULL);

lstrcmpi

هذة الدالة تقارن نصين ولا تراعي الأعرف الصغيرة والكبيرة

lstrlen

هذا الدالة تعيد عدد الحروف في المصفوفة

---في ملاحظة هنا

هذة الدوال للسلاسل النصية عبارة عن دوال API

أما strcpy,strcmp,strlen بدون حرف l في البداية فهي مايكرو

والفرق بينهم أن الدالة تتصل بمكتبة ربط وينفذ فيها الكود

أما المايكرو فهو عبارة عن نص من الكود يضاف إلى البرنامج

في كثير من المايكروات مفيدة جدا مثل

strstr هذا المايكرو يبحث عن كلمة أو حرف داخل نص

---نكمل دوال النصوص

CharLower

تحول نص من الأحرف الكبيرة إلى الصغيرة

CharUpper

تحول من الأحرف الصغيرة إلى الكبيرة

الدالتين

MultiByteToWideChar

WideCharToMultiByte

هذة الدالتين مستواهم متقدم ولكن قررت أشرحها في هذا

الدرس لسبب أنها دوال مهمة خاصة للعرب ؟؟ وأهل

اللغات المتطورة ومن المهم فهمها لإستمرار تطور البرمجة بالغة العربية

ما الفرق بين اللغة الإنجليزية والعربية بالنسبة للكمبيوتر

بكل بساطة كل حرف أجنبي = واحد بايت كل حرف عربي = 2 بايت

وهو ما يعرف بترميز آسكي وترميز اليونيكود

واليونكود ليست فقط اللغة العربية

بل أكثر من لغة مثل اليابانية الروسية ...أكثر لغات العالم

المهم لا نريد الخروج عن الموضوع

الحين النظام يعرف أي حرف يونيكود أو آسكي على أنة بايت

واحد فقط وهذا للتوافقية بين الإتصالات وغيرة

والفرق بينهم أن بايت اليونيكود يسمى بايت موسع

ولو ترجع للدالتين وتقرأ أسمائها

الأولى = تحويل أكثر من بايت لحرف موسع 2بايت= 1 بايت

الثانية = تحويل حرف موسع لأكثر من بايت 1بايت = 2 بايت

والمقصود أن الدالة الأولى تحول البايت من صيغتة الأصلية إلى حرف موسع للتوافقية

والثانية تعيد البايت من الحالة التوافقية إلى صيغتة الأصلية

هل تريد أمثلة على أهميت هذة الدالة

حاول نسخ أي نص عربي إلى الحافظة في نظام وندوز NT بدون إستخدام هذة الدالة

حاول نقل حرف واحد عبر منفذ دون إستخدام هذة الدالة

وكل ما بدأت تكتب برامج أكثر تحتاجها أكثر

لاحظ هذا الكود

هذا الكود عبارة عن دالة تقوم بنسخ السطر المختار من قائمةListBox

ونقلة إلى الحافظة ليتم نسخة بواسطة لصق أكيد يعمل مع كل اللغات

الأسكي واليونيكود ومع إصدارت وندوز المختلفة

BOOL ListBoxGetTextn(HWND MainsPH)
{
char Aiitem[MAX_PATH];
HWND listHwn;
int MarDx=0;
void *clipBuf=NULL;
void *addrStr=NULL;

listHwn=GetDlgItem (MainsPH,IDC_ListChReg);
MarDx=ListView_GetSelectionMark(listHwn);
if(MarDx==-1)
return 1;

ListView_GetItemText(listHwn,MarDx,0,Aiitem,MAX_PATH);


if(OpenClipboard (MainsPH))
{

if(GetVersion()<0x80000000) //Win NT
{
WCHAR Uditem[MAX_PATH*2];
clipBuf=GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT,lstrlen(Aiitem)*2+2);
if(clipBuf==NULL)
return 1;
// لاحظ الدالة
MultiByteToWideChar (CP_ACP,MB_PRECOMPOSED,Aiitem,lstrlen(Aiitem),Uditem,sizeof(Uditem));
addrStr=GlobalLock(clipBuf);
if(addrStr==NULL)
{
GlobalFree (clipBuf);
return 1;
}
memcpy(addrStr,Uditem,lstrlen(Aiitem)*2+2);
GlobalUnlock (clipBuf);
if(!EmptyClipboard())
{
GlobalFree (clipBuf);
return 1;
}

if(!SetClipboardData (CF_UNICODETEXT,clipBuf))
{
GlobalFree (clipBuf);
return 1;
}

}
else //Win 9x
{
clipBuf=GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT,lstrlen(Aiitem)+1);
if(clipBuf==NULL)
return 1;

addrStr=GlobalLock(clipBuf);
if(addrStr==NULL)
{
GlobalFree (clipBuf);
return 1;
}
memcpy(addrStr,Aiitem,lstrlen(Aiitem)+1);
GlobalUnlock (clipBuf);
if(!EmptyClipboard())
{
GlobalFree (clipBuf);
return 1;
}
if(!SetClipboardData (CF_TEXT,clipBuf))
{
GlobalFree (clipBuf);
return 1;
}
}

CloseClipboard ();

}
return 0;
}

================

هذا والله أعلم

ترقبوا دوال الذاكرة و دوال النظام في الدرس القادم

أتمنى من الأعضاء طرح ما عندهم من دوال قد تفيد الأعضاء

بمعنى أن كل مشاركة لها فائدة لكل مبتدأ وخبير

وبالتوفيق

1

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#2

السلام عليكم ,,

الله يخليك يا jaas ,, هذا الذي نريد فعلا ,, مع أن الموضوع طويل قليلا لكن فلنضيف مايمكن أن نضيفه ,, وبصراحة المنتدى ككل يفخر بكونك عضوا فيه :)

سأضيف معك باذن الله من يوم الغد أو بعده قدر ماأستطيع ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

مرحبا بالأخ HGB

وين أختفيت؟ والحمد لله على السلامة

وأتمنى من كل الأعضاء المشاركة

لأن عدد الدوال فوق 2000 دالة

وسأضع بقية الدوال في أقرب فرصة

ومشكور HGB

وبالتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#4

تكملة الدوال

دوال الرسم والتصميم

1- cobinergn

دمج منطقتين

1- المنطقة التي تحتوي على نتيجة الجمع

2- المنطقة الأولى

3- المنطقة الثانية

4- طريقة الجمع تبدأ rgn_

القيم العادة::

إذا كانت للمنطقة إطار تداخل فيما بينهاCOMPLEXREGION::

إذا لم تتداخل إطارات المنطقة مع بعضها البعضSIMPLEREGION::

إذا كانت المنطقة خاليةNULLREGION:;

إذا حصل أي خطأERRORAPI::

CombineTransform

ينشئ تحويلات لمنطقتين متتاليتين

القيمة المعادة hdc جديد أو صفر عند الفشل

CreateCompatibleDC

ينشئ قرين جهاز في الذاكرة مطابق المحدد

1- قرين الجهاز أو 0 للتوافق مع الشاشة

CreateEllipticRgn

تنشئ منطقة شكل ناقص القيمة المعادة مقبض لمنطقة أو 0 عند الفشل

CreatePolygonRgn

تنشئ منطقة من النقاط المتصلة

1-الإحداثيات

2-عدد النقاط في الخط المغلق

3-أحد ثوابت التعبئة winding.. alternate..

تأكد من حذف منتطق الرسم ب DeleteObject

CreateRectRgn

منطقة مستطيلة

CreateRectRgnIndirect

رسم مستطيل محدد ب rect

CreateRoundRectRgn

مستطيل بحواف مدورة

DPtoLP

تحول مصفوفة نقاط من إحداثيات الجهاز إلى إحداثيات نقطية في قرين الجهاز المحدد

1- قرين الجهاز

2-الإحداثيات

3- عددعناصر المصفوفة

صفر في حال الفشل وغير في النجاح

EqualRgn

تحدد إذا كانت المنطقتين متكافئتين

ExcludeClipRect

تستخرج المستطيل المحدد من قرين الجهاز

1-قرين الجهاز

2-3- الزاوية العليا اليسرى

4-5- الزاوية السفلى اليمنى

القيم العادة::

إذا كانت للمنطقة إطار تداخل فيما بينهاCOMPLEXREGION::

إذا لم تتداخل إطارات المنطقة مع بعضها البعضSIMPLEREGION::

إذا كانت المنطقة خاليةNULLREGION:;

إذا حصل أي خطأERRORAPI::

ExcludeUpdateRgn

هذة دالة تحدث قرين الجهاز عن طريق إستبعاد للنافذة التابعة للقرين

1- قرين الجهاز

2- مقبض النافذة

القيم المعادة نفس الدالة الي قبلها

ExtSelectClipRgn

تجمع بين المنطقة للقرين و rgen الشكل

1- قرين الجهاز

2- مقبض الشكل rgn

3- ثوابت الشكل rgn_and....

مثل rgn_copy

تقيد القرين بالشكل أما _deff عكس

القيم العادة = الدالة الي قبلها

وأخير حذف rgn

FillRgn

تملاء الشكل بالفرشاة المحدد اللون

=في الفشل != النجاح

FrameRgn

ترسم إطار حول الشكل اللون = الفرشاة

البارمترات الأخير العرض والي قبلة الإرتفاع

القيم المعادة

0=في الفشل !=0 النجاح

GetBoundsRect

تعيد المستطيل المحدد لقرين الجهاز

1- القرين

2- المستطيل

3- ثابتDCB_RESET لمسح المستطيل المحدد أو0

القيم العائدة

0 في الخطأ أو

إذا كان المستطيل غير فارغ DCB_SET

إذا كان فارغ DCB_RESET

إذا تم حساب المستطيل ضمن القرن DCB_ENABLE

إذا لم يتم الحساب DCB_DISABLE

GetClipBox,,,GetCliprgn

تعيد أصغر مستطيل في القرين

القيم العادة

إذا كانت للمنطقة إطار تداخل فيما بينهاCOMPLEXREGION::

إذا لم تتداخل إطارات المنطقة مع بعضها البعضSIMPLEREGION::

إذا كانت المنطقة خاليةNULLREGION:;

إذا حصل أي خطأERRORAPI::

getdc

للحصول على القرين أو0 للحصول على قرين الشاشة

القيم العادة مقبض القرين أو 0

GetDCEx

تشبة الوضيفة الي قبلها ولكن هناك مميزتين

1- تحديد الشكل للقرين وهو rgn

2-ثابت من نوع dcx_..

GetDCOrgEx

تعيد موقع النطقة الرجعية لقرين الجهاز

GetDeviceCaps

تعيد معلومات عن الجهاز الحاوي للقرين

1- القرين

2- ثوابت تعيد العلومات المطلوية و عدد ها20 تقريبا

GetGraphicsMode

تحدد إذا كان إستعمال النمط الرسومي المحسن ممكن

1- قرين الجهاز

القيم العادة

GM_COMPATIBLE النمط الرسومي متوافق مع 16 بت

GM_ADVANCED تحويلات المحسنة ممكنة أو العام

GetMapMode

تعيد نمط التحويل للقرين

GetRegionData

تحمل البنية rgndata معلومات نصف المنطقة المحددة

1- مقبض rgn

2- حجم البنية

3- البنية

0 خطأ و 1 إذا كانت البنية كبيرة بشكل كافي

GetViewportExtEx

يعدي أبعاد منفذ قرين الجهاز

1- القرين

2- بنية الأبعاد

فشل =0 نجاح !=0

GetWindowExtEx

تعيد أبعاد النافذة للقرين

InvalidateRgn

تبطل المنطقة المحددة في النافذة

InvertRgn

تعكس المنطقة المحددة على قرين الجهاز

LPtoDP

تحول مصفوفة من النقاط من قرين النافذة إلى منطقة الجهاز

فشل =0 نجاح !=0

OffsetClipRgn

تزيح منطقة rgn

في قرين الجهاز

OffsetRgn

تزيح rgn في النافذة

PaintRgn

تلون المنطقة بالفرشاة الحالية

PtInRegion

تحدد إذا كانت النقطة مو جودة ضمن المنطقة

PtVisible

تحدد في ما إذا كانت النقطة مرئية

غير صفرية ذا كانت النقطة ضمن الشكل

RectInRegion

تحدد في ما إذا كان المستطيل ضمن الشكل

ScrollDC

تسحب مستطيل في قرين الجهاز

1- القرين

2-الوحدات الأفقية للإزاحة

3- العمودية

4-المستطيل الذي سيتم سحبة

5-المستطيل الذي يحدد المنطقة للتقيد ويتم فيها السحب

6- هذا المنطقة التي لا يتم فيها السحب للمستطيل يمكن =0

7-هذا المنطقة التي لا يسحب عليها المستطيل في rgn وتستخدم وسيط من النوع iprcupdate

قد تحمل القيمة 6-7 ب NULL لكي لا يحسب النظام منطقة التحديث

!= 0في النجاح مع getlasterror

SelectClipRgn

تنتخب منطقة تقييد جديدة للقرين

SetBoundsRect

تعين مستطيل رابط لقرين الجهاز

1- قرين الجهاز

2- المستطيل

3-DCB_ ثوابت

SetGraphicsMode

تفعل أو تبطل نمط ا لرسم الحسن

1- القرين

2-GM_

SetMapMode

تضع نمط التحويلات لقرين الجهاز

1- قرين الجهاز

2-MM_

SetRectRgn

وضع rgn داخل مستطيل

WindowFromDC

تعيد مقبض النافذة للقرين

ValidateRgn

تبطل المنطقة المحدد في نافذة ماا

توابع الصور

GetBitmapBits

تنسخ بتات من صورة نقطية إلى مخزن

1-مقبض الصورة

2-عدد البتات الواجب نسخها

3- المخزن الذي سيحمل بالبتات

القيم العادة عدد بتات الصورة النقطية او0 عند الفشل

GetDIBits

تنسخ بتات صورة نقطية معتمدة مثل القرين إلى صورة غير معتممدة

1-قرين الجاهز

2-مقبض الصورة

3-رقم خط المسح الأول الواجب نسخة إلى الصورة

4-عدد الخطوط الواجب سخها

5- المخزن الذي سيحمل ببتات الصورة قد يكون 0

6-BITMAPINFO

7-ثابت للألوان DIB_

CreateBitmapIndirect

تنشأ صورة نقطية معتمدة على الجهاز

1-بنية الصورة

القيمة المعادة مقبض الصورة النقطية او 0 عند الفشل

CreateDIBitmap

تنشىء صورة نقطية غير معتمدة

1- قرين الجهاز

2- البنية

3-يحمل صفر إذا لم تهيأ الصورة أو ثابت CMB_..

4- مؤ شر إلى معطيات االصورة

5-بنية ألوان الصورة

6-أحد ثوابت DIB_.._

القيم المعادة مقبض الصورة أو صفر

CreateMetaFile

تنشأ ملف الميت فايل

1- مسار الملف قد يكون NULL ليتم تخزينة في الذاكرة

ينتهي ملف الميت فايل WMF والمحسن EMF

القيمة المعادة مقبض قرين الميت فايل

ويتم الحصول على مقبض الملف من الوضيفة

-----------

دوال الذاكرة

------------

GlobalAlloc

تحدد كتلة من الذاكرة

1- ثابت BMEM_ or GMEM_

_FIXD يحدد كتلة من الذاكرة ثابتة _MOVABLE يحدد كتلة قابلة للنقل

_DISC. يحدد كتلة غير قابلة للحذف _NOCOM.. الكومة هاب التي لن تضغط أثناء إستدعاء هذة الوضيفة

_NODISC لا يوجد كتلة ستلغى أثناء إستدعاء هذة الوظيفة _ZERO تأسيس الكتلة المحددة ب أصفار

2- عدد البتات التي ستحدد

القيمة المعادة مقبض الذاكرة التي سينفذ علية الدوال او 0 في حال الفشل

GlobalFlags

تسترجع أعلام كتلة الذاكرة المحددة

1- مقبض كتلة الذاكرة

القيمة المعادة BMEM_ or GMEM_

GlobalLock

تحدد الكتلة الذاكرية

1- مقبض الكتلة

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

GlobalReAlloc

تغير حجم مقطع من الذاكرة

1- مقبض الكتلة

2-حجم الكتلة

القيم المعادة مقبض الكتلة أو 0 في الفشل

GlobalSize

تحدد حجم الكتلة

1- مقبض الكتلة

القيم المعادة حجم الكتلة 0 عند الفشل

GlobalHandle

تحدد مقبض كتلة الذاكرة من خلال تحديد البتات

1- عنوان ذاكري

القيم المعادة مقبض الذاكرة أو 0

GlobalMemoryStatus

معلومات عن الذاكرة

1- بنيةMEMORYSTATUS

جميع الوضائف السابقة هي للذاكرة العامة أما إذا أرت إنشاء كومة خاصة في مجال التطبيق وهي عبارة عن كومة ذاكرية جديدة تنشأ بالوظيفة HeapCreate

وتستخدم مثل الدوال السابقة

HeapCreate

تنشأ كومة جديدة

1- ثابت HEAP_..

2- حجم الكومة بالبايتات

3- الحجم الأعظم للكومة

القيمة المعادة مقبض الكومة الجديدة

HeapAlloc

تحدد كتلة من الكومة

1- مقبض الكومة

2-ثايت HEAP_NO_..

3- عدد البتات التي ستحدد

القيمة المعادة مقبض الكتلة

وتكون باقي الدوال معتمدة على المقبض من الدالة الأولى ومقبض الكتلة من الدالة الثانية وثابت _HEAP

دوال الإختبار قبل التنفيذ : وهي دوال مهمة للتحقق من المتغيرات والعناويين

IsBadCodePtr

تحدد إذا كان العناون الذاكري قابل للقراءة أو التنفيذ

1-عنوان بداية الكتلة الذاكرية

القيمة المعادة true إذا لم يكن العنوان قابل للقراءة أو التنفيذ ,0في باقي الحالات

IsBadHugeReadPtr

تختبر المقطع المحدد إذا كان صحيح وقابل للقراءة

1-عنوان بداية الكتلة

2-طول الكتلة

القيمة المعادة True إذا كان المقطع غير صيحيح و0 في باقي الحالات

IsBadStringPtr

تختبر إذا كان المقطع المحدد يحتوي على سلسلة منتهية ب NULL

1- عنوان بداية الكتلة

2- الطول الأعضم للسلسلة

القيم المعادة true إذا كان المقطع غير قابل للقراءة والتنفيذ و0 غير ذالك

IsBadWritePtr

تختبر ان المقطع المحدد صحيح ويمكن الكتابة فية

1-عنوان بداية البلوك الذاكري

2-طول البلوك الذاكري

----------------------

النوى والتخاطب الذاكري (تنقسم النوى إلى محلية وعامة )

النوى المحلية

AddAtom

تظيف نواة إلى جدول النوى المحلي

1- السلسلة

القيمة المعادة رقم النواة و0 في الخطأ

DeleteAtom

تحذف نواة

1- رقم النواة

!= 0 عند النجاح ورقم النواة عند الفشل

FindAtom

1- السلسلة التي سيبحث عنها

القيم المعادة رقم النواة و0 عند الفشل

GetAtomName

تسترجع السلسلة المرتبطة بالنواة

1- رقم النواة

2- المخزن الذي سيحمل بالسلسلة

3- عدد محارف السلسلة

القيم المعادة 0 عند الخطأ وعدد المحارف في النجاح

InitAtomTable

تغير حجم جدول النوى المحلي

1-الحجم الجديد الحجم القياسي 37

القيمة المعادة!=0 عند النجاح و0 عند الفشل

أما النوى العامة فهي نفس الإستخدام

GlobalAddAtom

GlobalDeleteAtom

GlobalFindAtom

GlobalGetAtomName

--------------------

لم تنتهي الدوال ( وسوف أضعها بالأقساط ..)

--------------------

هذا والله أعلم

تم تعديل هذه المشاركة بواسطة jaas في 20 أغسطس 2004 في 00:29

1

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#5

ممتاز جدا يا jaas وبالمناسبة لدي ملف excel يعرض 11 ألف دالة API ,, مع ذكر اسم المكتبة وبعض البيانات ,, وهي كثيرة جدا ,, فقط أمطرنا بهذه الدوال وستصبح مرجعا ممتاز للانطلاق ,, يمكن لكل من يبحث عن طريقة تنفيذ وظائفية معينة أن يعرف ماهي الدالة فقط بالاسم ,, ويبحث الباقي بنفسه في ال msdn أو في النت من أي مكان ,,

حيث أحيانا تصعب حتى لو عرفنا البارمترات الممرة للدالة ربما لانستطيع أن نستخدمها أيضا ,, لوجود بنية معقدة تحتاج لبيانات معينة اختيارية والاخرى اجبارية مثلا ,,

عموما فلندع الموضوع ينضج على طريقة jaas وسنصل للهدف باذن الله :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#6

thanks for this codes

#7

check this link for an API guide

www.geocities.com/mlink_v1/vb.html

check this website whick is mine

check the page and you'll find an API guide

download it

==================================

#8

ماشاء الله تبارك الله

أسال الله لكم التوفيق الصراحة موضيع شيق ومفيد.

#9

رااااااااااائع والله رااااااائع

بصراحه مااعرف كيف أشكرك للمعلومات هذي :)

ولو كان في قسم الدلفي سويت لك عزيمه وشربات icon6.gif

-----------------

أحب أسئل عن CreateFile WriteFile ReadFile

من شرحك فهمتها جيد (أولا : صنع أو إنشاء / ثانيا : كتابه / ثالثا : قرائه)

طيب هل ممكن استغنى عن الأولى وأستفيد من الثاني والثالث بشكل آخر

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

ثم من برنامج آخر أستخدم ReadFile لقرائة الجمله و WriteFile للكتابه مره أخرى

وكيف ذلك ؟

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

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

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

/

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

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

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

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

#10

أخي الكريم

دوال API في الدلفي أو السي أو فجول بيسك ..

كلها نفس الشيء ولها نفس البارمترات

وأكيد تقدر تكتب ببرنامج وتقرأ ببرنامج آخر ! نفس ماذكرت

ويجب طبعا : فتح الملف قبل القرائة منة؟!

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#11
اقتباس
دوال API في الدلفي أو السي أو فجول بيسك ..

كلها نفس الشيء ولها نفس البارمترات

ومين قال غير كذا :)

شكراا للإجابه

تم تعديل هذه المشاركة بواسطة <>دلفي<> في 13 سبتمبر 2004 في 15:20

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

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

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

/

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

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

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

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

#12

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

ان اسماء الدوال هو الاسم نفسه في اللغات المذكوره ... ام ماذا ؟

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

بالتأكيد دوال API هي نفسها في كل اللغات ؟!

إذا تعلمت كتابتها بإختصار ستتعلم البرمجة ببقية اللغات

-

نكمل

إليكم بعض دوال النظام

Beep

إصدار صوت

1- تردد الصوت من 37mz فما فوق

2-مدة الصوت

القيمة المعادة صفر في حال الخطأ

------------------------------------------------

CreateCaret

تنشأ علامة في النافذة

1-مقبض النافذة

2- مقبض الصورة النقطية أو 1 لتكون العلامة رمادية او0

3-عرض العلامة

4-إرتفاع العلامة

القيم المعادة= 0 في الفشل و !=0 في النجاح

------------------------------------------------

DestroyCaret

تدمر العلامة

------------------------------------------------

ExitWindowsEx

تغلق الجهاز أو تعيد التشغيل

1-أح الثوابت EWX

2-0

القيم المعادة = صفر في الفشل

------------------------------------------------

ExpandEnvironmentStrings

توسع سلاسل البناء

1- السلسة1

2-السلسة2

حجم السلسلة

------------------------------------------------

GetAsyncKeyState

تختبر حالة المفتاح

1- شفرة المفتاح

القيم المعادة=1 إذا كان مضغوط و0 إذا لم يكن مضغوط

------------------------------------------------

GetKeyboardType

تعيد معلومات عن لوحة المفاتيح

1- إما0تعيد طراز اللوحة أو1 تعيد الطراز الفرعي أو2 تعيدعدد المفاتيح

القيم المعادة 0 غير معرف

1-نوع بي سي 83 مفتاح

2- لوحة 102 مفتاح نوع Olivetti

3-84 مفتاح نوع AT

4-101 او102 مفتاح نوعIBM

5-1050 مفتاح نوع نوكيا

------------------------------------------------

GetSysColor

1-ثابت COLOR_.

القيمة المعادة اللون

------------------------------------------------

GetSystemMetrics

معلومات بنية النظام

1-أحد الثوابتSM_

مثال الثابت

SM_CLEANBOOT تحدد طريقة الإقلاع القيمة العادة 0=عادي 1=آمن 2=آمن للشبكات

------------------------------------------------

الدالة

SystemParametersInfo

البارمترات

fuWinIni lpvParam uParam uAction

هذة الدالة تستعيد وتثبت خيارت للنظام

1- البارمتر الأول يكون ثابت يبدأ بــ SPI_....

ويعتمد البارمتر 2و3 على نوع الثابت الأول

أما البارمتر الرابع فهي طريقة وضع التغييرات ويتم وضعها في ملف التسجيل المناسب إذا كان 0 يمنع عملية التحديث مباشرة أو ثوابت

وهي SPIF_UPDATEINIFINE للتحديث مباشرة

وظائف البارمتر 1 التي تعتمد عليها الدالة ( لاحظ الأرقام لكي تعرف البارمتر المستخدم مع كل ثابت إما 2 أو 3

SPI_GETACCESSTIMEOUT::==SPI_SETACCESSTIMEOUT

البنية3-ACCESSTIMEOUT

2- طول البنية

SPI_GETANIMATION::==SetANIM...

تستعيد حركة التصغير والإعادة

3- بنية ANIMATIONNFO

win nt

SPI_GETBEEP

3- يحمل بمتغير إذا كان =true أصوت النظام تعمل

SPI_SETBEEB

2- true لتشغيل الصوت وfalse للتعطيل

SPI_GETBORDER

3- سيحمل بمتغير الضارب التي يتحكم بحجم النافذة

SPI_SETBORDER

2- الضارب الذي سيتحكم بالنافذة

SPI_GETDEFAULTINPUTLANG::==Set

3- يكون متغير سيحمل مقبض لوحة المفاتيح

SPI_GETFASTTASKSWITCH

3-سيحمل بمتغيرإذا كان=true إذا كان الإنتقال سريع بين المهام

SPI_SETFASTTASKSWITCH

2- true OR False

SPI_GETFILTERKEYS

3- يحمل بنية FILTERKEYS

SPI_GETICONMETRICS

ترتب الأيقونات وعمليات أخرى

3- البنية ICONMETRICS

SPI_GETICONTITLEWRAP

3- يحمل بمتغير إذا كان=true فإن إلتفاف الأيقونة ممكن

SPI_SETICONTITLEWRAP

2- True or False

SPI_GETKEYBOARDDELAY

3- متغير يحمل مقدار التأخر الزمني للوحة المفاتيح

SPI_GETKEYBOARDSPEED

3- متغير يحمل سرعة تكرار الحرف

SPI_GETMENUDROPALIGNMENT

3- متغير إذا كان false إذا كانت محاذات القائمة إلى اليسار وtrue إلى اليمين

SPI_GETSCREENSAVEACTIVE

3- متغير إذا كان true فإن الشاشة المؤقتة تعمل وFalse عدى ذاللك

SPI_GETSCREENSAVETIMEOUT

3-متغير سيحمل عدد الثواني لعمل الحافظة

SPI_GETSERIALKEYS

3- بنيةSERIALKEYS

معلومات اجهزة الدخل أو عصى الألعاب

SPI_GETSTICKYKEYS

تسمح بعدم ضغط المفاتيح معا

3- بنية STICKYKEYS

2- حجم البنية

SPI_GETTOGGLEKEYS

يتسخدم لإصدار بعض الأصوات عتد ضغط أزرار التحكم مثل Capslock ,numlock

3- البنية TOGG..

2- حجم البنية

SPI_GETWORKAREA

3- متغير RECT سيحمل منطقة العمل على الشاشة

SPI_ICONHORIZONTALSPACING

إذا 3-=NULL فإن 2= العرض الجديد للأيقونة على سطح المكتب 16 أو 32 ..

SPI_ICONVERTICALSPACING

نفس الي قبلها ولكن الإرتفاع

SPI_LANGDRIVER

3- متغير نصي سيحمل بإسم قيادة اللغة Driver

SPI_SETSHOWSOUNDS

2- true إذا أردت تفعيل أصوت النظام وfalse لتجميدها

SPI_SETPOWEROFFACTIVE

2-true تفعيل حافظة الششة التي تفصل الكهرباء

SPI_SETPOWEROFFTIMEOUT

2- يحمل بقيمة الزمن الجديد للحافظة التي تفصل الكهرباء

SPI_SETMOUSEBUTTONSWAP

2-true للتبديل بين وظائف ازرار الماوس

SPI_SETLOWPOWERACTIVE

2-true لتمكين نمط الحافظة الذي يخفظ إستهلاك قدرة الشاشة

SPI_SETLOWPOWERTIMEOUT

2- الوقت الذي يتم فية تشغيل الشاشة المخصصة لتوفير الطاقة

القيم المعادة =0 في الفشل و != 0 في النجاح

-----------------------------------------------------------

دوال أخرى ::::::

FindExecutable

توجد اسم البرنامج المرتبط بالملف

1-إسم الملف

2- دليل الملف أو مسارة

3- متغير سيحمل بإسم مشغل الملف

القيمة المعادة :<32 في حال النجاح

وبالتوفيق ,,

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#14

بارك الله فيك اخي jaas

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

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

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#15

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

الحمد لله على عودة هذا الموضوع الرائع :rolleyes:

بارك الله فيك اخي :D

ننتظر المزيد من الدوال :rolleyes:

السلام عليكم

تم تعديل هذه المشاركة بواسطة محمد فراس في 16 فبراير 2005 في 14:10

#16

هل توجد دوال api لتنفيز اوامر في الدوس

مثلا

format

full format

عرض متويات قرص ما

قياس مساحة القرص

معرفة الاصدار بتاع السيستم

و اوامر اخري

#17

مشكور أخي العزيز ....

فعلاً جهدك لا يقدر بثمن ..

الله يعطيك ألف عافية ..

the_hydro@hotmail.com

#19
jaas كتب:
GetSystemMetrics

معلومات بنية النظام

1-أحد الثوابتSM_

مثال الثابت

SM_CLEANBOOT  تحدد طريقة الإقلاع  القيمة العادة 0=عادي 1=آمن 2=آمن للشبكات

السلام عليكم

نشكر الأخ JASS على ما يقوم به من جهود في هذا المنتدى .

و نتوقف عند الدالة GetSystemMetrics لنشرح بعض الثوابت المستخدمة فيها :

SM_CMOUSEBUTTON = عدد أزرار الفأرة ، صفر إذا لم يكن هناك فأرة .

SM_CXSCREEN = حجم الشاشة (X)

SM_CYSCREEN = حجم الشاشة (Y)

SM_CXSIZE = حجم الصورة النقطية الموجودة في شريط العنوان (X)

SM_CYSIZE = حجم الصورة النقطية الموجودة في شريط العنوان (Y)

SM_CXMICON = حجم الأيقونة الصغيرة (X)

SM_CYMICON = حجم الأيقونة الصغيرة (Y)

SM_CXICONSPACING = المسافة بين أيقونات سطح المكتب (X)

SM_CYICONSPACING = المسافة بين أيقونات سطح المكتب (Y)

SM_CXHSCROLL = حجم السهم في الشريط الأفقي (X)

SM_CYHSCROLL = حجم السهم في الشريط الأفقي (Y)

SM_CXVSCROLL = حجم السهم في الشريط الرأسي (X)

SM_CYVSCROLL = حجم السهم في الشريط الرأسي (Y)

SM_CYCAPTION = ارتفاع عنوان النافذة

SM_CXMENUSIZE = حجم الزر في شريط القائمة (X)

SM_CYMENUSIZE = حجم الزر في شريط القائمة (Y)

SM_CXMIN = حجم النافذة الأصغر (X)

SM_CYMIN = حجم النافذة الأصغر (Y)

SM_MIDEASTENABLED = توفر اللغة العربية

SM_NETWORK = توفر الشبكة (البت الأول تكون مرفوعة)

SM_SWAPBUTTON = تأخذ True إذا تم تبديل أزرار الفارة اليمنى مع اليسرى .

ويوجد للدالة ثوابت أخرى لم أذكرها .

** المرجع كتاب : دليل برمجة API باستخدام فيجول بيسك ، اصدار شعاع للنشر .

والله أعلم

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#20
اقتباس
هل توجد دوال api لتنفيز اوامر في الدوس

مثلا

format

full format

عرض متويات قرص ما

قياس مساحة القرص

معرفة الاصدار بتاع السيستم

و اوامر اخري

إستخدم دائما الدالة system لفعل ذلك :

system("format c:/q");

وهكذا لكل أوامر الدوز , لكن المعلومات ستظهر على شاشة كوسول أيضا .

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#22

شكراً جزيلاً للأخ jass صاحب هذا الموضوع الأكثر من رائع

وكذلك الأخ المشارك MSVS

ولكن لدي سؤال محيرني قليلاً...

بما أن هذه الدوال (API) هي دوال النظام ، فهل يوجد هناك طريقة أو صيغة معينة يمكن من خلالها تنفيذ هذه الأوامر والدوال مباشرة من خلال النظام وبدون لغة برمجة وسيطة (( على سبيل المثال من خلال محرر DOS أو بكتابتها وتنفيذها من خلال batch file ))... أو غير ذلك ؟؟؟؟؟

وجزاكم الله ألف خير... :rolleyes:

#23

هذه الثوابت التي تستخدم مع الدالة GetSystemMetrics مع قيمها والتي سبق شرح بعضها :

Public Const SM_CMETRICS = 44
Public Const SM_CMOUSEBUTTONS = 43
Public Const SM_CXBORDER = 5
Public Const SM_CXCURSOR = 13
Public Const SM_CXDLGFRAME = 7
Public Const SM_CXDOUBLECLK = 36
Public Const SM_CXFIXEDFRAME = SM_CXDLGFRAME 
Public Const SM_CXFRAME = 32
Public Const SM_CXFULLSCREEN = 16
Public Const SM_CXHSCROLL = 21
Public Const SM_CXHTHUMB = 10
Public Const SM_CXICON = 11
Public Const SM_CXICONSPACING = 38
Public Const SM_CXMIN = 28
Public Const SM_CXMINTRACK = 34
Public Const SM_CXSCREEN = 0
Public Const SM_CXSIZE = 30
Public Const SM_CXSIZEFRAME = SM_CXFRAME
Public Const SM_CXVSCROLL = 2
Public Const SM_CYBORDER = 6
Public Const SM_CYCAPTION = 4
Public Const SM_CYCURSOR = 14
Public Const SM_CYDLGFRAME = 8
Public Const SM_CYDOUBLECLK = 37
Public Const SM_CYFIXEDFRAME = SM_CYDLGFRAME 
Public Const SM_CYFRAME = 33
Public Const SM_CYFULLSCREEN = 17
Public Const SM_CYHSCROLL = 3
Public Const SM_CYICON = 12
Public Const SM_CYICONSPACING = 39
Public Const SM_CYKANJIWINDOW = 18
Public Const SM_CYMENU = 15
Public Const SM_CYMIN = 29
Public Const SM_CYMINTRACK = 35
Public Const SM_CYSCREEN = 1
Public Const SM_CYSIZE = 31
Public Const SM_CYSIZEFRAME = SM_CYFRAME
Public Const SM_CYVSCROLL = 20
Public Const SM_CYVTHUMB = 9
Public Const SM_DBCSENABLED = 42
Public Const SM_DEBUG = 22
Public Const SM_MENUDROPALIGNMENT = 40
Public Const SM_MOUSEPRESENT = 19
Public Const SM_PENWINDOWS = 41
Public Const SM_RESERVED1 = 24
Public Const SM_RESERVED2 = 25
Public Const SM_RESERVED3 = 26
Public Const SM_RESERVED4 = 27
Public Const SM_SWAPBUTTON = 23

نأخذ دالة أخرى :

الوظيفة : SetActiveWindow

لها وسيط واحد من نوع مقبض نافذة (في البيسك Long) .

تقوم بتنشيط نافذة ما ، ولكن أنتبه لا تغير هذه الدالة تركيز الدخل ، فقد يكون تركيز الدخل موجهاً لنافذة أخرى .

وللحصول على تركيز الدخل مع تنشيط النافذة نستخدم .....

الوظيفة : SetFocus

ويعبر عنها بالفيجول بيسك بـ SetFocusAPI منعاً للتعارض مع المنهج SetFocus في الفيجول بيسك .

و نمرر لها وسيط يمثل قيمة مقبض النافذة المراد وضع التركيز عليها .

ملاحظة : تعود هذه الوظيفة بمقبض النافذة السابقة التي كانت تمتلك التركيز .

الوظيفة : IsWindow

لها وسيط واحد من نوع مقبض نافذة (في البيسك Long) .

تختبر هذه الوظيفة (الدالة) المقبض إن كان مقبض نافذة أم لا .

الوظيفة : IsWindowEnabled

لها وسيط واحد من نوع مقبض نافذة (في البيسك Long) .

تختبر هذه الوظيفة (الدالة) النافذة إذا كانت ممكنة أم لا .

بقي أن نقول أن جميع هذه الوظائف (الدوال) في المكتبة user32.dll .

والله أعلم

تم تعديل هذه المشاركة بواسطة MSVS في 19 فبراير 2005 في 17:20

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#24

بارك الله فيكوم جميعاٌ

:rolleyes:

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

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

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#25

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

اقتباس
بما أن هذه الدوال (API) هي دوال النظام ، فهل يوجد هناك طريقة أو صيغة معينة يمكن من خلالها تنفيذ هذه الأوامر والدوال مباشرة من خلال النظام وبدون لغة برمجة وسيطة (( على سبيل المثال من خلال محرر DOS أو بكتابتها وتنفيذها من خلال batch file ))... أو غير ذلك ؟؟؟؟؟

إن كانت المكتبة محملة في الذاكرة ملف dll فيمكن إستدعاء الدوال عن طريق البريمج debug إكتب Debug في run ثم إكتب التعليمة الستعشرية ل call instruction ثم إكتب مدخل الدالة في الذاكرة مع كتابة البارمترات المتوقعة للدالة قبلا طبعا بعمل Push لها .

إن لم تكن محملة في الذاكرة , يمكن تحميلها بالمكتبة LoadLibrary , ثم معرفة عنوان تحميلها ثم إستدعاءها .

بالنسبة للسكريبتات فيمكن كتابة VBS,Jps لإستدعئها .

بالنسبة للباتش File إن كان bat.* فلا أعرف كيف يمكن إستدعاء دوال api منه .

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

banner_60_468.gif

NOTHING IS IMPOSSIBLE

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

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