Я использую следующее для совместного использования короткой строки между 2 исполняемыми файлами:
Type
PInstanceInfo = ^TInstanceInfo;
TInstanceInfo = packed record
MainAppHandle: THandle;
SessionPath: String[255];
end;
Var MappingHandle: THandle;
InstanceInfo: PInstanceInfo;
MappingHandle := CreateFileMapping(INVALID_HANDLE_VALUE,
nil,
PAGE_READWRITE,
0,
SizeOf(TInstanceInfo),
PChar('MyApp'));
InstanceInfo := MapViewOfFile(MappingHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TInstanceInfo));
InstanceInfo^.MainAppHandle := Application.Handle;
Я использую SessionPath для хранения пути к файлу.Это прекрасно работает, когда оба приложения x86 или x64, но когда App1 32-битный, а App2 64-битный, App2 пропускает первые 4 символа строки, когда я ее читаю.Чем отличается структура ShortString в этом случае?