PDA

View Full Version : API در دلفی ...



MSN_Issue
یک شنبه 09 خرداد 1389, 21:45 عصر
سلام به همه ی دلفی کاران و صد البته اساتیدِ عزیز ...
راستش من یه چند روزیه دارم API میخونم ...
گفتم شاید بد نباشه تا زکات این علمم رو با افتتاح این تاپیک بپردازم ...
البته توی این تاپیک فقط بعضی از توابع (که به نظر مفیدتر میآن) گذاشته میشه و پر واضحه که توابع API خیلی بیشتر از اینهاست .

چند تا نکته ی قابل ذکر :
- اگر کسی در مورد یکی از توابع مشکل داشت بگه تا یه مثال از اون رو براش بذارم .
- اگر کسی خواست توی این تاپیک تابعی رو معرفی کنه ، لطفا توضیح مطلوبی از ورودی ، خروجی و کاربرد تابعش بذاره .
- اگر کسی به تابعی نیاز داشت ولی هنوز به اون سرفصل مربوطه نرسیده بودیم ، لطفا توی پیام خصوصی بیان کنه تا نظم تاپیک به هم نخوره ، در حد توان در خدمتم .
- امکان بیان این توابع در VB هم هست ، اگر کسی خواست بگه تا نحوه ی استفاده و مثال تابع مربوطه رو در VB بذارم .
- چیزی که واضحه اینه که من معصوم نیستم و مطالبی هم که میذارم وحی ملزم نیست ، پس اگه اشتباهی ازم سر زد خوشحال میشم تا تذکر بدید .

* سرفصل توابع بشرح زیر است :
String API
Wait&Time
File&Directory
Drives
Device Context
Text & Lines & Caret
Display & Fonts
ClipBoard
Window
Windows Information
Mouse Cursor
Message
Keyboard & Hotkey
Shell & Exit
Registry
ماکروهای ساخت متغیر

مرجع : برنامه نویسی سیستمی در ویندوز با توابع API - پژمان حسینی

البته این سرفصل ها خیلی زیاده و قول نمیدم که تمامش رو بتونم بیان کنم ، اما تمام تلاشم رو میکنم ...
امیدوارم مفید باشم...

با آرزوی موفقیت :خجالت: /. مسعود

MSN_Issue
دوشنبه 10 خرداد 1389, 08:35 صبح
سلام به همه
چون تو این فصل به توابع مربوط به رشتها (Strings) می پردازیم بهتر یه کم بیشتر رشته ها رو تو Windows بررسی کنیم .
رشته هایی که در توابع API مورد استفاده قرار میگیرند رشته های ختم به null هستند . در دلفی نوع Pchar وجود دارد که باید از آن استفاده کرد . البته با استفاده از امکان Type Casting (قالب ریزی نوع) میشه متغیر رو از نوع String تعریف کرد و بعد با دستور تبدیل Pchar اون رو به رشته ی ختم به Null تبدیل کنیم ...

MSN_Issue
دوشنبه 10 خرداد 1389, 09:22 صبح
تابع CharLower
هدف : از این تابع برای تبدیل یک حرف به حرف کوچک استفاده میشود .
ورودی این تابع یک کاراکتر و خروجی آن نیز یک کاراکتر است .

فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


function CharLower(lpsz : Pchar ) : Pchar ;

توابع مشابه :
CharUpper

MSN_Issue
دوشنبه 10 خرداد 1389, 09:39 صبح
تابع IsCharAlpha
هدف : این تابع تشخیص میدهد که کارکتری که به آن ارسال شده است جزو حروف است یا خیر .
فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


function IsCharAlpha( ch : Pchar ) : BOOL ;


توابع مشابه :
IsCharAlphaNumeric
IsCharLower
IsCharUpper
-----------------------------------------

تابع lstrcmp
هدف : این تابع دو رشته که به آن فرستاده می شوند را از نظر الگوی نوشتن CaseSensitive با هم مقایسه میکند .
فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


fanction lstrcmp ( lpString1 , lpString2 : Pchar ) : Integer ;

خروجی تابع :
1- : مشخص میکند که رشته ی اول از رشته ی دوم کوچکتر است .
0 : مشخص میکند که رشته ها با هم برابر هستند .
1 : مشخص میکند که رشته ی اول از رشته ی دوم بزرگتر است .
-----------------------------------

تابع lstrLen
هدف : این تابع طول رشته ای که به آن فرستاده شده است را بر می گرداند .

فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


fanction lsrtlen ( lpString : Pchar ) : Integer ;

MSN_Issue
سه شنبه 11 خرداد 1389, 08:40 صبح
سلام به همه ی دوستان
بعد از توابع String میرسیم به توابع Wait & Time
------------------------------------------------------
تابع Sleep
هدف : از این تابع برای ایجاد وقفه در اجرای برنامه استفاده میشود .
فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


procedure sleep ( dwMilliseconds : DWORD ) ;
-------------------------------------------------------------
تابع GetLocalTime
هدف : این تابع که از نوع زیر برنامه (VOID) می باشد ، زمان و تاریخ فعلی سیستم را بر میگرداند.

فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


