📄 unit2.pas
字号:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const
WM_DATA = WM_USER + 1024;
type
PShareMem = ^TShareMem;
TShareMem = record
Data: array[0..255] of char;
end;
TMyForm = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure getShareInfo(var Msg: TMessage); message WM_DATA; {处理WM_DATA}
end;
var
MyForm: TMyForm;
PShare: PShareMem;
MapHandle: THandle;
implementation
{$R *.DFM}
procedure TMyForm.getShareInfo(var Msg: TMessage); {处理WM_DATA}
begin
if msg.LParam=1 then {是我们设定的消息参数}
Memo1.Text := PShare^.Data;
end;
procedure TMyForm.FormCreate(Sender: TObject);
begin
MapHandle := OpenFileMapping(FILE_MAP_WRITE, {获取完全访问映射文件}
False, {不可继承的}
pchar('Map Name')); {映射文件名字}
if MapHandle = 0 then
begin
ShowMessage('不能定位内存映射文件块!');
Halt;
end;
PShare := PShareMem(MapViewOfFile(MapHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0));
if PShare = nil then
begin
CloseHandle(MapHandle);
ShowMessage('Can''t View Memory Map');
Application.Terminate;
exit;
end;
FillChar(PShare^, SizeOf(TShareMem), 0);
end;
procedure TMyForm.Button1Click(Sender: TObject);
begin
CloseHandle(MapHandle);
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -