AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein cmd.exe /c durch Shell Aufruf klappt unter WIN 10 nicht mehr
Thema durchsuchen
Ansicht
Themen-Optionen

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

Offene Frage von "wschrabi"
Ein Thema von wschrabi · begonnen am 28. Nov 2016 · letzter Beitrag vom 30. Nov 2016
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#11

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

  Alt 28. Nov 2016, 17:39
Welchen Rückgabewert bekommst du denn nun von ShellExecute?

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#12

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

  Alt 28. Nov 2016, 18:13
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.
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (28. Nov 2016 um 18:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#13

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

  Alt 28. Nov 2016, 18:34
Wollte auch gerade diese vollkommen abwägige Frage stellen.
[Klugscheiß] abwegig [/Klugscheiß]

Zitat:
Zum Glück grade noch so die Seite zwei entdeckt.
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
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#14

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

  Alt 28. Nov 2016, 19:55
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...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#15

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

  Alt 28. Nov 2016, 20:41
Hallo,
liest du auch die Artikel hier?

Welchen Rückgabewert bekommst du denn nun von ShellExecute bzw. ShellExecuteEx?
Heiko
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#16

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

  Alt 29. Nov 2016, 08:00
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;
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#17

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

  Alt 29. Nov 2016, 09:05
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" ');
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#18

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

  Alt 29. Nov 2016, 09:29
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:

 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
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#19

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

  Alt 29. Nov 2016, 09:38
Habe jetzt den Fehler:

Der Shell aufruf muss folgendermaßen lauten:
 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"
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#20

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

  Alt 29. Nov 2016, 09:39
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz