Hab jetzt mal auf Ratschlag von DeddyH ExecAndWait eingefügt doch beim Aufruf kommt zwar die Konsole aber der Eingabebefehl wird ignoriert.
Aufrufen mit:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ExecandWait('
C:\Windows\system32\netsh.exe','
interface ip set address name = "LAN1" source = static addr = 192.168.0.1 mask = 255.255.255.0',sw_normal);
end;
Funktion:
Delphi-Quellcode:
{ WindowState is one of the SW_xxx constants.
Look up ShowWindow in the API help for a list.}
function TForm1.ExecAndWait(
const Filename, Params:
string;
WindowState: word): boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine:
string;
begin
{ Enclose filename in quotes to take care of
long filenames with spaces. }
CmdLine := '
"' + Filename + '
" ' + Params;
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo
do begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
try
Result := CreateProcess(
NIL, PChar(CmdLine),
NIL,
NIL, FALSE,
CREATE_NEW_CONSOLE
or
NORMAL_PRIORITY_CLASS,
NIL,
PChar(ExtractFilePath(Filename)),
SUInfo, ProcInfo);
except
on E:
Exception do
begin
Result:=false;
end;
end;
{ Wait for it to finish. }
if Result
then begin
Application.Processmessages;
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
end;
Edit: Mit Netsh hat es jetzt doch funktioniert. Rufe die Funktion einfach mehrmals auf um mehrere Befehle abzuarbeiten. Der Code oben wurde von mir entsprechend ausgebessert