Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr (https://www.delphipraxis.net/190997-cmd-exe-c-durch-shell-aufruf-klappt-unter-win-10-nicht-mehr.html)

Dalai 28. Nov 2016 16:39

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

himitsu 28. Nov 2016 17:13

AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
 
Zitat:

Zitat von Dalai (Beitrag 1354854)
Welchen Rückgabewert bekommst du denn nun von ShellExecute?

Wollte auch gerade diese vollkommen abwägige Frage stellen. Zum Glück grade noch so die Seite zwei entdeckt. :lol:
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:

ja sakura im manuellen shell kann ich das sqlite3 mit db und import skript laufen lassen.
ich hab den absulten pfad angegeben daher kein suchpfad nötig
Genau so, wie du es hier startest?
Oder rufst du dort "nur" den Inhalt von myapp auf.
In der CMD kann man ja nocheine CMD starten und sieht dann deren Fehlermeldungen.

Dalai 28. Nov 2016 17:34

AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
 
Zitat:

Zitat von himitsu (Beitrag 1354858)
Wollte auch gerade diese vollkommen abwägige Frage stellen.

[Klugscheiß] abwegig [/Klugscheiß]

Zitat:

Zum Glück grade noch so die Seite zwei entdeckt. :lol:
Vielleicht musst du in deinem Benutzerkontrollzentrum doch mal einstellen, mehr als 10 Beiträge pro Seite zu sehen zu bekommen ;).


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

wschrabi 28. Nov 2016 18:55

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. http://stackoverflow.com/questions/2...on-of-powershe

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...

hoika 28. Nov 2016 19:41

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?

wschrabi 29. Nov 2016 07:00

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:
            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');
Definition:
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;

wschrabi 29. Nov 2016 08:05

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" ');

wschrabi 29. Nov 2016 08:29

AW: cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
 
Hab die Ursache:
In der Powershell kommt folgender Error:

Delphi-Quellcode:
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>
Mein Aufruf ist:

Delphi-Quellcode:
 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`""
Was kann ich machen, daß < richtig interpretiert wird?
DANKE

wschrabi 29. Nov 2016 08:38

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"

Aviator 29. Nov 2016 08:39

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.
Seite 2 von 4     12 34      

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