Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Net Send funktioniert nicht (https://www.delphipraxis.net/46896-net-send-funktioniert-nicht.html)

tail 2. Jun 2005 15:25


Net Send funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe ein Net Send Script geschrieben, womit man einen Eigenen Absender definieren kann. Aber das Klappt nicht, es kommen keine Nachrichten an, auch nicht wenn ich 127.0.0.1 als IP angebe. Nachrichtenserver ist aber aktiviert!
Hier der Code von der Unit1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Timer1: TTimer;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit5: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i: integer;

implementation

{$R *.dfm}


type
  TServerBrowseDialogA0 = function(hwnd: HWND; pchBuffer: pointer; cchBufSize:
    DWord): bool; stdcall;

var
  ServerBrowseDialogA0: TServerBrowseDialogA0 = nil;


function LoadLanManDLL: Boolean;
var
  LANMAN_DLL: THandle;
begin
  result := True;
  LANMAN_DLL := GetModuleHandle('NTLANMAN.DLL');
  if LANMAN_DLL = 0 then
    LANMAN_DLL := LoadLibrary('NTLANMAN.DLL');
  if LANMAN_DLL <> 0 then
  begin
    @ServerBrowseDialogA0 := GetProcAddress(LANMAN_DLL, 'ServerBrowseDialogA0');
    if @ServerBrowseDialogA0 = nil then
      result := False;
  end;
end;


function NetMsgSend(const ServerName, MsgName, FromName, Msg: WideString): Integer;

  function WC(const Name: WideString): PWideChar;
  begin
    if Name = '' then Result := nil
      else Result := PWideChar(Name);
  end;

var
  NetLib: THandle;
  NetMessageBufferSend: function(ServerName, MsgName, FromName: PWideChar;
                           Buffer: PWideChar; BufferLen: DWord): Integer; stdcall;


begin
  Result := -1;
  NetLib := LoadLibrary('NETAPI32.DLL');
  if NetLib <> 0 then
  try
    @NetMessageBufferSend := GetProcAddress(NetLib, 'NetMessageBufferSend');
    if Assigned(NetMessageBufferSend) then
      Result := NetMessageBufferSend(WC(ServerName), WC(MsgName), WC(FromName),
                  Pointer(Msg), Length(Msg) * 2);
  finally
    FreeLibrary(NetLib);
  end;
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
NetMsgSend('', edit1.text, edit2.text, edit3.text);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
NetMsgSend('', edit1.text, edit2.text, edit3.text);
i := i+1;
edit5.text := Inttostr(i);
if edit5.text = edit4.Text then begin
timer1.Enabled := false;
i := 0;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled := true;

end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Buffer: array[0..1024] of Char;
  s: String;
begin
  if LoadLanManDLL then
  begin
    if not ServerBrowseDialogA0(Handle, @Buffer, sizeof(Buffer)) then
    begin
      s := copy(string(Buffer), 3, length(string(Buffer)));
      edit1.text := s;
    end;
  end;

end;

end.
Ich verstehe das nicht. Irgentwie funktionieren bei mir keine Net Send Scripte, und die funktionieren überall bei anderen. Liegt das vllt an meiner Version? Delphi 7 Personal?

Ich habe die Datei mal als Anhang angehängt, dann könnt ihr es euch auch so nochmal anschauen.

Plese helf :wink:

Treffnix 2. Jun 2005 15:27

Re: Net Send funktioniert nicht
 
Klappts denn in der Eingabeaufforderung?

tail 2. Jun 2005 15:40

Re: Net Send funktioniert nicht
 
Zitat:

Zitat von Treffnix
Klappts denn in der Eingabeaufforderung?

ja, das geht.

RavenIV 2. Jun 2005 15:42

Re: Net Send funktioniert nicht
 
Zitat:

Zitat von Treffnix
Klappts denn in der Eingabeaufforderung?

mach mal Start->Ausführen->cmd.exe
dort tippst du ein:
Delphi-Quellcode:
net send <IP-Adresse> <Nachricht>
also z.B. net send 192.168.0.1 Hallo, dies ist eine Nachricht

Luckie 2. Jun 2005 15:43

Re: Net Send funktioniert nicht
 
Geh doch mal mit F7 in Einzelschritten deinen Code durch un guck, wo er aussteigt.

tail 2. Jun 2005 15:51

Re: Net Send funktioniert nicht
 
Zitat:

Zitat von Luckie
Geh doch mal mit F7 in Einzelschritten deinen Code durch un guck, wo er aussteigt.

Wie? Ich arbeite noch nicht lange an delphi, kenne die funktion nicht. Was macht die? Da kommen manchmal so grüne Pfeile, was bedeuten die?

Luckie 2. Jun 2005 15:55

Re: Net Send funktioniert nicht
 
Cursor in Zeile 107 (hier im Forum ) stellen, F5 drücken, dann F9 und wenn er in 107 anhält jede Zeile einzeln mit F7 abarbeiten. Hältst du dann die Maus über eine Variabel, bekommst du deren Inhalt angezeigt.

Desweiteren hast du doch schon eine Fehlerüberprüfung eingebaut:
Delphi-Quellcode:
  Result := -1;
  NetLib := LoadLibrary('NETAPI32.DLL');
  if NetLib <> 0 then
  try
    @NetMessageBufferSend := GetProcAddress(NetLib, 'NetMessageBufferSend');
    if Assigned(NetMessageBufferSend) then
      Result := NetMessageBufferSend(WC(ServerName), WC(MsgName), WC(FromName),
                  Pointer(Msg), Length(Msg) * 2);
  finally
    FreeLibrary(NetLib);
  end;
Warum rufst du nicht einfach mal MSDN-Library durchsuchenGetLastError auf und läßt dir den letzten fehler anzeigen?

freak4fun 2. Jun 2005 15:57

Re: Net Send funktioniert nicht
 
:gruebel: Wo bin ich? :mrgreen:

Mit F5 oder einen Linksclick auf den linken Rand im Codefenster klicken und du setzt einen BreakPoint(Roter Punkt) geht nur an den Stellen mit einen kleinen blauen Punkt an den entsprechenden Zeilen.
Wenn du jetzt F9 drückst und dein Programm an den Haltepunkt(Breakpoint) kommt hält es an und du kannst gucken was passiert. Mit F8 kannst du dann Schritt für Schritt, Zeile für Zeile weitergehen. Mit F7 springst du noch tiefer in die Fktionen rein. Mit F9 geht es normal weiter, bis zum nächsten Haltepunkt bzw. zum Ende.

MfG
freak

tail 2. Jun 2005 16:59

Re: Net Send funktioniert nicht
 
Zitat:

Zitat von Luckie
Cursor in Zeile 107 (hier im Forum ) stellen, F5 drücken, dann F9 und wenn er in 107 anhält jede Zeile einzeln mit F7 abarbeiten. Hältst du dann die Maus über eine Variabel, bekommst du deren Inhalt angezeigt.

Desweiteren hast du doch schon eine Fehlerüberprüfung eingebaut:
Delphi-Quellcode:
  Result := -1;
  NetLib := LoadLibrary('NETAPI32.DLL');
  if NetLib <> 0 then
  try
    @NetMessageBufferSend := GetProcAddress(NetLib, 'NetMessageBufferSend');
    if Assigned(NetMessageBufferSend) then
      Result := NetMessageBufferSend(WC(ServerName), WC(MsgName), WC(FromName),
                  Pointer(Msg), Length(Msg) * 2);
  finally
    FreeLibrary(NetLib);
  end;
Warum rufst du nicht einfach mal MSDN-Library durchsuchenGetLastError auf und läßt dir den letzten fehler anzeigen?

Ich kannte die Funktion nicht. Wie gebe ich die denn aus?

tail 2. Jun 2005 17:12

Re: Net Send funktioniert nicht
 
Ich habe das mit dem f5 gemacht, in zeile 107 war kein Fehler. Aber in Zeile 105
Also diese:
procedure TForm1.Timer1Timer(Sender: TObject);

Ich hoffe, dass es ein Fehler ist, wenn in dem Roten Punkt ein X ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
Seite 1 von 2  1 2      

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