18-02-2010, 08:57 AM (آخر تعديل لهذه المشاركة: 22-09-2010, 02:07 PM بواسطة kachwahed.)
وعليكم السلام ورحمة الله
بارك الله لك أخي paix144 مثال جميل
المثال يستخدم المكتبة المضمنة ImageHlp
تحمل هذه المكتبة أغراض مفيدة لبعض الأعمال
مثال SearchForFile للبحث عن ملفات:
كود :
uses
ImageHlp;
function SearchForFile(const ARootPath: string;
const AFileName: string;
var APathFound: string): Boolean;
var
Found: array[0..500] of Char;
begin
FillChar(Found, SizeOf(Found), #00);
Result := (SearchTreeForFile(PChar(ARootPath), PChar(AFileName), Found) = True);
APathFound := ExtractFilePath(Found);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
APathFound: string;
begin
if SearchForFile('C:\WINDOWS\', 'winhlp32.exe', APathFound) then
ShowMessage('winhlp32.exe found in: ' + APathFound);
end;
المثال لـ Thomas Stutz
مثال آخر لاختبار الملفات Checksum:
PHP كود :
uses Windows, ImageHlp;
{$APPTYPE CONSOLE}
function ComputePEChecksum(FileName: string): DWORD; var h, hMap: Cardinal; pMem: Pointer; headersum, checksum, fsizehigh, fsizelow: DWORD; nth: PImageNtHeaders; Label cleanup; begin pMem := nil; Result := 0; headersum := 0; checksum := 0; h := Windows.CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); if (h = INVALID_HANDLE_VALUE) then Exit; fsizelow := Windows.GetFileSize(h, Pointer(@fsizehigh)); hMap := Windows.CreateFileMapping(h, nil, PAGE_READONLY, fsizeHigh, fsizeLow, nil); if (hMap = 0) then goto cleanup; pMem := Windows.MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0); if (pMem = nil) then goto cleanup; nth := CheckSumMappedFile(pMem, fsizeLow, @headersum, @checksum); if (nth = nil) then checksum := 0; cleanup: if (pMem <> nil) then Windows.UnmapViewOfFile(pMem); if (hMap <> 0) then Windows.CloseHandle(hMap); if (h <> 0) then Windows.CloseHandle(h); Result := checksum; end;
var x1, x2: DWORD; begin x1 := ComputePEChecksum('c:\1.exe'); // original filename x2 := ComputePEChecksum('c:\2.exe'); // original filename but has a string in it lightly modified WriteLn('Checksum 1: ', x1, #13#10'Checksum 2: ', x2); end.