معرفة function المصدرة من مكتبة DLL
#2
وعليكم السلام ورحمة الله
بارك الله لك أخي 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. 
المثال لـ Elias Bachaalany
شكرا كثيرا.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


الردود في هذا الموضوع
معرفة function المصدرة من مكتبة DLL - بواسطة kachwahed - 18-02-2010, 08:57 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم