![]() |
Programm funktioniert nur unter XP
Hallo zusammen,
meine WE-Anforderung liegt in den allerletzten Zügen. In meiner Access-Version hatte ich beim speichern noch eine Batchdatei ausführen lassen, damit diverse WE-Anforderungen nicht "Rückdatiert" werden können. Ich habe dann hier und bei Swissdelphicenter eine hübschen Code gefunden, der die Batchdatei ausführt und wartet bis diese beendet ist. Es kann nur mit dem Ausführbefehl zu tun haben, das mein Programm unter XP einwandfrei funktioniert und W98-Kisten gar nichts mehr machen. hier mal der C&P-Code :oops:
Delphi-Quellcode:
Hier der Aufruf:
procedure ShellExecute_AndWait(FileName: string; Params: string);
var exInfo: TShellExecuteInfo; Ph: DWORD; begin FillChar(exInfo, SizeOf(exInfo), 0); with exInfo do begin cbSize := SizeOf(exInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); ExInfo.lpVerb := 'open'; ExInfo.lpParameters := PChar(Params); lpFile := PChar(FileName); nShow := SW_Hide; end; if ShellExecuteEx(@exInfo) then Ph := exInfo.HProcess else begin ShowMessage(SysErrorMessage(GetLastError)); Exit; end; while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do Application.ProcessMessages; CloseHandle(Ph); end;
Delphi-Quellcode:
Hatte hier mal was von einem Schalter /C gelesen konnte ihn aber irgendwie nicht anwenden.
Procedure TForm1.dssave;
var datum:TDate; zeit:TTime; Begin shellexecute_Andwait('W:\fohrer\nettime.bat',''); Danke Ati |
Re: Programm funktioniert nur unter XP
Es könnte an dem fehlenden /c liegen.
Die /c-Option sagt dem Kommandointerpreter, das er das folgende Kommando ausführen und dann enden soll. Du müsstest also etwa folgendes ausführen:
Code:
In deinem Fall solltest du dir aber vorher noch den Wert der Umgebungsvariable "ComSpec" holen, damit du unter Win98 die "command.com" anstatt der "cmd.exe" ausführst.
cmd /c c:\meinebat.bat
|
Re: Programm funktioniert nur unter XP
TOLL!!!!!!!!!!!!!!!!
Ich hab nicht ein Wort verstanden. |
Re: Programm funktioniert nur unter XP
Und was genau daran nicht?
|
Re: Programm funktioniert nur unter XP
Also. "cmd" geht wie wir ja alle wissen nicht unter W98. Ich muß jetzt also das Kunststück hinbekommen einen "universellen" Code zu basteln. Das mit ComSpec habe ich in diesem Zusammenhang nicht verstanden. Ich könnte natürlich die Batch-Datei ganz normal ausführen, dann 2 Sekunden das programm anhalten und dann normal weitermachen. Nur finde ich so eine Lösung stümperhaft. Und davon habe ich in der Vergangenheit genug fabriziert.
|
Re: Programm funktioniert nur unter XP
Zitat:
in dieser variable steht der kommandozeileninterpreter (eben command.com oder cmd.exe). diesen dann einfach mit besagten argumenten aufrufen und gut is'. ;) aeno |
Re: Programm funktioniert nur unter XP
Durch das Abfragen der ComSpec-Umgebungsvariable erhältst du den kompletten Pfad zum aktuellen Kommandointerpreter. Unter den NT-Systemen ist dies normalerweise die CMD.exe und unter den 9x-System die COMMAND.com.
Also sähe das Ergebnis unter NT-Systemen etwa so aus:
Code:
Und unter den 9x-Systemen vielleicht so:
C:\WINDOWS\system32\cmd.exe
Code:
C:\WINDOWS\command.com
|
Re: Programm funktioniert nur unter XP
Habe jetzt mal versucht folgenden Befehl zu testen:
Delphi-Quellcode:
Meldung: undefinierter Bezeichner "GetEnvironmentVariable".
ShellExecute(Application.Handle, 'open', PChar(SysUtils.GetEnvironmentVariable('COMSPEC')),
PChar('/C W:\Fohrer\nettime.bat'), nil, SW_ShowNormal); SysUtils und ShellApi sind in uses aber aufgenommen. |
Re: Programm funktioniert nur unter XP
Hmh. Anscheinend weiß auch kein anderer warum das so nicht funktioniert. Habe ich den sonst noch irgendwie die Möglichkeit den Befehl "net time \\server /set /yes" auszuführen.
|
Re: Programm funktioniert nur unter XP
Geht bei mir wunderbar:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: String; begin s := SysUtils.GetEnvironmentVariable('COMSPEC'); ShowMessage(s); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz