1
General / Re: How to: create DLL file for Windows 10 64-Bit Pro
« Last post by KodeZwerg on Today at 12:57:56 am »Here is my working testcode, no units included.
- program project1;
- {$APPTYPE CONSOLE}
- type
- LPCSTR = PAnsiChar;
- DWORD = Cardinal;
- ULONG_PTR = UInt64;
- LongBool = False..Boolean(4294967295);
- BOOL = LongBool;
- THandle = {$IFDEF WIN32} Cardinal {$ENDIF} {$IFDEF WIN64} UInt64 {$ENDIF};
- POverlapped = ^TOverlapped;
- _OVERLAPPED = record
- Internal: ULONG_PTR;
- InternalHigh: ULONG_PTR;
- Offset: DWORD;
- OffsetHigh: DWORD;
- hEvent: THandle;
- end;
- TOverlapped = _OVERLAPPED;
- PSecurityAttributes = ^TSecurityAttributes;
- _SECURITY_ATTRIBUTES = record
- nLength: DWORD;
- lpSecurityDescriptor: Pointer;
- bInheritHandle: BOOL;
- end;
- TSecurityAttributes = _SECURITY_ATTRIBUTES;
- const
- GENERIC_WRITE = $40000000;
- FILE_SHARE_READ = $00000001;
- FILE_SHARE_WRITE = $00000002;
- CREATE_NEW = 1;
- OPEN_EXISTING = 3;
- FILE_END = 2;
- FILE_ATTRIBUTE_NORMAL = $00000080;
- INVALID_HANDLE_VALUE = THandle(-1);
- function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD; var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall; external 'kernel32.dll' name 'WriteFile';
- function CreateFileA(lpFileName: LPCSTR; dwDesiredAccess, dwShareMode: DWORD; lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; stdcall; external 'kernel32.dll' name 'CreateFileA';
- function SetFilePointer(hFile: THandle; lDistanceToMove: Longint; lpDistanceToMoveHigh: Pointer; dwMoveMethod: DWORD): DWORD; stdcall; external 'kernel32.dll' name 'SetFilePointer';
- function CloseHandle(hObject: THandle): BOOL; stdcall; external 'kernel32.dll' name 'CloseHandle';
- procedure AppendToFile(const AFileName: string; AData: PAnsiChar);
- var
- hFile: THandle;
- cnt: Cardinal;
- DataSize: Integer;
- begin
- DataSize := StrLen(AData);
- hFile := CreateFileA(PAnsiChar(AFileName), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- if (hFile = INVALID_HANDLE_VALUE) then
- hFile := CreateFileA(PAnsiChar(AFileName), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
- CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
- if (hFile <> INVALID_HANDLE_VALUE) then
- begin
- SetFilePointer(hFile, 0, nil, FILE_END);
- WriteFile(hFile, AData^, DataSize, cnt, nil);
- CloseHandle(hFile);
- end;
- end;
- begin
- AppendToFile('test.txt', 'Hello World.');
- ReadLn;
- end.