Delphi-Quellcode:
Function SetFileShortNameA(hFile: THandle; ShortName: PAnsiChar): LongBool; StdCall;
External 'kernel32.dll' Name 'SetFileShortNameA';
Var H: THandle;
D: WIN32_FIND_DATAa;
Begin
H := FindFirstFileA('Neu Textdokument.txt', D);
If H = INVALID_HANDLE_VALUE Then Exit;
Inc(D.cAlternateFileName[7]); // NEUTEX~1.TXT > NEUTEX~2.TXT
Windows.FindClose(H);
H := CreateFileA(D.cFileName, GENERIC_All, FILE_SHARE_WRITE, nil,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
If H = INVALID_HANDLE_VALUE Then Exit;
If not SetFileShortNameA(H, @D.cAlternateFileName) Then
ShowMessage(SysErrorMessage(GetLastError));
CloseHandle(H);
End;
FILE_ATTRIBUTE_NORMAL wird nur verwendet (muß es aber nicht ... einfach nur 0 geht auch), wenn sonst kein anderes Attribut gesetzt ist.
Und dann werden Attribute (Bits) per OR verknüpft.