18-02-2010, 12:57 AM
18-02-2010, 08:57 AM
وعليكم السلام ورحمة الله
بارك الله لك أخي paix144 مثال جميل
المثال يستخدم المكتبة المضمنة ImageHlp
تحمل هذه المكتبة أغراض مفيدة لبعض الأعمال
مثال SearchForFile للبحث عن ملفات:
المثال لـ Thomas Stutz
مثال آخر لاختبار الملفات Checksum:
المثال لـ Elias Bachaalany
شكرا كثيرا.
بارك الله لك أخي 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;مثال آخر لاختبار الملفات 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.
شكرا كثيرا.
18-02-2010, 09:20 AM
و فيكم بارك الله
ما قمت بطرحه من دالات مهم جدا
المثال الذي طرحته مبرمج من طرف Sephiroth Lune
بالتوفيق أخي
ما قمت بطرحه من دالات مهم جدا
المثال الذي طرحته مبرمج من طرف Sephiroth Lune
بالتوفيق أخي
21-06-2011, 04:13 PM
هناك خطا عند استخدام dxe
كيف نحل المشكلة؟
إقتباس : result := (searchtreeforfile(pchar(arootpath), pchar(afilename),
found) = true);
إقتباس :[dcc error] unit1.pas(35): E2010 incompatible types: 'pansichar' and 'pwidechar'
كيف نحل المشكلة؟
21-06-2011, 08:38 PM
السلام عليكم
بالتوفيق
إقتباس : هناك خطا عند استخدام dxe
..
كيف نحل المشكلة؟
كود :
function SearchForFile(const ARootPath: string;
const AFileName: string;
var APathFound: string): Boolean;
var
Found: array[0..500] of ansichar;
begin
FillChar(Found, SizeOf(Found), #00);
Result := (SearchTreeForFile(PansiChar(AnsiString (ARootPath)), PansiChar(AnsiString (AFileName)), Found) = True);
APathFound := ExtractFilePath(string(Found));
end;21-06-2011, 09:18 PM
وعليكم السلام
انت مبدع بكل معنى الكلمة
دائما يصادفني هذا الخطا عند وجود char
الحل هو تحويلة
الى
او
الى
يعني تغليف يرجع type الى الاصل
انت مبدع بكل معنى الكلمة
دائما يصادفني هذا الخطا عند وجود char
الحل هو تحويلة
كود :
PChar(ARootPath)كود :
PansiChar(AnsiString(ARootPath)كود :
ansicharالى
كود :
string(Found)يعني تغليف يرجع type الى الاصل
22-06-2011, 07:09 PM
كيف نستخرج عنوان Method
وننفذه
وننفذه
كود :
procedure ListDLLExports(const FileName: string; List: TStrings);
type
TDWordArray = array [0 .. $FFFFF] of DWORD;
var
imageinfo: LoadedImage;
pExportDirectory: PImageExportDirectory;
dirsize: Cardinal;
pDummy: PImageSectionHeader;
i: Cardinal;
pNameRVAs: ^TDWordArray;
Name, AddressOfFunctions: string;
begin
List.Clear;
(* function MapAndLoad(ImageName, DllPath: LPSTR; LoadedImage: PLoadedImage;
DotDll, ReadOnly: Bool): Bool; stdcall; *)
if MapAndLoad(PAnsiChar(AnsiString(FileName)), nil, @imageinfo, True,
True) then
begin
try
// Form1.Label2.Caption :='Address Of Dll = ' + AnsiString(@imageinfo) ;
pExportDirectory := ImageDirectoryEntryToData(imageinfo.MappedAddress,
False, IMAGE_DIRECTORY_ENTRY_EXPORT, dirsize);
if (pExportDirectory <> nil) then
begin
pNameRVAs := ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
DWORD(pExportDirectory^.AddressOfNames), pDummy);
for i := 0 to pExportDirectory^.NumberOfNames - 1 do
begin
Name := PAnsiChar(ImageRvaToVa(imageinfo.FileHeader,
imageinfo.MappedAddress, pNameRVAs^[i], pDummy));
// AddressOfFunctions := PAnsiChar(pExportDirectory^.AddressOfFunctions) ;
List.Add(Name);
end;
end;
finally
UnMapAndLoad(@imageinfo);
end;
end;
end;