استفاده از توابع API در دلفی
با عرض سلام خدمت همه برنامه نویساناز آنجایی که توابع API کاربردهای زیادی در برنامه نویسی دارند و تو سایت هم منبع مشخصی برای این توابع وجود نداشت تصمیم گرفتیم این بخش رو راه بندازیم .
از اونجایی که توابع زیادی هست
اگر شما برنامه نویسان محترم همکاری کنید. میشه از این بخش به عنوان مرجعی برای توابع API استفاده کرد.
<<<خب بالاخره هر کسی یه تعدادی تابع رو بلده >>>
بدست آوردن مسیرپوشه سیستم
اولیش رو خودم می نویسم :
بدست آوردن مسیرپوشه سیستم :
Function Getsyetemdirectory( Ipbuffer : pchar ; usize : unit) : unit ; stcall ;
usize : از نوع عدد می باشد و شامل حد اکثر تعداد کاراکتر های ipbuffer می باشد .
Ipbuffer: این پارامتر از نوع رشته بوده و مسیرپوشه سیستم را بر می گرداند .
مثال:
Function getsystem : string;
Var
Windir : array [0..255] of char;
Begin
Getsystemdirectory(windir,255);
Result := strpass(windir);
End;
بدست آوردن مسیر پوشه ویندوز
بدست آوردن مسیر پوشه ویندوز :
Function Getwindowsdirectory( Ipbuffer : pchar ; usize : unit) : unit ; stcall;
usize : از نوع عدد می باشد و شامل حد اکثر تعداد کاراکتر های ipbuffer می باشد .
Ipbuffer: این پارامتر از نوع رشته بوده و مسیر پوشه ویندوز را بر می گرداند .
مثال:
Function getwindows : string;
Var
sysdir : array [0..255] of char;
Begin
Getwindowsdirectory(sysdir,255);
Result := strpass(sysdir);
End;
بدست آوردن مسیر پوشه temp
بدست آوردن مسیر پوشه temp :
Function Gettemppath( nbufferlength : dword , Ipbuffer : pchar ) : dword ; stcall;
Ipbuffer: این پارامتر از نوع رشته بوده و مسیر پوشه ویندوز را بر می گرداند .
Nbufferlength : از نوع عدد می باشد و شامل حد اکثر تعداد کاراکتر های ipbuffer می باشد .
خروجی این تابع از نوع عددی بوده اگر تابع کارش را به درستی انجام داده باشد مقدار برگشتی برابر با nbufferlength خواهد بود وگرنه برابر با صفر خواهد شد .
مثال:
Function gettemp : string;
Var
tempdir : array [0..255] of char;
Begin
Gettemppath(255 , tempdir);
Result := strpass(tempdir);
End;
اجرا کردن برنامه های دیگر با توابع API
با این کد می تونید یه برنامه رو اجرا کنید ( مثلا NotePad )
ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL) ;
حالا اگه بخواید یک فایل متنی رو با NotePad باز کنید کدش باید به جای اولین Nil آدرس فایل رو بنویسید :
ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\Example.txt', nil, SW_SHOWNORMAL) ;
با کد بالایی ( اولی ) می تونید یک پوشه رو هم باز کنید و هم چنین یک صفحه وب رو، فقط به جای آدرس NotePad باید آدرس پوشه یا آدرس صفحه وب رو بنویسید.
ارسال ایمیل :
var em_subject, em_body, em_mail : string;
begin
em_subject := 'This is the subject line';
em_body := 'Message body text goes here';
em_mail := 'mailto:delphi.guide@about.com?subject=' +
em_subject + '&body=' + em_body ;
ShellExecute(Handle,'open',
PChar(em_mail), nil, nil, SW_SHOWNORMAL) ;
end;
امیدوارم دوستان دیگر هم یاری کنند ...
بدست آوردن دیسک درایو های موجود در سسیتم :
بدست آوردن دیسک درایو های موجود در سسیتم :
Function getdrivelogicalstring(nbufferlength:Dword ;ipbuffer:pansichar):Dword;
Nbufferlength : این پارامتر از نوع عددی بوده و مقدار فضای لازم برای ذخیره سازی دیسک درایو را مشخص می کند .
Ipbuffer: از نوع رشته بوده و ناو دیسک درایو را در خود جای می دهد .
نام دیسک درایو ها به صورت زیر در متغییر قرار می گیرد
A:\<null>B:\<null>C:\<null>D:\<null>
تابعی برای محدود کردن محدوده حرکتی موس .
تابعی برای محدود کردن محدوده حرکتی موس .
Function clipcursor(iprect:prect):bool;
مثال:
تابع getwindowrect نیز محدوده پنجره مورد نظر را برمی گرداند .
این مثال موس را در محدوده فرم محدود می کند.
procedure TForm1.Timer1Timer(Sender: TObject);
var
r:trect;
begin
getwindowrect(form1.Handle,r);
clipcursor(@r);
end;
:متعجب:
نقل قول: استفاده از توابع API در دلفی
دست آوردن سريال CPU
function GetCPUSerialNumber: String;
var
_eax, _ebx, _ecx, _edx: Longword;
s, s1, s2: String;
begin
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
begin Result := (s + '-' + s1 + '-' + s2); asm push Result end; end;
end;
نقل قول: استفاده از توابع API در دلفی
کپي کردن يک Directory و کليه متعلقاتش
function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
fFlags := FOF_NOCONFIRMATION;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;
نقل قول: استفاده از توابع API در دلفی
جابجايي يک پوشه
function MoveDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_MOVE;
fFlags := FOF_FILESONLY;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;
نقل قول: استفاده از توابع API در دلفی
بدست آوردن اندازه Taskbar
function GetTaskbarRect: TRect;
var
Hand: HWND;
begin
Hand := FindWindow('Shell_TrayWnd', '');
if Hand > 0 then
GetWindowRect(Hand, Result);
end;
نقل قول: استفاده از توابع API در دلفی
آقا خیلی خوب بود ادامه برین دیگه
نقل قول: استفاده از توابع API در دلفی
سلام
تاپيك جالبيه
خاموش كردن مانيتور
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);// montor off
نقل قول: استفاده از توابع API در دلفی
باز هم سلام
پيدا كردن Url هايي كه كاربر توي Explorer تايپ كرده
procedure ShowTypedUrls(Urls: TStrings);
var
Reg: TRegistry;
S: TStringList;
i: Integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('Software\Microsoft\Internet Explorer\TypedURLs', False) then
begin
S := TStringList.Create;
try
reg.GetValueNames(S);
for i := 0 to S.Count - 1 do
begin
Urls.Add(reg.ReadString(S.Strings[i]));
end;
finally
S.Free;
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
حالا يه Listbox و يك button روي صفحه و حالا :
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowTypedUrls(ListBox1.Items);
end;
اميدوارم جالب بوده باشه
1 ضمیمه
نقل قول: استفاده از توابع API در دلفی
نقل قول: استفاده از توابع API در دلفی
چرا ادامه نمي ديد؟
كسي نظري در مورد اين يونيت نداشت؟
بد بود ؟ خوب بود؟
نقل قول: استفاده از توابع API در دلفی
خوب این چه کار میکنه یه مثالی چیزی
نقل قول: استفاده از توابع API در دلفی
در مورد بدست آوردن نام کامپیوتر لطفا بیشتر توضیح بده فکر کنم کد ناقص باشد
نقل قول: استفاده از توابع API در دلفی
نقل قول:
نوشته شده توسط
ParsaNM
دست آوردن سريال CPU
function GetCPUSerialNumber: String;
var
_eax, _ebx, _ecx, _edx: Longword;
s, s1, s2: String;
begin
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
begin Result := (s + '-' + s1 + '-' + s2); asm push Result end; end;
end;
زمانی که این کد رو مینویسم و میخوام به یک لیبل سریال بدم برنامه بسته میشه