Delphi如何实现向指定的IP或者计算机名地址发送消息,一般是在局域网内比较实用了,象在DOS下面Net Send 命令一样。例如:
执行 Net Send 192.192.192.192(或者计算机名:Server) “I Love you!”
对方机器就可收到一个有“I Love you!”的MSGBOX。
Delphi里面的命令该如何实现呢?有人向我推荐WinexecShell,但是不好用,也可能不会用吧!还请各位大侠指教!
现行谢过了!
执行 Net Send 192.192.192.192(或者计算机名:Server) “I Love you!”
对方机器就可收到一个有“I Love you!”的MSGBOX。
Delphi里面的命令该如何实现呢?有人向我推荐WinexecShell,但是不好用,也可能不会用吧!还请各位大侠指教!
现行谢过了!
解决方案 »
- 关于DELPHI 线程堆栈问题,应该如何修改呢
- 晕死,怎么搞的啊?
- fastreport图片的打印
- 一个关于使用DecisionCube的问题
- 关于透明按钮的问题???
- 这就是Delphi的斑猪-FrameSniper篇
- 怎么实现在DBGRID上点列头该列按升序排列,如果已经是升序点击的这一下使它按降序排列。我怎么能知道这一列对应的是哪一个字段啊。
- 请问方法参数如何定义数组
- 求助,数据保存时遇到的问题(增减字段保存时速度不一样)!!!
- 菜鸟问题》》》在D5中如何调整各个控件的层次关系,例如将panel中的button移动到form上。
- 关于动态链接库中使用消息句柄及与主程序通过消息传递数据的问题.up有分.
- 如何增加数据时不会立刻写入数据库中,而是调用POST方法后才写入呢
msg:='sdsdfsdf';
str:='net send '+name+' '+msg;
winexec(pchar(str),SW_HIDE);
var
i:integer;
count:integer;
begin
count:=server.socket.activeconnections;
for i:=1 to count-1 do
server.socket.connections[i].sendtext(editsend.text);
editsend.text 为需要发送的信息
udpclient.send(AHost: string;APort: integer;Adata: string);
也有这样的控件,TurobPower3.0 的sys tools 组件包
参照sys tools 的代码,给你写一个demo
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
NET_API_STATUS = DWord;
TLMWideChar = record
Value : PWideChar;
Length: DWord;
end;
TNetMessageBufferSend = function(ServerName, MsgName, FromName: LPCWSTR; Buffer: Pointer; BufferLen: DWord): NET_API_STATUS; stdcall;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure CvtToWideChar(const S: string; var WS: TLMWideChar);
var
S1 : string;
begin if WS.Value <> nil then
FreeMem(WS.Value, WS.Length);
S1 := Trim(S);
if Length(S1) > 0 then begin
WS.Length := (Length(S1) + 1) * 2;
GetMem(WS.Value, WS.Length);
StringToWideChar(S1, WS.Value, WS.Length);
end else begin
WS.Length := 0;
WS.Value := nil;
end;
end;const _NetMessageBufferSend : TNetMessageBufferSend = nil;procedure send(servername:String;msgname:String;fromname:String;info:String);
var
NETAPI32 : THandle ;
S, M, F : TLMWideChar;
Buffer : TLMWideChar;
begin
NETAPI32 := LoadLibrary('netapi32.dll') ;
if (@_NetMessageBufferSend = nil) then
@_NetMessageBufferSend := GetProcAddress(NETAPI32, 'NetMessageBufferSend'); if (@_NetMessageBufferSend <> nil) then begin
S.Value := nil;
M.Value := nil;
F.Value := nil;
Buffer.Value := nil ;
try
CvtToWideChar(info, Buffer);
CvtToWideChar(ServerName, S);
CvtToWideChar(MsgName, M);
CvtToWideChar(FromName, F);
_NetMessageBufferSend(S.Value, M.Value, F.Value, Buffer.Value , Buffer.Length );
finally
FreeMem(S.Value, S.Length);
FreeMem(M.Value, M.Length);
FreeMem(F.Value, F.Length);
end;
end else exit ;end;
procedure TForm1.Button1Click(Sender: TObject);
var
NETAPI32 : THandle ;
S, M, F : TLMWideChar;
Buffer : TLMWideChar;
begin
send('192.168.0.106','192.168.0.106','独孤求败','测试');
//说明 send(目标地址,本级地址,消息显示的本机名称,消息内容);
end;end.
send('192.168.0.106','192.168.0.175','独孤求败','你哀求');
//说明 send(本机地址,目标地址,消息显示的本机名称,消息内容);
不好意思:)
考