Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

1 Zum Seitenanfang

Freitag, 21. Mai 2004, 17:07

(Delphi) Kann ich einen Edit-Text ins CMD einfügen ?

Hallo!

Hätte mal eine Frage:

Ist es möglich, dass ich einen Text von einem Edit-Textfeld über Buttonklick ins CMD ( Eingabeaufforderung) einfügen kann?

Mfg Marco ?(
.: mit dem Alter kommt die Weisheit - oder auch nicht :.
 

Dabei seit: 14.02.2004

Beiträge: 133

 

2 Zum Seitenanfang

Freitag, 21. Mai 2004, 17:19

Hallo marco,
Möglich isses :D
Ich glaube, ich hab mal irgendwo was davon gelesen.
Probier mal in folgenden Adressen zu suchen:
http://www.delphipraxis.net
http://www.delphi-source.de
und
http://www.delphi-treff.de
Ich suche jetzt noch mal, wenn ichs finde,
poste ich.
MfG,
fred
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

3 Zum Seitenanfang

Freitag, 21. Mai 2004, 19:02

Hi!

Habe folgendes gefunden bei Delphi-Praxis:

+++++++++++++++++++++

Ich verwende den Net Send Code:
Source:

Quellcode

1
2
Send := 'send ' + Edit1.Text + ' ' + Memo1.Text + ''; 
    ShellExecute (GetDesktopWindow, 'open', 'net.exe', PChar(Send), nil, SW_HIDE);


wobei send ein string ist.

Jetzt ist es ja normal, dass beim PC folgende Meldung kommt:
Zitat:
Nachricht von ... an ...

++++++++++++++++++++++

Wie soll ich das mit dem string machen?

Bei mir funktionierts nicht richtig?!?

Mfg Marco ;(
.: mit dem Alter kommt die Weisheit - oder auch nicht :.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »marco888« (22. Mai 2004, 15:14)

 

Dabei seit: 14.02.2004

Beiträge: 133

 

4 Zum Seitenanfang

Samstag, 22. Mai 2004, 12:58

Hallo Marco888
Schreib statt SW_HIDE SW_SHOWNORMAL.
Und hast du dran gedacht, die ShellAPI einzubinden?
(also so:

Quellcode

1
uses Windows, Messages, ... , ShellAPI;
)
Wenns noch nicht klappt, dann poste eben. :D
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

5 Zum Seitenanfang

Samstag, 22. Mai 2004, 13:48

Hi!

Also ich habe die ShellApi eingebunden und das Sw_HI.. ersetzt, wie du geschrieben hast, aber es kommt noch immer folgendes: (siehe Anhang).

Mfg Marco ?(
»marco888« hat folgendes Bild angehängt:
  • cmd1.jpg
.: mit dem Alter kommt die Weisheit - oder auch nicht :.
 

Dabei seit: 14.02.2004

Beiträge: 133

 

6 Zum Seitenanfang

Samstag, 22. Mai 2004, 17:13

Wie wärs denn, wenn du einfach eine Variable send machst? ;)
So:

Quellcode

1
2
3
4
5
6
procedure Button1Click(Sender: TObject);
var send: String;
begin
Send := 'send ' + Edit1.Text + ' ' + Memo1.Text + ''; 
    ShellExecute (GetDesktopWindow, 'open', 'net.exe', PChar(Send), nil, SW_HIDE);
end;

Wenns nicht klappt, das übliche.
Ach ja, falls er NET.EXE nicht findet, schreib C:\WINDOWS\NET.EXE.
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »fred.reichbier« (22. Mai 2004, 17:15)

 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

7 Zum Seitenanfang

Samstag, 22. Mai 2004, 18:06

Hi!

Hey cool!

Es geht!!! :) :) :)

Wie kann ich einen Absender( nur Name) vorgeben?

Noch eine Frage: Brauche ich Adminrechte zum versenden?

Wenn ja, wie kann ich diese umgehen?

Mfg Marco :]
.: mit dem Alter kommt die Weisheit - oder auch nicht :.
 

Dabei seit: 14.02.2004

Beiträge: 133

 

8 Zum Seitenanfang

Sonntag, 23. Mai 2004, 11:32

Also, auf dem Gebiet bin ich kein Spezialist.
Aber mit den Adminrechten...:
Ich glaube, es geht auch ohne.
Wär sonst unlogisch :)).
Mit dem Absender:
Ich würd vielleicht schreiben:

Quellcode

1
2
3
4
5
6
7
procedure Button1Click(Sender: TObject);
var send, Absender: String;
begin
absender := 'marco888'; //oder wer auch immer...
Send := 'send ' + Edit1.Text + ' ' +'Absender: ' + Absender + ' ' + Memo1.Text + ''; 
    ShellExecute (GetDesktopWindow, 'open', 'net.exe', PChar(Send), nil, SW_HIDE);
end;


Nur ein Vorschlag.
Und: Lass bitte in Zukunft das mit den PNs. ;)
Hoffe, ich konnte dir Helfen.
fred
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

9 Zum Seitenanfang

Sonntag, 23. Mai 2004, 19:50

Hi!

Na ja, des mit dem Absender is nicht co gut, weil dann das ganze so aussieht:
###################################
Nachrichtendienst
Nachricht von xyz an xyz (an mich selbst geschickt) am ...

Absender : marco888 Nachricht
###################################

Und ich meine , ob ich für xyz was anderes eingeben kann.

Mfg Marco

ps. Anke für die super Mithilfe!!! :)
.: mit dem Alter kommt die Weisheit - oder auch nicht :.
 

Dabei seit: 14.02.2004

Beiträge: 133

 

10 Zum Seitenanfang

Montag, 24. Mai 2004, 15:53

RE: (Delphi) Kann ich einen Edit-Text ins CMD einfügen ?

Hallo Marco888,
gehn wir das ganze theoretisch an (da mein NET.EXE den Befehl SEND nicht kennt)
(Keine Garantie auf Richtigkeit meiner Angaben, da alles theoretisch ist)
Also, NET.EXE braucht als erstes Parameter SEND und als zweites Parameter die IP oder den Computernamen vom Empfänger. (glaub ich)
Dann kommt die Nachricht.
So:
Da ja wahrscheinlich immer deine IP oder dein Computername in der Nachricht angezeigt wird (Wenn ich dich richtig verstanden habe),
musst du vielleicht nur deinen Computernamen ändern, um einen anderen
Absendernamen zu kriegen. Und den änderst du bei SYSTEMSTEUERUNG->NETZWERK->IDENTIFIKATION.
(und ich wurschtel gerade in der Registry rum, ob man da irgendwo den
Namen ändern kann)
Falls ich was neues weiß, lass ichs dich wissen
MfG,
fred

PS.: Es kann sein, dass ich dir völligen Quatsch erzählt habe, aber wenn mein NET nicht geht... :(

Nachtrag:

Hallo Marco888!!!
Ich weiß jetzt wo der Computername steht.
Nämlich hier:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName
Wenn man den ändert, muss man neu starten. (den Computer :D)
Also, wenn du den im Programm ändern willst, schreib so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses ... ,Registry; //nur dranschreiben
...
procedure Button1Click(Sender: TObject);
var Regist: TRegistry;
begin
if edit1.text <> '' Then
begin
  regist:=TRegistry.Create;
  try
    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.OpenKey('System\CurrentControlSet\Control\ComputerName\',true);
      //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert
    regist.WriteString('ComputerName', Edit1.Text);

  finally
    regist.Free;
  end;
end;
end;

(Quelle zum Teil: Delphi-Source-Libraray -> www.delphi-source.de)
ABER: MIT DER REGISTRY ARBEITEN IST GEFÄHRLICH!!!
Also, wenn du das machst, (ich habs nicht ausprobiert)
auf eigene Gefahr.
Nachdem muss natürlich der Computer neu gestartet werden.

Grüße
Fred.

PS: Jedenfalls steht der Computername bei 98SE dort.

-----------------------------------------------------------------------------
UPPS, jetzt verstehe ich erst! Du willst NUR einen Text ausgeben?
Das geht auch ohne NET.EXE.
So:

Quellcode

1
command.com /k echo Text

Und bei Delphi so:

Quellcode

1
2
3
4
5
6
uses ... ,ShellAPI;
...
procedure Button1Click(Sender: TObject);
begin
ShellExecute(Application.Handle,'open','command.com',PChar('/k echo ' + Edit1.Text),'C:\WINDOWS\',SW_SHOWNORMAL);
end;

Dann kann man das auch mit Batches machen (also wenn du langen Text ausgeben soll)

Bitte keine Doppelposts!
Mfg Heinervdm
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »heinervdm« (24. Mai 2004, 18:03)

 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

11 Zum Seitenanfang

Montag, 24. Mai 2004, 17:18

Hi!
Also wenn es über Registry geht, dann lass ich lieber die Finger davon.

Nochmal eine Frage:

Du hast geschrieben, ob ich nur Text ausgeben möchte.

Das möchte ich schon, aber mit der 1. Methode klappt es besser.

Kann ich bei der 1. Methode noch etwas anderes??? :rolleyes:

Könnte ich evtl. an einen anderen Pc einen Befehl schicken, dass z.B. sein Pc neu gestartet wird? :rolleyes:

Wenn du weißt , wies geht, kannst du mirs dann posten?

Mfg Marco
.: mit dem Alter kommt die Weisheit - oder auch nicht :.
 

Dabei seit: 14.02.2004

Beiträge: 133

 

12 Zum Seitenanfang

Montag, 24. Mai 2004, 17:32

Hallöchen Marco888:

Es geht auch ohne Registry. :)
Nur stehe ich auf dem Schlauch.
So:

Quellcode

1
if Length('NeuerName') < MAX_COMPUTERNAME_LENGTH Then Windows.SetComputerName(PChar('NeuerName'));

Wenns nicht klappt, mal ohne PChar probieren.
Also, übers Netzwerk herunterfahren...
Da würde ich spontan ClientSocket und Serversocket empfehlen (hier)
Dann müsstest du aber einen Client programmieren, der die Aufgaben empfängt und ausführt.
Und einen Server, der die Daten sendet.
Aber einen NT/2000 PC übers Netzwerk runterfahren/neustarten, geht. (hier)
Wenn du mehr Infos haben willst -> posten.
Grüße
Fred.
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

13 Zum Seitenanfang

Montag, 24. Mai 2004, 17:42

Hi!
Also des mit dem Computername geht nicht.
Aber ich meine, ob ich nicht einfach deim senden einer Nachricht einen vorgegebenen Namen verwenden kann, ohne den Name in der Registry zu ändern.
Also der Computername soll nur während dem Senden der Nachricht vertauscht werden.

Das mit dem übers Netzwerk funktioniert bei mir nicht, weiß aber nicht warum!

Daten möchte ich eigentlich nicht versenden, nur Nachrichten und ggf. Befehle , wie z.B. Pc neustarten.

Mfg Marco :)

Ps. Wie kann ich die Pc-Namen herrausfinden von Leuten , die im Netzwek sind?

Ist dies hier geeignet, um die NAMEN von den Leuten im Netzwerk herrauszufinden?

Quellcode

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
procedure TForm1.Button1Click(Sender: TObject);
var
  i, dwResult: DWORD;
  hEnum: THandle;
  lpnrDrv: PNETRESOURCE;
  s: string;
const
  cbBuffer: DWORD = 16384;
  cEntries: DWORD = $FFFFFFFF;
begin
  dwResult := WNetOpenEnum(RESOURCE_CONNECTED,
    RESOURCETYPE_ANY,
    0,
    nil,
    hEnum);

  if (dwResult <> NO_ERROR) then
  begin
    ShowMessage('Cannot enumerate network drives.');
    Exit;
  end;
  s := '';
  repeat
    lpnrDrv  := PNETRESOURCE(GlobalAlloc(GPTR, cbBuffer));
    dwResult := WNetEnumResource(hEnum, cEntries, lpnrDrv, cbBuffer);
    if (dwResult = NO_ERROR) then
    begin
      s := 'Network drives:'#13#10;
      for i := 0 to cEntries - 1 do
      begin
        if lpnrDrv^.lpLocalName <> nil then
          s := s + lpnrDrv^.lpLocalName + #9 + lpnrDrv^.lpRemoteName;
        Inc(lpnrDrv);
      end;
    end
    else if dwResult <> ERROR_NO_MORE_ITEMS then
    begin
      s := s + 'Cannot complete network drive enumeration';
      GlobalFree(HGLOBAL(lpnrDrv));
      break;
    end;
    GlobalFree(HGLOBAL(lpnrDrv));
  until (dwResult = ERROR_NO_MORE_ITEMS);
  WNetCloseEnum(hEnum);
  if s = '' then s := 'No network connections.';
  ShowMessage(s);
end;
.: mit dem Alter kommt die Weisheit - oder auch nicht :.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »marco888« (24. Mai 2004, 18:15)

 

Dabei seit: 14.02.2004

Beiträge: 133

 

14 Zum Seitenanfang

Montag, 24. Mai 2004, 19:31

hallo,
hab nicht viel zeit jetzt.
Computername ändern: ->System neugestartet?
Computernamen rausfinden -> per Netzwerk auf die Registry zugreifen und
Namen im oben genannten Schlüssel finden -> hab ich irgendwo gelesen ->
such es morgen.
Mit anderem Namen senden -> Ich würds nochmal mit oben probiern,
tut mir leid. Aber NET spinnt ja. Gib mal NET /? ein.
Da steht irgendwas mit NET LOGON.
Probiers mal damit.
Sonst... Ich such mal Morgen.
@Heinervdm: Okay. :D
Bis Morgen,
fred
PS. Der Code -> muss ich mir erst angucken. Woher hast du den Code?
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

15 Zum Seitenanfang

Montag, 24. Mai 2004, 20:57

Hi!

Also ich habe neu gestartet, aber das haut irgendwie nicht so hin.

Aber muss vielleicht dann nochmal schauen.

Den Code habe ich von:

www.swissdelphicenter.ch/de

Bis morgen.

Mfg Marco :rolleyes:

Ps. Ist es möglich, dass ich einen Befehl schicken kann, ohne, dass ich ein Programm auf dem Empfängerpc gestartet habe? ?(
.: mit dem Alter kommt die Weisheit - oder auch nicht :.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »marco888« (25. Mai 2004, 15:45)

 

Dabei seit: 14.02.2004

Beiträge: 133

 

16 Zum Seitenanfang

Dienstag, 25. Mai 2004, 16:23

Hallo
Ich habs mal mit NET LOGON probiert, damit würde es vielleicht auch gehen.
Aber mein Netzwerk ist im Moment ja kaputt und es lässt sich nur ausführen,
wenn du nicht gleichzeitig Windows auf hast.
Ich könnte dir nur mit ClientSocket und ServerSocket auf die Beine helfen.
Und nochmal: Du willst also nur (mehrzeiligen) Text in die CMD einfügen? Das geht mit einem Batch, das du erstellst und ausführst.
Auch das könnte ich dir erklären.

Zitat

Computernamen rausfinden -> per Netzwerk auf die Registry zugreifen und
Namen im oben genannten Schlüssel finden -> hab ich irgendwo gelesen ->
such es morgen.

Habs nicht gefunden ;(.

Zitat

Ps. Ist es möglich, dass ich einen Befehl schicken kann, ohne, dass ich ein Programm auf dem Empfängerpc gestartet habe?

Keine Ahnung.
Tut mir leid. Aber das ist nicht mein Gebiet.
MfG
fred.
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

17 Zum Seitenanfang

Dienstag, 25. Mai 2004, 16:46

Hallöchen!

Wie ginge das mit dem Batch?

Ich möchte eigentlich nur Text versenden.

(Was wäre sonst noch mit der 1. Lösung möglich?- Interressehalber) :)

Noch mal um auf den Absender zurückzukommen:

Weißt du, wie ich den Absender meiner Textnachricht NUR während dem Senden ändere und ihn dann automatisch wiederherstelle?

Also so:

Ich schicke eine Nachricht, doch bevor versendet ist, ändert sich der Pc-Name von marco888 auf mr.x. Jedoch nachdem die Nachricht gesendet worden ist, sollte wieder marco888 mein Pc-Name sein ( wenns geht auch, wenn ich das Programm jem. mit anderem Pc-Name , außer marco888 geben würde).

Mfg Marco :)
.: mit dem Alter kommt die Weisheit - oder auch nicht :.
 

Dabei seit: 14.02.2004

Beiträge: 133

 

18 Zum Seitenanfang

Mittwoch, 26. Mai 2004, 14:13

Hallo marco888,

Zitat


Weißt du, wie ich den Absender meiner Textnachricht NUR während dem Senden ändere und ihn dann automatisch wiederherstelle?

Also so:

Ich schicke eine Nachricht, doch bevor versendet ist, ändert sich der Pc-Name von marco888 auf mr.x. Jedoch nachdem die Nachricht gesendet worden ist, sollte wieder marco888 mein Pc-Name sein ( wenns geht auch, wenn ich das Programm jem. mit anderem Pc-Name , außer marco888 geben würde).


Keine Ahnung.

Mit dem Batch kannst du mehrzeiligen Text ausgeben.
So würde der Delphi-Code aussehen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uses ...,ShellAPI;

procedure Button1Click(Sender: TObject);
var S: TStringList;
begin
S := TStringList.Create;
S.Add('@echo off');
S.Add('echo ' + 'Zeile1Text');
S.Add('echo ' + 'Zeile2Text'); 
//Und mit dem Text aus einem Edit
S.Add('echo' + Edit1.Text);
S.SaveToFile('C:\WINDOWS\TEMP\EchoBatch.bat');
ShellExecute(Application.Handle,'open','EchoBatch.bat',nil,'C:\WINDOWS\TEMP',SW_SHOWNORMAL);
//Und jetzt wird ein MS-DOS Fenster geöffnet und der Text ausgegeben
S.Free;
end;

MfG,
fred

PS. Oh, ich sehe, du hast einen neuen Thread eröffnet. Viel Glück! :)
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-
 

marco888

Haudegen

Dabei seit: 23.02.2004

Beiträge: 740

 

19 Zum Seitenanfang

Mittwoch, 26. Mai 2004, 15:18

Hallöchen!

Kannst du mir das für Edit1 + Memo1 geben, ich bekomms nicht hin?

Bei mir schließts auch immer das Fenster!?!? 8o

Mfg Marco ;(
.: mit dem Alter kommt die Weisheit - oder auch nicht :.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »marco888« (27. Mai 2004, 14:58)

 

Dabei seit: 14.02.2004

Beiträge: 133

 

20 Zum Seitenanfang

Freitag, 28. Mai 2004, 15:35

Hallo Marco888!
Dein Wunsch ist mir Befehl! :D

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uses ...,ShellAPI;

procedure Button1Click(Sender: TObject);
var S: TStringList; i: Integer;
begin
S := TStringList.Create;
S.Add('@echo off');

for i := 0 to Memo1.Lines.Count - 1 do
begin
S.Add('echo ' + Memo1.Lines.Strings[i]);
end;
S.SaveToFile('C:\WINDOWS\TEMP\EchoBatch.bat');
ShellExecute(Application.Handle,'open','EchoBatch.bat',nil,'C:\WINDOWS\TEMP',SW_SHOWNORMAL);
//Und jetzt wird ein MS-DOS Fenster geöffnet und der Text ausgegeben
S.Free;
end;

Und wenn du dann noch Edit-Text haben willst, fügst du einfach an
der Stelle ein:

Quellcode

1
S.Add('echo ' + Edit1.Text);

Übrigens: ECHO gibt den Text der danach kommt aus.
MfG,
fred
Man kann alles, man muss es nur richtig machen!
->ZyklopBATCH<-