在已安裝「信使服務」的 Windows 2000/XP/2003 網域/工作群組中,程式可透過 NetMessageBufferSend (netapi32.dll) 向指定電腦發送彈出式訊息視窗,無需郵件伺服器或即時通訊軟體。
type
NET_API_STATUS = LongInt;
function NetMessageBufferSend(
ServerName: LPCWSTR; // 目標伺服器,nil 表本機
MsgName: LPCWSTR; // 接收者電腦名稱或使用者名稱
FromName: LPCWSTR; // 發送者名稱,nil 表匿名
Buf: Pointer; // 訊息內容 (Unicode)
BufLen: DWORD // 位元組長度
): NET_API_STATUS; stdcall; external 'netapi32.dll';
uses Windows, SysUtils;
function SendNetMessage(const TargetComputer, MsgText: string): Boolean;
var
WideMsg, WideTarget: PWideChar;
Status: NET_API_STATUS;
begin
Result := False;
WideTarget := PWideChar(WideString(TargetComputer));
WideMsg := PWideChar(WideString(MsgText));
// BufLen 為位元組數,Unicode 每字元 2 Bytes
Status := NetMessageBufferSend(nil, WideTarget, nil, WideMsg, Length(MsgText) * 2);
Result := (Status = 0); // NERR_Success = 0
end;
procedure TForm1.btnSendClick(Sender: TObject);
begin
if SendNetMessage(edtComputer.Text, edtMessage.Text) then
ShowMessage('訊息已送出')
else
ShowMessage('送出失敗,請確認目標電腦名稱正確且已啟用信使服務');
end;
建議改用 Socket (UDP/TCP)、HTTP API、SignalR、WebSocket、Message Queue (RabbitMQ/Kafka) 等跨平台訊息傳遞機制。