第一个:
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行发送的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;第二个:
function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行接收的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Recv函数
WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
Result := OldRecv(S, Buf, len, flags);
JmpCode.Address := @MyRecv;
WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);
end;请祥细一点给个方法好吗?
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行发送的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;第二个:
function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行接收的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Recv函数
WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
Result := OldRecv(S, Buf, len, flags);
JmpCode.Address := @MyRecv;
WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);
end;请祥细一点给个方法好吗?
解决方案 »
- 再问:显示时间的问题,问什么分针不刷新
- 如果你是高手,请!!!!!!!!急!!!!1
- 关于indy的奇怪问题,请求放假解答,先谢了:)。。。。。。。。。。。。。。
- 如何将16进制数转换成10进制?在线等!!!
- interbase+bde的软件发布需要详细注意什么
- 我做了一个组件,包含了EhLib的DBGridEh,在做组件包时,提示错误。
- succ函数是干什么用的?谢谢
- 如何把DBgrid的数据导出为excel文档?
- 一位浙大教授的演讲--什么是国富民强
- writeln(1st)是什么意思?
- 如何将array of char类型转换成string型。请给出实例。谢谢。
- 请问在rave中如何打印空行。
是想用socket处理接收,发送?
直接用send吧
send():使用连接式的 Socket 传送资料。 格 式: int PASCAL FAR send( SOCKET s,
const char FAR *buf,
int len,
int flags ); 参 数: s Socket 的识别码
buf 存放要传送的资料的暂存区
len buf 的长度
flags 此函式被呼叫的方式