procedure GetLocalTime ( var lpSystemTime : TSystemTime );
پارامترها :
lpSystemTime : این پارامتر یک متغییر از نوع ساختار SYSTEMTIME بوده و زمان و تاریخ کنونی سیستم در این متغییر قرار می گیرد .

ساختار در Delphi

_SYSTEMTIME : record
wYear : Word ;
wMonth : Word ;
wDayOfWeek : Word ;
wDay : Word ;
wHour : Word ;
wMinute : Word ;
wSecond : Word ;
wMilliSeconds : word ;
end;
TSystemTime = _SYSTEMTIME ;


توابع مشابه :
GetSystemTime

MSN_Issue
چهارشنبه 12 خرداد 1389, 19:41 عصر
تابع SetLocalTime
هدف: این تابع زمان و تاریخ سیستم را به زمان و تاریخ دلخواه تغییر میدهد .

فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .

function SetLocalTime( const lpSystemTime : TSystemTime ) : BOOL ;

پارامترها :
lpSystemTime : از نوع SYSTEMTIME می باشد و باید قبل از استفاده در تابع مذبور مقدار دهی شود .

تذکر: در این تابع SystemTime.wDayofWeek را نمی توان set کرد .

توابع مشابه :
SetSystemTime

MSN_Issue
سه شنبه 25 خرداد 1389, 05:20 صبح
تابع FileTimeToSystemTime
هدف : این تابع تاریخ و زمان فایل را به زمان و تاریخ 64 بیتی System تبدیل میکند .

فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .

function FileTimeToSystemTime( const lpFileTime : TFileTime ; var lpSystemTime : TSystemTime ) : BOOL ;

پارامترها :
lpFileTime : این پارامتر یک متغییر از نوع ساختار FILETIME می باشد که قبلا تعریف شده است . این پارامتر متغییری می باشد که قرار است به زمان و تاریخ سیستم تبدیل شود .
lpSystemTime : این پارامتر متغییری است از نوع SYSTEMTIME که برای دریافت زمان و تاریخ سیستم به کار می رود .

خروجی تابع :
خروجی این تابع از نوع Boolean بوده و اگر تابع کارش را به درستی انجام دهد مقدار True یا یک و اگر کار تابع ناقص انجام شود مقدار False یا صفر را بر می گرداند .

توابع مشابه :
SystemTimeToFileTime

پ ن : بابت وقفه ای که توی روند تاپیک افتاده ، عذرخواهی میکنم . اما همونطور که میدونید امتحانات دانشگاه ها شروع شده و تا اواسط تیر درگیر امتحانات هستم . انشاالله بعد از اون بتونم به روند تاپیک سامان بدم .

MSN_Issue
سه شنبه 15 تیر 1389, 22:47 عصر
تابع OpenFile

هدف
از این تابع برای ساختن ، باز کردن و حذف یک فایل می توان استفاده کرد .

- بیشترین استفاده این تابع برای بدست آوردن دستگیره (Handle) یک فایل می باشد . از این دستگیره میتوان در توابع GetFileSize و GetFileTime و توابع پیشرفته ReadFile و WriteFile استفاده کرد .


فراخوانی :
این تابع در کتابخانه ی Windows از دلفی تعریف شده است .


function OpenFile ( const lpFileName: LPCSTR; var lpReOpenBuff: TOFStruct; uStyle: UINT ): HFILE;
پارامترها
lpFileName : این پارامتر از نوع String می باشد و فایلی را مشخص می کند که باید برای محاسبات خاصی باز شود یا دستگیره اش برگردانده شود .

lpReOpenBuff : این متغیر به ساختار OFSTRUCT برای دریافت اطلاعات فایل وقتی برای اولین بار باز می شود اشاره میکند .

ساختار در Delphi

_OFSTRUCT = record
cBytes : Byte;
fFixedDisk : Byte;
nErrCode : Word;
Reserved1 : Word;
Reserved2 : Word;
szPathName : array[0..OFS_MAXPATHNAME-1] of CHAR;
end;
TOFStruct = _OFSTRUCT;

توضیح ساختار
CByte : اندازه ی ساختار
fFixedDisk : اگر این فیلد غیر صفر باشد یعنی فایل از هارد دیسک است .
nErrCode : اگر فایل باز نشود شمارهِ خطا را درون خود نگه می دارد .
Reserved1 : رزرو شده است .
Reserved2 : رزرو شده است .
szPathName : این فیلد شامل مسیر و نام فایل می باشد .

*برای جلوگیری از طولانی شدن و سنگین شدن پست توضیح پارامتر uStyle رو توی پست بعد میذارم ...

MSN_Issue
چهارشنبه 16 تیر 1389, 11:25 صبح
*ادامه ی پست قبل (توضیح پارامتر uStyle) :
این پارامتر میتواند مقادیر زیر را داشته باشد :

OF_CANCEL : با مقدار عددی H800 و در OF_PROMPT که شامل Dialog Box است شامل دکمه ی Cancel می شود (در کاربردی ندارد).

OF_CEATE : وقتی استفاده می شود که می خواهیم قایل جدیدی ایجاد کنیم و دارای مقدار عددی H1000 می باشد . اگر فایل از قبل وجود داشته باشد سایز آن صفر می شود .

OF_DELETE : فایل مورد نظر را DELETE می کند .

OF_EXIST : دارای مقدار عددی H4000 می باشد ، و وقتی به کار می رود که بخواهیم فایلی با نام و مسیری که در lpFileName مشخص شده وجود دارد یا خیر .

OF_PARSE : تابع فقط ساختار OFSTRUCT را برای فایل مورد نظر پر می کند و عمل دیگری انجام نمی دهد و دارای مقدار عددی H100 می باشد .

OF_PROMPT : اگر فایلی در مسیر مورد نظر وجود نداشته باشد File does not exists Requested نمایش داده می شود و دارای گزینه های Retry و Cancel می باشد . اگر Cancel انتخاب شود تابع OpenFile و خطای File not found را بر میگرداند ، این Flag دارای مقدار عددی H2000 است .

OF_READ : فایل را برای عملیات فقط خواندن آماده میکند و دارای مقدار عددی صفر می باشد .

OF_READWRITE : فایل را برای عملیات خواندن و نوشتن باز می کند و دارای مقدار عددی 2 می باشد .

OF_REOPEN : فایل را با اطلاعاتی که در ساختار OFSTRUCT وجود دارد دوباره باز میکند و دارای مقدار عددی H8000 می باشد.

OF_SHARE_COMPAT : برای فایلهایی که دارای سیستم MS-DOS می باشند در Win32 به کار میرود و دارای مقدار عددی صفر میباشد و در ویندوز NT از دو قسمت FILE_SHARED_READ و FILE_SHARED_WRITE استفاده میشود .

OF_SHARE_DENY_NONE : فایل را با شرایط Flag قبلی باز میکند ولی اجازه ی Read و Write را نمیدهد و دارای مقدار عددی H40 می باشد .

OF_SHARE_DENY_READ : فایل را با شرایط OF_SHARE_COMPAT باز میکند و فقط اجازه ی خواندن از فایل را نمی دهد و دارای مقدار عددی H30 است .

OF_SHARE_DENY_WRITE : فایل را با شرایط OF_SHARE_COMPAT باز میکند و فقط اجازه ی نوشتن در فایل را نمیدهد و دارای مقدار عددی H20 است .

OF_SHARE_DENY_EXCLUSIVE : فایل را با حالت Exclusive باز میکند . فایل علاوه بر دستیابی به حالتهای Read و Write به حالتهای دیگری هم دسترسی دارد و دارای مقدار عددی H10 می باشد .

OF_VERIFY : جزو چک کردن های اضافی فایلهای ReadInly می باشد و تاریخ و ساعت فایل را چک می کند و دارای مقدار عددی H400 می باشد .

OF_WRITE : فایل را برای عملیات فقط نوشتن در فایل باز میکند و دارای مقدار عددی یک میباشد .

خروجی تابع
خروجی این تابع یک عدد است که دستگیره ی فایل می باشد .

lena abbaszadeh
چهارشنبه 16 تیر 1389, 12:07 عصر
سلام
اولا مرسی ازین تاپیک فوق العاده و مرسی از همه زحماتتون
من با shellexecuteمشکل دارم چند باری هم پست کردم و جواب نگرفتم کامل
اول اینکه shellexecuteفایل هایی که اسمشون فارسیه رو باز نمی کنه یکی از دوستان shellexecuteWرو پیشنهاد کرد که اون هم بی فایده بود
دوم اینکه در آدرس دهی رو شبکه باهاش مشکل دارمhttp://barnamenevis.org/forum/showthread.php?t=230967
ممنون میشم اگه کمکم کنین
مرسی:لبخندساده:

دلفــي
چهارشنبه 16 تیر 1389, 15:44 عصر
سلام
اولا مرسی ازین تاپیک فوق العاده و مرسی از همه زحماتتون
من با shellexecuteمشکل دارم چند باری هم پست کردم و جواب نگرفتم کامل
اول اینکه shellexecuteفایل هایی که اسمشون فارسیه رو باز نمی کنه یکی از دوستان shellexecuteWرو پیشنهاد کرد که اون هم بی فایده بود
دوم اینکه در آدرس دهی رو شبکه باهاش مشکل دارمhttp://barnamenevis.org/forum/showthread.php?t=230967
ممنون میشم اگه کمکم کنین
مرسی:لبخندساده:

من به دو روش نوشتم و هر دو برای اسمهای فارسی جواب دادند
سورس در فایل ضمیمه ...

52689

MSN_Issue
چهارشنبه 16 تیر 1389, 18:28 عصر
من به دو روش نوشتم و هر دو برای اسمهای فارسی جواب دادند
سورس در فایل ضمیمه ...
دوست عزیز فایلی که ضمیمه کردین دانلود نشد چون ویروسی بود !!!
اگه لطف کنید دوباره آپ کنید ممنون میشم .

Virus Name:
Win32.Induc.A

MSN_Issue
شنبه 19 تیر 1389, 11:46 صبح
تابع GetFileSize

هدف
همانطور که از نام تابع مشخص است اندازه فایل را به عنوان Byte برمی گرداند .
فراخوانی در Delphi

این تابع در کتابخانه Windows از دلفی تعریف شده است .


function GetFileSize ( hFile: THandle ; lpFileSizeHigh: Pointer ) : DWORD ;


پارامترها
hFile : دستگیره ی فایل می باشد که با استفاده از تابع OpenFile می توان به دست آورد .
lpFileSizeHigh : این پارامتر از نوع اشاره گر که به یک WORD می باشد و برای فایلهایی مورد استفاده قرار میگیرد که حجمی بالا تر از مقدار DWORD دارند ، معمولا این پارامتر در دلفی برابر nil و در VB برابر صفر میباشد .

خروجی تابع
اگر کار تابع به درستی انجام شود ، WORD پایین DWORD را برمیگرداند که اندازه ی فایل می باشد . اگر اندازه ی فایل بسیار بزرگ باشد WORD بالای اندازه ی فایل در متغییر lpFileSizeHigh قرار می گیرد .

MSN_Issue
شنبه 19 تیر 1389, 12:29 عصر
تابع GetFileTime

هدف
این تابع زمان و تاریخ تولید فایل و زمان و تاریخ آخرین دسترسی به فایل و زمان و تاریخ آخرین باری که در فایل نوشته شده است را بر می گرداند .

فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .


function GetFileTime(hFile: THandle ; lpCreationTime , lpLastAccessTime , lpLastWriteTime : PFileTime ) : BOOL ;


پارامترها

hFile : دستگیره فایل می باشد که با استفاده از تابع OpenFile به دست می آید .

lpCeationTime : زمان و تاریخ تولید فایل در این متغییر که از نوع ساختار FILETIME می باشد ، قرار می گیرد.

lpLastAccessTime : زمان و تاریخ آخرین دسترسی به فایل را که از نوع ساختار FILETIME می باشد ، در خود دارد .

lpLastWriteTime : زمان و تاریخ آخرین باری که در فایل نوشته شده را در خود دارد . هر سه متغیر اخیر اشاره گری به ساختار می باشند .

خروجی تابع

خروجی تابع از نوع Boolean بوده و اگر مقدار True برگرداند ، یعنی کار تابع به درستی انجام شده است و اگر مقدار False را برگرداند یعنی کار تابع ناقص انجام شده است .

MSN_Issue
شنبه 19 تیر 1389, 20:56 عصر
تابع GetCompressedFileSize

هدف
کار این تابع دقیقا مانند تابع GetFileSize می باشد با این تفاوت که اندازه فایل های فشرده را نیز بر میگرداند و تفاوت دیگر این است که با اسم فایل کار میکند نه با دستگیره آن .


فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .


function GetCompressedFileSize ( lpFileName : PChar ; lpFileSizeHigh : PDWORD ) : DWORD ;


پارامترها

lpFileName : یک متغییر از نوع String است که شامل نام فایلی می باشد که اندازه ی آن را تابع به ما برمی گرداند .
lpFileSizeHigh : دقیقا مانند همین متغیر در تابع GetFileSize می باشد .

خروجی تابع
خروجی این تابع دقیقا مانند خروجی تابع GetFileSize می باشد .

MSN_Issue
یک شنبه 20 تیر 1389, 10:49 صبح
تابع FindFirstFile

هدف
این تابع به دنبال یک فایل با مشخصاتی که به آن داده شده است می گردد .

فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .


function FindFirstFile ( lpFileName: PChar ; var lp FindFileData: TWIN32FindData ) : THandle ;
پارامترها

lpFileName : این پارامتر از نوع String بوده و نام فایل مورد جستجو یا شرایط مورد نظر برای فایل را شامل میشود . برای مثال :

نام فایل 'C:\Delphi.txt'
شرایط پسوندی 'C:\*.exe'

lpWIN32FindData : این متغیر اشاره می کند به ساختار WIN32_FIND_DATA و هر فایلی که توسط تابع پیدا میشود اطلاعات آن در این ساختار ذخیره میشود .

ساختار در Delphi
_WIN32_FIND_DATA = record
dwFileAttributes : DWORD ;
ftCreationTime : TFileTime ;
ftLastAccessTime : TFileTime ;
ftLastWriteTime : TFileTime ;
nFileSizeHigh : DWORD ;
nFileSizeLow : DWORD ;
dwReserved0 : DWORD ;
dwReserved1 : DWORD ;
cFileName : array [0..MAX_PATH -1] of WideChar ;
cAlternateFileName : array [0..13] of WideChar;
end ;
TWIN32_FIND_DATA = _WIN32_FIND_DATA ;
توضیح برخی از قسمت های ساختار

nFileSizeHigh : این پارامتر Word بالایی اندازه ی فایل را به بایت بر می گرداند و به باید این مقدار صفر می باشد مگر اینکه اندازه ی فایل از MaxDword که برابر با 4294967295 می باشد ، بیشتر باشد .

nFileSizeLow : این متغیر Word پایینی اندازه فایل را به بایت بر میگرداند .

نکته
اندازه فایل از فرمول زیر به دست می آید :

