Entwickler-Ecke
Windows API - Kommandos in der Konsole ausführen
PP-deluxe - Mo 12.12.05 16:48
Titel: Kommandos in der Konsole ausführen
Hallo,
wie kann man in Delphi Kommandos in der Konsole ausführen lassen (möglichst so, dass man die Konsole nicht sieht)? Wie heißt der Befehl dazu?
Moderiert von
raziel: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 12.12.2005 um 16:16
WeBsPaCe - Di 13.12.05 14:51
Moinmoin.
Deine Frage ist etwas ungenau. Falls du einfach Konsolenprogramme wie
net o.ä. starten willst, kannst du
SHELLEXECUTE verwenden.
coucou,
WeBBy
s34rch - Mi 14.12.05 09:26
z.B. so:
Delphi-Quelltext
1: 2:
| uses ShellApi; ShellExecute(0,'open','cmd',PChar('/C rrdtool.exe update N:1:2'),nil,SW_HIDE); |
Moderiert von
raziel: Delphi-Tags hinzugefügt.
yogo - Mi 14.12.05 20:36
Das hat mich neugierig gemacht. Kann man auch an ein Programm/eine Funktion(in meinem Fall net/net send) einen Befehl schicken? So dass man z.B. hat: Windows Net Chat nacricht an: (rechner oder Benutzername) Nachricht: (die nachricht halt)
Vielleicht über Edit Felder die verschiedenen Werte in Strings schreiben und diese dann zusammen mit 'net send' an Run.exe schicken?
Freue mich über jede Antwort!
yogo - Do 15.12.05 18:19
Supi, *freu*; Doch kannst du mir bitte noch sagen, wie man AIp und AText verwendet?
Ich kenn mich da nicht so aus...
azubi_20 - Do 15.12.05 18:44
Wied du in der Prozedur sehen kannst sind das einfach nur Parameter also in diesem Fall Variablen vom Typ String. Der Name sagt was inhaltlich erwartet wird.
yogo - Do 15.12.05 19:00
einfach
Delphi-Quelltext
1:
| var AIp , AText : String |
? Die kann ich dann auch ganz normal definieren(Die Werte, nicht den Typ)?
Also:
Delphi-Quelltext
1: 2:
| Edit1.text := AIp; Edit2.text := AText; |
Das ist ja einfach... thx!!
azubi_20 - Do 15.12.05 19:59
ja, wenn du das noch umdrehst, dann stimmst :
Delphi-Quelltext
1: 2:
| AIp := Edit1.text; AText := Edit2.text; |
Damit wird dann der Inhalt von Edit1 in AIp gespeichert und
der Inhalt von Edit2 in AText.
WeBsPaCe - Fr 16.12.05 14:31
Moinmoin.
Was erzählt ihr denn da bitte?! :gruebel: Das ist total kompliziert! Das ist einfach eine Funktion, die zwei Parameter vom Typ String erwartet.
Beispiel: Du willst eine Nachricht "hallo" an 192.168.0.1 schicken.
Delphi-Quelltext
1:
| NetSend('192.168.0.1', 'hallo'); |
coucou,
WeBBy
P.S.:
@
yogo:
Ich würde dir mal (und auch allen anderen, die geantwortet haben), den
Crashkurs [
http://christian-stelzmann.de/index_tutorials_crashkurs.html] von
Chrissy empfehlen. ;)
azubi_20 - Fr 16.12.05 15:14
@
WeBsPaCe
Zitat: |
Was erzählt ihr denn da bitte?! :gruebel: Das ist total kompliziert! |
Zitat: |
Ich würde dir mal (und auch allen anderen, die geantwortet haben), den Crashkurs von Chrissy empfehlen. ;) |
Also erstmal erzählst du, das wir total kompliziert erzählen, dann empfehlst du uns ein Anfänger-Tutorial.
Irgendwie unlogisch... Kann ein Anfänger denn kompliziert erzählen ?
Zumal ich wenigstens fachlich richtig war :
RICHTIG :
azubi_20 hat folgendes geschrieben: |
in der Prozedur |
FALSCH :
WeBsPaCe hat folgendes geschrieben: |
Das ist einfach eine Funktion, die zwei Parameter vom Typ String erwartet. |
OK, kann sein, dass ich jetzt etwas übertreibe, aber irgendwie fühle ich mich persönlich angegriffen...
WeBsPaCe - Fr 16.12.05 19:14
Moinmoin.
azubi_20 hat folgendes geschrieben: |
Also erstmal erzählst du, das wir total kompliziert erzählen, dann empfehlst du uns ein Anfänger-Tutorial. Irgendwie unlogisch... Kann ein Anfänger denn kompliziert erzählen ? |
Warum nicht? :gruebel: Weiß nicht, warum sich das ausschließen sollte.
azubi_20 hat folgendes geschrieben: |
Zumal ich wenigstens fachlich richtig war :
(...) |
Jop. Okay. ;) Da hast du recht. Darf ich zu meiner Verteidigung sagen, dass ich zur Zeit ziemlich viel PHP mach' und es da eben keine Prozeduren gibt? ;)
azubi_20 hat folgendes geschrieben: |
OK, kann sein, dass ich jetzt etwas übertreibe, aber irgendwie fühle ich mich persönlich angegriffen... |
Deine Feststellung da oben mit "Funktion" und "Prozedur" war richtig. Ich hab was falsches geschrieben. Du hast auf mich einfach nicht den Eindruck gemacht, dass dir bekannt ist, was eine Prozedur ist, weil deine Antwort einfach nicht dem entsprechend war. Tut mir leid, falls dich das mit dem Anfängertutorial beleidigt hat. ;)
coucou,
WeBBy
yogo - Mo 19.12.05 22:30
Darf man eigentlich hier streiten, oder muss ein PM-Krieg gestartet werden?
Super Dankeschön für die Antworten!! Es klappt!
UGrohne - Mo 19.12.05 22:48
yogo hat folgendes geschrieben: |
Darf man eigentlich hier streiten, oder muss ein PM-Krieg gestartet werden?
Super Dankeschön für die Antworten!! Es klappt! |
Wenns um was Persönliches geht, bitte per PN!
chip - Mi 04.01.06 15:37
Titel: Eierlegende Wollmilchsau
habe gerade eure Artikel zum Thema shellexecute gelesen. Der Befehl is viel zu schade um NUR Netznachrichten darüber zu verschicken.
Einfach mal das kontextmenü auf der Windowsoberfläche, auf irgendeiner Datei aufmachen. (rechte maustaste)
Alles was da steht unterstütz die Funktion shellExecute. Also offnen, drucken, bearbeiten, neu ... u.a. und zwar unabhänig davon ob es sich um ein Programm oder eine Datei handelt. Noch geiler is dann auch das ich darüber hinaus den ganzen Rest von windows mit open öffen kann also Verzeichnisse, Dateien, ftp verzeichisse., emails und was es sonst noch an sinnigem und unsinnigem gibt.
Also wie gesagt eine "Eier legende Wollmichsau"
Mail öffnen
ShellExecute(0, 'open', 'mailto:mailadresse@server.de', '', '', 5)
Datei drucken
ShellExecute(0, 'print', 'C:\testdatei.pdf', '', '', 0)
Verzeichnis öffnen
ShellExecute(0, 'open', 'C:\windows', '', '', 0)
Worddokument aus einer Dokumentenvorlage erstellen
ShellExecute(0, 'new', 'C:\wordvorlage.dot', '', '', 0)
Webseite öffnen
ShellExecute(0, 'open', 'http://www.delphi-forum.de', '', '', 0)
etc.
Mit anderen Worten das ding ist zum blöd werden universel
Gruß chip
Ghosterer - Mo 01.05.06 15:20
@chip:
Habe deine Anregung aufgenommen und versucht, ein PDF-File auszudrucken.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| program PdfDruck;
{$APPTYPE CONSOLE}
uses ShellApi;
begin ShellExecute(0, 'print', 'C:\test.pdf', '', '', 0) end. |
Der Acrobat-Reader öffnet sich, das Dokument wird angezeigt, aber dann bekomme ich eine Fehlermeldung vom Reader "Dieser Vorgang ist nicht zulässig".
Gibt es eine Möglichkeit, über eine Konsolenanwendung mehrere Pdf-Dateien (z. B. Rundschreiben???.pdf) auszudrucken, ohne den Drucker zu kennen? Die Rundschreiben also incl. Exe an verschiedene Systeme (mit unterschiedlichen Druckern) übertragen und dann über einen Task (if exist Rundschreiben???.pdf PdfDruck.exe) auszudrucken? Dummerweise sind leider nicht nur unterschiedliche Drucker (div. Hersteller, Lokal und auch Netzwerkdrucker) sondern auch noch unterschiedliche Versionen des Readers im Einsatz (5-7), so dass es auch keinen fixen Pfad zur AcroRd32.exe gibt.
Wäre echt super, wenn es für dieses Problem eine Lösung gäbe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!