Hi ihr Lieben,
wie kann ich nun mit obiger Funktion eine Datei starten? Eingebunden hab ich sie noch bekommen, wenngleich ich aufgrund des
Unicode's da Sorgen hatte (nutze Delphi XE) und mir nicht klar ist, welche uses ich ggf. noch nutzen muss, damit der die Funktionen "WideFileExists" z.B. findet. Ihr bemerkt schon, ich starte gerade erst mit dem ganzen Kram.
Jedenfalls führte z.B. folgende Zeile natürlich zu keinem Erfolg, ich begreife einfach den Funktionsaufruf nicht, den ich durchführen muss. Welche Parameter sind zu übergeben, damit das klappt? Ist der Deklaration werde ich leider nicht hinreichend schlau und bitte um Hilfe dazu.
Umgebaut hatte ich das nun zu:
Delphi-Quellcode:
function ExecAndWait(Filename, Params: Widestring;
WindowState: word = SW_SHOWNORMAL): boolean;
var
ShExecInfoA: SHELLEXECUTEINFOA;
r : Cardinal;
//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecuteex.asp
//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shellexecuteinfo.asp
begin
Result := false;
if Filename = '
'
then exit;
if not FileExists(FileName)
then
begin
// Log (true,P_ERROR,WideFormat(_('Kann die angegebene Datei nicht finden: %s'),[FileName]));
exit;
end;
ShExecInfoA.Wnd := GetForegroundWindow;
ShExecInfoA.cbSize := sizeof(SHELLEXECUTEINFOA);
ShExecInfoA.fMask := SEE_MASK_NOCLOSEPROCESS;
ShExecInfoA.lpVerb := '
open';
ShExecInfoA.lpFile := PAnsiChar(AnsiString(Filename));
ShExecInfoA.lpParameters := PAnsiChar(AnsiString(Params));
ShExecInfoA.lpDirectory := PAnsiChar(AnsiString(ExtractFileDir(Filename)));
ShExecInfoA.nShow := WindowState;
Result := ShellExecuteExA(@ShExecInfoA);
try
if Result
then
begin
r := WaitForSingleObject(ShExecInfoA.hProcess, INFINITE);
end;
finally
CloseHandle(ShExecInfoA.hProcess);
end;
end;
und versuche nun via
ExecandWait('Ping.EXE','>> 192.168.212.253 >> testping.txt');
Es auch zu nutzen. Ich weiß, der Aufruf ist falsch, aber ich brauche hier Starthilfe, bitte.
Noch toller wäre es ja, 'n Ping direk tzu nutzen, aber nach 4-6 Stunden probieren aller möglichen Sachen, die durch die bank alle nicht klappten, wollte ich es eben über das doofe ping.exe lösen.
LG Shyran