الدالة : CreateFile
#6
بالرغم من أن الـ lpSecurityAttributes = Nil

لكنه يمرر الناتج (مقبض 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 ؟؟؟ في نفس الوقت ؟؟.
الرد


الردود في هذا الموضوع
الدالة : CreateFile - بواسطة TF6M - 04-07-2009, 03:25 AM
الدالة : CreateFile - بواسطة me_delphi - 04-07-2009, 10:55 PM
الدالة : CreateFile - بواسطة TF6M - 04-07-2009, 11:44 PM
الدالة : CreateFile - بواسطة me_delphi - 05-07-2009, 12:45 AM
الدالة : CreateFile - بواسطة TF6M - 05-07-2009, 01:13 AM
الدالة : CreateFile - بواسطة TF6M - 05-07-2009, 08:40 AM

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


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