![]() |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Welchen Rückgabewert bekommst du denn nun von ShellExecute?
Grüße Dalai |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Zitat:
Es ist ja nicht so, dass diese WinAPI einem nicht sagen würde, was ihr fehlt. Zusätzlich auch noch ShellExecuteEx oder CreateProcess und den ExitCode des Programms prüfen. Es könnte auch sein, dass es zwar gestartet wird, es sich aber sofort wieder mit einem Fehler beendet. Leerzeichen in myapp? Zitat:
Oder rufst du dort "nur" den Inhalt von myapp auf. In der CMD kann man ja nocheine CMD starten und sieht dann deren Fehlermeldungen. |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Zitat:
Zitat:
Mir fällt aber grade noch etwas anderes ein: CMD /C erwartet den kompletten Befehl in Anführungszeichen, erst recht, wenn man dem Programm (hier myapp) noch Parameter mitgibt. Grüße Dalai |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Nein mein Prg klappt ja. Daran liegts nicht. Es liegt sicherlich an den Policies.
Hab das hier von der Powershell gefunden. ![]() Denn es klappt auf WIN 10 (mein PC) und WIN 7 (mein PC) aber am Work PC geht es sowohl WIN 7 als auch WIN 10 nicht. Wenn ich nur wüßte wo man diese Policy zweck Shell-Execution einstellt. daran liegst sicher... |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Hallo,
liest du auch die Artikel hier? Welchen Rückgabewert bekommst du denn nun von ShellExecute bzw. ShellExecuteEx? |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
hoika, das Shell Fenster geht ja gar nicht auf: Und ich ruf die app (= sqlite3.exe ) via folgendem Script auf, und das gibt true zurück.
Aufruf:
Delphi-Quellcode:
Definition:
WriteLogMemo(Format(' SHell: %s %s ',['c:\windows\system32\cmd.exe','/C '+ myapp +' '+uniconnection2.Database+' < '+gettempdirectory+'SQLIteIMportScript.txt']));
exeRet:=StartandWait('c:\windows\system32\cmd.exe','/C '+ myapp+' '+uniconnection2.Database+' < '+gettempdirectory+'SQLIteIMportScript.txt');
Delphi-Quellcode:
{******************************************************************************} FUNCTION StartAndWait(CONST ExecuteFile, ParamString: STRING): boolean; //http://delphi.about.com/library/weekly/aa040803a.htm {******************************************************************************} VAR SEInfo : TShellExecuteInfo; ExitCode : DWORD; BEGIN Result := False; IF NOT FileExists(ExecuteFile) THEN Exit; FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); WITH SEInfo DO BEGIN fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile); lpParameters := PChar(ParamString); nShow := SW_SHOWNORMAL; END; IF ShellExecuteEx(@SEInfo) THEN BEGIN REPEAT Application.ProcessMessages; // Damit die Prozessorauslastung sinkt :-) Sleep(100); GetExitCodeProcess(SEInfo.hProcess, ExitCode); UNTIL (ExitCode <> STILL_ACTIVE) OR Application.Terminated; Result := True; END; END; |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Ich glaub ich habs. Ich muss es mit der Powershell machen.
Doch da kommt ein rot-geschriebener Error im schwarzen Fenster, und das Fenster ist immer gleich weg, wie kann ich das Powershell fenster dauerhaft anzeigen lassen. Habe das hier:
Delphi-Quellcode:
myshell:='C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe';
WriteLogMemo(Format(' SHell: %s %s ',[myshell,' c:\windows\system32\cmd.exe /C "'+ myapp+' '+uniconnection2.Database+' < '+gettempdirectory+'SQLIteIMportScript.txt" '])); //exeRet:=StartandWait('c:\windows\system32\cmd.exe','/C '+ myapp+' '+uniconnection2.Database+' < '+gettempdirectory+'SQLIteIMportScript.txt'); //C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe exeRet:=StartandWait(myshell,' c:\windows\system32\cmd.exe /C "'+ myapp+' '+uniconnection2.Database+' < '+gettempdirectory+'SQLIteIMportScript.txt" '); |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Hab die Ursache:
In der Powershell kommt folgender Error:
Delphi-Quellcode:
Mein Aufruf ist:
In Zeile:1 Zeichen:160
+ ... l\Temp\aaa_1et < C:\Users\O_SCHR~1\AppData\Local\Temp\SQLIteIMportScript.txt` + ~ Der Operator "<" ist für zukünftige Versionen reserviert. In Zeile:1 Zeichen:160 + ... l\Temp\aaa_1et < C:\Users\O_SCHR~1\AppData\Local\Temp\SQLIteIMportScript.txt` + ~ + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId : RedirectionNotSupported PS C:\Users\o_schrabm\Documents\Programming\CitaviISBNLinker\Win32\Debug>
Delphi-Quellcode:
Was kann ich machen, daß < richtig interpretiert wird?
C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -NoExit c:\windows\system32\cmd.exe /C "`"C:\Users\o_schrabm\Documents\Programming\CitaviISBNLinker\Win32\Debug\sqlite3.exe C:\Users\O_SCHR~1\AppData\Local\Temp\aaa_1et < C:\Users\O_SCHR~1\AppData\Local\Temp\SQLIteIMportScript.txt`""
DANKE |
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Habe jetzt den Fehler:
Der Shell aufruf muss folgendermaßen lauten:
Delphi-Quellcode:
C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -NoExit c:\windows\system32\cmd.exe /C "type C:\Users\O_SCHR~1\AppData\Local\Temp\SQLIteIMportScript.txt| C:\Users\o_schrabm\Documents\Programming\CitaviISBNLinker\Win32\Debug\sqlite3.exe C:\Users\O_SCHR~1\AppData\Local\Temp\aaa_1eww"
|
AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Oh mann. Ich glaube du liest echt keine Antworten oder willst sie nicht lesen. Es wurde bereits von mehreren Usern gefragt, was denn ShellExecute für einen Rückgabewert hat. Es wäre sinnvoll wenn du solche Fragen beantworten würdest, damit man dir richtig helfen kann.
Das was mit der Powershell geht, funktioniert auch mit der Eingabeaufforderung. Zumindest dann, wenn du nur ein Programm aufrufen möchtest. Ich frage mich, was diese unnötigen doppelten und dreifachen Anführungszeichen sollen. Du brauchst genau ein " vorne und ein " hinten um deine Exe auszuführen. Das wars. Alles was hintendran kommt wird automatisch als Parameter an deine Anwendung weitergegeben. Diesen Parameter kannst du dann auch nochmal mit jeweils einem Anführungszeichen vorne und hinten übergeben um sicherzustellen, dass das auch ankommt wenn Leerzeichen drin enthalten sind. Ich hoffe das war jetzt nicht wertvolle Zeit die Toilette runtergespült und du beherzigst mal die Tipps die man dir gibt und gibst auch entsprechende Antworten darauf. :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 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