![]() |
Windows 7: Andere Anwendung per ShellExecute starten => error
Hallo,
Ich habe hier (nee, ganz weit weg beim Kunden) ein Problem mit einer Anwendung, das an einer Stelle eine andere Anwendung startet. Das funktioniert unter XP problemlos, aber bei Windows 7 scheint es nicht zu funktionieren. Der Aufruf geht mit dieser Funktion:
Delphi-Quellcode:
Problem an der Sache: Ich komme an den Rechner nicht direkt ran, kann also nur per 'Stille Post' Anweisungen geben.
Function ShellExecute_AndWait(Operation, FileName, Parameter, Directory: String;
Show: Word; bWait: Boolean): Longint; Var bOK: Boolean; Info: TShellExecuteInfo; Begin FillChar(Info, SizeOf(Info), Chr(0)); Info.cbSize := SizeOf(Info); Info.fMask := SEE_MASK_NOCLOSEPROCESS; Info.lpVerb := PChar(Operation); Info.lpFile := PChar(FileName); Info.lpParameters := PChar(Parameter); Info.lpDirectory := PChar(Directory); Info.nShow := Show; bOK := Boolean(ShellExecuteEx(@Info)); If bOK Then Begin If bWait Then Begin While WaitForSingleObject(Info.hProcess, 100) = WAIT_TIMEOUT Do Application.ProcessMessages; bOK := GetExitCodeProcess(Info.hProcess, DWORD(Result)); End Else Result := 0; End; If Not bOK Then Result := -1; End; Meine Frage (hier bin ich Laie): 1. Wäre es denkbar, das der aktuelle Benutzer keine Rechte hat, die Fremdanwendung zu starten? Gibt es hier Unterschiede zwischen XP und Win 7? 2. Wenn der angemeldete Nutzer die Anwendung per Doppelklick starten kann, geht das dann auch mit der o.g. Funktion? D.h. reicht es, die Rechte so einzurichten, das Doppelklick funktioniert? 3. Falls 1=JA und 2=JA dann: Wie stellt man das ein? 4. Würde man (1) in einem Windows-Ereignis-Log sehen? :stupid: [x] Ja, ich oute mich hiermit als Volldrömel. |
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Zunächst würde ich mal untersuchen, was genau denn eigentlich schiefläuft. Aus der Hilfe zu ShellExecuteEx:
Zitat:
|
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Erhält der Benutzer eine Fehlermeldung? Stimmen die Parameter für Verzeichnis und Dateiname? Handelt es sich um ein Ansi oder Widechar-Delph?
|
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Was benutzt du denn als Verb bzw. Operation? Manche geben dort einen Leerstring an, was zwar meistens funktioniert, aber eben nicht immer.
Und ob es an Rechten liegt, kannst du mit dem Verb
Delphi-Quellcode:
testen.
'runas'
Aber GetLastError sollte wie schon genannt wurde natürlich am ehesten Aufschluss geben. Sprich z.B.
Delphi-Quellcode:
.
SysErrorMessage(GetLastError)
Sonst wäre z.B. das Verzeichnis ein Kandidat. Benutzt du sowohl für Arbeitsverzeichnis als auch für die Anwendung selbst einen absoluten Pfad? Denn das Arbeitsverzeichnis mag sich ja ändern, wie dir denke ich klar ist. |
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Mit welcher Delphiversion arbeitest Du ?
|
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Was hat das mit der Delphi Version zu tun? ShellExecuteEx ist ein Api Call.
|
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Zitat:
|
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Solange man nicht explizit PAnsiChar oder PWideChar oder ShellExecuteExA oder so benutzt, ist das egal, da es immer funktioniert.
|
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Zitat:
Also PAnsiChar zur ANSI-API, PWideChar zur Unicode-API oder PChar zur dynamischen API. Und da oben passen die dynamischen String, PChar und API (TShellExecuteInfo, ShellExecuteEx) zusammen. Sonst endet es, wie in diesem Fall ![]() Auch wenn man da oben hätte ein
Delphi-Quellcode:
statt dem
Else
Delphi-Quellcode:
hätte nutzen können
If Not bOK Then
und es vorallem nicht geschadet hätte, im Fehlerfall das GetLastError auszuwerten. |
AW: Windows 7: Andere Anwendung per ShellExecute starten => error
Bei CreateProcess macht es einen Unterschied, ob man die Ansi- oder Unicode-Variante aufruft.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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