Autor Beitrag
me_Max
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 17.11.02 19:57 
folgendes problem:

auf einen buttonklick hin soll über die eingabeaufforderung per 'net send' eine nachricht an einen empfänger geschickt werden.
nachricht steht in edit1.text
empfänger steht in edit2.text

nur kenne ich den befehl nicht, habe ihn mir so vorgestellt:

net send 'edit2.text' 'edit1.text'

ungefähr richtig?


danke im vorraus!

Max
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 17.11.02 20:10 
ich kenn' zwar nicht die syntax von net sent, aber mit Anfürhungszeichen ist's garantiert falsch. Dann wäre nämlich der Text edit1.text und nicht der Inhalt von edit1. Wenn dann müsstest du also die Anführungszeichen weglassen. Wenn du den Befehl mit ShellExecute aufrufst, müsste es so in etwa richtig sein.
Wie hast du den vor, net sent aufzurufen? Ist das nicht ein WinNT-Commandozeilen-Befehl, wenn ich mich richtig erinnere?

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 20:55 
Auf meiner HP findest du so was mit Source.

Alternativ kannst du es auch mit Shellexecute mache, wobei net das p
Programm ist und alles was da nach kommt die Parameter sind. Zu Shellexecute dürftest du hier im Forum fündig werden. Steht, glaube ich, auch was in den FAQ's dazu.
me_Max Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 17.11.02 20:58 
ja, das ist es (commandozeilenbefehl). die ' ' weglassen ist klar, wollte das nur hervorheben, mir geht es jetzt um den befehl. er soll cmd starten und dann den befehl (net send * *) darin ausführen. wie kennt delphi(6) die cmdzeile? wie kann man sie einbinden. über neu>konsolenanwendung funktioniert es auch nicht.

Max
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 21:16 
Such mal nach Shellexecute hier im Forum!!! Das amcht alles für dich.
me_Max Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 17.11.02 22:15 
ok

ich benutze folgenden befehl:

WinExec(PChar('net send (e) (a)'),SW_SHOWNA);

(e) soll die ip sein, die in edit2.text steht;
(a) soll die nachricht sein, die in edit1.text steht.

bei der ip sagt er mir immer 'gleichkommazahlfehler', habe real, float, curreny.. alles ausprobiert, komme da nicht weiter.
es soll dann so laufen:
statt (e) soll er die ip aus edit2.text,
statt (a) soll er die nachricht aus edit1.text nehmen.
(e) und (a) sollen variablen sein.
bsp: in edit2 steht 192.168.0.1
in edit1 steht hallo
befehl: net send 192.168.0.1 hallo

kann mir jemand beim code helfen?
wäre nett...

Max
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.11.02 22:25 
Das muß alles ein String sein.

Hast du mal nach Shellexecute gesucht? :roll:
Oder dir mal mein Net Send angekuckt?

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
function NetSendMsg(dest, Source, Msg: string): Longint;
type
  TNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar;
    buf: PWideChar; buflen: Cardinal): Longint;
  stdcall;
var
  NetMessageBufferSend: TNetMessageBufferSendFunction;
  SourceWideChar: PWideChar;
  DestWideChar: PWideChar;
  MessagetextWideChar: PWideChar;
  Handle: THandle;
begin
  { erforderliche DLL laden }
  Handle := LoadLibrary('NETAPI32.DLL');
  if Handle = 0 then
  begin
    Result := GetLastError;
    Exit;
  end; @NetMessageBufferSend := GetProcAddress(Handle, 'NetMessageBufferSend');
  if @NetMessageBufferSend = nil then
  begin
    Result := GetLastError;
    Exit;
  end;

  MessagetextWideChar := nil;
  SourceWideChar      := nil;
  DestWideChar        := nil;

  try
    { Speicher anfordern für Nachricht }
    GetMem(MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
    GetMem(DestWideChar, 20 * SizeOf(WideChar) + 1);
    { String umwandlen }
    StringToWideChar(Msg, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
    StringToWideChar(Dest, DestWideChar, 20 * SizeOf(WideChar) + 1);
    { kein Absender }
    if Source = '' then
      Result := NetMessageBufferSend(nil, DestWideChar, nil,
        MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1)
    else
    begin
      { ansonsten Speicher für Absender anfordern }
      GetMem(SourceWideChar, 20 * SizeOf(WideChar) + 1);
      { String umwandeln }
      StringToWideChar(Source, SourceWideChar, 20 * SizeOf(WideChar) + 1);
      { senden }
      Result := NetMessageBufferSend(nil, DestWideChar, SourceWideChar,
        MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
      { Speicher freigeben }
      FreeMem(SourceWideChar);
    end;
  finally
    { Speicher freigeben }
    FreeMem(MessagetextWideChar);
    { DLL freigeben }
    FreeLibrary(Handle);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  NetSendMsg('127.0.0.1', '', 'Hello World');
end;
me_Max Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 17.11.02 22:54 
habe danach gesucht und das bsp winexec schien mir am sinnvollsten/einfachsten.

dein script ist richtig gut, n1

big thx

Max