Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi NetSend Befehl: Mehrere Zeilen senden? (https://www.delphipraxis.net/12881-netsend-befehl-mehrere-zeilen-senden.html)

jackie 5. Dez 2003 16:30


NetSend Befehl: Mehrere Zeilen senden?
 
Hi!
Ich benutze folgenden Code:
Delphi-Quellcode:
function SendNetMessage(ServerName, MsgName, FromName, Msg: AnsiString): Boolean;
{.$DEFINE SYNCHRONOUS}
const
  szService = '\mailslot\messngr';
  MaxBufLen = $700;
var
  hFile: THandle;
  WrittenBytes: DWORD;
{$IFNDEF SYNCHRONOUS} 
  ovs: OVERLAPPED;
  EventName:String;
{$ENDIF} 
begin
  Result := False;
  if Length(Msg) > MaxBufLen then
    SetLength(Msg, MaxBufLen);
{$IFNDEF SYNCHRONOUS} 
  EventName:='NetSendEvent_'+ServerName;
{$ENDIF} 
  ServerName := '\\' + Servername + szService;
  hFile := CreateFileA( 
    @ServerName[1], GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL or FILE_FLAG_NO_BUFFERING or FILE_FLAG_OVERLAPPED, 0);
  if hFile <> INVALID_HANDLE_VALUE then
  try
    Msg := FromName + #0 + MsgName + #0 + Msg;
{$IFNDEF SYNCHRONOUS}
    ovs.hEvent := CreateEventA(nil, True, False, @EventName[1]);
    WriteFile(hFile, Pointer(Msg)^, Length(Msg), WrittenBytes, @ovs);
{$ELSE}
    WriteFile(hFile, Pointer(Msg)^, Length(Msg), WrittenBytes, nil);
{$ENDIF} 
    Result := GetLastError = ERROR_IO_PENDING;
  finally
{$IFNDEF SYNCHRONOUS} 
    if WaitForSingleObject(ovs.hEvent, INFINITE) <> WAIT_TIMEOUT then
{$ENDIF}
      CloseHandle(hFile);
  end;
end;
Mit diesem kann man aber nur einzeilige Nachrichten senden. Ich würde aber gerne eine mehrzeilige Nachricht senden (wird in einem Memo eingegeben).
Hat jemand eine Idee, wie das funktioniert? (Hab die Suche schon benützt, leider nichts gefunden :( )

MathiasSimmack 5. Dez 2003 16:42

Re: NetSend Befehl: Mehrere Zeilen senden?
 
Du kannst beim Memo auf den kompletten Text zugreifen (Memo.Lines.Text, IMHO). Den sendest du als "Msg"-Parameter. Fertig.

jackie 5. Dez 2003 16:47

Re: NetSend Befehl: Mehrere Zeilen senden?
 
Jetzt wird überhaupt keine Nachricht mehr gesendet ... :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz