AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

cmd fenster

Ein Thema von technik05 · begonnen am 18. Mär 2008 · letzter Beitrag vom 18. Mär 2008
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
technik05

Registriert seit: 16. Mär 2008
51 Beiträge
 
#11

Re: cmd fenster

  Alt 18. Mär 2008, 10:52
da ich viel mit batchdateien mache, möchte ich so ein kleines fenster haben
zur kontrolle !

wollte erstmal bei meinen batchdateien bleiben! ist doch ok oder ?

gruß andre
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#12

Re: cmd fenster

  Alt 18. Mär 2008, 10:55
Klar ist das ok.

Ich hätte jetzt nur gedacht, dass Du die Funktionen der Batch-Dateien auch in Delphi nachprogrammieren kannst. Überprüfen kannst ja dort genau so gut.

Wenn Dir aber der Weg mit den Batch-Dateien lieber ist, will ich Dich auch nicht davon abhalten.
  Mit Zitat antworten Zitat
technik05

Registriert seit: 16. Mär 2008
51 Beiträge
 
#13

Re: cmd fenster

  Alt 18. Mär 2008, 11:00
danke,

aber scheint doch nicht so einfach zu sein, so ein blödes fenster zu programmieren oder ?
ich muss noch viel üben
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#14

Re: cmd fenster

  Alt 18. Mär 2008, 11:12
hier ist ein beispiel wie das geht:
http://www.delphipraxis.net/viewtopi...=598121#598121
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
technik05

Registriert seit: 16. Mär 2008
51 Beiträge
 
#15

Re: cmd fenster

  Alt 18. Mär 2008, 11:26
was bin ich nervig oder

was ist das für ein fehler ?? [Fataler Fehler] Unit1.pas(6): Datei nicht gefunden: 'Variants.dcu'

was muß ich hier ändern ??
unit Unit1;

interface

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

type
TForm1 = class(TForm)
MemoOutput: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnWriteCmdClick(Sender: TObject);
procedure EdCmdKeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
private
fInputPipeRead,
fInputPipeWrite,
fOutputPipeRead,
fOutputPipeWrite: Cardinal;
fProcess: Cardinal;
procedure FClbProc(Sender: TObject; const ABuffer: String; ABufSize: Cardinal);
procedure FOpenProcess;
procedure FCloseProcess;
procedure FWriteToStdIn(const AText: String);
{ Private declarations }
public
{ Public declarations }
end;

TPipeClbProc = procedure(Sender: TObject; const ABuffer: String; ABufSize: Cardinal) of Object;
TPipeReadThread = class(TThread)
private
fBuffer: String;
fBytesRead: Cardinal;
fClbProc: TPipeClbProc;
fPipeOutput: Cardinal;
procedure FSyncProc;
protected
procedure Execute; override;
constructor Create(AClbProc: TPipeClbProc; APipeOutput: Cardinal);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{================================================= =============================}

constructor TPipeReadThread.Create(AClbProc: TPipeClbProc; APipeOutput: Cardinal);
begin
inherited Create(True);
fClbProc := AClbProc;
fPipeOutput := APipeOutput;
SetLength(fBuffer, 5000);
FreeOnTerminate := True;
Resume;
end;

{================================================= =============================}

procedure TPipeReadThread.Execute;
var LBufSize: Cardinal;
LRes : Boolean;
begin
LBufSize := Length(fBuffer);
repeat
LRes := ReadFile(fPipeOutput, fBuffer[1], LBufSize, fBytesRead, nil);
Synchronize(fSyncProc);
until not(LRes) or Terminated;
end;

{================================================= =============================}

procedure TPipeReadThread.FSyncProc;
begin
fClbProc(Self, fBuffer, fBytesRead);
end;

{================================================= =============================}
{================================================= =============================}
{================================================= =============================}

procedure TForm1.FClbProc(Sender: TObject; const ABuffer: String; ABufSize: Cardinal);
var LNew: String;
LPos: Integer;
begin
LNew := copy(ABuffer, 1, ABufSize);
LPos := pos(#$C, LNew);
if (LPos > 0) then
begin
MemoOutput.Text := '';
LNew := copy(LNew, LPos + 1, Length(LNew));
end;
MemoOutput.Text := MemoOutput.Text + LNew;
PostMessage(MemoOutput.Handle, WM_VSCROLL, SB_BOTTOM, 0);
end;

{================================================= =============================}

procedure TForm1.FOpenProcess;
var LStartupInfo: TStartupInfo;
LProcessInfo: TProcessInformation;
LSecurityAttr: TSECURITYATTRIBUTES;
LSecurityDesc: TSecurityDescriptor;
begin
FillChar(LSecurityDesc, SizeOf(LSecurityDesc), 0);
InitializeSecurityDescriptor(@LSecurityDesc, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(@LSecurityDesc, True, nil, False);

LSecurityAttr.nLength := SizeOf(LSecurityAttr);
LSecurityAttr.lpSecurityDescriptor := @LSecurityDesc;
LSecurityAttr.bInheritHandle := True;

fProcess := 0;
if CreatePipe(fInputPipeRead, fInputPipeWrite, @LSecurityAttr, 0) then //Input-Pipe
begin
if CreatePipe(fOutputPipeRead, fOutputPipeWrite, @LSecurityAttr, 0) then //Output-Pipe
begin
FillChar(LStartupInfo, SizeOf(LStartupInfo), 0);
FillChar(LProcessInfo, SizeOf(LProcessInfo), 0);
LStartupInfo.cb := SizeOf(LStartupInfo);
LStartupInfo.hStdOutput := fOutputPipeWrite;
LStartupInfo.hStdInput := fInputPipeRead;
LStartupInfo.hStdError := fOutputPipeWrite;
LStartupInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
LStartupInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil, 'cmd', @LSecurityAttr, nil, True, 0, nil, nil, LStartupInfo, LProcessInfo) then
begin
fProcess := LProcessInfo.hProcess;
TPipeReadThread.Create(FClbProc, fOutputPipeRead);
end else begin
CloseHandle(fInputPipeRead);
CloseHandle(fInputPipeWrite);
CloseHandle(fOutputPipeRead);
CloseHandle(fOutputPipeWrite);
end;
end else begin
CloseHandle(fInputPipeRead);
CloseHandle(fInputPipeWrite);
end;
end
end;

{================================================= =============================}

procedure TForm1.FCloseProcess;
begin
if (fProcess <> 0) then
begin
CloseHandle(fInputPipeRead);
CloseHandle(fInputPipeWrite);
CloseHandle(fOutputPipeRead);
CloseHandle(fOutputPipeWrite);
TerminateProcess(fProcess, 0);
fProcess := 0;
end;
end;

{================================================= =============================}

procedure TForm1.FWriteToStdIn(const AText: String);
var LPos,
LWritten: Cardinal;
LRes : Boolean;
begin
LPos := 1;
repeat
LWritten := 0;
LRes := WriteFile(fInputPipeWrite, AText[LPos], Cardinal(Length(AText)) - LPos + 1, LWritten, nil);
inc(LPos, LWritten);
until not(LRes) or (LPos > Cardinal(Length(AText)));
end;

{================================================= =============================}

procedure TForm1.FormCreate(Sender: TObject);
begin
fProcess := 0;
FOpenProcess;
end;

{================================================= =============================}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FCloseProcess;
end;

{================================================= =============================}

procedure TForm1.BtnWriteCmdClick(Sender: TObject);
begin
FWriteToStdIn(EdCmd.Text + #13#10);
EdCmd.Text := '';
end;

{================================================= =============================}

procedure TForm1.EdCmdKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
BtnWriteCmdClick(nil);
end;
end;

{================================================= =============================}

procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
VAR e: INTEGER;

begin

e := ShellExecute

(Handle,

NIL,

PCHAR('C:\Dokumente und Einstellungen\Administrator\Desktop\Handyalarm\NEF .BAT'),

PCHAR(''),

NIL,

SW_SHOW);

IF (e<=32) THEN

begin

ShowMessage('Fehler: Batch-Datei konnte nicht ausgeführt werden!')

end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

Re: cmd fenster

  Alt 18. Mär 2008, 11:32
Du hast anscheinend noch ein Delphi < 7 (oder war das 6?). Lösch einfach die Unit "Variants" aus der uses-Klausel heraus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
technik05

Registriert seit: 16. Mär 2008
51 Beiträge
 
#17

Re: cmd fenster

  Alt 18. Mär 2008, 11:38
habe ich gemacht, jetzt habe ich die probleme:

[Fehler] Unit1.pas(199): Undefinierter Bezeichner: 'EdCmd'
[Fehler] Unit1.pas(199): Anweisung erforderlich, aber Ausdruck vom Typ 'TCaption' gefunden
[Fehler] Unit1.pas(217): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(222): Undefinierter Bezeichner: 'ShellExecute'
[Fehler] Unit1.pas(244): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(246): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

arbeite mit delphi 5
  Mit Zitat antworten Zitat
technik05

Registriert seit: 16. Mär 2008
51 Beiträge
 
#18

Re: cmd fenster

  Alt 18. Mär 2008, 11:40
der fehler:

Fehler] Unit1.pas(222): Undefinierter Bezeichner: 'ShellExecute

habe ich gerade selber behoben
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: cmd fenster

  Alt 18. Mär 2008, 11:41
Ich habe auch Delphi 5 und musste nur Variants aus der uses-Klausel löschen, damit es ging. Sicher, dass du nichts anderes geändert hast?

Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
technik05

Registriert seit: 16. Mär 2008
51 Beiträge
 
#20

Re: cmd fenster

  Alt 18. Mär 2008, 11:45
es geht danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.
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