unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
{ PSFRawMemMap = Record
public
Unknown: Integer; //'unbekanntes Tag
NumTemps:Integer; //'Anzahl der Temperaturen
NumFans: Integer; //'Anzahl der Lüfter
NumVolts: Integer;// 'Anzahl der Spannungen
Temps: Integer; //'Werte der Temperaturen
Fans: Integer; //'Drehzahl der Lüfter
Volts: Integer; //'Werte der Spannungen'
end; }
TMyRecord =
packed record
public
Unknown: Integer;
//'unbekanntes Tag
NumTemps:Integer;
//'Anzahl der Temperaturen
NumFans: Integer;
//'Anzahl der Lüfter
NumVolts: Integer;
// 'Anzahl der Spannungen
Temps: Integer;
//'Werte der Temperaturen
Fans: Integer;
//'Drehzahl der Lüfter
Volts: Integer;
//'Werte der Spannungen'
end;
TForm1 =
class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
{ Public declarations }
end;
const
mbuff = 100;
var
Form1: TForm1;
buffer :
array [0..mbuff]
of integer;
myrecord : tmyrecord
absolute buffer;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var
hSFMemory: HWND;
SfAreaPtr: Pointer ;
MyResultRecord: TMyRecord;
i: Integer;
txt:
String;
begin
fillchar(buffer,1000,0);
hSFMemory := 0;
SfAreaPtr :=
nil;
i := 0;
try
hSFMemory := OpenFileMapping(FILE_MAP_READ, False, '
SFSharedMemory_ALM');
if HSFMemory <> 0
then begin
SfAreaPtr := MapViewOfFile(hSFMemory, FILE_MAP_READ, 0, 0, 0);
CopyMemory(Addr(buffer),SfAreaPtr,1000);
while i < 99
do begin
Text:= inttostr(buffer[i]);
memo1.Text := memo1.Text + text+ #13+ #10;
// IntToStr(MyResultRecord.Fans);
inc(i);
end;
end;
finally
UnmapViewOfFile(SfAreaPtr);
CloseHandle(hSFMemory);
end;
end;
end.