(nFileSizeHigh * MaxDword ) + nFileSizeLow AlternateFileName : این پارامتر نیز نام فایل می باشد با این تفاوت که با فرمت قدیمی فایل ، یعنی 8 کاراکتر نام فایل و 3 کاراکتر پسوند فایل می باشد .

خروجی تابع

اگر تابع کار خود را به درستی انجام دهد ، دستگیره یک فایل را بر می گرداند. اگر تابع کار خود را به درستی انجام ندهد مقدار که برابر با مقدار عددی 1- می باشد را بر می گرداند .

MSN_Issue
یک شنبه 20 تیر 1389, 14:47 عصر
فکر کنم دلفی من آلوده شده ، فایل اجرایی رو از برنامه حذف کردم و فقط سورسش رو آپلود کردم ، خودتون زحمت Build رو بکشید .

موفق باشید ...
خیلی جالبه ، اما مثل اینکه استفاده از این توابع و Build این پروژه برابرِ با ساخت ویروس ... !!!!!:شیطان::تشویق:

عکس زیر در زمان build این پروژه-ست !!!!

دلفــي
یک شنبه 20 تیر 1389, 15:03 عصر
خیلی جالبه ، اما مثل اینکه استفاده از این توابع و Build این پروژه برابرِ با ساخت ویروس ... !!!!!:شیطان::تشویق:

عکس زیر در زمان build این پروژه-ست !!!!

اصلاح شد .

MSN_Issue
چهارشنبه 06 مرداد 1389, 11:15 صبح
توابع Directory

===============================
تابع CreateDirectory

هدف
همانطور که از نام این تابع مشخص است ، از این تابع برای ساختن یک فهرست استفاده می شود .

فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .

function createDirectory ( lpPathName: PChar; lpSecurityAttributes: PSecurityAttributes ) : BOOL ;پارامترها
lpPathName : این پارامتر از نوع رشته می باشد و مسیر و نام فهرست جدید را مشخص می کند .

lpSecurityAttributes : این پارامتر از نوع ساختار SECURITY_ATTRIBUTES می باشد و برای تعیین خصوصیات حفاظت فهرست به کار می رود و از مباحث پیشرفته می باشد . ( در دلفی معمولا بجای این پارامتر مقدار nil قرار می گیرید .

ساختار در دلفی

_SECURITY_ATTRIBUTES = record
nLength: DWORD;
lpSecurityDescriptor: Pointer;
bInheritHandle: BOOL;
end;

توضیح ساختار
nlength : اندازه ساختار می باشد که با تابع SizeOf در دلفی مشخص می شود .
lpSecurityDescriptor : اشاره گری به ساختار دیگری به نام SECURITY_DESCRIPTOR می باشد .
bInheritHandle : این فیلد دستگیره ( Habndle ) فرآیند جدیدی را به ارث می برد اگر مقدار True بگیرد ، فرآیند جدید وارث دستگیره ( Handle ) می باشد .

خروجی تابع
اگر تابع کار خود را به درستی انجام دهد یعنی فهرست جدید را ایجاد کند مقدار یک یا True و اگر نتواند به هر دلیلی فهرست را ایجاد کند مقدار صفر یا False بر می گرداند .

MSN_Issue
شنبه 09 مرداد 1389, 23:42 عصر
تابع RemoveDirectory

هدف
این تابع یک فهرست را از روی دیسک حذف می کند .

فراخوانی در Delphi
این تابع در کتابخانه windows از دلفی تعریف شده است .

function RemoveDirectory ( lpPathName: PChar ): BOOL ;

پارامترها
lpPathName : این پارامتر از نوع رشته بوده و مسیر و نام فهرستی را که قرار است از روی دیسک حذف شود مشخص می کند .

خروجی تابع
اگر تابع فهرست مورد نظر را از روی دیسک حذف کند مقدار True یا یک بر می گرداند و اگر نتواند به هر دلیلی فهرست مورد نظر را حذف کند مقدار صفر یا False بر می گرداند .

MSN_Issue
یک شنبه 10 مرداد 1389, 10:51 صبح
سلام به همه ی دوستان و اساتید .
خلاصه ای از مطالب این تاپیک رو (تا اینجا) برای استفاده ی راحت تر توی یک فایل PDF آماده کردم که براتون ضمیمه کردم .

MSN_Issue
دوشنبه 11 مرداد 1389, 23:39 عصر
Drives
=====================
تابع GetDiskFreeSpace

هدف
از این تابع برای گرفتن اطلاعاتی از قبیل تعداد Sector ، تعداد Clusterهای خالی و موارد دیگر از Drive مورد نظر استفاده می شود .

فراخوانی در Delphi
ای تابع در کتابخانه Windows از دلفی تعریف شده است .

function GetDiskFreeSpace ( lpRootPathName: PChar; var lpSectorsPerCluster, lpBytesPerSector,
lpNumberOfFreeClusters, lpTotalNamberOfClusters : DWORD ):BOOL ;

پارامترها
lpRootPathName : این پارامتر از نوع رشته بوده و نام درایوی که اطلاعات آن را می خواهیم در آن قرار می گیرد .
lpSectorPerCluster : این پارامتر از نوع عددی بوده و تعداد Sectorها را در هر Cluster مشخص می کند .
lpBytesPerSector : این پارامتر از نوع عددی بوده و تعداد هر بایت در هر Sector را مشخص می کند .
lpNumberOfFreeCluster : این پارامتر عددی بوده و نعداد Clusterهای خالی درایو مورد نظر را بر می گرداند .
lpTotalNumberOfCluster : این پارامتر نیز عددی بوده و تعداد کل Clusterهای موجود در درایو مورد نظر را بر می گرداند .

خروجی تابع
اگر تابع کار خود را به درستی انجام دهد مقدار یک یا True بر می گرداند و اگر کار خود را ناقص انجام دهد مقدار صفر یا False را بر می گرداند .

توجه
تابع GetFreeDiskSpace از APIهای بسیار قدیمی ویندوز می باشد به همین دلیل مشکلاتی دارد . این تابع اطلاعات مربوط به HardDiskهای بالاتر از 2GB را اشتباه بر می گرداند . برای حل این مشکل تابع تابع GetDiskFreeSpaceEx وجود دارد .

MSN_Issue
جمعه 15 مرداد 1389, 16:14 عصر
تابع GetDriveType

هدف
این تابع نوع هریک از دیسک درایوهای سیستم را مشخص می کند ، انواعی از قبیل ، فلاپی ، سی دی و دیسک سخت و ... .

فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .

function GetDriveType ( lpRootPathName: PChar) : UINT ;توجه
نوع Uint که در فراخوانی Delphi استفاده شده است دقیقا برابر با نوع LongWord دلفی می باشد و فقط به دلیل همخوانی با اصل تابع به این شکل بیان شده است .

پارمترها
lpRootPathName : این پارامتر از نوع رشته بوده و درایو مورد نظر را مشخص می کند .

خروجی تابع
خروجی این تابع یکی از مقادیر زیر می باشد :
0 : درایوی که معرفی شده است قابل دسترسی نیست .
1 : درایوی که معرفی شده است وجود ندارد .
DRIVE_REMOVABLE : برابر با مقدار عددی 2 می باشد و مشخص می کند که دیسک درایو مورد نظر از نوع قابل حمل می باشد . مانند Floppy Drive
DRIVE_FIXED :برابر با مقدار عددی 3 بوده و مشخص می کند که درایو مورد نظر از نوع ثابت می باشد . مانند Hard Disk
DRIVE_REMOTE : برابر با مقدار عددی 4 می باشد و مشخص می کند که درایو مورد نظر از نوع درایو شبکه می باشد .
DRIVE_CDROM : برابر با مقدار عددی 5 می باشد و مشخص می کند که درایو مورد نظر از نوع CD-Drive می باشد .
DRIVE_RAMDISK : برابر با مقدار عددی 6 بوده و مشخص میکند درایو مورد نظر از نوع درایوهای ساخته شده در RAM می باشد .

MSN_Issue
جمعه 22 مرداد 1389, 04:38 صبح
تابع GetLogicalDriveStrings



هدف این تابع دیسک درایوهای موجود در سیستم را برمی گرداند .



فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .
function GetLogicalDriveString ( nBufferLength: DWORD; lpBuffer: PAnsichar ): DWORD;



پارمترها
nBufferLength : این پارامتر از نوع عددی بوده و مقدار فضای لازم برای ذخیره سازی نام دیسک درایو را مشخص می کند .

lpBuffer : این پارامتر از نوع رشته بوده و نام دیسک درایو در این پارامتر قرار می گیرد .

توضیح

در پارامتر nBufferLength همانطوری که در مثال خواهید دید از تابع SizeOf برای بدست آوردن فضای مورد نیاز متغییر مورد نظر استفاده شده است .

lpBuffer : این پارامتر نیاز به توضیح بیشتری دارد . لازم به ذکر است که نام دیسک درایوها به صورت زیر در این متغییر قرار می گیرند :
A:\<null> B:\<null> C:\<null> D:\<null>
همانطور که می بینید جداکننده هر رشته یک <null> می باشد ، برای چاپ با استفاده از نام درایوها به صورت عادی نمی توان عمل کرد زیرا فقط A: چاپ می شود . دلیل آن نیز مشخص است چون تابع به متغیر <null> می رسد گمان می کند که رشته به پایان رسیده و دیگر جلو نمی رود . برای رفع این مشکل همانطور که در مثال می بینید کارهایی صورت گرفته است که توضیح داده می شود :

در مثال تابعی به نام GetDriveLogic تعریف شده است . در این تابع یک متغیر از نوع آرایه کاراکتری تعریف شده است که در حقیقت نام دیسک درایوها را در آن قرار می دهیم .
Drv : array [0..255] of char ;

متغیری هم به نام Temp تعریف کرده ایم که در حقیقت خروجی تابع می باشد ، در اینجا از یک روش بسیار ساده استفاده شده است . نام دیسک درایو ها به شکل زیر در آرایه Drv ذخیره می شوند : A : \ #0 C : \ #0 D : \ #0#0

همانطور که می بینید در تمامی خانه های بخش پذیر به 4 مقدار نام دیسک قرار دارد ، پس با استفاده از یک شرط ساده در واقع آنها را بر می داریم : if (i mod 4) then …

If بعدی در واقع رسیدن به پایان رشته را مشخص می کند : if Drv[i]=#0 then …

یعنی اگر خانه بخشپذیر به 4 برابر با مقدار null یا صفر باشد ، پس دیگر درایوی وجود ندارد . در پایان متغیر Temp به شکل زیر است :

A C D #0


خروجی
تابع اگر تابع کار خود را به درستی انجام دهد تعداد کاراکترهایی را که در رشته کپی شده است را بر میگرداند و اگر تابع کار خود را ناقص انجام دهد مقدار صفر را بر میگرداند .

پی نوشت : مثل فوق الذکر پس از معرفی چند تابع دیگر بیان خواهد شد .

MSN_Issue
پنج شنبه 28 مرداد 1389, 14:44 عصر
تابع GetVolumeInformation


هدف

این تابع اطلاعات مربوط به یک دیسک درایو از قبیل نوع فایل سیستم ، برچسب ، شماره سریال و ... را برمی گرداند .


فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .

function GetVolumeInformation ( lpRootPathPathName: PChar;
lpVolumeNameBuffer: Pchar; nVolumeNameSize: DWORD;
lpVolumeSerialNumber: PDWORD;
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD ): BOOL;


پارمترها

LpRootPathName : این پارامتر از نوع رشته بوده و نام درایو مورد نظر را مشخص می کند .

LpVolumeNameBuffer : این متغیر از نوع رشته بوده و برچسب (Label) دیسک درایو مورد نظر را بر می گرداند .

lpVolumeNameSize : این متغیر از نوع عددی بوده و فضای لازم برای متغیری که شامل برچست می باشد را مشخص می کند .

lpVolumeSerialNumber : این متغیر اشاره گر به عددی می باشد که شماره سریال دیسک درایو می باشد .

lpMaximumComponentLength : این متغیر نیز از نوع عددی بوده و حداکثر طول فایل سیستم را بر می گرداند .

lpFileSystemFlags : این پارامتر از نوع عددی بوده ، و یکی از مقادیر زیر می تواند باشد :

FS_CASE_IS_PRESERVED : اگر برابر با این Flag باشد فایل سیستم از قالب نام فایل در دیسک حفاظت می کند .
FS_CASE_INSENSITIVE : اگر برابر با این Flag باشد ، فایل سیستم از حالت Case Insensitive (حساس به قالب) پشتیبانی می کند .
FS_UNICODE_STORED_ON_DISK : اگر برابر با این Flag باشد ، فایل سیستم از Unicode پشتیبانی می کند .
FS_PERSISTENT_ACLS : اگر برابر با این Flag باشد ، فایل سیستم از ACL حفاظت می کند . سیستم NTFS از ACL پشتیبانی می کند ولی FAT از ACL حفاظت نمی کند (AccessControlList) .
FS_FILE_COMPRESSION : اگر برابر با این Flag باشد ، فایل سیستم از فایلهای فشرده شده پشتیبانی می کند .
FS_VOL_IS_COMPRESSION : اگر برابر با این Flag باشد ، فایل سیستم از برچست درایوهای فشرده ، با استفاده از Double Space پشتیبانی می کند .



lpFileSystemNumberBuffer : این پارامتر از نوع رشته بوده و نام فایل سیستم را برمی گرداند .

lpFileSystemNameSize : این پارامتر از نوع عددی بوده و مقدار فضای لازم برای متغیر نام فایل سیستم را مشخص می کند .

خروجی تابع

اگر تابع کار خود را به درستی انجام دهد مقدار یک یا True و اگر کار خود را ناقص انجام دهد مقدار صفر یا False را برمی گرداند .

MSN_Issue
شنبه 30 مرداد 1389, 15:03 عصر
تابع SetVolumeLabel

هدف
از این تابع برای تعیین برچسب(Label) یک دیسک درایو استفاده می شود .


فراخوانی در Delphi
این تابع در کتابخانه Windows از دلفی تعریف شده است .

function SetVolumeLabel ( lpRootPathName: PChar; lpVolumeName: PAnsiChar): BOOL;

پارامترها
lpRootPathName : این پارامتر از نوع رشته بوده و دیسک درایو مورد نظر را مشخص می کند .
lpVolumeLabel : این پارامتر از نوع رشته بوده و برچسب (Label) جدید دیسک درایو مورد نظر را مشخص می کند .

توجه
منظور از رشته در مثالهای دلفی نوع PChar می باشد .

خروجی تابع
خروجی این تابع از نوع Boolean بوده و اگر مقدار یک را True برگرداند یعنی تابع کار خود را به درستی انجام داده و اگر مقدار صفر یا false برگرداند یعنی تابع کار خود را ناقص انجام داده است .

MSN_Issue
پنج شنبه 11 شهریور 1389, 04:13 صبح
سلام به همه
می بخشید که اینقدر فاصله می افته بین پست هام ... ! گرفتاریه دیگه .
مثالی رو که توی پست های قبل ذکر و خیرش بود رو ضمیمه کردم ، امیدوارم براتون مفید واقع بشه ...

MSN_Issue
پنج شنبه 25 شهریور 1389, 16:18 عصر
======================================Device Context (DC)=====================================


مقدمه

DC ها یا پرده زمینه یک نوع ساختمان داده Win32 هستند و شامل اطلاعاتی در مورد خصوصیات طراحی روی صفحه ی نمایش و چاپگر می باشند .

در دلفی یک ساختمان داده به نام hDC تعریف شده است که در حقیقت از نوع LongWord و دستگیره پرده زمینه می باشد . با استفاده از توابع GetDC و GetWindowDC می توان دستگیره پرده زمینه هر شیء را به دست آورد این تو تابع در این فصل توضیح داده خواهند شد .
--------------------

تابع CreateDC

هدف

از این تابع برای ساختن یک پرده زمینه DC استفاده می شود .

فراخوانی در دلفی

این تابع در کتابخانه Windows از دلفی تعریف شده است .

function CreateDC( lpszDriver, lpszDevice, lpszOutPut: PChar;
lpdvmInit: PDeviceMode;): HDC;

پارامترها

lpszDriver : این پارامتر از توع رشته بوده و نام درایوری می باشد که قرار است پرده (DC) روی آن ساخته شود . این گزینه معمولا برابر با Display می باشد . اگر این گزینه برابر با Display باشد اکثرا گزینه ها نیز NULL می باشد.

lpszDevice : این پارامتر نیز از توع رشته بوده و Device خروجی را مشخص می کند که همانطور که در بالا گفته شد اکثرا NULL باشد ولی به عنوان مثال می تواند یک نوع Printer باشد . (EPSON FX-80)

lpszOutput : این پارامتر نیز از نوع رشته بوده و Port دستگاه خروجی را مشخص می کند . این پارامتر در Win32 همیشه NULL می باشد .

lpUnitData : این پارامتر یک اشاره گر به ساختار DEVMODE می باشد . این پارامتر نیز معمولا برابر با NULL قرار می گیرد .

DELPHI

پارامترهای lpszDriver و lpszDevice و lpszOutput از نوع PChar بوده و lpszDriver برابر با Display و بقیه برابر با nil قرار می گیرند . پارامتر lpInitData نیز در Delphi به دلیل اشاره گر بودن برابر با nil قرار می گیرد .

خروجی تابع

اگر تابع کار خود را به درستی انجام دهد مقدار برگشتی آن برابر با دستگیره (Handle) پرده زمینه (DC) ساخته شده می باشد و اگر تابع کار خود را ناقص انجام دهد مقدار خروجی این تابع برابر با null می باشد .

MSN_Issue
شنبه 27 شهریور 1389, 13:13 عصر
تابع DeleteDC


هدف

این تابع یک پرده زمینه را از حافظه حذف (پاک) می کند .


فراخوانی در دلفی

این تابع در کتابخانه Windows از دلفی تعریف شده است .

function DeleteDC(hDC: HDC): BOOL;



پارامترها

hDC : این پارامتر از نوع عددیی بوده و شامل دستگیره (Handle) پرده زمینه (DC) می باشد .


خروجی تابع

خروجی این تابع از نوع Boolean بوده و اگر تابع کار خود را به درستی انجام دهد مقدار True یا یک و اگر تابع کار خود را ناقص انجام دهد مقدار False یا صفر را بر می گرداند .


توجه

دستگیره هایی که با استفاده از تابع GetDC به دست آمده اند با این تابع از حافظه حذف نمی شوند ، این گونه دستگیره ها با استفاده از تابع ReleaseDC حذف می شوند .

MSN_Issue
سه شنبه 30 شهریور 1389, 22:33 عصر
تابع GetDC


هدف

این تابع دستگیره (Handle) یک پنجره یا محیط را گرفته و دستگیره (Handle) پرده زمینه (DC) آن را بر می گرداند .


فراخوانی در دلفی

این تابع در کتابخانه Windows از دلفی تعریف شده است .

function GetDC(hWnd: HWND): HDC;



پارامترها

hWnd : این پارامتر عددی بوده و شامل دستگیره (Handle) محیط و یا پنجره مورد نظر می باشد .


خروجی تابع

اگر تابع کار خود را به درستی انجام دهد خروجی تابع برابر با دستگیره (Handle) پرده زمینه (DC) محیط و یا پنجره مورد نظر می باشد .

MSN_Issue
دوشنبه 12 مهر 1389, 12:00 عصر
تابع GetWindowDC



هدف

کار این تابع شباهت زیادی به تابع GetDC دارد با این تفاوت که از این تابع فقط برای پنجره ها استفاده می شود.



فراخوانی در دلفی

این تابع در کتابخانه Windows از دلفی تعریف شده است .

function GetWindowDC (hWnd: HWND): HDC;




پارامترها

hWnd : این پارامتر عددی بوده و شامل دستگیره (Handle) پنجره(Window) مورد نظر می باشد .



خروجی تابع

اگر تابع کار خود را به درستی انجام دهد خروجی تابع برابر با دستگیره (Handle) پرده زمینه (DC) پنجره مورد نظر می باشد .