05-07-2009, 08:40 AM
بالرغم من أن الـ lpSecurityAttributes = Nil
لكنه يمرر الناتج (مقبض Hwnd) للدالة : SetFilePointer ???.
هذا باتشر بسيط برمجته فقط للتجربة :
المهم أيمكن أن يكون Buffer يعني متغير ليس له نمط محدد
لأنه يمكن أن يأخذ قيمة Boolean و Pointer ؟؟؟ في نفس الوقت ؟؟.
لكنه يمرر الناتج (مقبض Hwnd) للدالة : SetFilePointer ???.
هذا باتشر بسيط برمجته فقط للتجربة :
كود :
Program Test;
{$R Res.res}
{$HINTS Off}
{$OPTIMIZATION On}
{$WARNINGS Off}
Uses
Windows;
Const
ID_Bmp = 100;
Var CrFileResult: Hwnd;
Buf: Byte;
BytesR: Dword;
Function Int2Hex(DecValue: Integer): string;
Const HexV = '0123456789ABCDEF';
begin
Repeat
case DecValue mod 16 of
0..15: Result := HexV[DecValue mod 16 + 1] + Result;
End;
DecValue := DecValue div 16;
Until DecValue = 0;
End;
Function WindowProc(hWnd: hWnd; uMSG: DWord; wParam: wParam; lParam: lParam): Bool; stdcall;
Begin
Result := True;
Case uMSG of
$0010: //WM_CLOSE
EndDialog(hWnd, GetLastError);
$0002: //WM_DESTROY
PostQuitMessage(GetLastError);
$0111: //WM_COMMAND:
Case wParam and $FFFF of
10: ExitProcess(0);
11:
Begin
CrFileResult := CreateFile('000.Exe', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
If CrFileResult <> INVALID_HANDLE_VALUE then
Begin
SetFilePointer(CrFileResult, 2, nil, 0);
ReadFile(CrFileResult, Buf, 1, BytesR, nil);
MessageBox(0, PChar('$' + Int2Hex(Buf)), '', $40 + $2000 + $00);
CloseHandle(CrFileResult);
End;
End;
End;
Else Result := False;
End;
End;
Begin
DialogBoxParam(HInstance,
PChar(666), 0, @WindowProc, 0);
End.المهم أيمكن أن يكون Buffer يعني متغير ليس له نمط محدد
لأنه يمكن أن يأخذ قيمة Boolean و Pointer ؟؟؟ في نفس الوقت ؟؟.

