AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Problem ShellExecute / CreateProcess + Wait mit Vista UAC

Problem ShellExecute / CreateProcess + Wait mit Vista UAC

Ein Thema von Assertor · begonnen am 14. Mai 2007 · letzter Beitrag vom 9. Sep 2011
Antwort Antwort
Seite 5 von 5   « Erste     345
Shyran

Registriert seit: 31. Aug 2011
9 Beiträge
 
Delphi XE Professional
 
#41

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 08:49
Soooo.

Bei himitsu's Quellcode aus beitrag #12 findet er den Bezeichner "Win32IsUnicode" nicht, in Zeile 12:

Delphi-Quellcode:
...
{$IFDEF UNICODE}
  if Win32IsUnicode then
  begin
blabla
Daran scheitert's zumindest schonmal.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 09:04
http://www.delphipraxis.net/669318-post4.html
Ganz unten
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Shyran

Registriert seit: 31. Aug 2011
9 Beiträge
 
Delphi XE Professional
 
#43

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 09:19
Ah okay, also eine globale Variable, die i-wie abfragt, ob mein System auf NT basiert, ja?

Okay, ich könnte das für meinen Fall nun "drumherum" coden, indem ich vorher ein

Delphi-Quellcode:
var Win32IsUnicode : Boolean;

...

Win32IsUnicode:=True;
drauf loslasse. Aber das ist ja nicht direkt der Sinn ...

Ich habe auch versucht, die beiden Links mal zu nutzen, die in Deinem verlinkten Beitrag direkt unter dem Hinweis erwähnt sind, leider führten die ins Leere. Ich schaut mir die URL an und wusste dann, wonach ich suchen musste (ShellExec usw.), aber da wurde ich nicht schlau draus, wie ich die Win32IsUnicode Variable dynamisch, abhängig vom eingesetzten OS mit Leben fülle.

Wald ... Bäume ... *hilflos guck* :-)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#44

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 09:23
Die Abfrage kann man sich sparen, da du mit XE ohnehin nicht mehr für Win9x kompilieren kann. Insofern kannst du davon ausgehen, dass du Windows 2000 oder höher hast und einfach die Unicoderoutinen verwenden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 09:23
Versuch es doch z.B. mit
Delphi-Quellcode:
function Win32IsUnicode: Boolean;
begin
  Result := SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Shyran

Registriert seit: 31. Aug 2011
9 Beiträge
 
Delphi XE Professional
 
#46

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 10:22
Auf Jaenicke vertrauend habe ich den Code mal zusammengestaucht:

Delphi-Quellcode:
//SHELL TEST DP
function ExecAndWait(Filename, Params: String;
                     WindowState: Word = SW_SHOWNORMAL): boolean;
var
  {$IFDEF UNICODE} ShExecInfoW: SHELLEXECUTEINFOW; {$ENDIF}
  ShExecInfoA: SHELLEXECUTEINFOA;
// MSDN: ShellExecuteEx, ShellExecuteInfo
begin
  Result := false;
  if (Filename = '') or not FileExists(FileName) then
    exit;
  {$IFDEF UNICODE}
  begin
    ShExecInfoW.Wnd := GetForegroundWindow;
    ShExecInfoW.cbSize := SizeOf(SHELLEXECUTEINFOW);
    ShExecInfoW.fMask := SEE_MASK_NOCLOSEPROCESS;
    ShExecInfoW.lpVerb := 'open';
    ShExecInfoW.lpFile := PWideChar(WideString(Filename));
    ShExecInfoW.lpParameters := PWideChar(WideString(Params));
    ShExecInfoW.lpDirectory := PWideChar(WideString(ExtractFileDir(Filename)));
    ShExecInfoW.nShow := WindowState;
    Result := ShellExecuteExW(@ShExecInfoW);
    try
      if Result then WaitForSingleObject(ShExecInfoW.hProcess, INFINITE);
    finally
      CloseHandle(ShExecInfoW.hProcess);
    end;
  end
  {$ENDIF}
end;
//SHELL Aufruf ENDE DP
Im gleichen Verzeichnis wie das .exe File meines programms beifndet sich auch die Ping.exe (das mach ich später selbstverständlich noch anders, aus dem WIndows-System-verz starten usw. aber zum Testen tut's das hier).

Mein Aufruf:

ExecAndWait('Ping.EXE','192.168.212.253 >> testping.txt');

Resultat ist ein kurzes Aufploppen einer Shell und direktes Schliessen, eine Datei "testping.txt" taucht aber nicht auf oder so.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#47

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 10:26
Und so?
ExecAndWait('cmd','/c ping 192.168.212.253 >> testping.txt'); [edit] Statt /c kannst Du es auch zunächst mit /k probieren. Für die Datei solltest Du aber unbedingt einen absoluten Pfad angeben. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Shyran

Registriert seit: 31. Aug 2011
9 Beiträge
 
Delphi XE Professional
 
#48

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 10:57
Leider ebenfalls kein Ergebnis. Ich habe zur Sicherheit auch noch jedem Probieren (/c, /k, auch mal absoluten Pfad wie ExecAndWait('Ping.EXE',' 192.168.212.253 >> d:\testping.txt'); die Festplatte nach der Datei durchsuchen lassen, um auf Nummer sicher zu gehen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#49

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 11:07
Also
ExecAndWait('cmd','/k ping 192.168.212.253'); funktioniert hier bei mir einwandfrei (XE auf Vista 32).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#50

AW: Problem ShellExecute / CreateProcess + Wait mit Vista UAC

  Alt 9. Sep 2011, 12:41
Leider ebenfalls kein Ergebnis. Ich habe zur Sicherheit auch noch jedem Probieren (/c, /k, auch mal absoluten Pfad wie ExecAndWait('Ping.EXE',' 192.168.212.253 >> d:\testping.txt'); die Festplatte nach der Datei durchsuchen lassen, um auf Nummer sicher zu gehen.
Das Umleiten in eine Datei kann nur die cmd.exe, deshalb musst du den Befehl an diese übergeben wie DeddyH geschrieben hat.

Einfacher ist es allerdings, wenn du statt dieser Umleitung einfach die Ausgabe der ping.exe selbst ausliest. Dann brauchst du auch keine temporäre Datei, bei der du wiederum erst schauen musst wo du Schreibrechte dafür hast...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf