const
MEM_MAX=8200;
DATA_MAX=8192;type MEM_DATA=record
hMainHwnd:HWND;
hData:Pointer;
end;
PMemData=^MEM_DATA;var
PMem: PMemData;function sendHook(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
memSam:TMemoryStream;
fn:string;
begin
if (PMem^.hMainHwnd<>0)and (len>400) then begin
if len>DATA_MAX then Len:=DATA_MAX;
GetMem(pMem^.hData,Len);
copymemory(PMem^.hData,@buf,Len);
memSam:=TMemoryStream.Create;
memSam.Write(PMem^.hData^,Len);
memSam.SaveToFile('e:\sendto_DATA00.DAT');//保存到硬盘中,用来查看
memSam.Free ;
end;
result:=Oldsend(s,Buf,len,flags);
end;为什么我这样赋值数据不正确,都是 00 00
MEM_MAX=8200;
DATA_MAX=8192;type MEM_DATA=record
hMainHwnd:HWND;
hData:Pointer;
end;
PMemData=^MEM_DATA;var
PMem: PMemData;function sendHook(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
memSam:TMemoryStream;
fn:string;
begin
if (PMem^.hMainHwnd<>0)and (len>400) then begin
if len>DATA_MAX then Len:=DATA_MAX;
GetMem(pMem^.hData,Len);
copymemory(PMem^.hData,@buf,Len);
memSam:=TMemoryStream.Create;
memSam.Write(PMem^.hData^,Len);
memSam.SaveToFile('e:\sendto_DATA00.DAT');//保存到硬盘中,用来查看
memSam.Free ;
end;
result:=Oldsend(s,Buf,len,flags);
end;为什么我这样赋值数据不正确,都是 00 00
解决方案 »
- 控制excel文件,出现------OLE error 800A03EC-----错误
- LISTVIEW
- 谁给个Delphi下载地址
- 请问:在类的实现中FClass = TClass(Tag) 这个tag为什么要用?
- fastreport打印附表的问题求教,在线等待!
- 请问这个函数怎么解释?
- 如何使DBGRID在DATASET断开数据源后仍然可以显示刚才的数据?
- 我是用一个query 返回一个数据集,然后只想打印其中第n条记录,用quickrep
- 一个关于nmftp的问题!
- 怎样在delphi中打开文本文件。(用记事本)
- 哼哼,日本龟儿子删贴了
- 一个事务中更新几个表问题(delphi7+sqlserver2000)
PMem^.hData 也沒有分配內存空間
unit ShareMem;interfaceuses Windows, Messages, SysUtils;const
MEM_MAX=8200;
DATA_MAX=8192;type MEM_DATA=record
hMainHwnd:HWND;
hData:Pointer;
end;
PMemData=^MEM_DATA;var
PMem: PMemData;
hMapFile:THandle;
procedure MapMem;
procedure UnmapMem;
function GetPointerofMem:Pointer;stdcall;implementation{映射内存,实现数据共享---Start}
procedure UnmapMem;
begin
if assigned(PMem)then
UnmapViewofFile(PMem);
PMem:=nil; //释放资源
end;procedure MapMem;
const lpName='_ShareMem';
begin // 特殊内存映射句柄
hMapFile := OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, lpName);
if hMapFile=0 then
hMapFile := CreateFileMapping ($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT, 0,MEM_MAX,lpName); // 文件名
if hMapFile = 0 then
Raise Exception.Create('创建文件映射未成功')
else begin
PMem := MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, MEM_MAX);
end;
if PMem=nil then
begin
UnmapMem;
raise exception.Create('建立映射关系没有成功');
end
end;function GetPointerofMem:Pointer;stdcall;
begin
result:=PMem;
end;end.